SWSAD-hw3

软件项目过程模型与规划

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

  • 瀑布模型

    • 核心思想:分阶段顺序完成。
    • 优点
      • 每个阶段有一个里程碑,可作为检查点。
      • 每个阶段可以顺序独立完成,也就是说可以不用考虑前面已做完的阶段,只关注后续阶段。
      • 模型简单,且可结合迭代模型进行开发。
      • 有利于管理、组织大型软件开发,更好地调配人力资源。
      • 强调了软件开发过程中,分析与设计的重要性。
      • 文档驱动,降低了沟通成本。
    • 缺点
      • 开发过程一般不可逆转,代价很大。
      • 灵活性差,难以适应需求的变化。
      • 阶段划分过于硬性,解耦不当可能会造成大量的重复工作。
      • 推迟了软件实现,开发末期才能见到成果,风险大。
      • 容易只以文档完成情况来判断开发进度,有失偏颇(易造假)。
      • 风险控制能力较弱。
  • 增量模型

    • 核心思想:将系统模块化,每个模块作为一个增量组件,分批次分析、设计、编码和测试这些增量组件。
    • 优点
      • 不用一次性交付给客户,可以分批交互,方便客户了解项目进展。
      • 不至于在开发末期才看见成果,分批开发过程中有利于提升团队自信心,以及发现更多细节。
      • 开发灵活,一个周期的错误不至于影响整个项目,更开放、更稳定,扩展性强。
      • 模块化更有利于全局把握,解耦明确功能模块和业务范围,可以优先开发核心功能。
      • 随着项目的推进,开发过程中技术人员水平也会逐渐提升,技术风险会逐渐降低。还可以复用前几次周期的思想、方法、技术等。
    • 缺点
      • 要求系统必须是可以被模块化的,否则强行模块化会导致许多不必要问题。
      • 难以确定增量粒度。
      • 如何合理地进行模块化也是一门大学问。
      • 实际开发过程中可能会演变成边做边改,不利于整体把控。
  • 螺旋模型(含原型方法)

    • 核心思想:兼顾其他模型优点,引入风险评估体系。
    • 优点
      • 最主要:加入了风险分析,便于风险控制。
      • 灵活。也是可以进行阶段性变更,尤其适用于需求不太明确的情况。
      • 简单易扩展。可以结合迭代模型、瀑布模型等其他模型对工作进行一个很好的分解和简化。
      • 循序渐进。每个阶段都保证了客户的参与,防止产品偏离客户需求,同时让客户了解进度,及时进行沟通。
    • 缺点
      • 风险评估需要比较专业的经验、知识和额外的人才。风控没做好,容易造成大量损失。
      • 过多的迭代和需求变更会导致项目延期,带来一系列附加负面影响。
      • 只适用于大规模软件开发,小型软件用螺旋模型得不偿失。
      • 强调风险分析,但要求许多客户接受并相信这种分析,是不容易的。

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

  • 统一过程是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。

    • 用例驱动。 软件是为用户服务的,用户就是上帝,要以用户为核心,用例便是用户与系统交互的具体情景,可以根据用例明确系统的业务需求、服务范围。

    • 以体系结构为核心。 软件构架的作用与建筑构架所起的作用类似。架构牢固系统才有比较好的鲁棒性。每一种产品都具有功能和表现形式两个方面,其中功能与用例相对应,表现形式与构架相对应。

    • 迭代及增量开发。 由前面的模型对比可知,迭代和增量开发可以带来许多好处。

  • 与面向对象的关系:面向功能类编程,架构设计接口,很符合面向对象的基本策略。

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

  • 初始阶段(inception phase)。 主要确定项目的风险及其优先次序,初始规划确定业务范围,项目整体预算估计等。里程碑为目标里程碑。

  • 细化阶段(elaborattion phase)。 主要深入分析用例、健全架构和制定详细的开发计划。里程碑为结构里程碑。

  • 构造阶段(construction phase)。 开发和测试阶段。里程碑是初始功能里程碑。

  • 移交阶段(transition phase)。 改进产品的缺陷和不足,准备交付给用户。里程碑是产品发布里程碑。

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

统一过程的关键是迭代,每个迭代都是由一个小周期构成,企业严格遵循这种迭代小周期进行阶段性开发,可以很好地实现增量发展,稳定推进项目进度,及时获取并应用用户的最新反馈,使产品一步一步往更好的方向发展。这样使得企业项目管理也更加方便、规范、易于员工接受。另外,这样每个周期都保持与客户的联系,能不断修正需求,保证项目的持续热度,提升客户的信任度。