本书是用SEI的能力成熟度模型(CMM)改进机构软件开发过程的实用指南,向软件项目经理和管理员提供CMM软件过程改进的实用知识,并介绍软件寿命周期每个阶段的实现方法。本书强调软件过程定义、有效利用软件度量和常识软件项目管理。这种集成方法能帮助专业人士用CMM作为工作准则,不断实现软件过程改进。前言在我们的生活中,有时会遇到特别的人物,发现某种产品,从而改变我们对某个东西的看法。对我来说,这个人就是Joe Raynus,这个产品就是他实现的软件工程衡量标准。我在20世纪80年代末遇到他,听说他开发了一个令人不可思议的产品,可以自动生成软件衡量标准,帮助分析结果。毫无疑问,经过几个星期的讨论与评估,我不仅理解了这个产品及其工作原理,而且理解了这个人及其思考方法。简而言之,他可以把每个复杂的过程与计算简化成我能方便地理解和交流的管理术语与图表。许多软件专家还在把软件工程看成一门艺术,而Joe已经可以向产品经理说明如何把原先的知识与软件工程原则联系起来了。Joe的工作不断改进,Carnegie Mellon大学软件工程学会(SEI,Software Engineering Institute)收集和建档的知识也在不断?慕4邮鹿廊砑钅康娜硕蓟辜堑茫琒EI的能力成熟度模型(Capability Maturity Model)是用于帮助政府项目经理更好地理解参与政府工作的公司具有的成熟程度,但其大多数内容要求了解软件开发活动中如何出错,为何出错。将我在政府部门遇到的问题与在商业化市场中遇到的问题相比,我发现问题是相同的。速度、质量、要求满意度、测试方法、配置管理、项目计划与监管、成本、风险管理和预见性在小项目和大型政府软件开发中都要遇到。SEI的知识和Joe的智慧能帮助任何软件公司更好地建立世界一流的产品。他的方法简单而直接,他的例子非常明确,他的实践极为丰富。商业部门的同行在机构中领导软件改进活动时应密切关注CMM和Joe的作品,也许你还不知道,你的许多竞争对手已经实现了能在时间和质量上占优势的关键过程。Michael J. Prowse 质量与客户服务部主任Sun公司Solaris软件公司序十五年前,老板的老板把我叫到办公室,提出了三个“简单”问题:1. 支持与维护软件产品的费用为什么这么高?2. 产品可靠性如何?3. 一个软件故障的平均成本如何?为了回答这些问题,我成了查错者和制错者。几年之后,我自己开了一家公司,主要产品是自动生成软件衡量标准的工具。当时我是个经理,是软件厂商。生活中有时需要进行一些艰难的决定。我离开自己创办的公司和倍感亲切的产品,回到行业中。我看到自己的使命就是帮助客户回答上述问题。不久,我发现,要了解这些问题,就要“深入基层,了解民情”。即使是一组软件衡量标准,也不可能对这些问题提供现成的方案。每个客户的情形各不相同,除非了解特定问题,否则不可能提出建议。没有像了解美国空军一样了解软件管理问题的机构。大约有一年时间,我曾是源选择评审委员会(Source Selection Evaluation Board,SSEB)的技术顾问。审查各种提案,很好地了解外部看到的潜在问题,这些问题的影响程度,客户有什么预期,软件生产过程可能遇到怎样的问题。之后,我成为了一名客户。结束了在SSEB的工作之后,我花了几年的时间帮助我的客户管理和控制他们的软件问题。我将软件开发过程中遇到的问题组织起来,供客户参考。有时,很明显的信息被隐藏了起来。我已经体验了他们的生活,并帮助他们解决了问题。后来我做了顾问。了解能力成熟度模型(CMM)对我很重要。我在评审小组期间进行的几次评审使我对软件管理问题有了更深的了解。与此同时,我知道有一种方法可以帮我在软件项目管理的迷途中导航。解释的灵活性保证了导航的自由度。我的解释来自下列简单的观点:做软件行业中可行和正确的事,保证软件更好、更成熟。我开始用CMM作为参考指南,用软件衡量标准作为软件过程改进工作的基础与粘接剂。我把这个方法介绍给客户,他们使用CMM,帮我改进CMM与软件衡量标准。我发现,任何事情的最佳做法是自己感到合理的方法。说明本书用苏菲的故事,讲述既聪明又愚蠢的毛拉。苏菲认为,直觉是知识的惟一真正准则,并用这些故事作为例证。这些故事适用于许多不同情形,包括软件管理过程。苏菲的故事来源于Indries Shah的《The Pleasantries of the Incredible Mulla Nasrudin》(ARKANA Penguin图书出版公司,1993年再版)。“什么是命运?”一位学者问毛拉。“无穷无尽相互交织的事件,每个事件都是相互影响的。”“这个答案并不好,我信的是因果。”“好的,”毛拉说,“你看。”他指向街上的人群,“那人就要送上绞刑架了,是别人给他银子,让他买了匕首,杀了人,还是别人看到他这么干,还是因为没有人阻止他?”