软件生命周期
软件生命周期分为三个时期、八个阶段
软件定义时期:
1)问题定义阶段:要解决什么问题
2)可行性研究阶段:确定软件开发可行
3)需求分析阶段:系统做什么
软件开发时期:
1)概要设计阶段:如何实现系统
2)详细设计阶段:如何具体实现系统
3)编程阶段:编写程序源代码
4)软件测试阶段:黑盒白盒测试
软件维护时期:
软件维护阶段:漫长的运行和维护期
软件过程模型
瀑布模型
优点:有利于用大型软件开发中人员的组织和管理,提高了大型软件开发的效率和质量
缺点:强调活动顺序化、文档化、过于理想化。且不可逆。
快速原型模型
优点:需求分析优于瀑布模型,更为准确,减少后期返工,用户参与性强,适合需求模糊或者随时间变化的系统
缺点:不考虑软件的整体质量和长期的可维护性,可能会选择不合适的操作系统和算法,达不到质量可能被抛弃
增量开发模型
瀑布模型的改进模型。
改进了什么?一次性全部功能按阶段推进比较困难,将需求分解成一系列增量产品,一次完成一个增量
优点:1)人员分配灵活,开发初期不需要大量人力
2)核心产品受欢迎可以增加人力实现下一构件
3)可以先发布功能给客户
缺点:可能出现不能集成的风险,必须要有开放式体系结构
螺旋模型
可以将螺旋模型理解为是在每个阶段前都增加了风险分析的快速原型模型,融合了三种模型
优点:灵活设计,可以在项目各阶段变更
以小分段构建大型系统,使得成本计算简单容易
缺点:过多的迭代次数会增加开发成本,延迟提交时间
喷泉模型
优点:用户需求驱动模型,开发人员可在各阶段同步进行节省时间,支持迭代式开发
缺点:各个阶段重叠导致需要大量人力
统一过程模型(RUP)
初始:类似问题定义
细化:类似需求设计
构建:类似编码运行
移交:类似维护
敏捷过程模型
特点:各阶段都有具体测试
习题
对比瀑布模型、快速原型模型、增量模型、螺旋模型
瀑布模型:过于理想化;
快速原型模型:比瀑布模型更好需求分析;
增量模型:解决了一次性全部功能按阶段推进比较困难;
螺旋模型:融合了上述三种模型,但是对开发人员要求高