Fork me on GitHub

software-analysis-hw-3

Software Analysis and Design Homework - 3

简答题

瀑布模型、增量模型、螺旋模型与其优缺点

  • 瀑布模型

    从系统需求分析开始直到产品发布和维护,设计一系列阶段。每个阶段的输入来自于上一阶段的输出;每个阶段经过评审后进入下一个阶段;如果当前阶段出现问题,可以回退到上一阶段进行改进。这样的阶段工作如同瀑布不断往下流。

    • 优点

      • 将软件开发划分阶段,降低软件开发复杂度
      • 相较于直接写代码实现,更强调软件分析与设计工作
      • 阶段性评审可以及时发现并纠正软件开发中的错误
    • 缺点

      • 缺乏灵活性,强调阶段执行的线性顺序
      • 容错性不高,在后期阶段发现前期阶段的问题,解决问题的工作量十分庞大(需要重新从早期阶段开始)
      • 通过文档审查的方式,项目进度容易被错误评估
  • 增量模型

    对系统最核心/最清晰的需求进行分析,设计,实现,测试并集成到系统中,再按照优先级逐步实现后续需求。

    • 优点

      • 增强客户对系统信心,可以较早看到部分成果
      • 降低系统失败风险,拥有前期基础,不会造成前期系统崩溃
      • 提高系统稳定性和可维护性,出现问题可以快速定位增量位置,从而便于维护
    • 缺点

      • 初期增量业务难以确定
      • 每次增量粒度难以选择
  • 螺旋模型

    螺旋模型结合了瀑布模型与快速原型方法的特点,将软件开发分为四个阶段:制定计划,风险分析,工程实现和评审,其中风险分析阶段是螺旋模型的特点。它将软件项目划分成一个个更小的项目,对每个小项目,都进行风险分析与评估,从而达到控制系统风险的目的。

    • 优点

      • 灵活性,可以在项目的各个阶段进行变更
      • 分解小项目,成本控制更可行
      • 项目可控,客户始终参与每一次迭代,保证项目符合要求
    • 缺点

      • 强调风险分析并要求客户接受
      • 风险的确定,分析与评估

统一过程三大特点以及与面向对象的方法的关系

  • 三大特点

    • 风险驱动

      统一过程需要项目团队定位项目早期生命周期最严重的风险,且必须选择每次迭代的可交付成果,特别是在精化阶段,以确保首先解决最大的风险。

    • 以体系结构为核心

      统一过程将系统架构视为项目团队开发项目的核心。因为没有一个单独的模型可以覆盖一个系统的各个方面,所以统一过程支持多架构模型。

    • 迭代与增量

      统一过程是一个迭代增量开发过程。精化,构建,产品化阶段被分为一些列迭代过程。每一次迭代都会产生一个增量,它比之前的版本有着功能的改进或增加。

  • 与面向对象方法的关系

    统一过程是一种以用例驱动,以体系结构为核心的迭代增量过程。它由 UML 方法和工具支持,是一个面向对象的程序开发方法论。

统一过程四个阶段的划分准则与每个阶段关键的里程碑

统一过程的四个阶段:初始阶段(Inception Phase),精化阶段(Elaboration Phase),构建阶段(Construction Phase)和交付阶段(Transition Phase)。

初始阶段(Inception Phase)

  • 划分准则

    初始阶段是项目中最小的阶段,在这个阶段为系统建立业务案例(希姆验收规范,风险评估,所需资源估计和阶段计划等),确定项目边界。

  • 里程碑

    生命周期目标里程碑,包括一些重要的文档:项目构想,原始用例模型,原始业务风险评估等。

精化阶段(Elaboration Phase)

  • 划分准则

    分析问题领域,健全体系结构基础,定位已知风险因素,编制项目计划,创建用例图,概念图和架构图。

  • 里程碑

    生命周期体系结构里程碑,包括风险分析文档,软件体系结构基线,项目计划,可执行的进化原型等。

构建阶段(Construction Phase

  • 划分准则

    完成所有剩余家属构建和稳定业务需求功能的开发并测试,集成为产品。

  • 里程碑

    初始运行能力里程碑,包括可运行的软件产品,用户手册等,它决定了产品是否可以在测试环境中进行部署。

交付阶段(Transition Phase)

  • 划分准则

    确保软件对用户可用,包括为发布做准备的产品测试,基于用户反馈的少量调整。

  • 里程碑

    产品发布里程碑,确定最终目标是否实现,是否可以开始产品下一个版本的另一个开发周期。

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

  • 原因

    1. 企业规范化管理
    2. 基于统一过程的软件项目规划
    3. 利用软件产品范围的弹性
    4. 合理规划范围(20%业务决定80%满意度)
  • 好处

    1. 规范管理使得企业可以将复杂问题简单化,简单问题流程化,流程问题标准化,标准问题自动化
    2. 统一过程项目规划帮助企业及时交付产品,量化生产效益
    3. 固定节奏生产,固定周期发布软件产品可以帮助企业更好把控产品开发,及时调整企业资源(人力/物力),获取最大收益