文章目录
正如任何事物一样,软件也有其孕育、诞生、成长、成熟和衰亡的生存过程,一般称其为“软件生命周期”。软件生命周期一般分为6个阶段,即制定计划、需求分析、设计、编码、测试、运行和维护。软件开发的各个阶段之间的关系不可能是顺序且线性的,而应该是带有反馈的迭代过程。在软件工程中,这个复杂的过程用软件开发模型来描述和表示。
迭代-递增生命周期模型
长处:
①与现实世界软件开发最接近的模型,蕴含统一过程方法
②为检查软件产品提供多个机会,每个迭代包括测试流
③在早期可以确定其蕴含的结构的健壮性
④能够较早地减轻风险
⑤我们总是有该软件的一个工作版
关键词:米勒法则、逐步求精
增量模型
在有限的时间内,在一套功能有限的版本的基础上不断扩充。
使用条件:开发时间有限、开发人员不足、有明确的初期模型
任务流:线性、并行(需求不断地加入任务流)
注意点:
①第一个增量是核心产品,满足用户基本需求。
②根据客户使用进行评价、制定增量计划。
③每个增量都是可运行的产品。
进化树模型
长处:与现实世界软件开发最接近的模型,与迭代递增模型等价。
编码-修补生命周期模型
长处:适用于不需要任何维护的小程序
短处:总的来说不适合重要的程序
注意点:维护工作昂贵
瀑布生命周期模型
系统顺序的开发方法
使用条件:①可以清楚地了解用户的需求②需求必须准确定义和相对稳定
任务流:线性任务流
注意点:
①不适用项目的不断变更
②不适用需求不确定的项目
③不可违反开发顺序
④文档驱动(也是弱点)
长处:纪律性强制的方法、文档驱动(也是弱点)
短处:交付的产品可能不符合客户的要求
快速原型开发生命周期模型
每次迭代都会产生一个更加完整的版本
使用条件:①用户提出最基本的需求,没有定义更加具体的功能特性②对算法效率,操作系统不确定。
任务流:迭代/(线性)
注意点:① 开发者对原型随意搭建②为了加速构建,使用不合适的OS③速度是关键
长处:确保交付的产品符合客户的要求
短处:还没有证明无懈可击
开源生命周期模型
关键词:
①报告并纠正缺点是纠正性维护
②添加额外功能是完善性维护
③为该程序向一个新环境转换接口是适应性维护
长处:少量实例中工作得相当好(Linux、Apache、gcc)
短处:实用性有限,通常不起作用
同步-稳定生命周期模型
关键词:同步、稳定化、冻结
长处:能满足未来用户的要求,确保各组件能够成功集成
短处:除了在Microsoft公司,还没有广泛应用
敏捷过程
有效响应变化+哲学思想
关键:①有效沟通②强调最终产品快速交付③将客户融入团队④可以灵活调整计划
特点:
①团队小——小而高度自主
②产品快——可以快速交付成功的系统
③过程灵——最小化软件工作产品,对整体精简开发,对变更有更良好的响应。
关键词:
①测试驱动开发(TDD):制定出任务的测试用例
②结对编程(pair programming)
③时光盒(timeboxing):频繁交付软件
④站立会议(stand-up meeting)
长处:客户需求模糊时能很好地工作
短处:似乎只适合小项目
螺旋生命周期模型
长处:风险驱动
短处:只适合用于大型的内部软件产品,开发者必须精通风险分析和风险排除
径坐标代表迄今累计的成本,角坐标代表螺旋型的进展,螺旋的每一圈对应一个阶段,每个阶段开始于(左上)确定该阶段的目标、实现办法、限制条件,如果成功减少风险,则进入下一个阶段(右下)
总结
参考资料
①https://wenku.baidu.com/view/718cb107aaea998fcc220e70.html