CMM(能力成熟度模型)是一种广泛用于评估和改进机构的软件开发过程的模型。CMM是一个体系,它只规定了软件开发过程能力的各种级别的特点以及改进的目标,但对如何实现这些能力和目标没有详细的指导,而且,由于软件应用领域很多,各个机构特点不尽相同,没有一个统一的详细指南可以解决所有机构面临的问题,因此,各个机构必须结合自身的特点来量体裁衣,构建自己的软件开发过程。因此,为了帮助机构建设CMM,提高自身的软件开发过程的能力,提供一些结合CMM理论来全面系统地介绍成功实现CMM体系的实例,这对渴望改善软件管理能力的机构是非常有帮助的。\r\n\r\n 本书以印度著名的软件服务供应商Infosys(信息系统公司)所采用的过程为例,通过讲解一个典型的软件项目开发的生命周期各个阶段所采用的管理技术和管理过程,用实例教学法生动地讲述了枯燥、繁杂理论的实现过程。本书首先简要回顾了CMM的基础理论,介绍了Infosys的背景及其大致的开发过程,随后按照项\r\n\r\n目的生命周期分三部分介绍了CMM在软件开发过程中的应用,包括项目启动、项目计划、项目执行和终止。本书最后的附录说明了一个通过IS0认证的机构如何过渡到CMM,并给出了Infosys实现CMM的一些经验。\r\n\r\n 本书可以作为实现软件机构CMM体系的相关人员和希望改善机构软件开发管理和过程的技术人员的参考书,也可以作为计算机专业高年级本科生、研究生的软件工程教学参考书。\r\n
\r\n
第1章 绪论 \r\n\r\n 1. 1 基于过程的项目执行方法 \r\n\r\n 1. 2 软件的能力成熟度模型 \r\n\r\n 1. 2. 1 CMM的成熟度级别 \r\n\r\n 1. 2. 2 不同级别的KPA \r\n\r\n 1. 2. 3 评估方法 \r\n\r\n 1. 3 Infosys的过程 \r\n\r\n 1. 3. 1 背景 \r\n\r\n 1. 3. 2 过程体系结构和文档 \r\n\r\n 1. 3. 3 SEPG和软件过程改进计划 \r\n\r\n 1. 3. 4 高级管理者的介入 \r\n\r\n 1. 3. 5 过程生命周期 \r\n\r\n 1. 3. 6 项目管理过程 \r\n\r\n 1. 4 小结 \r\n\r\n 参考文献 \r\n\r\n 第一部分 项目启动 \r\n\r\n 第2章 建议书和合同 \r\n\r\n 2. 1 客户和供应商的交流 \r\n\r\n 2. 2 建议书 \r\n\r\n 2. 3 合同 \r\n\r\n 2. 4 小结 \r\n\r\n 第3章 需求规格和需求管理 \r\n\r\n 3. 1 需求分析和需求规格 \r\n\r\n 3. 1. 1 整体过程 \r\n\r\n 3. 1. 2 需求规格 \r\n\r\n 3. 2 需求变更管理 \r\n\r\n 3. 2. 1 过程 \r\n\r\n 3. 2. 2 例子 \r\n\r\n 3. 3 跟踪管理 \r\n\r\n 3. 3. 1 跟踪矩阵 \r\n\r\n 3. 3. 2 跟踪短阵的维护和使用 \r\n\r\n 3. 4 例子:周活动报告(WAR)系统 \r\n\r\n 3. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第二部分 项目计划 \r\n\r\n 第4章 过程定义和过程裁剪 \r\n\r\n 4. 1 开发过程 \r\n\r\n 4. 1. 1 概要设计 \r\n\r\n 4. 1. 2 详细设计 \r\n\r\n 4. 1. 3 编码和单元测试 \r\n\r\n 4. 1. 4 集成计划和测试 \r\n\r\n 4. 1. 5 系统测试计划和系统测试 \r\n\r\n 4. 1. 6 文档 \r\n\r\n 4. 1. 7 验收测试和安装 \r\n\r\n 4. 1. 8 维护支持 \r\n\r\n 4. 2 过程裁剪 \r\n\r\n 4. 2. 1 概要裁剪指南 \r\n\r\n 4. 2. 2 详细裁剪指南 \r\n\r\n 4. 2. 3 例子:WAR项目的过程裁剪 \r\n\r\n 4. 3 小结 \r\n\r\n 参考文献 \r\n\r\n 第5章 过程数据库和过程能力基线 \r\n\r\n 5. 1 软件度量和过程管理 \r\n\r\n 5. 1. 1 采集度量数据的目的 \r\n\r\n 5. 1. 2 度量和统计过程控制 \r\n\r\n 5. 2 过程数据库 \r\n\r\n 5. 2. 1 内容 \r\n\r\n 5. 2. 2 数据项及其访问 \r\n\r\n 5. 2. 3 输入项的例子 \r\n\r\n 5. 2. 4 过程资产 \r\n\r\n 5. 2. 5 知识体 \r\n\r\n 5. 3 过程能力基线 \r\n\r\n 5. 3. 1 基线创建 \r\n\r\n 5. 3. 2 开发过程基线 \r\n\r\n 5. 3. 3 过程改进和分析 \r\n\r\n 5. 4 小结 \r\n\r\n 参考文献 \r\n\r\n 第6章 工作量估计和进度安排 \r\n\r\n 6. 1 背景 \r\n\r\n 6. 1. 1 工作量估计模型 \r\n\r\n 6. 1. 2 自顶向下和自底向上的方法 \r\n\r\n 6. 1. 3 构建估计模型 \r\n\r\n 6. 2 自底向上的估计方法 \r\n\r\n 6. 2. 1 估计方法 \r\n\r\n 6. 2. 2 程序单元分类的一些准则 \r\n\r\n 6. 2. 3 例子 \r\n\r\n 6. 2. 4 方法的有效性 \r\n\r\n 6. 3 自顶向下的估计方法 \r\n\r\n 6. 4 进度安排 \r\n\r\n 6. 4. 1 整体进度安排 \r\n\r\n 6. 4. 2 方法的有效性 \r\n\r\n 6. 4. 3 详细进度安排 \r\n\r\n 6. 4. 4 例子:WAR的进度 \r\n\r\n 6. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第7章 质量计划和缺陷估计 \r\n\r\n 7. 1 质量管理 \r\n\r\n 7. 1. 1 软件质量和缺陷 \r\n\r\n 7. 1. 2 质量管理的程序化方法 \r\n\r\n 7. 1. 3 质量管理的量化方法 \r\n\r\n 7. 1. 4 通过预测缺陷进行量化质量管理 \r\n\r\n 7. 2 量化质量管理计划 \r\n\r\n 7. 2. 1 设定质量目标 \r\n\r\n 7. 2. 2 质量过程计划 \r\n\r\n 7. 2. 3 其他阶段的缺陷估计 \r\n\r\n 7. 2. 4 例子 \r\n\r\n 7. 3 小结 \r\n\r\n 参考文献 \r\n\r\n 第8章 风险管理 \r\n\r\n 8. 1 背景 \r\n\r\n 8. 2 风险评估 \r\n\r\n 8. 2. 1 识别风险 \r\n\r\n 8. 2. 2 确定风险的优先级 \r\n\r\n 8. 3 风险控制 \r\n\r\n 8. 3. 1 风险管理计划 \r\n\r\n 8. 3. 2 风险监督和跟踪 \r\n\r\n 8. 4 例子 \r\n\r\n 8. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第9章 项目管理计划 \r\n\r\n 9. 1 项目管理计划 \r\n\r\n 9. 1. 1 项目概述 \r\n\r\n 9. 1. 2 项目计划 \r\n\r\n 9. 1. 3 项目跟踪 \r\n\r\n 9. 1. 4 团队 \r\n\r\n 9. 2 例子:WAR 2. 0项目计划 \r\n\r\n 9. 3 小结 \r\n\r\n 第10章 配置管理 \r\n\r\n 10. 1 配置管理概念 \r\n\r\n 10. 2 配置管理过程 \r\n\r\n 10. 2. 1 计划和构建配置管理 \r\n\r\n 10. 2. 2 执行配置控制 \r\n\r\n 10. 2. 3 状态监督和审计 \r\n\r\n 10. 3 文档控制 \r\n\r\n 10. 4 例子:WAR项目的配置管理计划 \r\n\r\n 10. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第三部分 项目执行和终止 \r\n\r\n 第11章 生命周期的执行 \r\n\r\n 11. 1 概要设计 \r\n\r\n 11. 2 详细设计 \r\n\r\n 11. 3 构建 \r\n\r\n 11. 4 系统测试 \r\n\r\n 11. 5 验收和安装 \r\n\r\n 11. 6 小结 \r\n\r\n 第12章 同行评审 \r\n\r\n 12. 1 评审过程 \r\n\r\n 12. 1. 1 制定计划 \r\n\r\n 12. 1. 2 概述和准备 \r\n\r\n 12. 1. 3 评审组会议 \r\n\r\n 12. 1. 4 返工和跟进 \r\n\r\n 12. 1. 5 角色和职责 \r\n\r\n 12. 1. 6 个人评审 \r\n\r\n 12. 1. 7 工作产品指南 \r\n\r\n 12. 2 数据采集 \r\n\r\n 12. 2. 1 自备记录 \r\n\r\n 12. 2. 2 组评审会议记录 \r\n\r\n 12. 2. 3 评审组总结报告 \r\n\r\n 12. 3 检视和控制 \r\n\r\n 12. 3. 1 评审能力基线 \r\n\r\n 12. 3. 2 分析和控制指南 \r\n\r\n 12. 3. 3 例子 \r\n\r\n 12. 4 引入评审和NAH症结 \r\n\r\n 12. 4. 1 实验设计 \r\n\r\n 12. 4. 2 部署的实验数据 \r\n\r\n 12. 4. 3 实验的结果 \r\n\r\n 12. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第13章 项目监督和控制 \r\n\r\n 13. 1 数据采集 \r\n\r\n 13. 1. 1 量数据 \r\n\r\n 13. 1. 2 缺陷数据 \r\n\r\n 13. 1. 3 规模测量 \r\n\r\n 13. 2 项目跟踪 \r\n\r\n 13. 2. 1 活动跟踪 \r\n\r\n 13. 2. 2 缺陷跟踪 \r\n\r\n 13. 2. 3 事宜跟踪 \r\n\r\n 13. 2. 4 报告 \r\n\r\n 13. 3 监督和控制 \r\n\r\n 13. 3. 1 碑分析 \r\n\r\n 13. 3. 2 驱动分析 \r\n\r\n 13. 3. 3 WAR项目的里程碑分析 \r\n\r\n 13. 4 缺陷分析和预防 \r\n\r\n 13. 5 小结 \r\n\r\n 参考文献 \r\n\r\n 第14章 项目审计 \r\n\r\n 14. 1 审计过程 \r\n\r\n 14. 1. 1 计划 \r\n\r\n 14. 1. 2 审计 \r\n\r\n 14. 1. 3 后续行动 \r\n\r\n 14. 2 审计分析 \r\n\r\n 14. 3 小结 \r\n\r\n 参考文献 \r\n\r\n 第15章 项目关闭 \r\n\r\n 15. 1 项目关闭分析 \r\n\r\n 15. 1. 1 关闭分析角色 \r\n\r\n 15. 1. 2 执行关闭分析 \r\n\r\n 15. 1. 3 关闭分析报告 \r\n\r\n 15. 2 归档 \r\n\r\n 15. 3 WAR 2. 0的关闭分析报告 \r\n\r\n 15. 4 小结 \r\n\r\n 参考文献 \r\n\r\n 附录A 从IS0 9000到CMM \r\n\r\n 附录B 管理软件过程改进项目 \r\n\r\n 术语表 \r\n
\r\n
中国的软件业发展了几十年, 可是在国际软件业的地位依然不高, 与同是第三世界国家的印度相比, 我们在软件出口产值上远远落后于印度. 分析造成中国与印度软件业差距的原因, 其中一个重要原因在于软件开发过程方面的差距很大, 我们没有职业化的软件开发过程, 因此在软件企业的组织结构. 过程运作上没有印度公司正规. 有序和高效, 由此开发出的软件成本也很高. 拥有CMM, 拥有先进的软件开发过程, 对我国软件企业的发展, 特别是对于那些期望参与国际软件外包合同竞争的企业是非常必要的.
印度的软件公司大多采用的是美国卡内基梅隆大学软件工程研究所开发的软件能力成熟度模型(CMM), 印度的软件公司在全球通过CMM最高级别的公司中所占的比例也是最高的. CMM的形成是众多软件专家参与建议. 评审和测试的结果, 是软件领域的智慧结晶, 其被广泛应用的重要原因在于它为软件公司提供了使企业从低管理级别逐步成长到高管理级别的循序渐进的方法. 企业可以按照CMM来检验软件机构的软件开发实践, 明确差距, 找出不足, 然后加以改进.
实际上, 对于一个软件企业来说, 最重要的不是学习一种理论, 而是根据企业的实际情况, 产生适合自身发展需要的软件质量管理系统(Quality Management System, 即QMS), 当前软件开发中有三个因素:过程. 技术和人, 它们构成了软件的铁三角. 软件企业面临的是过程变更. 技术进步和频繁的人员流动, 因此如何处理好这些问题是企业构建QMS的核心. CMM是实现该管理系统的一种理论, IS0 9002和Tick IT也是实现该质量管理系统的方式, 为什么CMM如此盛行而其他方式有什么不足?这是本书试图回答的一个问题.
实现质量管理系统不是简单地照搬CMM理论, 而是需要结合企业的实际情况, 量体裁衣, 使CMM理论真正服务于企业的质量管理活动. 本书结合Infosys(印度软件业的巨头)在实现CMM中的实践, 全面阐述了如何实现CMM的过程和方法, 企业在采用CMM时遇到的困难以及如何应对这些困难. 所有这些内容一定会对渴望采用CMM的企业有很大的帮助.
本书的特点是实例教学, 边讲边学, 将枯燥的理论变成生动的实例讲解, 使理解CMM理论和体系变得更容易. 全书分为三个部分. 首先讨论了软件项目启动时的建议书和合同, 确定需求规格和管理, 然后分别详细论述了在Infosys如何执行软件项目在计划阶段. 执行过程及最后结束时的所有质量活动, 最后在附录A中详细描述了一个获得ISO9000认证的软件企业如何转变到CMM, 在附录B中描述了企业如何改进其自身过程. 贯穿全书的是一个在Infosys开发的实际软件项目实例, 为理解CMM的实现提供了很大的帮助.
本书的前言. 第一部分和第二部分由胡春哲翻译, 第三部分. 附录A和附录B由张洁翻译. 全书由胡春哲统稿. 参加了部分翻译工作的还有倪辉. 邓秋林. 王柱宇. 目刚. 张江平等同志, 盛成. 陈杰. 徐小飞对本书的翻译提出了很多宝贵意见. 在此, 对所有在本书的翻译工作中给予过直接或者间接帮助的人们表示诚挚的感谢.
由于时间仓促, 译稿难免存在错误和遗漏之处, 欢迎读者批评指正. 对本书有任何建议或者对QMS. CMM有任何问题的朋友都可以给我写邮件讨论, 我的电子信箱是huchunzhe@yahoo, com. cn.
世界范围的软件需求正飞速增长, 并且这种增长势头并没有任何减缓的迹象. 需求的增长带动了软件开发活动的急剧增加, 开发软件的过程, 通常称为软件过程, 相应地成为人们关注的焦点. 尽管对软件过程的本质和形式众说纷坛, 但是, 使用合适的过程, 对于期望开发高质量软件并提高自身生产率的机构来说非常重要, 这一点是毫无疑问的.
软件过程的异常重要性导致了对过程改进的需求, 该需求则要求有分析和评估过程的方法. 一种影响最为深远的软件过程改进和评估体系是卡内基梅隆大学软件工程研究所(Software Engineering Institute, 即SEI)开发的软件能力成熟度模型(Capability Maturity Model), 即CMM. CMM将软件过程的成熟度分为5级:第1级(最低级)到第5级(最高级).对于每一级, CMM规定了关键过程域(KPA), 代表了机构要想达到这一级别所需关注的领域. 每个KPA都与一些目标相关联, 这
些目标代表了该KPA的过程要满足的要求. 不同成熟度级别的KPA可以用于评估现有过程的能力, 也可以用于识别哪些领域需要加强, 以便过程从低成熟度级别向高成熟度级别迈进.
CMM体系是很通用的原则, 而不是具体的规定. 尽管机构可以按照不同的方式实现CMM, 但是把CMM中描述的特性和现实中的实践以及过程关联起来非常困难. 本书描述了Infosys Techndogies有限公司(一家总部在印度班加罗尔的大型软件公司)用于执行项目的一整套过程. 该公司在1997年被SEI授权的两家评估单位评为CMM 4级.
本书与其说是解释了Infosys公司的各种技术和管理过程, 不如说是描述了在软件生命周期各个阶段所采用的过程. 因为项目的生命周期包括技术和管理过程, 这种方法可以确保解释大多数影响项目的过程. 用于支持和管理过程活动的机构级的过程, 则不会涉及到. 书中对这些过程的某些方面会进行一些描述, 但这并不影响整本书的流畅性. 另外, 在本书的附录B还提供了一篇文章, 介绍了Infosys公司实现CMM体系的管理方式.
本书共分为15章, 第l章简要介绍了CMM, 并就Infosys公司的过程在机构级的一些支持进行了描述. 其余各章重点关注项目执行, 共分为三个部分. 第一部分(第2章和第3章)描述了在项目正式开始前的过程, 第二部分(第4章到第10章)描述了项目计划活动, 第三部分(第11章到第15章)描述了项目执行和终止. 大多数章节重点关注项目中的一个关键任务, 而使各章彼此间尽量保持独立.
本书并不试图提供有关CMM的大量文献和详细描述, 其主要目的在于描述一个使用CMM体系的机构所使用的过程. 本书还阐明了怎样将一些简单的已知方法有效地组织起来, 形成一个高度成熟的总体过程. 本书并不想暗示Infosys的过程是“最优的”. “比别人的好”或是“实现CMM的理想方法”, 同时也不推荐别人使用这些方法. 到底使用与否由读者自己去决定.
我以前写过一本教材“An Intepated Approach to Software Engineering”(SpringerVerlag, 1997), 书中有一个贯穿全书的案例研究, 根据读者对本书的积极反馈, 使我确信这一点:在解释软件工程中的概念时, 如果可能, 提供有真实输出的真实案例和完整案例是非常有价值的. 本书采用了同样的办法, 大多数案例是从实际的项目中挑选出来的, 其中的一个实际的项目, 周活动报告(Weekly
Actvity Repon, WAR)项目, 在书中很多地方用来解释不同的过程是怎样关联起来的. 虽然这些过程在Infosys使用着, 但为了维护公司的秘密, 其中一些敏感性的数据(如质量和生产率)是经过处理的.
本书肯定会被证实对所有关心软件过程和CMM的人士有所帮助. 对于那些想在自己机构内部采用CMM的人士来说, 本书会提供巨大的帮助. 为了帮助采用IS0的机构向CMM演变, 附录A提供了一个综合研究报告, 指出了IS0和CMM各级之间可能的差距. 由于本书所描述的是一个成功机构的项目执行情况, 那些现在正在管理软件项目的专家应该会很感兴趣. 对于教师和学生, 这本书可以作为面向项目的软件工程课程的补充材料, 因为本书较好地描述了在商业环境下如何开发软件, 并提供了案例分析.
解释一下我在Infosys参与的工作也许会更好一些. 作为公司主管质量的副总裁, 我是公司成功地由ISO向CMM 4级演进的设计师之一. 应该指出, 尽管Infosys提供了我所要求的所有资料, 但我可以对本书中的任何错误. 曲解和不准确负完全责任. 在一本紧凑的书中, 试图介绍机构过程指南的精华, 并附有案例分析, 这些问题是不可避免的. 在这些描述中, 任何与Infosys实际过程的背离都是我的责任, 因为是我决定过程中的哪些东西应该包含以及以何种方式包含进来.
欢迎对本书的任何评论和质疑, 可以给我发邮件(jdote@iitk. ac. in). 要了解Infosys的有关信息, 可以访问Infosys的主页(wvw. itlinfosys. com)或发邮件到public—relations@itlinfosys.com.
Pankaj Jalote
致 谢
首先, 我要感谢Infosys, 他们慷慨的合作使得本书的面世成为可能. 在Infosys评估结束后, 我将这本书推荐给Infosys的领导. 他们冒着将这些过程公布于众的风险, 同意我在本书中使用相关过程所涉及到的Infosys文档. 在此, 我特别感谢K. Dinesh先生, 他是主管质量和生产率的领导, 他在过程活动和项目上给予了全力支持.
还有许多人为这本书做出了贡献. 我真诚地对Infosys质量部的同仁表示感谢, 特别是管理过程活动的Bhashyam和Raghavan以及所有参加定义不同过程并给各章提出反馈的同仁, 他们是:Meera, Savita, Ramkumar, Nitya, Subbu, Seshan, Varsha, Dr.Bala, RamPrasad, Saiju, Vasu以及其他人. 我特别对帮助我进行案例研究的WAR项目负责人Devarajan表示感谢.
我对评阅本书手稿并提出许多宝贵意见的Mark Paulk, Bill Curtis, RonRadice, Karl Wiegers, George Winters, Kim Caputo以及Anita Carleton表示感谢. 同时我要真诚地感谢在编辑资料和录入中给我提供帮助的Lakshmi.
我要感谢我的妻子Shikha(她本人是一名出色的软件工程师)在编辑和评审上所给予的帮助. 还有我的女儿Sumedha和Sunmda, 好几个月里她们都不能和我一起度过原本应和她们分享的时光.