从《软件工程——实践者的研究方法》看过程模型
过程管理是对软件过程的管理。软件过程将整个开发流程抽象成一个通用过程模型,而在通用过程模型基础上加上各样的场景形成不同的过程模型。
通用过程框架主要包括五种框架活动——沟通、策划、建模构建及部署,在每个框架活动中又包含不同的工作任务。工作中常用的过程模型都包含了以上5种活动。通常将过程模型可以分为惯用过程模型、专用过程模型和敏捷开发模型。
过程模型.png(一)惯用过程模型
1.1瀑布模型
瀑布模型是经典的过程模型,其他过程模型都是由其演化而来。
瀑布模型是将五个框架活动线性化,只有将某个框架活动中的所有工作任务完成后,才进行下一个框架活动。这种模型适用于需求定义准确且相对稳定的场景下。
然而实际情况下,客户很难清楚地表达所有需求,而且其需求存在不确定性,再加上只有产品完全完成之后,才进行验收评审,如果在项目完结时才发现问题,损失及其严重。
1.2增量过程模型
为了解决需求不明确及防止整个项目完结后才问题,提出增量过程模型。
瀑布模型是单条线性过程开发,那么增量过程模型则是多个线性过程并行开发。在初始的明确需求下,实现该需求中一套功能有限的产品,之后再在后续的版本中进行细化和扩展功能。
1.3演化过程模型
演化过程模型的出现,是为了解决,开发团队所理解的需求与客户所定义的需求是否一致的问题。可以分为原型开发开发范型及螺旋模型。
原型开发模型很容易理解,在客户为某目标产品定义一些基本任务,但没有详细定义功能和特性需求的情况下,开发团队根据已知基本任务迅速产生一个原型,然后由客户评估。再依据客户的反馈,进一步提炼需求。根据这种过程模型,避免出现大幅度偏移需求的情况发生,但是其缺点也是显而易见的,由于进一步细化的需求往往是在原型上进一步开发,因此在架构设计容易形成考虑不周全的局面。
螺旋模型结合原型开发及瀑布模型的特点,适用于大型软件开发的场景。螺旋模型将五个通用框架活动划分为一系列活动过程,每进行一个工作任务时都需要进行这一系列活动过程,只有这一系列活动过程并评审通过,才能进入下一阶段的系列活动过程。然而现实场景中很少有团队运用该过程模型,因为每个工作任务均需要经历这五个框架过程,流程繁琐,时间成本开销过大。
1.4并发模型
并发模型相较于以上模型的最大特点是将过程开发流程网络化。在并发模型下,所有的软件工程活动可以同时并发进行。
(二)专用过程模型
专用过程模型是对通用过程模型中的某一环节进行细化。
2.1基于构件的开发
这种模型实际上是演化模型,采用迭代的方式构建软件,只不过在开发时采用预先打包的软件架构来开发应用系统。
2.2形式化方法模型
该模型主要是生成计算机软件形式化的数学规格说明。软件开发人员通过严格的数学符号来说明、开发和验证基于计算机的系统。由于采用一套标准化的说明,在面对歧义性问题、不完整问题、不一致问题等均可以发现和改正,但是开发这样一套说明非常耗时,成本过高。
2.3面向方面的软件开发
该方法关注局部。由于软件产品是由一个个功能单一的模块构成,因此将这些常用的功能模块做出构件,在系统架构中运用。
(三)敏捷开发
敏捷开发模型因“变更”而产生。由于软件构建、团队成员、新技术的出现,这一系列内外因素都会在软件开发过程中出现变更,为了快速响应这种变更,则需要一种灵活的过程模型。
最常用的敏捷开发模型是极限编程。
极限编程也包含五个过程框架:策划->设计->编码->测试->发布。
策划阶段尽可能收集需求,并将需求按优先级分组,分组的意义在于能够在短时间快速实现;依据需求设计CRC卡及方案原型,这一步遵循简洁原则,将需求画出大致框架并且能够在原型上进行重构;在进行编码工作前,依据所有的需求建立单元测试,一旦编码完成便可以进行单元测试;单元测试完成则需要进行系统测试、回归测试等一系列测试工作,保证产品发布前实现所有功能且性能达到目标要求;最后一步则是发布。
敏捷开发模型实现小步快跑,常用于初创互联网公司、团队等。