软件工程生命周期模型对比分析

正如任何事物一样,软件也有其孕育、诞生、成长、成熟和衰亡的生存过程,一般称其为“软件生命周期”。软件生命周期一般分为6个阶段,即制定计划、需求分析、设计、编码、测试、运行和维护。软件开发的各个阶段之间的关系不可能是顺序且线性的,而应该是带有反馈的迭代过程。在软件工程中,这个复杂的过程用软件开发模型来描述和表示。

迭代-递增生命周期模型

长处:

①与现实世界软件开发最接近的模型,蕴含统一过程方法
②为检查软件产品提供多个机会,每个迭代包括测试流
③在早期可以确定其蕴含的结构的健壮性
④能够较早地减轻风险
⑤我们总是有该软件的一个工作版

关键词:米勒法则、逐步求精

增量模型

在有限的时间内,在一套功能有限的版本的基础上不断扩充。

使用条件:开发时间有限、开发人员不足、有明确的初期模型

任务流:线性、并行(需求不断地加入任务流)

注意点

①第一个增量是核心产品,满足用户基本需求。
②根据客户使用进行评价、制定增量计划。
③每个增量都是可运行的产品。

进化树模型

长处:与现实世界软件开发最接近的模型,与迭代递增模型等价。

编码-修补生命周期模型

长处:适用于不需要任何维护的小程序

短处:总的来说不适合重要的程序

注意点:维护工作昂贵

瀑布生命周期模型

系统顺序的开发方法

使用条件:①可以清楚地了解用户的需求②需求必须准确定义和相对稳定

任务流:线性任务流

注意点:

①不适用项目的不断变更
②不适用需求不确定的项目
③不可违反开发顺序
④文档驱动(也是弱点)

长处:纪律性强制的方法、文档驱动(也是弱点)

短处:交付的产品可能不符合客户的要求

快速原型开发生命周期模型

每次迭代都会产生一个更加完整的版本

使用条件:①用户提出最基本的需求,没有定义更加具体的功能特性②对算法效率,操作系统不确定。

任务流:迭代/(线性)

注意点:① 开发者对原型随意搭建②为了加速构建,使用不合适的OS③速度是关键

长处:确保交付的产品符合客户的要求

短处:还没有证明无懈可击

开源生命周期模型

关键词:

①报告并纠正缺点是纠正性维护
②添加额外功能是完善性维护
③为该程序向一个新环境转换接口是适应性维护

长处:少量实例中工作得相当好(Linux、Apache、gcc)

短处:实用性有限,通常不起作用

同步-稳定生命周期模型

关键词:同步、稳定化、冻结

长处:能满足未来用户的要求,确保各组件能够成功集成

短处:除了在Microsoft公司,还没有广泛应用

敏捷过程

有效响应变化+哲学思想

关键:①有效沟通②强调最终产品快速交付③将客户融入团队④可以灵活调整计划

特点:

①团队小——小而高度自主
②产品快——可以快速交付成功的系统
③过程灵——最小化软件工作产品,对整体精简开发,对变更有更良好的响应。

关键词:

①测试驱动开发(TDD):制定出任务的测试用例
②结对编程(pair programming)
③时光盒(timeboxing):频繁交付软件
④站立会议(stand-up meeting)

长处:客户需求模糊时能很好地工作

短处:似乎只适合小项目

螺旋生命周期模型

长处:风险驱动

短处:只适合用于大型的内部软件产品,开发者必须精通风险分析和风险排除

径坐标代表迄今累计的成本,角坐标代表螺旋型的进展,螺旋的每一圈对应一个阶段,每个阶段开始于(左上)确定该阶段的目标、实现办法、限制条件,如果成功减少风险,则进入下一个阶段(右下)

总结

参考资料

https://wenku.baidu.com/view/718cb107aaea998fcc220e70.html

http://www.docin.com/p-1165870498.html

http://blog.sina.com.cn/s/blog_75f397940101dgmj.html

读者评分
[评分人数: 1 平均分: 5]

评论

OmegaXYZ