第三部分 最佳实践
第十七章 变更委员会(change board)——项目中多部门一起工作,多项目中的变更进行批准或拒绝!
1、主要效果:降低项目进度风险!——
建议长期使用!
2、主要风险:批准的变更太多或太少;
3、相互影响:可以与其他实践方法自由结合使用;
第十八章 每日构建和冒烟测试(daily build and smoke test)——持续集成,提高开发效率
1、主要效果:降低项目进度风险!——
建议长期使用!
2、主要风险:过于频发构建的压力;
3、相互影响:与
里程碑实践结合使用发挥最大效能;为
增量式开发提供支持;
第十九章 面向变更设计开发(designing for change)——基于变更设计的开发是快速软件开发的捷径
1、主要效果:降低项目进度风险!——
建议长期使用!
2、主要风险:过于依赖编程语言而没有采用基于变更的设计;
3、相互影响:为
增量式开发提供支持;
第二十章 渐进交付(evolutionary delivery)——少量多次,频繁迭代地进行软件交付
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、目标偏移;
b、减弱多项目的控制;
c、对开发时间的低效率使用;
3、相互影响:
a、从阶段交付和渐进原型中发展出来;
第二十一章 渐进原型(evolutionary prototyping)——原型设计的渐进交付
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、建立原型时间没有被充分利用;
b、设计不佳;
c、缺乏可维护性;
3、相互影响:
a、渐进交付的基础;
第二十二章 设定目标(goal setting)——确定目标,然后实现目标!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、目标变化挫伤士气;
3、相互影响:
a、有助于
签约、限时开发、自愿加班和激励员工;
第二十三章 代码检查(inspection)——组织会议、划分角色、找出错误、提高开发速度!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、可与其他实践结合使用;
第二十四章 联合应用开发(joint application development)——用户、管理人员、开发人员通过异地、封闭、集中的会议澄清一些与系统有关的细节问题(侧重需求和计划),更关注商业问题而非技术问题!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、由JAD会议产生的不切实际的效率期望;
b、有JAD会议产生的对剩余工作的不切实际的估计;
3、相互影响:
a、可与增量式开发、原型工具结合使用;
第二十五章 生命周期模型的选择(life cycle model selection)
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、选择某一个生命周期模型本身没有风险,但是可能会有附带风险;
3、相互影响:
a、无;
第二十六章 测量(measurement)——制定测量计划,保证项目质量!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、对某一个测量计划过度优化;
b、对员工评估中误用测量方法;
c、从代码行测量中获得错误误导信息;
3、相互影响:
a、为改善项目预算、制定进度计划、评估生产工具和评估编程时间提供了基础;
第二十七章 小型里程碑(miniature milestones)——便于进行项目控制和跟踪,很好地提供项目状态的可视性。
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、特别适合
项目恢复;
b、与每日构建和蔓延测试结合使用特别有效;
c、增加项目跟踪工作量换来良好的可视性和控制性;
第二十八章 外包(outsourcing)——软件开发承包给第三方公司!
1、主要效果:
a、
增大了项目风险!——慎重使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、失去对开发的控制;
b、丢失进度可视性和对进度的控制;
3、相互影响:
a、以丢失进度和失去对开发的控制换来降低成本和提高开发速度;
第二十九章 原则性谈判(principaled negotiation)——一种基于改善沟通和创造双赢的策略!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、无;
第三十章 高效开发环境(productivity environments)——软件开发是高智力活动,必须保证环境的适宜性!
1、主要效果:
a、对
目标进度风险没有影响!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、以装饰为目标的办公环境会导致生产率下降;
b、搬迁造成停工;
c、由于开发人员的待遇提高造成各种反应;
3、相互影响:
a、小成本增加带来生产率提高;
第三十一章 快速开发语言(rapid development languages)——采用比第三代开发语言(C/c++、pascal)更高的语言减少开发工作时间!
1、主要效果:
a、
增加了项目进度风险!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、带来银弹错误(太过信赖新技术)和过高估计节省的时间;
b、不能扩展到大型项目;
c、会造成鲁莽编程;
3、相互影响:
a、用降低设计和实施过程的灵活性来换取实施时间的缩短;
第三十二章 需求修正(requirements scrubbing)——删除不必要的需求!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、删除不必要的需求;
3、相互影响:
a、无;
第三十三章 代码复用(reuse)——公司构建常用部件库,使得新程序能够直接使用,提高开发效率!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、不仔细挑选要重用的部件,会造成资源的浪费;
3、相互影响:
a、重用需要和生产工具相协调;
b、有计划的重用必须遵守软件开发的基本规则;
第三十四章 签约雇佣(signing up)——同候选小组签订约定,激励小组成员投入更大的时间和精力!
1、主要效果:
a、
增加项目进度风险!——
建议慎重使用!
b、缩短原定进度压力!
2、主要风险:
a、增加无效性;
b、降低对状况的可见性与控制能力;
c、个人潜能发挥的比较少;
d、撕毁约定。
3、相互影响:
a、削弱了项目的可视性、控制以及效率换来对雇员的激励;
第三十五章 螺旋形生命周期(spiral life cycle model)——经典的生命周期模型,重点能够发现和降低风险!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、用增加对计划的要求和实施的追踪,换来进度可视性的改善和大幅度降低风险;
第三十六章 阶段交付(staged delivery)——分阶段进行交付,以功能优先级来进行开发!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、目标偏移;
3、相互影响:
a、利用小型里程碑,规划每个阶段的交付;
b、灵活性小于渐进交付和渐进原型;
c、可作为渐进交付的基础,用增加计划时间的投入,换取进展的可视性。
第三十七章 W-理论管理(theory-W management)——W理论提供了一种平衡项目各方利益的管理框架!
详细参考《W理论软件项目管理:原则与实例》
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、与螺旋生命周期模型协调;
b、在协商时效果显著;
c、取决于对原则性讨论方法的使用;
第三十九章 舍弃型原型法(throwaway prototyping)——一些代码生来就是为了舍弃的!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、保留一个舍弃型的原型;
b、没有有效利用建立原型的时间;
c、不现实的进度和预算;
3、相互影响:
a、无;
第四十章 限时开发(timebox development)——限定时间内完成任务!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、将限时开发应用于不适宜的工作产品中;
b、为了保持特性的数量而不顾质量;
3、相互影响:
a、依赖于渐进原型的使用;
b、通常在JAD项目中与JAD、CASE工具及渐进原型共同使用;
第四十二章 工具组(tools group)——建立经典工具集合,事半功倍!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、无;
第四十一章 十大风险清单(top 10 risks list)——列出风险清单,逐个避免!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、无;
3、相互影响:
a、无;
第四十二章 构建用户接口原型(user-interface prototyping)——快速开发用户接口来探究用户接口的设计和系统需求!
1、主要效果:
a、降低项目进度风险!——
建议长期使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、不断装饰原型;
3、相互影响:
a、从发展的原型和舍弃的原型得出结论;
第四十三章 自愿加班(voluntary overtime)——额外的工作时间直接提高了生产力!
1、主要效果:
a、
增加项目进度风险!——
建议慎重使用!
b、改善进度可视化!
c、缩短原定进度压力!
2、主要风险:
a、过度的压力和过度的加班影响进度;
b、降低了响应紧急需求紧急加班的应变能力;
3、相互影响:
a、需要采用具有人情味的和非强迫性的激励办法;
b、通常支持小型里程碑、渐进生命模型、限时开发等。