你不了解的软件开发过程

栏目: IT技术 · 发布时间: 4年前

内容简介:中国 IT 从业人员中对软件研发过程有系统认识的少之又少,甚至在工作中遇到的科班出身的研发同学同样不例外。相反,大家对于追求热点概念(例如:DDD,领域驱动设计)倒是不遗余力,满怀热情。软件开发刚开始的时候,并没有很好的经验或思想来指导项目研发。从研发的各种名词中可以看出来,软件行业从建筑行业借鉴了许多经验。每个阶段赋予角色的做法,有利于充分利用成本高昂的人力资源。在借鉴的基础的产生了第一个标准的软件开发流程

中国 IT 从业人员中对软件研发过程有系统认识的少之又少,甚至在工作中遇到的科班出身的研发同学同样不例外。相反,大家对于追求热点概念(例如:DDD,领域驱动设计)倒是不遗余力,满怀热情。

软件开发刚开始的时候,并没有很好的经验或思想来指导项目研发。从研发的各种名词中可以看出来,软件行业从建筑行业借鉴了许多经验。

  • 建筑行业涉及到不同角色协作:设计师、开发商(工人、电工和水暖工)、质量监理、等等。

    软件工程类似的角色:产品经理、研发(后端、前端、客户端)、测试、QA

  • 建筑行业遵循的流程:把端到端的项目分成不同的阶段,每个流程阶段由不同角色负责

每个阶段赋予角色的做法,有利于充分利用成本高昂的人力资源。在借鉴的基础的产生了第一个标准的软件开发流程

你不了解的软件开发过程

事实上,如同力学三大定律为物理学奠基一样,瀑布模型在软件行业的地位同样不可动摇。虽然随着历史的车轮滚滚向前,软件研发方法论的研究重点从瀑布模型的 “流程”,过渡到以交付速度和成功率为目标的敏捷开发、持续集成、持续交付、持续部署。但研发过程的核心步骤从未改变:分析、设计、开发

你不了解的软件开发过程

然而,不幸的是,因为追求交付速度、成功率,国内研发不仅丢掉了瀑布模型,也丢掉了核心过程。太多的研发以敏捷为理论核武,把设计完全抛掉,更遑论分析。如果系统确实太过复杂,抑或领导要求,那就装模作样加入一个设计阶段,设计一个看起来能够跑的通的架构。一旦软件进入实现阶段,所有的设计文档就被雪藏起来吃灰。

重视开发多于设计,不知分析为何物。架构凭经验和感觉,就像无根之水,即使再美也经不起业务变化和迭代的侵蚀,最终走向腐朽。最后不得不亮出终极武器:重构(其实,是“重做”)。

意识到需要做分析、设计,到知道如何做分析设计,中间有着不小的鸿沟。软件开发不是玄学,有着系统的方法论,以及完善的表达工具。需求分析从业务开始,层层剥开,直至实现。如果把软件想象成建筑,那么各种图就是从某一个特定的视角(viewpoint)表达软件的设计图纸,因此RUP C4+1 称之为 View model 也大抵表达该含义吧。选择合适的图表述,把软件表述清楚也能体现出工程人员的软件设计能力。

各个层级的分析对象

你不了解的软件开发过程

各分析阶段用于表达的图

你不了解的软件开发过程

具体使用细节,不再使用例子详细描述,可以参考:

本文作者:cyningsun

本文地址: https://www.cyningsun.com/07-22-2020/software-development-methodology.html

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 CN 许可协议。转载请注明出处!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

结网@改变世界的互联网产品经理

结网@改变世界的互联网产品经理

王坚 / 人民邮电出版社 / 2013-5-1 / 69.00元

《结网@改变世界的互联网产品经理(修订版)》以创建、发布、推广互联网产品为主线,描述了互联网产品经理的工作内容,以及应对每一部分工作所需的方法和工具。产品经理的工作是围绕用户及具体任务展开的,《结网@改变世界的互联网产品经理(修订版)》给出的丰富案例以及透彻的分析道出了从发现用户到最终满足用户这一过程背后的玄机。新版修改了之前版本中不成熟的地方,强化了章节之间的衔接,解决了前两版中部分章节过于孤立......一起来看看 《结网@改变世界的互联网产品经理》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具