目录
【引言】
在软工视频中接触到了一些软件开发过程中用到的模型,在此做一个总结。所谓软件过程就是从软件项目需求定义至软件运行维护的整个生命周期过程中系统开发、运行和维护所实施的全部过程。软件过程模型/软件生命周期模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。一个错误模型的选择,将迷失我们的开发方向。对于下面的模型,希望能够给开发者们一个参考和一点启示。
【正文】
①瀑布模型 / 线性顺序 / 传统生命周期模型
瀑布模型是一个特别经典,甚至有点老套的周期模型,一般情况下将其分为计划、需求分析、概要设计、详细设计、编码以及单元测试、测试、运行维护等几个阶段。瀑布模型的周期是环环相扣的。每个周期中交互点都是一个里程碑,上一个周期的结束需要输出本次活动的工作结果,本次的活动的工作结果将会作为下一个周期的输入。这样,当某一个阶段出现了不可控的问题的时候,就会导致返工,返回到上一个阶段,甚至会延迟下一个阶段。
优点:
分为固定的几个阶段,次序固定,自上而下
以文档为驱动
阶段间具有顺序性和依赖性
每个阶段必须完成规定的文档,每个阶段结束前完成文档审查,及早改正错误
缺点:
实际项目很少遵守瀑布模型提出的顺序,需求可能变更
客户通常难以清晰描述所有需求
客户需要有耐心,只有项目完成才能看到所开发的软件
变体:V模型:强调了过程中的质量保证
V模型从整体上看起来,就是一个V字型的结构,由左右两边组成。左边的下划线分别代表了需求分析、概要设计、详细设计、编码。右边的上划线代表了单元测试、集成测试、系统测试与验收测试。看起来V模型就是一个对称的结构,它的重要意义在于,非常明确的表明了测试过程中存在的不同的级别,并且非常清晰的描述了这些测试阶段和开发阶段的对应关系。
②快速原型模型
原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。在实际的项目过程中,借助于组织过程资产以及快速模型软件,一般在需求分析的时候,就可以建立一些简单的原型,例如在第一家YH公司中,因为是“行业软件提供商”,所以拥有各个地域的行业解决软件方案,惯用的伎俩就是将其他地市的项目拿到本次项目实施地,作为原型化模型。原型化模型是极具意义的项目实践。
优点:
快速为用户提供一个可以看到的原型软件
可有效应对需求的不确定性
原型系统可以逐步演化为最终系统,避免浪费人力
缺点:
整个软件可能是随意搭成的 , 开发者没有考虑整体软件质量与长期的可维护性
采用了一些折中手段让系统快速运行起来,比如不合适的操作系统、开发语言、低效算法等
③渐增模型/增量模型/迭代模型
迭代模型,摒弃了传统的需求分析,设计,编码,测试的流程,而是将整个生命周期变成若干个冲刺(Sprint)阶段,而每一个阶段都是由以上若干或者全部传统的流程组成,在每一个阶段中,都会包含下面四个阶段:初始阶段,细化阶段,构建阶段,交付阶段。在初始阶段中,确认本次冲刺的范围,边界,系统选择的架构,计划,以及所需要的资源等信息。在细化阶段中,对问题进行建域,创建开发案例,创建模板以及准备工具等。在构建阶段的主要任务就是完成构建的开发并且进行测试,将完成的构建集成为产品,并且测试所有的功能(CI)。在交付阶段,主要是完成本次冲刺,将软件产品交付给相关的干系人。
优点:
增量包概念的引入 , 以及它不需要提供完整的需求 。 只要有一个增量包出现,开发就可以进行
在项目的初始阶段不需要投入太多的人力资源
增量可以有效地管理技术风险
缺点:
每个增量必须提供一些系统功能,有时开发者难以根据客户需求给出大小适合的增量
④螺旋模型
螺旋模型,尤其重视风险分析阶段,特别适用于庞大并且复杂,非常高风险的项目。通常螺旋模型由四个阶段组成:制定计划、风险分析、实施工程和客户评估。螺旋模型中,发布的第一个模型甚至可能是没有任何产出的,可能仅仅是纸上谈兵的一个目标,但是随着一次次的交付,每一个版本都会朝着固定的目标迈进,最终得到一个更加完善的版本。
优点:
支持用户需求的动态变化
原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便
特别强调原型的可扩充性和可修改性 , 原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力
为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险
缺点:
如果每次迭代效率不高,致使迭代次数过多将会增加成本并推迟提交时间
使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高
⑤喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
优点:
喷泉模型不像瀑布那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动
该模型的各个阶段没有明显的界限,开发人员可以同步进行开发
可以提高软件项目开发效率,节省开发时间
缺点:
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理
此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况
改进的喷泉模型:
【尾声】
学如逆水行舟,不进则退 ——梁启超