极限编程的幻想与真实

---极限编程的幻想与真实
雷剑文 陈振冲 李明树
1.可接受的失败
心理学家指出:人们往往愿意选择“可接受的失败”(an acceptable way of failing),也不太愿意尝试“冒险的成功”(a risky way of succeeding)。
瀑布模型已成为一个标准,而这个标准就是可接受的失败。

2.能力成熟度模型
能力成熟度模型(Capability Maturity Model,CMM)由美国卡内基.梅隆大学(CarnegieMellon University)的软件工程研究所(Software Engineering Institute,SEI)提出的一套对软件工程的管理,改进与评估的模式。最早应用于美国国防部(Department of Defence,DoD)评估软件商的软件工程能力。
1 初始级 不可预测。
项目的成功往往完全依赖于一个杰出的主管或是一小部分有才干的队员
CMM1+杰出的主管和优秀的队伍=项目成功
CMM1+平庸的主管和队伍=项目结果难以预测
2 可重复级 有纪律
可重复级是建立管理软件项目方针和制定实施这些方针的规程。组织通过基本的项目管理来有效的控制成本,即根据一建立的项目方针的经验对类似的新项目进行规划和管理。第二级的目标是使软件项目的有效管理制度化。
项目经验->定义准则和跟踪->新的类似项目->再成功
3 定义级 标准化和一致化
在定义级上,开发和维护软件的标准过程已经文档化.包括软件过程的工程和管理方面,即软件过程标准化.项目经理和技术人员在工作过程中能按统一的标准来完成这个软件过程.但是标准的软件过程不是不可修改的,任何改变也需要有系统的计划而不是谁记得,即软件过程的修改需要根据测试和效益分析.
CMM3->定义软件过程->可视和可控
4 管理级 可预测的
组织衡量软件过程和产品而拟定质量和改进的目标.要客观表达这个目标,要把质量标准量化,并用具体的数据表示出来.每一个软件过程中都有很具体的数据来衡量它的生产率和质量.量化的最大特点是客观地观察软件过程改进.过程是已测量的并可测得限制范围内运行.具备该等级的过程能力,组织便能在定量限制的范围内预测过程和产品质量方面的趋势.

5 优化级 不断改进
能达到第四即管理级,组织已相当成熟,但是信息技术是不断更新的,因而组织的软件过程应不断地更新--即不断地优化.因此,CMM特别强调成熟的组织是不断改进的.第二级到第四级的改进是指吸收每一级的相关经验和充分运用已有技术而改进;第五级所说的改进不仅利用每一级所得到的成果,更主要的是利用新技术不断优化软件过程和改进产品.

3.关键过程域(Key Process Area,KPA)
即是每个等级里的指标。每个关键过程域都指明了有哪些内容要进行改进,也说明了过程改进的主要范围。“关键”说明了还有其他的过程范围,但不是改进组织的成熟程度的主要过程,CMM并未详尽地描述所有与开发和维护软件有关的过程范围。
二.重复级
需求管理 Requirement Management
根据顾客的需求来设计软件方案,使软件工程和客户需求达成一致
软件项目计划 Software Project Planning
建立合理的方案,执行工程和管理软件计划
软件项目跟踪监督Software Project Tracking and Oversight
建立一定的标准,以便管理者能根据此标准来约束每个项目的实施过程。
软件子合同管理 Software Subcontract Management
选择合适的软件商并有效管理他们
软件质量保证 Software Quality Assurance
向管理者提供适当的对软件项目正使用的过程及已构造产品的可视性
软件配置管理Software Configuration Management
建立和维护整个软件生存周期中软件项目产品的完整性。
三.定义级
组织过程焦点 Organization Process Fcous
建立组织对软件过程活动的责任,这些活动能改进组织的整体软件过程能力
组织过程定义 Organization Process Definition
开发和维护一组便于使用的软件过程资产,这些资产改进横跨各项目的过程性能,并为组织积累性的长期收益打下基础
培训大纲 Training Program
培育个人的技能和知识,使他们有效地和高效率地履行其职责
集成软件管理 Integrated Software Management
将活动和管理集成为一个协调的已定义的软件过程。该软件过程是由组织的标准软件过程和有关的过程资产剪裁而得到的,这在组织过程中已定义
软件产品过程 Software Product Engineering
一致地执行一个明确定义的工程过程,该过程集成所有软件工程活动,以便有效的生产正确一致的软件产品
组间协调 Intergroup Coordination
以软件工程组与其它工程组一起积极参与的方式,使项目更有效和高效率地满足顾客的需求
同行评审 Peer Reviews
及早和高效率的从软件工作产品中消除缺陷。
四.管理级
定量的过程管理 Quantitative Process Management
定量地控制软件项目过程性能,软件过程性能表示遵循这一软件过程所得到的实际结果
软件质量管理 Software Quality Management
建立对软件产品质量的定量了解,并实现特定的质量目标
五.优化级
缺陷预防 Defect Prevension
鉴别缺陷的原因并防止它再出现
技术改革管理 Technology Change Management
识别新技术(即根据,方法,过程),并以有序的方式将其引进到组织中
过程更改管理 Process Change Mangement
本着改进软件质量、提高生产率和缩短产品开发周期的宗旨,不断改进组织所使用的软件过程

4.全天候软件开发
通过运用时区差异,最理想的情况时把工作分散到不同地区,是软件开发能24小时全天候不间断开发.有潜力达到"即时上市"的目标.
       设计和源代码
美国-------->中国-------->英国--------〉美国
全天候工作最大困难是,组员需要一定时间跟进另一个地方分公司所传来的任务,余下的时间才能真正的进行工作,软后日落前交给另一个地区的分公司。问题:每一个地方的过程必须是不受阻碍的伙食不间断的,否则这个过程陷入停顿。你只有一个工作日去理解和继续工作。

5。极限编程
高迭代的过程可降低变更成本的指数飙升。
程序员和客户之间的直接沟通。简化了沟通程序和决策过程,减少了因之间信息媒介所造成的信息失真(Information Distortion),既然客户提出的需求和程序员的技术是同等重要的,他们就应该处于完全平等的地位。客户和程序员是极限编程的重要角色,也代表了极限编成的核心精神,即人重于过程。
要达到高迭代过程,队伍需要具备四种不同的价值:沟通(Communication),简单(Simplicity),反馈(Feedback)和勇气(Courage)。
极限编程实际上是由这四个价值驱动的,而不是实践,即,如果实现某极限编程的实践,而得不到这四个价值的话,就失去了极限编程的意义。

6.敏捷软件开发
敏捷宣言:
   个体和交互胜过工程和工具
   可以工作的软件胜过面面俱到的文档
   客户合作胜过合同谈判
   响应变化胜过遵循计划

7.极限编程的12个实践
小版本(Small Release)
规划游戏(Planning Game)
现场客户(On-Site Customer)
隐喻(Metaphor)
简单设计(Simple Design)
重构(Refactoring)
测试驱动开发(Test-Driven Development)
持续集成(Continuous Integration)
结对编程(Pair Programming)
代码共有(Collective Code Ownership)
编码标准(Coding Standards)
每周40小时工作制

你可能感兴趣的:(编程,敏捷开发,软件测试,项目管理,配置管理)