软件工程-软件开发模型
传统开发模型
瀑布模型
问题定义——》可行性研究——》需求分析——》软件设计——》编码——》测试——》维护
|---------------计划时期---------------|---------------------------开发时期-------------------------|-运行时期-|
特点:
1、阶段间具有顺序性和依赖性:必须等前一阶段完成后才能进入下一阶段;前一阶段的成果将会成为下一阶段的启示输入内容。
2、推迟实现的观点:尽可能推迟了程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。
3、质量保证的观点:1)每个阶段都必须完成规定的文档;2)每个阶段结束前都要完成评审。
瀑布模型是一个文档驱动的模型
快速原型模型
需求分析——》原型开发——》原型评价——》最终系统设计——》最终系统实现
↑______用户反馈__↓____________↓
根据用户反馈不停地迭代原型,直至用户满意。
适合需求模糊,中小型软件的开发。
特点:
1、快速开发
2、循环:原型的不断迭代
3、低成本
分类:
1、渐进型:利用最终版原型进行最终系统设计和实现
2、抛弃型:抛弃最终版原型,根据最终版原型的需求重新进行最终系统设计和实现。
演化开发模型
增量模型
增量模型也成为渐增模型,把软件产品作为一系列增量(小而可用的软件)构建来设计、编码、集成和设计。
最终交付的产品是一系列增量集成的结果。
特点:
1、在前面增量的基础上开发后面的增量
2、每个增量的开发可用瀑布或快速原型模型
3、迭代的思路:每个增量都需要进行多次迭代。
螺旋模型
基本思想是:使用原型及其他方法来尽量降低风险。可以将这个模型看作在每个阶段之前都增加了风险分析过程的快速原型模型。
螺旋模型的主要优势在于,它是风险驱动的。
特点:
1、瀑布模型+快速原型+风险分析
2、迭代
一个螺旋式周期(上述流程图):
1、确定目标、选择方案、选定完成目标的策略
2、风险角度分析该策略
3、启动一个开发阶段
4、评价前一步的结果,计划下一轮的工作
面向对象开发模型
构建集成模型
主要针对软件设计和开发阶段:
标识候选构件——》查找构件——》若存在则提取构件——》若不存在则构造构件——》将新构件存入库中——》进行下一次迭代
软件构件高度可重用。
特点:
1、面向对象
2、基于构件库
3、融合螺旋模型特征
4、支持软件开发的迭代方法
5、软件重用
形式化开发模型
转换模型
将高层次模型转换为低层次模型。如将UML模型转换为Java程序
净室模型
通过数学模型直接验证程序正确性。
CASE工具
计算机辅助软件工程(Computer Aided Software Engineering)
包括:
项目管理工具
需求分析工具
编程环境
软件测试工具