阶段
项目经理或组织可以将每一个项目划分为若干个阶段,以便于有效地进行管理控制,并实施该项目组织的日常运作联系起来。
项目划分为四个阶段:概念、计划、实施、结束
生命期
项目阶段合在一起称为项目生命期,项目生命期确定了将项目的开始和结束连接起来的阶段。
通用生命周期的结构
启动项目、组织与准备、执行项目工作、结束项目
每个项目阶段都是以交付物的完成为标志,这种交付物是可度量、可验证的工作成果。
项目阶段的结束一般以完成的工作和可交付物的技术和设计评审为标志,决定是否进入下一步阶段,在不结束就开始下一阶段,通常进行管理评审,快速跟进法。
阶段的正式完成,不包括对后续阶段的批准。明确该阶段的任务作为正式启动。
阶段评审的目的:判断当前阶段是否满足结束标准并进入下一个阶段、发现当前阶段中存在的问题和错误。
阶段评审内容:当前阶段的交付物、当前阶段的项目执行情况。
项目阶段的特征
- 各阶段的工作重点不同,通常涉及不同的组织,处于不同的地理位置,需要不同的技能组合;
- 为了成功实现各阶段的主要可交付成果或目标,需要对各阶段及其活动进行独特的控制或采用独特的过程。重复执行全部五大过程组中过程,可以提供所需的额外控制,并定义阶段的边界。
- 阶段的结束以作为阶段性可交付成果的工作产品的转移或移交为标志,阶段结束点是重新评估项目活动,并变更或终止项目(如果必要)的一个当然时点。这个时点可称为阶段关口、里程碑、阶段审查、阶段门或关键决策点。
阶段与阶段的关系有两种基本类型:顺序关系、交叠关系
项目里程碑
项目里程碑是设立在项目某一阶段的目标,用来表明项目所取得的进展;
里程碑不是任务,不是计划活动,仅是一个事件;
可行性论证、需求、总体、概设、详设、系统实现、系统测试、系统实施、系统试运行、验收等阶段评审。
软件产品生命周期与项目生命周期的关系
项目生命周期定义项目的开始与结束,通常按顺序排列但有时又相互交叉的一系列项目阶段的集合。
产品管理
产品管理可以表现为如下三种不同的形式:
- 产品生命周期中包含项目集管理;
- 产品生命周期中包含单个项目管理;
- 项目集内的产品管理。
瀑布模型
也叫预测型生命周期、完全计划驱动型生命周期。瀑布模型是经典的软件生命周期模型,一般将软件开发分为:可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。
V模型
V模型左边的分别代表了需求分析、概要设计、详细设计、编码。
V模型体现的主要思想是开发和测试同等重要,左侧代表的是开发活动,而右侧代表的是测试活动。V模型针对每个开发阶段,都有一个测试级别与之相对应。测试依旧是开发生命周期中的阶段,与瀑布模型不同的是,有多个测试级别与开发阶段对应。V面模型适用于需求明确和需求变更不频繁的情形。
原型化模型
原型化模型是弥补瀑布模型的不足而产生的。原型化模型的第一步是建造一个快速原型,实现客户或未来用户与系统的交互,经过和用户针对原型的讨论和交流,弄清需求以便真正把握用户需要的软件产品是什么。
原型的特点:实际可行、具有最终系统的基本特征、构造方便、快速、造价低。
原型分类:
- 抛弃型原型;
- 进化型原型。
增量模型
采用增量型生命周期的项目通过在预定的时间区间内渐进增加产品功能的一系列的迭代来产出可交付成果。只有在最后一次迭代之后,可交付成果具有了必要和足够的能力,才能被视为完整的。
螺旋模型
螺旋模型是一个演化软件过程模型。将原型实现的迭代特征与线性顺序(瀑布)模型中控制的系统化的方面结合起来。
在螺旋模型中,软件开发是一系列的增量发布。在早期的迭代中,发布的增量可能是一个纸上的模型或原型;在以后的迭代中,被开发系统的更加完善的版本逐步产生。
四阶段:制订计划、风险分析、实施工程和客户评估。螺旋模型强调了风险分析,特别适用于庞大而复杂的,高风险的系统。
迭代模型
在迭代式的过程中,每个阶段都包括不同比例的所有活动。
采用迭代型生命周期的项目范围通常在项目生命周期的早期确定,但时间及成本会随着项目团队对产品理解的不断深入而定期修改。
适用于:不能完整定义产品的所有需求、计划多期开发的、在开发早期需求可能有所变化、需要降低。
敏捷开发模型
是一种以人为核心、迭代、循序渐进的开发方法。更强调程序员团队和业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中的作用。
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发;
特点:较小增量、快速迭代(2-4周)、变更驱动、每次交付最有价值成果;
适用于:适合于需求不确定,不断发展变化的项目。
总结
预测型 | 迭代型与增量型 | 适应型 |
需求在开发前预先确定 | 需求在交付期间定期细化 | 需要在交付期间频繁细化 |
针对最终可交付成果制订交付计划,然后在项目结束时一次交付最终产品 | 分次交付整体项目或产品的各个子集 | 频繁交付对客户有价值的各个子集 |
尽量限制变更 | 定期把变更融入项目 | 在交付期间实时把变更融入项目 |
关键干系人在特定里程碑点参与 | 关键干系人定期参与 | 关键干系人持续参与 |
通过对基本已知的情况编制详细计划来控制风险和成本 | 通过用新信息逐步细化计划来控制风险和成本 | 随着需求和制约因素的显现而控制风险和成本 |