软件过程模型
实际从事软件开发工作时
- 软件规模、类型、开发环境及技术方法等因素会影响到阶段划分,及各阶段的执行顺序,形成不同生存周期模型,又称过程模型。
常用软件过程模型:
- 瀑布模型
- 快速原型模型
- 增量模型
- 螺旋模型
- 喷泉模型
- Rational统一过程
- 微软公司软件开发过程
1、瀑布模型
使用最早应用最广。
特点:
-
阶段具有顺序性和依赖性
前一阶段结束后一阶段开始,前一阶段输出文档,后一个阶段输入文档。
-
推迟实现观点
瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。
-
质量保证观点
瀑布模型每阶段坚持两个重要做法:
- 每阶段都必须完成完整、准确的文档。该文档是软件开发时人员间通信、运行时维护的重要依据。
- 每阶段结束前对文档评审。
传统瀑布模型过于理想化,但人在工作过程中不可能不犯错误,所以实际瀑布模型带反馈环。
瀑布模型的优点:
提高软件质量,降低维护成本,缓解软件危机。
瀑布模型的缺点:
模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践就能提出完整准确需求是不切实际的。
2、快速原型模型
快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。
快速原型模型的优点:
确定需求上优于瀑布模型(通过原型与用户交互);
提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用;
有的软件原型可以成为最终产品的一部分。
快速原型模型的缺点:
快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。
4.2.3 增量模型
又称渐增模型,开发软件时将软件产品作一些列增量构件设计、编码、集成和测试。
区别于瀑布模型和快速原型模型:
瀑布模型和快速原型模型是一次把满足所有需求产品提交给用户。
增量模型是分批向用户提交产品。
增量模型的优点:
较短时间向用户提交可完成有用工作产品;
用户有充裕时间学习适用产品;
软件结构必须开放,方便向现有产品加入新构件。
增量模型的缺点
做到第三个优点比较困难。
上述增量模型在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小。
风险更大增量模型:确定用户需求后,各构件集并行构建。
4.2.4 螺旋模型
1988年B.Boehem提出,加入风险分析,常指导大型软件项目。
-
软件风险:
超期、超预算、行业竞争等。
笛卡尔坐标四象限表达四方面活动:
- 制定计划:确定目标、选定方案、设定约束条件。
- 风险分析:评估方案,识别和消除风险。
- 实施工程:软件开发。
- 客户评估:评价开发工作,计划下一阶段工作。
沿螺线自内向外每旋转一圈开发出更完善新版本。
螺旋模型的优点:
大型软件开发项目有较好的风险控制;
螺旋模型的缺点:
需要风险评估的经验;
契约开发通常需要事先指定过程模型和发布产品;
普及度不如前述模型。
4.2.5 喷泉模型
面向对象生命周期模型,体现迭代和无缝特性。
迭代:求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。
无缝:分析、设计、编码各阶段间不存在明显边界。
喷泉模型的优点:
无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件。
喷泉模型的缺点:
可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大。
4.2.6 Rational统一过程
由Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件。
Rational统一过程是一个二维生命周期模型。
RUP有9个核心工作流,包括6个核心过程工作流和3个核心支持工作流。
RUP有4个连续阶段,每个阶段有明确目标,通过一次或多次迭代完成。
Rational统一过程优点:
不断的版本发布成为一种团队日常工作的真正驱动力;
将发现问题、制定方案和解决过程集成到下一代迭代;
迭代开发,降低风险;
更好地安排产品开发的辅助过程。
4.2.7 微软过程
-
规划阶段
开展市场调查研究,结合公司战略形成产品的远景目标。
-
设计阶段
根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度。
-
开发阶段
完成产品中所有构件的开发工作。
-
稳定阶段
实行全面的内部和外部测试,最终形成可发布的RTM版本
-
发布阶段
确认产品质量符合发布标准后,发布产品及相关消息
递进式的开发策略:
解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期