软件开发过程:
软件开发模型:
软件开发模型则描述阶段如何组合到一起,是软件开发活动以及 它们之间关系的结构框架
瀑布模型:
特征:
- 项目分解为独立的不同阶段
- 阶段之间具有顺序性和依赖性,每个阶段通过预先定义的输出于下一个阶段发生联系
- 如果发现错误,则返回到上一阶段,一次跳一个阶段,直到在某个较早阶段改正该错误
优点:
- 简单
- 易于组织,易于管理
- 质量保证
不足:
- 缺乏灵活性,不能适应用户需求的改变
- 开始阶段的小错误被逐级放大,可能导致软件产品报废
- 返回上一级的开发需要十分昂贵的代价
- 随着软件规模和复杂性的增加,对于需求不能完全确定的软件开发项目将产生很大的风险
适用场景:
- 需求分析做得比较好的系统
- 二次开发的系统
原型模型:
原型模型包含以下活动:
- 软件开发组织与客户交互,理解客户的需求
- 软件开发组织生成原型,展示最终软件系统的外观。这个原型拥有可以说明输入屏幕和输出报告外观的模型,此外还有一些能够说明功能的机制,以演示工作流和处理逻辑
- 客户和软件开发组织不断评审该原型,以便在项目一开始就不断获取客户的反馈
- 软件开发组织以客户反馈和所生成的原型为基础,生成系统需要规格说明文档
- 生成SRS文档后可以丢弃所有生成的原型
- 将SRS文档用作进一步设计和开发的基础
特点:
- 原型模型在需求获取阶段就通过不断的用户交互产生原型
- 使用原型导出系统需求规格说明,并可能在完成SRS后丢弃原型
- 在用户接受SRS后,选择合适的生存周期模型构建实际产品
原型模型与快速原型模型认识到并解决以下问题:
- 尽早和频繁的用户反馈更有可能是软件产品满足客户需求
- 变更是不可避免的,软件开发过程必须能够对自身进行改变以应对快速变化
快速原型模型优点:
- 有助于获取用户需求,加强对需求的理解
- 尽早发现软件中的错误
- 支持需求的动态变化
快速原型模型不足:
- 不能支持风险分析
- 开发者为了使一个原型快速运行起来,往往在实现过程中采用折中的手段。软件系统的组成部分可能会打折扣
螺旋模型:
基本思想:
- 迭代地进行
- 需求获取、设计、编码和测试活动之间会有大量重叠
- 如果给定需求的任何阶段出现缺陷,会使该需求返回到前面的阶段
- 开发人员能够在任何时候演示当时产品所具有的功能,还可以向客户提供增量版本以得到认可
- 可以降低在项目后期发现重大缺陷的风险
优点:
- 有助于获取用户需求,加强对需求的理解
- 尽早发现软件中的错误
- 支持需求的动态变化
- 支持风险分析,可降低或者消除软件开发风险
- 适合于需求动态变化;事先难以确定并且开发风险较大的系统
缺点:螺旋模型开发的成败,很大程度上依赖于风险评估的成败。需要开发人员具有相当丰富的风险评估经验和专门知识
适用场合:需求不能完全确定,同时又存在技术、资金或开发时间等风险因素的大型开发项目
V字模型:
不同类型的测试适用于不同层次
V字模型三个重要结论:
- 活动更加并行化,可减少生存周期结束进行测试所需的时间
- 通过事先为每种活动设计测试,实际上是在进行更好的事先确认同样可以降低最后一刻暴露严重问题的风险
- 测试由具有合适技能的人员进行设计
优点:在验证和确认上具有很大优势
W模型:
W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序、需求、功能和设计同样要测试
优点:在V模型的基础上,增加了开发阶段的同步测试,形成W模型;测试与开发同步进行,有利于尽早的发现问题
局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整