简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点。从项目特点、风险特征、人力资源利用角度思考
瀑布模型:
优点:
- 有利于大型软件开发过程中人员的组织
- 有利于软件开发方法和工具的研究
- 提高了大型软件项目开发的质量和效率
缺点:
- 开发过程不可逆,代价较高
- 实际开发很难按照瀑布模型进行
- 客户难以在一开始给出清晰的需求
- 软件开发情况要到后期才能被客户看到,可能与客户的预期不一样
增量模型
优点:
- 人员分配灵活,开始阶段不需要大量人力
- 可以先开发部分功能给客户
- 当配备的人员不够时,可以先退出核心产品,有计划地管理技术风险
缺点:
- 并行开发构建可能遇到不能集成的风险,软件必须具备开发式的体系结构
- 因为变化能力强,可能造成出现边做边该模型的情况,导致软件开发过程的控制失去整体性
螺旋模型
优点:
- 灵活,可以在项目的各个阶段进行变更
- 客户始终可以参与每个阶段,保证项目不偏离正确方向以及项目可控性
- 通过风险分析,最大程度降低软件彻底失败造成损失的可能
缺点:
- 需要具有丰富的风险评估经验和专门知识,如果没能及时标识风险可能造成更大的损失
- 增加开发的时间成本,推迟提交时间
- 依赖风险分析经验与技术,如果分析失误将造成巨大损失
- 只适用于大型软件,过多的风险管理支出会影响客户最终的收益
- 开发过程过于灵活,不利于客户与开发者之间的协调
简述统一过程三大特点,与面向对象的方法有什么关系?
三大特点:
- 软件开发过程是用例驱动的:在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码
- 软件开发过程是以体系结构为中心的:软件体系结构提供了所有其他开发发展的中心点,为开发提供一个组织框架,通过关注系统的可修改性来演进系统,有利于促进重用
- 软件开发过程是受控的迭代式增量开发:统一过程将程序模块化,进行以周期形式实现增量的迭代式开发
统一过程是一个面向对象且基于网络的程序开发方法论
简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?
开发过程的四个阶段
- 初始阶段
初始阶段的目标是为系统建立商业案例并确定项目的边界。在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。
生命周期目标(Lifecycle Objective)里程碑 - 细分阶段
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。理解整个系统–做出决策–建立支持环境
生命周期结构(Lifecycle Architecture)里程碑 - 构造阶段
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。重点放在管理资源及控制运作以优化成本、进度和质量。
初始功能(Initial Operational)里程碑 - 交付阶段
交付阶段的重点是确保软件对最终用户是可用的。交付阶段横跨几次迭代,包括发布做准备的产品测试,基于用户反馈的少量的调整。
产品发布(Product Release)里程碑
软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?
RUP(软件统一过程)中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统。
好处:
- 每个迭代都是瀑布的工作流程
- 每个迭代产品在增量(制品是可运行的),利于及时交付使用并反馈
- 固定的迭代周期(等量的人月),利于量化团队/个人生产率