SWAD | Homework3

简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点

从项目特点、风险特征、人力资源利用角度思考

(以下部分为个人观点)

瀑布模型

瀑布模型将软件生命周期划分为制定计划、分析、设计、编码、测试、运行维护等阶段,其规定了上述阶段必须自上而下,像瀑布一样。本阶段活动的工作对象来自于上一项活动的输出,这些输出一般是代表本阶段活动结束的里程碑式的文档,本阶段活动产出相关的软件工件,作为下一阶段活动的输入。改进的瀑布模型可以在下游阶段发现缺陷后返回上一个阶段,或者如果下游阶段认为不足则返回到设计阶段。

优点

  1. 降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性,可适用于大型项目
  2. 不同人员可以只根据上一阶段的文档,进行本阶段的工作,有利于人员的组织和管理

缺点

  1. 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题
  2. 风险控制能力较弱
  3. 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往
    往会产生错误的结论

增量模型

增量模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。其首先对系统最核心或最清晰的需求进行分析、设计、实现、测试并集成到系统中,再按优先级逐步实现后续需求。增量模型强调每一个增量均发布一个可操作的产品。

优点

  1. 提高系统可靠性
  2. 降低系统失败风险
  3. 通过同一个团队的工作来交付每个增量,保持所有团队处于工作状态,减少了员工的工作量,工作分布曲线通过项目中的时间阶段被拉平。

缺点

  1. 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度
  2. 增量粒度难以选择

螺旋模型

螺旋模型结合了瀑布模型和快速原型方法,将瀑布模型的多个阶段转化到多个迭代过程中,以降低项目的风险。螺旋模型最大的特点在于引入了其他模型不具有的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减少风险的途径。螺旋模型的每一次迭代都包含了以下六个步骤:

  • 决定目标、替代方案和约束条件
  • 识别和解决项目的风险
  • 评估技术方案和替代方案
  • 开发本次迭代的交付物,并验证迭代产出的正确性
  • 计划下一次迭代
  • 提交下一次迭代的步骤和方案

优点

  1. 整体过程具备很高的灵活性,在开发过程的任何阶段自由应对变化
  2. 引入风险分析,使软件在无法排除重大风险时有机会停止,以减小损失

缺点

  1. 螺旋模型强调风险分析,但说服外部客户接受和相信分析结果并做出相关反应并不容易,因此螺旋模型往往比较适合内部的大规模软件开发。
  2. 风险分析需要耗费相当的成本,因此螺旋模型比较适合投资规模较大的软件项目。
  3. 失误的风险分析可能带来更大的风险。

简述统一过程三大特点,与面向对象的方法有什么关系?

三大特点

  1. 用例驱动:用例驱动表明开发过程是沿着一个流(一系列从用例得到的工作流)前进的:用例被确定、用例被设计、用例被测试(最后用例又成为测试人员构造测试用例的基础)
  2. 以架构为中心:软件构架包含了系统中最重要的静态和动态特征。构架刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特性。
  3. 迭代和增量的:软件开发是一项复杂的过程,因此可以将这些项目划分为切实可行并能够产生一个增量的迭代过程。迭代是指工作流中的步骤,增量是指产品中增加的部分。

它将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。

简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?

统一过程中的软件生命周期在时间维度上被分解为四个顺序的阶段:初始阶段 (Inception)、精化阶段 (Elaboration)、构建阶段(Construction) 和产品交付阶段 (Transition)。

  1. 初始阶段 (Inception):为系统建立业务案例 (Business Case) 并确定项目的边界。
    • 里程碑:生命周期目标 (Lifecycle Objective) 里程碑,包括一些重要的文档,如:项目构想 (Vision)、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。通过对文档的评审确定用例需求理解正确、项目风险评估合理、阶段计划可行等
  2. 精化阶段 (Elaboration):分析问题领域,建立健全的体系结构基础,编制项目计划,完成项目中高风险需求部分的开发。
    • 里程碑:生命周期体系结构 (Lifecycle Architecture) 里程碑,包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
  3. 构建阶段(Construction):完成所有剩余的技术构件和稳定业务需求功能的开发,并集成为产品,详细测试所有功能。构建阶段只是一个制造过程,其重点放在管理资源及控制开发过程以优化成本、进度和质量。
    • 里程碑:初始运行能力 (Initial Operational Capability) 里程碑,包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运行。
  4. 产品交付阶段 (Transition):确保软件对最终用户是可用的。产品化阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量调整。
    • 里程碑:产品发布 (Product Release) 里程碑,确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段相重合。

软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

统一过程为企业按固定节奏生产、固定周期发布软件产品提供了依据。

统一过程中的软件生命周期在时间维度上被分解为四个顺序的阶段:初始阶段 (Inception)、精化阶段 (Elaboration)、构建阶段(Construction) 和产品交付阶段 (Transition),可以使企业能有一个固定的节奏来生产;统一过程的迭代性,使得项目组能周期性地交付产品。

给企业项目管理带来的好处:

  1. 在软件开发的早期就可以对关键的,影响大的风险进行处理
  2. 可以提出一个软件体系架构来指导开发
  3. 可以较早的得到一个可运行的系统,鼓舞开发团队的士气,增强项目成功的信心。