|
有时固定价格交付要求的存在被当成瀑布方法的一个理由,因为在没有真实信息的条件下作出决策也是合理的。迭代方法对初始的估算可能并没有什么改善,不过您能很快知道您做得怎么样,然后您可以更加容易地选择必要的时机启动协商,设定干系人的期望和管理项目范围。正如RUP所倡导的,一个处理固定价格投标与合同的理智方法是一种两阶段的策略。在第一阶段中,针对初始短暂(比如4周)的固定时间和固定价格签订合同,以便开展实际的调查和试探性编程,以产生更加成熟的范围、风险和需求规约。这一经改进的规约随后可被用作第二阶段(完整的开发)投标的基础。第一阶段调查的投入并没有浪费,其结果将节省第二阶段的工作量,并有助于产生第二份(最终的)更加符合实际的合同。
第二招:把RUP当作一个重型的、先断性的过程来用
重型或轻型、先断性或适应性的过程常常被人提及,而一个“重型过程”的称谓通常具有贬义,它具有以下性质:刚性和控制;许多活动和RUP工件是在一种官僚主义的氛围当中创建的;大量的文档;细致入微的长时间的详细计划;在基本工作之上存在大量的过程开销;以过程为本,而不是以人为本;以一种机械的方式把人视为可插拔的部件;先断性而非适应性。一个先断性的过程企图在一段相对长的时间段里(比如几乎在项目的整个周期中)计划和预测活动与资源(人员)的分配,其价值观隐含着对瀑布型的偏好。
相反,一个轻型或敏捷的过程意味着“精简与平实”,它具有如下特点:除去了所有不必要的官僚主义的过程开销,尽量减少创建低价值或无意义的文档;专注于工作环境中人的本性之现实,让软件开发成为一种乐趣;它是适应性的。
为了促成RUP实施的失败,请采取以下重型、先断性的做法:
* 对整个迭代项目进行详细的计划。从一开始就定义所有迭代的编号和日期,规定每个迭代中将要发生的事情。
* 创建绝大部分甚至所有的RUP工件。
* 增加大量项目和过程的正规程式,甚至建立几个项目委员会。
* 在项目中追求一种机械的时钟驱动感,把人当作整个项目机器中的专用齿轮。
把RUP设计成一个重型或先断性的过程并非其创始人的本意,造成这一假象主要是由于人们误添了错误的过程观点或对RUP本身有误解,而RUP产品提供的庞大的详细过程文档又加剧了错误的印象,极容易导致RUP被错误地实施。RUP作者们的本意是鼓励人们以一种轻型的、敏捷的、适应性的过程实质来运用它。比方说:
● 应该创建RUP活动和工件的一个最小集,即只包含那些真正有附加值的东西;随着项目的进展,如果任何的过程开销活动没有附加值,那么就果断地抛弃它。
● 对所有的迭代,都不预设详细的计划。有一个高层的计划(叫作阶段计划)估计项目的完工日期和其他主要的里程碑,然而它并不详细指定通向这些里程碑的路径。一个细化的计划(叫作迭代计划)只是提前对一个迭代(比如下一个两周的迭代)进行较细致的计划。从一个迭代到另一个迭代的详细计划是适应性地完成的。
第三招:忽视对象技术技能
RUP的直接目标在于开发面向对象系统。多年来,我们观察到许多对象技术项目失败或遇到严重的挫折,一个普遍的问题是缺乏真正地能以对象方式思考,熟练掌握对象设计、对象模式和面向对象编程的人员。拥有技艺精湛的OT开发人员是一个绝对优先的关键成功因素,而采用RUP或其他过程则相对次要。正如Grady Booch所言,“人远比过程重要”。
因此,如果要让RUP实施真正失败,就可忽视聘用或培养那些拥有出色对象技能的人员。真正有实效的OT培养并非指先有一个星期的Java技术课程,然后是一个星期的面向对象分析设计课程,而是需要向软件工程师提供半年内大至八周的、有老师精心指导的培训,之后还需要一年左右的专家辅导巩固期。
<<上一页
1
2
3
4
5
下一页>>
数据挖掘论坛
|