HOMEWORK 3

作业

1、简单题

  • 简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)

    • 瀑布模型
      • 瀑布模型将软件生命周期划分为制定计划(P)、需求分析(A)、软件设计(D)、程序编写(C)、软件测试(T)和运行维护(M)等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序。
      • 优点:
        • 项目特点角度:可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决。采用瀑布模型可以使系统具备良好的扩展性和可维护性;可以降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性。
      • 缺点:
        • 项目特点角度:强调过程活动的线性顺序;缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题;
        • 风险特征角度:风险控制能力较弱,没有引入专门的风险分析、风险控制阶段。
        • 人力资源利用角度:对于中小型的项目,需求设计和开发人员往往在项 目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况。
    • 增量模型
      • 增量模型首先对系统最核心或最清晰的需求进行分析、设计、实现、测试并集成到系统中,再按优先级逐步实现后续需求。
      • 优点:
        • 项目特点角度:增强客户对系统的信心;提高系统可靠性;提高系统的稳定性和可维护性。
        • 风险特征角度:降低系统失败风险。
        • 人力资源利用角度:人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。
      • 缺点:
        • 项目特点角度:建立初始模型时,作为增量基础的基本业务服务的确定有一定难度;增量力度难以选择;在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
    • 螺旋模型
      • 螺旋模型是风险驱动的迭代过程,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型结合了瀑布模型和快速原型方法,将瀑布模型的多个阶段转化到多个迭代过程中,以降低项目的风险。
      • 优点:
        • 项目特点角度:具有灵活性,可以在项目的各个阶段进行变更;以小的分段来构建大型系统,使成本计算变得简单容易。
        • 风险特征角度:随着项目成本投入不断增加,风险逐渐减小。在每次迭代结束后都需要对产出物进行评估和验证,当发现无法继续进行下去时可以及早的终止项目。
      • 缺点:
        • 项目特点角度:螺旋模型强调风险分析,但说服外部客户接受和相信分析结果并作出相关反应并不容易,因此螺旋模型比较适合内部的大规模软件开发;过多的迭代次数会增加开发成本,延迟提交时间。
        • 风险特征角度:失误的风险分析可能带来更大的风险。

HOMEWORK 3

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

    • 三大特点

      • 用例和风险驱动

        统一过程一般由UML方法和工具支持;通过用例捕获需求,达到驱动的目的。

        统一过程需要对软件开发中的风险进行分析。

      • 以构架为中心

        统一过程方法实际上就是开发和演进一个健壮的系统体系结构,体系结构描述了系统的整体框架:如何把系统划分成组件以及这些组件如何进行交互和部署在硬件上。

      • 迭代及增量

        统一过程迭代表示把项目分成小的子项目,它提供系统的功能块或者增量,最终产生完整的功能系统。每一次迭代都经历一次完整的软件生命周期,每一次迭代都有需求、分析、设计、实施,并以一个可执行版本结束。

    • 与面向对象方法的关系

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

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

    • 统一过程的四个阶段为:构思阶段(Inception)、细化阶段(Elaboration)、构建阶段(Construction)、移交阶段(Transition)。

    • 划分的准则:按照时间维度划分

    • 每个阶段的里程碑

      • 构思阶段(Inception)

        生命周期目标(Lifecycle Objective)里程碑,包括一些重要的文档,如:项目构想(Vision)、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。通过对文档的评审确定用例需求理解正确、项目风险评估合理、阶段计划可行等。

      • 细化阶段(Elaboration)

        生命周期体系结构(Lifecycle Architecture)里程碑,包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。

      • 构建阶段(Construction)

        初始运行能力(Initial Operational Capability)里程碑,包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运行。

      • 移交阶段(Transition)

        产品发布(Product Release)里程碑,确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。

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

    软件企业一般都很好地利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按固定节奏运行,固定迭代周期、固定开发周期、固定升级周期。

    带来的好处:

    • 使团队具有节奏感:按固定节奏生成、固定周期发布软件产品可以使企业的团队形成习惯,使生产效率更高。
    • 降低协同成本:能够并行的去安排多个迭代的规划,评审等活动。
    • 简化规划活动:如果固定的迭代长度,当团队人力固定的时候,团队的生产率理论上也是固定的,有利于规划的合理性。