HW3
简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
瀑布模型
简介
瀑布模型(Waterfall Model)是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
优点
- 降低软件开发的复杂程度,提高软件开发过程的透明性,提高 软件开发过程的可管理性。
- 推迟软件实现,强调在软件实现前必须进行分析和设计工作。
- 以项目的阶段评审和文档控制为手段有效地对整个开发过程进 行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
缺点
- 强调过程活动的线性顺序。
- 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。
- 风险控制能力较弱。
- 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量。
- 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往往会产生错误的结论。
增量模型
简介
增量模型首先对系统最核心或最清晰的需求进行分析、设计、实现、 测试并集成到系统中,再按优先级逐步实现后续需求。
优点
- 增强客户对系统的信心;
- 降低系统失败风险;
- 提高系统可靠性;
- 提高系统的稳定性和可维护性。
缺点
- 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度;
- 增量粒度难以选择。
螺旋模型(含原型方法)
简介
螺旋模型是风险驱动的迭代过程,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型结合了瀑布模型和快速原型方法,将瀑布模型的多个阶段转化到多个迭代过程中,以降低项目的风险。
优点
- 设计上的灵活性,可以在项目的各个阶段进行变更;
- 以小的分段来构建大型系统,使成本计算变得简单容易;
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;
- 随着项目推进,客户始终掌握项目的最新信息, 能够和管理层有效地交互。
缺点
- 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
- 过多的迭代次数会增加开发成本,延迟提交时间。
简述统一过程三大特点,与面向对象的方法有什么关系
统一过程的三大特点
- 统一过程是用例驱动的
- 所有的用户和用例组合在一起就是用例模型,它描述了系统的全部功能。用例图促使我们从系统对用户的价值方面来考虑问题,是站在用户的角度出发,以人为本。并且用例图不仅能确定用户的需求,还可以驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。用例驱动表明开发过程是沿着一个流——一系列从用例得到的工作流前进的:用例被确定、用例被设计、最后用例又称为测试人员构造测试用例的基础。
- 统一过程是以架构为中心的
- 尽管敏捷方法认为系统设计应该随着软件开发不断演化,但是,系统的架构设计应该在系统开始编码之前给予充分的斟酌。因为架构关心的不仅是功能性需求,更多关心的是非功能性需求,如系统的性能等。一个没有经过深思熟虑的架构往往会在开发后期或系统移交之后暴露出很多性能上的问题,那时再进行重构的代价是非常大的。
- 风险驱动
- UP的另一个驱动就是风险,因为如果你不主动预测和防范风险,风险就会主动攻击你。UP需要对软件开发中的风险进行分析、预测并关注软件的构造。
与面向对象方法的关系
- 统一软件开发过程是基于面向对象方法和UML统一建模语言的
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 每个阶段根据其工作和迭代在时间上被划分。
- 初始阶段:为系统建立业务案例(Business Case) 并确定项目的边界。业务案例包括项目的验收规范、风险评估、所需资源 估计、阶段计划等。确定项目边界需要识别所有与系统交互的外部实体,并在较高层次上定义外部实体与系统交互的特性,主要包括识别外部角色(Actor)、识别所有用例并详细描述一些重要的用例。
- 精化阶段:分析问题领域,建立健全的体系结构基础,编制项目计划,完成项目中高风险需求部分的开发。
- 构造阶段:完成所有剩余的技术构件和稳定业务需求功能的开发,并集成为产品,详细测试所有功能。构建阶段只是一个制造过程,其重点放在管理资源及控制开发过程以优化成本、进度和质量。
- 移交阶段:确保软件对最终用户是可用的。产品化阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量调整。
- 划分每个阶段和对应的主要里程碑如下:
阶段 | 里程碑 |
---|---|
初始阶段 | 生命周期目标 |
精化阶段 | 生命周期体系结构 |
构造阶段 | 初始运行能力 |
移交阶段 | 产品发布 |
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
- 因为RUP利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按固定节奏运行,固定迭代周期、固定开发周期、固定升级周期。
- 好处:
- 明确了不同阶段迭代的里程碑与目标
- 支持 CI/CD 的版本交付
- 为固定项目周期提供了可能
- 每个迭代产品在增量(制品是可运行的),利于及时交付使用并反馈
- 固定的迭代周期(等量的人月),利于量化团队/个人生产率