优点:①为项目提供了按阶段划分的检查点;
②当当前阶段完成后,只需要去关注后续阶段;
③可在迭代模型中应用瀑布模型;
缺点:①在项目各个阶段之间缺少反馈;
②只有在项目生命周期的后期才能看到结果;
③通过过多的强制完成日期和里程碑来跟组各个项目阶段。
优点:①第一个可交付版本所需要成本和时间较少,从而减少开发由增量表示的小系统承担的风险;
②由于很快发布第一个版本,因此可以减少用户需求的变更;
③允许增量投资,即在项目开始时可以仅对一个或两个增量投资;
缺点:①如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;
②如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;
③由于进度和配置的复杂性,可能会增大管理成本,超出组织的能力。
优点:①设计上的灵活性,可以在项目的各个阶段进行变更;
②以小的分段来构建大型系统,使成本计算变得简单容易;
③客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;
④随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
缺点:①需有丰富的风险评估经验知识,对于风险较大项目若未能够及时标识风险,势必造成重大损失;
②过多的迭代次数会增加开发成本,延迟提交时间。
UP(软件统一过程)的特点:用例驱动,以架构为中心,迭代和受控的迭代式增量开发
用例驱动表明开发过程是沿着一个流——一系列从用例得到的工作流前进的:用例被确定、用例被设计、最后用例又称为测试人员构造测试用例的基础。
以架构为中心,其中软件构架包含了系统中最重要的静态和动态特征。而构架刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特性。
统一过程是迭代增量的过程, 为了获得最佳的效果,迭代过程必须是受控的。迭代过程主要用来处理一组用例,这些用例组合起来就能够扩展所开发产品的可用性。而迭代过程要解决最突出的风险问题。只有这样后续的迭代过程才能建立在前一次迭代过程的基础上。
以上三个特点中,用例驱动体现了用户驱动的开发,而以架构为中心和迭代、受控的增量开发体现了风险驱动的开发。
统一开发过程中每次迭代都分为四个阶段:初始、细化、构造和移交。在每个阶段,管理或开发人员又可以将本阶段的工作进一步划分为多次迭代过程以及每次迭代过程产生的增量。每个阶段都以一个里程碑作为结束标记。
在合同固定的情况下,工期是在项目开始时商定确定的,而质量与最终项目验收时的客户满意度相关,只有内容、范围,在项目开发过程中,开发团队人员可以在满足需求与设计的情况下进行决定,因此相较而言,“范围/内容”是项目团队易于控制的。
软件统一开发过程,将软件的开发过程分为四个大阶段,并且明晰地列出每个阶段的任务分工以及达到目标(可以进入下一阶段,也就是里程碑)的要求,因此开发团队能够更好地合理安排与规划开发周期与分期完成工作,因此在节奏和总体时间的掌握上更好。
截图项目小组的Kanban界面如下,其中现在处于项目启动阶段,有8项未完成,一项正在进行中,一项已经完成。