简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点
-
瀑布模型
瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。- 优点
- 模型简单,降低了软件开发过程的复杂度,提高软件开发过程的可管理性
- 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,可对每个阶段的开发质量进行有效的监督,保证最后开发完成的产品达到预期的质量要求
- 只需关注当前阶段,而无需关注前一阶段或者后续的阶段,增加了软件开发过程中的专注度
- 缺点
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险
- 不适应用户需求的变化
- 优点
-
增量模型
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。- 优点
- 将待开发的软件系统模块化,可分批次地提交软件产品,使用户可以及时了解软件项目的进展
- 以组件为单位进行开发降低了软件开发的风险
- 开发顺序灵活
- 可以较为灵活的应对用户需求的更改
- 缺点
- 增量粒度难以确定
- 不断地迭代开发难以保证开发的整体性
- 优点
-
螺旋模型(含原型方法)
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。- 优点
- 引入风险分析,使软件在无法排除重大风险时有机会停止,以减小损失
- 在每个迭代阶段构建原型,以减小开发风险
- 可以应对更加灵活地设计,使得设计在各个阶段可以进行变更
- 以小的分段来构建大型系统,使成本计算变得简单容易
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性
- 缺点
- 引入风险分析,增加了额外的开发成本
- 不适用于小型软件的开发
- 建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求
- 建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求
- 优点
简述统一过程三大特点,与面向对象的方法有什么关系?
- 三大特点
- 软件开发是用例驱动的
- 以架构为中心
- 受控的迭代式增量开发
- 与面向对象方法的关系
统一过程将软件开发过程要素和软件工件要素整合在统一的软件工程框架中,是
一个面向对象的程序开发方法论。
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
- 四个阶段的划分准则
RUP中的软件生命周期在时间维度上被分解为四个顺序的阶段,每个阶段结束于一个主要的里程碑。 - 关键里程碑
- 初始阶段:该阶段的里程碑为一些重要的初期文档,通过对这些文档的评审确定用例需求理解正确、项目风险评估合理、阶段计划可行等。
- 细化阶段:包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
- 构建阶段:通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
- 交付阶段:确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
软件企业采用基于统一过程的软件项目规划,将软件产品的开发分解为不同的阶段与迭代,然后对于每个阶段或者迭代设定一定的时间限制,只要基本按照预定的时间线进行软件开发,就可以在预定的时间发布软件产品。
- 好处
- 实现增量发展,稳定推进项目进度
- 企业项目管理具有明确的阶段划分,每个迭代阶段都有明确的目标。使项目管理确定合理的产品范围,不投入大量时间在冗余的工作中
- 提高了风险控制能力
- 有利于产品的及时交付使用并获得用户客户的反馈