1. 简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点
从项目特点、风险特征、人力资源利用角度思考
瀑布模型:
特征:
(1)本阶段活动的工作对象来自于上一项活动的输出,这些输出一般是代表本阶段活动结束的里程碑式的文档
(2)根据本阶段的活动规程执行相应的任务
(3)本阶段活动产出相关的软件工件,作为下一阶段活动的输入
(4)对本阶段活动执行情况进行评审
优点:
(1)降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性
(2)推迟软件实现,强调在软件实现前必须进行分析和设计工作
(3)以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求
缺点:
(1)强调过程活动的线性顺序。
(2)缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。
(3)风险控制能力较弱。
(4)瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量
(5)瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量
增量模型:
优点:
(1)增强客户对系统的信心。
(2)降低系统失败风险。
(3)提高系统可靠性。
(4)提高系统的稳定性和可维护性
缺点:
(1)建立初始模型时,作为增量基础的基本业务服务的确定有一定难度
(2)增量粒度难以选择
原型模型:
优点:
(1)有助于增进软件开发人员和用户对系统服务需求的理解,减少两者之间的误解
(2)易于确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果
(3)软件原型版本有的可以原封不动地成为产品,有的略加修改就可以成为目标系统的一个组成部分,有利于最终系统的建成
缺点:
(1)大型系统难以进行直接的原型模拟,只能经过系统分析得到系统的整体结构。
(2)大型系统难以进行直接的原型模拟,只能经过系统分析得到系统的整体结构。
(3)在用户需求的业务流程、信息流程混乱的情况下,原型的构造与评价有一定的困难。
(4)批处理系统的大部分活动是内部处理的,应用原型方法会有一定的困难。
(5)此外原型方法还存在容易忽略文档工作、建立原型带来资源浪费、项目规划和管理困难等问题
螺旋模型:
优点:
(1)设计上的灵活性,可以在项目的各个阶段进行变更
(2)以小的分段来构建大型系统,使成本计算变得简单容易
(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性随着项目推进,客户始终掌握项目的最新信息 , 从而能够和管理层有效地交互
(4)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点:
(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
(2)过多的迭代次数会增加开发成本,延迟提交时间
(3)建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求
2. 简述统一过程三大特点,与面向对象的方法有什么关系?
RUP (Rational Unified Process) 是一种基于 UML 的、以构架为中
心、用例驱动与风险驱动相结合的迭代增量过程。它将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是一个面向对象的程序开发方法论。
三个特点:
(1) 以用例驱动
采用用例来捕获对目标系统的功能需求。采用用例来驱动软件的整个开发过程,保证需求的可跟踪性,确保系统所有功能均被实现。将用户关心的软件系统的业务功能实体功能模型和开发人员结合起来,提供一种贯穿整体软件生存周期的开发方式,使得软件开发的各个阶段的工作自然、一致地协调起来
(2)以体系结构为核心
强调在开发过程的早期,识别出软件与软件的体系结构紧密相关的用例,并通过对这些用例的分析、设计、实现和测试,形成体系结构框架。在后续阶段中对已形成的体系结构框架进行不断细化,最终实现整体系统
(3)迭代及增量
将软件开发分为一系列小的迭代过程,在每个得带过程中逐步增加信息、进行细化。根据具体情况决定迭代的次数、每次迭代延续的时间以及迭代工作流。每次迭代都选择目前对风险影响最大的用例进行,以分解和降低风险
其中(1)和(3)体现了用户驱动开发,(2)体现了风险驱动开发
3. 简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
初始阶段 (Inception)、精化阶段 (Elaboration)、构建阶段(Construction) 和产品交付阶段 (Transition)。
划分标准:软件生命周期在时间维度, 每个阶段结束于一个主要的里程碑 (Major Milestone),并在阶段结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段
里程碑:
初始阶段:生命周期目标 (Lifecycle Objective) 里程碑,包括一些重要的文档,如:项目构想 (Vision)、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。通过对文档的评审确定用例需求理解正确、项目风险评估合理、阶段计划可行等
精化阶段:生命周期体系结构 (LifecycleArchitecture) 里程碑,包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
构建阶段:初始运行能力 (Initial Operational Capability) 里程碑,包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运行。
产品化阶段/移交阶段:产品发布 (Product Release) 里程碑,确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段相重合。
4. 软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按 固定节奏 运行,固定迭代周期、固定开发周期、固定升级周期。为固定项目周期提供了可能。
RUP将软件的生命周期划分为四个阶段,并且开发被组织成一系列固定的短期小项目,称为迭代,每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。因此,在每次迭代完成后,都有一定的产品可供发布
由于中间版本的产品是逐步产生的,而且核心功能和性能需求已经包含在前续版本中,所以,可以根据市场竞争的情况适时推出中间版本产品,降低市场风险,为企业项目管理带来了好处