软件生命周期模型

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

瀑布模型:

  瀑布模型将软件生命周期分为需求分析、设计、实现、验证、维护五个阶段,每个阶段按顺序执行,完成了一个阶段后随即进入下一个阶段。

优点:

  • 降低软件开发的复杂程度,提高软件开发过程的可管理性。

  • 强调分析和设计的重要性

  • 以阶段成果评估产品,保证阶段之间的正确衔接,使最终产品的质量得到保证。

缺点:

  • 阶段的线性顺序缺乏灵活性,无法进行阶段回溯。

  • 难以控制风险

  • 瀑布模型中的软件活动是以文档驱动的,当文档过多时,工作量也随之增加;以文档来评估项目进度的管理人员也容易产生错误判断。

  • 容易造成项目延期、不可控

增量模型:

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

优点:

  • 保证系统最核心的功能,降低系统失败的风险,提高系统可靠性、稳定性、可维护性

缺点:

  • 难以准确界定系统核心

  • 难以选定增量的粒度

螺旋模型:

  螺旋模型结合了瀑布模型和快速原型方法,是风险驱动的迭代过程。在多个迭代过程中,实现瀑布模型的多个阶段,但每一次迭代只包含一个或两个阶段

优点:

  • 强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品 开发之中

  • 引入了明确的风险管理机制,降低项目风险

  • 能有效应对需求功能复杂、开发周期长、用户需求经常变化等问题

缺点:

  • 风险分析需要花费较大的成本,且错误的风险分析会带来更大的风险
  • 难以确定迭代次数,无法确定发布日期
  • 不适用于大规模团队运作

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

统一过程的三大特点:

  • 具有伸缩性:只需要使用对当前项目有效的过程,而不需要使用整个框架的每个过程

  • 有效性:统一过程在很多大项目里被证明是有效的

  • 提高生产效率:提供了可能已经使用过的实用方法

与面向对象方法的关系:

  统一过程是一个面向对象的程序开发方法论,是面向对象方法的一个应用实例。面向对象分析确定了问题的范围,因此统一过程提供的方法能在不同的情景下具有伸缩性,而面向对象设计提供了分析提出的问题的有效解决方案,因此统一过程具有有效性,能提高生产效率。

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

  我认为统一过程的四个阶段划分准则是在每个阶段对统一过程的核心工作流的着重程度。

  统一过程的核心工作流为:Business Modeling,Requirements analysis,Design,Implementation,Test and Integration

  Inception阶段着重业务建模与需求分析,以此来确定系统的可行性,并给出生命周期目标

  Elaboration阶段着重分析设计,给出具体的文件规范,同时进行初始阶段开发实现

  Construction阶段的主要工作为开发与测试,在构建阶段末期,尝试进行部署,以得到一个具备雏形的系统

  Transition阶段着重于部署,同时进行测试修改,最终得到一个可交付的产品

里程碑:

  • Inception:生命周期目标

  • Elaboration:生命周期体系结构

  • Construction:一个具备初始运行能力的系统

  • Transition:一个能交付给客户的具有全部需求功能的系统

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

  软件公司能根据能力成熟度模型集成(CMMI)评估自身的成熟度,确定自己的定位,并以此为依据选择企业的主营软件类型,继而通过软件的规模、稳定程度确定软件生命周期模型。在固定的软件生命周期模型的指导下,软件企业的项目团队只需要根据计划就能按期生产出可交付的软件产品。这样软件企业就能按固定节奏生产、发布软件,并从中有效地控制了软件风险,获得稳定的利润来源。软件生命周期模型还能很好地引导项目管理,为项目管理提供了明确的实施方法和度量规则,大大减轻了项目管理的难度。