一、瀑布模型(waterfall model)
1)顺序性,依赖性:
①优点:工作单元逐一递归,从前往后,有一才有二,较为直观;
②缺点:工作生命周期出现了trouble,必须要追溯到前面的单元,需要付出较大的时间成本,人力成本,资源成本等。
2)推迟实现的perspectives:
在工程编程实现之前,具有需求,分析和设计的过程,推迟了物理实现,增加了逻辑model的设计,减少了无此plan的回溯返工的大量成本。
3)质量保证的standpoint,viewpoint,point of view:
①坚持优质,高产的思想为中心;
②每个阶段都必须交出规定的文档——>text是阶段任务完成的standard,members通信的媒介,software维护的依据;
③每阶段结束前,都需要对文档进行评审,减少后期的维护成本;
GROSS:瀑布模型是由文档驱动的,最大的问题是产品脱离群众需求,不可局限于文档,否则成于文档,败于文档。
二、快速原型模型(rapid application development,RAD),快速原型(rapid prototype)
1)所完成的可能是最终software的一个子集;
2)通过与用户交互得到认证,不会出现软件文档出现错误,出现大量返工;
3)快速模型主要与用户沟通,用户反馈需求给开发人员,进而修改原型模型,原型并不重要,重要的是不断地收集2用户的需求,不断地改进;
一旦需求确定,原型就被丢弃,是一个线性的迭代模型。
三、增量模型(incremental model) =渐增模型
1)每次提交一个product的子集,不一次性提交所有功能单元;
2)从交付第一天起,用户就能做一些有用的工作;
3)给予用户充裕的时间学习适应product,减少全新software带给user的冲击;
4)软件结构体系必须开放,(个人理解可以开源),每个构件相互独立。
四、螺旋模型(spiral model)
1)每个阶段之前都增加了风险分析的快速原型模型;
2)对可选方案和约束条件的强调有助于对已有software的重用,有助于软件质量作为软件开发的一个重要目标;
3)减少测试不足,过多带来的风险;
4)维护和开发没有本质区别,因为维护只是spiral model的一个周期;
5)适用于大规模的软件项目;
6)是由风险驱动的。
五、敏捷开发模型(agile software development)
1)“个体和交互”胜过“过程和工具”。团队成员的合作,沟通和交互能力比单纯的软件编程能力更重要;
2)“可以使用的软件”胜过面面俱到的文档。开发人员应将主要精力花费在创建可使用的软件上,文档应简明扼要主题突出;
3)“客户合作”胜过”合同谈判“。客户不可能一次性将他们的需求完全融入合同中,满足客户需求的途径是:开发团队与客户密切合作;
4)“响应变化”胜过“遵循计划”。计划需要具有灵活性和可塑性,在形势变化时能迅速调整,适应业务,技术等方面的需求。