一、简答题

1. 简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点

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

瀑布模型

  • 优点

    • 为项目提供了按阶段划分的检查点。
    • 当前一阶段完成后,只需要去关注后续阶段。
    • 可在迭代模型中应用瀑布模型。
  • 缺点

    • 在项目各个阶段之间极少有反馈。

    • 只有在项目生命周期的后期才能看到结果。

    • 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

    • 以文档驱动,导致产生大量的文档资料。

增量模型

  • 优点

    • 人员分配灵活,刚开始不用投入大量人力资源。
    • 如果核心产品很受欢迎,则可增加人力实现下一个增量。
    • 可先发布部分功能给客户,对客户起到镇静剂的作用。
  • 缺点

    • 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。

    • 增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

螺旋模型

  • 优点
    • 设计上的灵活性,可以在项目的各个阶段进行变更。
    • 以小的分段来构建大型系统,使成本计算变得简单容易;
    • 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;
    • 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
  • 缺点
    • 要求开发人员要擅长寻找可能的风险,准确地分析风险。
    • 强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的。一般用于内部大规模软件开发。
    • 建设周期长。

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

  1. 用例和风险驱动: UP 一般由 UML 方法和工具支持。用例是捕获需求的方法,因此,也可以说 UP 是用例(需求)驱动的。UP 的另一个驱动就是风险,因为如果你不主动预测和防范风险,风险就会主动攻击你。UP 需要对软件开发中的风险进行分析、预测并关注软件的构造。

  2. 以体系结构为核心: UP 方法实际上就是开发和演进一个健壮的系统体系结构,体系结构描述了系统的整体框架:如何把系统划分成组件以及这些组件如何进行交互和部署在硬件上。组件使重用成为可能,系统可以由组件组成。基于独立的、可替换的、模块化组件的体系结构有助于管理复杂性,提高重用率。RUP 描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系结构。

  3. 迭代及增量 :UP 迭代表示我们把项目分成小的子项目(迭代),它提供系统的功能块或者增量,最终产生完整的功能系统。每一次迭代都经历一次完整的软件生命周期,每一次迭代都有需求、分析、设计、实施,并以一个可执行版本结束。执行迭代计划的关键是准确获知每个迭代要完成的目标,如果采用 UML 建模,则用例就是最好的迭代点。可以为用例排出优先级,在每个迭代中实现一部分用例。

UP 中的核心工作流的实现阶段中可以用面向对象的方法实现组件。


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

UP 的4个阶段分别是初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。

初始阶段 Inception

  • 划分准则:在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。

  • 里程碑:生命周期的目标里程碑,评价项目基本的生存能力。

细化阶段 Elaboration

  • 划分准则:细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。

  • 里程碑:生命周期的结构里程碑,为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。

构造阶段 Construction

  • 划分准则:在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。
  • 里程碑:初始功能里程碑,决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。

交付阶段 Transition

  • 划分准则:交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。

  • 里程碑:产品发布里程碑。此时,决定是否目标已达到或开始另一个周期。在许多情况下,里程碑会与下一个周期的初始阶段相重叠。

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

RUP 将周期分为四个连续的阶段:初始阶段、细化阶段、构造阶段、交付阶段。每个阶段终结于良好定义的里程碑,即某些关键决策必须被做出的时间点,因此关键的目标必须被达到。每个阶段又有自己明确的目标,例如初始化阶段是为系统建立商业案例以及确定项目的边界,而细分阶段是为了分析问题领域,建立健全的体系结构基础等;以及核心工作流当中的 9 个核心的过程工作流,所以利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按 固定节奏 运行,固定迭代周期、固定开发周期、固定升级周期。

统一过程对企业项目管理带来的好处是,在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品,确保开发过程持续地更新和提高以反映新的经验和不断演化的实践经验,提高了团队生产力,是有效使用 UML 的指南,能对大部分开发过程提供自动化的工具支持,为大范围项目和机构提供了许多现代软件开发过程的最佳实践。