Homework 3
1. 简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点
瀑布模型
优点:
- 有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
- 为项目提供了按阶段划分的检查点。
- 当前一阶段完成后,只需要去关注后续阶段
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
- 可以在迭代模型中应用
缺点:
- 各个阶段划分固定,阶段之间会有大量的文档,增大了工作量
- 线性开发模型,用户只能等到最后阶段才能看到结果,增加了开发风险。
- 不适应用户需求的变化
增量模型
优点:
- 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
- 允许增量投资,即在项目开始时可以仅对一个或两个增量投资缺点
- 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整
缺点:
- 当没有对用户的变更需求进行规划,那么初始增量会造成未来增量的不稳定
- 过程中产生的增量可能需要重新发布,重新开发,增大了工作难度
- 进度和配置可能很复杂,超出进度。
螺旋模型
优点:
- 设计灵活,可以在项目各个阶段进行变更
- 每个大的系统由小的分段构成,使得成本控制计算较为容易
- 客户基本上参与每个阶段的开发, 可以保证项目的稳定性
- 客户较认可此模型,认为可以和开发人员具有良好的沟通
缺点:
- 建设周期长,而软件发展技术较快,经常出现当开发完毕后,软件水平与当前水平有较大的差距,无法满足客户需求。
- 在需求明确时,这种方法有时较为低效。
2. 简述统一过程的三大特点,与面向对象的方法有什么关系?
三大特点:
1. 用例驱动
用例驱动既做到了以客户为中心,以客户的角度看系统,为客户创建真正可用的系统的构造方式,又解决了传统面向对象方法面临的无法有效的从需求中提取对象的困难,从而填平了需求分析方法和对象设计方法之间的鸿沟。
2. 以架构为中心
以架构为中心,坚持综合考虑软件系统的各个方面,并优先解决各个方面的主要问题,同时创建常见问题的通用解决方案,从而为解决软件项目的主要风险、准确估算项目进度、提高软件复用、保证软件的整体风格打下了坚实基础。
3. 受控的迭代式增量开发
迭代和增量式开发,以风险为驱动,分阶段针对不同的风险制定对策,以保证软件项目的成功完成。
其中用例驱动和受控的迭代式增量开发体现了用户驱动的开发;
以架构为中心体现了风险驱动的开发。
统一软件开发过程(RUP)是一个面向对象且基于网络的程序开发方法论。它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。统一软件开发过程和类似的产品,如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具,把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内
3. UP 四个阶段的划分准则是什么?关键的里程碑是什么?
- 初始阶段:
初始阶段的目标是为系统建立商业案例并确定项目的边界。初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。生命周期目标里程碑评价项目基本的生存能力。
- 细化阶段:
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。细化阶段结束时第二个重要的里程碑:生命周期结构(Lifecycle Architecture)里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。
- 构造阶段:
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。构建阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。
- 交付阶段:
交付阶段的重点是确保软件对最终用户是可用的。在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
因为RUP将开发分割四个阶段,每个阶段里程碑明确,易于评估是否满足。每个迭代过程都有固定的时长和产品生成。进而为企业按固定节奏生产、固定周期发布软件产品提供了依据。每次迭代都具有各自的需求分析、设计、实现和测试活动。因此,在每次迭代完成后,都有一定的产品可供发布。
RUP是一个风险驱动的生命周期模型,为了有效地控制风险,RUP以渐进的方式进行演进,首先解决高风险的问题,这主要是通过迭代来实现。在软件生命周期中,每个阶段可以划分为多个迭代,每个迭代确定一个内部里程碑。即如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。