1、简答题
瀑布模型:
-
将软件生命周期划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了他们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
-
优点:
- 降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性。
- 推迟软件实现,强调在软件实现前必须进行分析和设计工作。
- 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求。
-
缺点:
- 强调过程活动的线性顺序。
- 缺乏灵活性,尤其无法解决软件需求不明确或不准确的问题。
- 风险控制能力较弱。
- 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量。
- 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往往会产生错误的结论。
增量模型:
- 软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险,有利于快速开发软件。
- 优点:
- 增强客户对系统的信心;
- 降低系统失败风险;
- 提高系统可靠性;
- 提高系统的稳定性和可维护性。
- 缺点:
- 建立初始模型时,作为增量基础的基本业务服务的确定有一定难度;
- 增量粒度难以选择。
螺旋模型(含原型方法):
-
综合了瀑布模型和演化模型的优点,还增加了风险分析,特别适合于大型复杂的系统。采用螺旋模型时,软件开发演着自内向外旋转,每转一圈都要对风险进行识别和分析,螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化演着螺旋线进行若干次迭代,一直运转到软件生命周期结束。
-
优点:
- 设计上比较灵活,可以在开发的各个阶段进行更改。
- 每个大的系统由小的分段构成,让成本比较容易计算。
- 客户可以参与每个阶段的开发,这样能减少需求修改的次数,保证项目的稳定性。
- 客户和开发人员也有比较好的沟通。
-
缺点:
- 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
- 过多的迭代次数会增加开发成本,延迟提交时间。
-
简述统一过程三大特点,与面向对象的方法有什么关系?
三大特点如下:
- 用户为中心(描述用户使用产品的故事)
- 架构为重心(软件产品分解的领域最佳实践)
- 风险驱动(早期暴露风险)
和面向对象的方法关系:
-
统一软件开发过程(RUB),是一个面向对象且基于网络的程序开发方法论。而面向对象软件过程(OOSP)同样是把开发中面向过程的方面和其他开发的组件整合在一个统一的框架中。而面向对象的方法则属于这些方法论框架当中处理部分对象的方法。
-
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
UP四个阶段的划分准则是初始阶段(Inception)、精化阶段(Elaboration)、构建阶段 (Construction) 和产品交付阶段(Transition)。 每个阶段结束于一个主要的里程碑(Major Milestone),并在阶段结尾执行一次评估以确定这个阶段的目标是否已经满足。
-
初始阶段的里程碑:生命周期目标(Lifecycle Objective) 里程碑,包括一些重要的文档,如原始业务案例等。需要对这些 文档进行评审,以确定正确理解用例需求、项目风险评估合理、 阶段计划可行等。
-
精化阶段的里程碑:生命周期体系结构(Lifecycle Architecture) 里程碑。包 括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构 已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
-
构建阶段的里程碑:初始运行能力里程碑。 包括可以运行的软件产品、用户手册等,它决定了产品是否可 以在测试环境中进行部署。此刻,要确定软件、环境、用户是 否可以开始系统的运行。
-
交付阶段的里程碑:产品发布里程碑。确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。在 一些情况下这个里程碑可能与下一个周期的初始阶段的相重合。
-
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
因为统一过程模型中,各个阶段的生命周期是有固定长度的, 因此在产品的的迭代开发过程有较为明确的时间限制的。
好处:
- 每个迭代都是瀑布的工作流程
- 每个迭代产品在增量(制品是可运行的),利于及时交付使用并反馈
- 固定的迭代周期(等量的人月),利于量化团队/个人生产率