《软件项目开发行业研究》由会员分享,可在线阅读,更多相关《软件项目开发行业研究(94页珍藏版)》请在金锄头文库上搜索。
1、项目模拟项目模拟/ /实战训练实战训练第一部分第一部分 软件工程软件工程1谷风优质本讲内容本讲内容1 1 软件工程概述软件工程概述2 2 软件工程过程和活动软件工程过程和活动3 3 软件过程模型软件过程模型4 4 软件过程成熟度模型软件过程成熟度模型CMMCMM2谷风优质1 软件工程概述软件工程概述1.1 1.1 软件的概念软件的概念1.2 1.2 为什么要软件工程为什么要软件工程1.3 1.3 什么是软件工程什么是软件工程1.4 1.4 参考书目参考书目3谷风优质1.1 软件的概念软件的概念定义定义Program + Data Structure + Documents 软件的性质软件的性质
2、复杂性复杂性难以描述性难以描述性不可见性不可见性变化性变化性易于副本的大批量生产易于副本的大批量生产强合作性强合作性4谷风优质1.2 为什么要软件工程为什么要软件工程软件危机软件危机爆发时间爆发时间1967年年NATO的研究组首次提出的研究组首次提出1968年年NATO软件工程会议首次提出软件工程软件工程会议首次提出软件工程概念概念1968-2013, 近近40多年多年“危机危机”一词一词软件危机依然存在软件危机依然存在Crisis!5谷风优质1.2 为什么要软件工程为什么要软件工程软件危机面对的问题软件危机面对的问题艺术艺术 vs. 标准化标准化错误的发现错误的发现软件需求获取软件需求获取软
3、件支持和维护软件支持和维护开发速度开发速度 vs. 市场需求市场需求开发周期过长开发周期过长、开发成本过高开发成本过高研发风险研发风险软件开发中的复杂的协作软件开发中的复杂的协作(人员人员,问题问题,过程过程)不同角色的软件神话不同角色的软件神话(管理者管理者,用户用户,开发者开发者,大众大众)6谷风优质1.2 为什么要软件工程为什么要软件工程采用什么方法缓解危机采用什么方法缓解危机硬件硬件 ?建筑学建筑学?拍电影拍电影?软件工程!软件工程!7谷风优质1.3 什么是软件工程什么是软件工程Fritz Bauer:“建立和应用完善的工程原理以便经济地得建立和应用完善的工程原理以便经济地得到在真实机
4、器上可靠和有效运行的软件。到在真实机器上可靠和有效运行的软件。特点:重原理、轻技术、无度量特点:重原理、轻技术、无度量IEEE:(1)应用系统的有规则的定量的方法开发、应用系统的有规则的定量的方法开发、使用和维护软件;即应用工程于软件。使用和维护软件;即应用工程于软件。(2)研究研究(1)中的方法中的方法特点:粗糙特点:粗糙8谷风优质1.3 什么是软件工程什么是软件工程Definition软件工程是以软件工程是以质量质量为核心,为了经济地开发为核心,为了经济地开发满足满足客户需求客户需求的软件而研究、建立和应用的的软件而研究、建立和应用的系统化系统化的、的、有规则有规则的、的、可度量可度量的和
5、的和可控制可控制的的工程原则、方法,涉及到工程原则、方法,涉及到软件过程、项目管软件过程、项目管理、开发方法、软件复用、软件度量、开发理、开发方法、软件复用、软件度量、开发工具工具,甚至,甚至企业文化企业文化等各个方面。等各个方面。 9谷风优质 A Quality FocusProcessMethodsCASE Tools1.3 什么是软件工程什么是软件工程10谷风优质1.4 软件工程参考书目软件工程参考书目11谷风优质2 过程和活动过程和活动2.1 软件过程的概念软件过程的概念2.2 问题定义活动问题定义活动2.3 可行性研究活动可行性研究活动2.4 需求分析活动需求分析活动2.5 设计活动
6、设计活动2.6 实施活动实施活动2.7 测试活动测试活动2.8 部署活动部署活动12谷风优质2.1 软件过程的概念软件过程的概念软件过程的定义软件过程的定义软件过程由开发或维护软件及其相关产品的软件过程由开发或维护软件及其相关产品的一系列一系列活动活动构成,这些活动从不同的方面定构成,这些活动从不同的方面定义了软件开发中的步骤、交付物、涉众及其义了软件开发中的步骤、交付物、涉众及其职责等流程要素职责等流程要素 13谷风优质2.1 软件过程的概念软件过程的概念Build theSystem控制 预算,计划表,标准输入需求资源人员,工具输出代码,文档Process控制/约束输入资源输出14谷风优质
7、2.1 软件过程的概念软件过程的概念WhatHowChange15谷风优质2.1 软件过程的概念软件过程的概念16谷风优质2.1 软件过程的概念软件过程的概念Basic Activities(Basic Activities(基础活动基础活动) )问题定义,需求,设计,实问题定义,需求,设计,实b现,现,软件验证,集成,软件演进软件验证,集成,软件演进/维护,退役维护,退役Umbrella Activities (Umbrella Activities (辅助性活动辅助性活动) )软件项目跟踪和控制,正式的技术复审,软件项目跟踪和控制,正式的技术复审,软件质量保证,软件配置管理,文档编制,软件
8、质量保证,软件配置管理,文档编制,复用管理,度量,风险管理,复用管理,度量,风险管理,Something that covers or protects. 保护物覆盖或保护的事物17谷风优质2.2 问题定义活动问题定义活动What问题定义是软件开发过程当中的一个定义要问题定义是软件开发过程当中的一个定义要解决的问题并确定系统范围的活动。解决的问题并确定系统范围的活动。Why形成一个早期判断,达成一个最初共识形成一个早期判断,达成一个最初共识 When项目日程表的最前端项目日程表的最前端占整个软件开发时间中的比例很小占整个软件开发时间中的比例很小 18谷风优质2.2 问题定义活动问题定义活动Wh
9、o系统分析师、出资方领导、出资方技术人员、系统分析师、出资方领导、出资方技术人员、开发方领导和项目经理开发方领导和项目经理 Where客户现场客户现场 19谷风优质2.2 问题定义活动问题定义活动How20谷风优质2.3 可行性研究活动可行性研究活动What可行性研究是以相对短的时间和相对低的成可行性研究是以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解。解、有几种解以及哪个是最佳解。 Why必须要先确立满足约束条件的方案是否存在、必须要先确立满足约束条件的方案是否存在、是否可行、是否最优,然后再在最优方案的是否
10、可行、是否最优,然后再在最优方案的基础上进行开发基础上进行开发 21谷风优质2.3 可行性研究活动可行性研究活动When项目的早期阶段项目的早期阶段占整个软件开发时间中的比例较小,但比问题定占整个软件开发时间中的比例较小,但比问题定义活动所消耗的时间长义活动所消耗的时间长Who系统分析师、出资方领导、出资方技术人员、用系统分析师、出资方领导、出资方技术人员、用户代表、开发方领导、项目经理、架构设计师、户代表、开发方领导、项目经理、架构设计师、领域专家、财务人员、市场人员、软件质量保证领域专家、财务人员、市场人员、软件质量保证(SQA,Software Quality Assure)人员等)人员
11、等Where客户现场。客户现场。22谷风优质2.3 可行性研究活动可行性研究活动HowHow23谷风优质2.4 需求分析活动需求分析活动What需求:主要是在产品构建之前确定的系统必需求:主要是在产品构建之前确定的系统必须符合的条件或具备的功能,它们是关于系须符合的条件或具备的功能,它们是关于系统将要完成什么工作的一段描述语句,它们统将要完成什么工作的一段描述语句,它们必须经过所有相关人员的认可,其目的是彻必须经过所有相关人员的认可,其目的是彻底地解决客户的问题。底地解决客户的问题。 需求文档需求文档一组需求的集合一组需求的集合 用户需求文档、系统需求文档和软件规约文档用户需求文档、系统需求文
12、档和软件规约文档 24谷风优质2.4 需求分析活动需求分析活动功能性需求和非功能性需求功能性需求和非功能性需求 功能性需求:描述了系统应该做什么,即具备功能性需求:描述了系统应该做什么,即具备的功能或服务。(输入、输出和计算等)的功能或服务。(输入、输出和计算等)非功能性需求:描述了系统必须遵守的约束条非功能性需求:描述了系统必须遵守的约束条件。(响应时间、吞吐量件。(响应时间、吞吐量 、可靠性、可移植性、可靠性、可移植性、可扩展性、易用性、安全性、资源要求、可复可扩展性、易用性、安全性、资源要求、可复用性、技术要求、文化和政策需求、法律需求、用性、技术要求、文化和政策需求、法律需求、道德要求
13、、隐私要求,等等)道德要求、隐私要求,等等) 描述需求的标准描述需求的标准是完整的、正确的、必要的、无歧义的、可行是完整的、正确的、必要的、无歧义的、可行的、可验证的以及被设置了优先级别的。的、可验证的以及被设置了优先级别的。 What25谷风优质2.4 需求分析活动需求分析活动Why需求不一致、需求不一致、模糊、矛盾模糊、矛盾需求变更需求变更客户忽略领域常识客户忽略领域常识/知识知识/术语术语 客户集中于现有系统的不足之处,而忽略了客户集中于现有系统的不足之处,而忽略了系统要实现的关键功能系统要实现的关键功能零碎、无组织、不明确、表达不清零碎、无组织、不明确、表达不清不分轻重缓急不分轻重缓急
14、 26谷风优质2.4 需求分析活动需求分析活动When项目的早期阶段?项目的早期阶段?贯穿于整个软件开发过程的需求活动贯穿于整个软件开发过程的需求活动27谷风优质2.4 需求分析活动需求分析活动Who系统分析师、需求阐释者、客户代表、用户代表、系统分析师、需求阐释者、客户代表、用户代表、开发方领导、项目经理、架构设计师、领域专家、开发方领导、项目经理、架构设计师、领域专家、财务人员、市场人员、软件质量保证(财务人员、市场人员、软件质量保证(SQA,Software Quality Assure)人员、程序员、测试)人员、程序员、测试人员、部署人员、技术文档编写人员、培训人员人员、部署人员、技术
15、文档编写人员、培训人员等。等。Where调研时,在客户现场调研时,在客户现场编写软件需求规约文档时,可以在开发单位编写软件需求规约文档时,可以在开发单位复审相关的需求文档时,根据需要来安排复审相关的需求文档时,根据需要来安排28谷风优质2.4 需求分析活动需求分析活动How29谷风优质2.5 设计活动设计活动 What 设计:设计:是在系统的约束条件下(如预算、时间、人力是在系统的约束条件下(如预算、时间、人力资源、用户软、硬件环境和用户对系统的操作资源、用户软、硬件环境和用户对系统的操作能力等),为了实现系统的功能性需求和非功能力等),为了实现系统的功能性需求和非功能性需求,而找到并描述的一
16、种遵循高质量的能性需求,而找到并描述的一种遵循高质量的通用原则的方法,其交付文档能够指导开发人通用原则的方法,其交付文档能够指导开发人员实现系统。员实现系统。30谷风优质2.5 设计活动设计活动 总体设计总体设计根据软件需求规约文档,确定一个合理的软件根据软件需求规约文档,确定一个合理的软件体系结构。这个体系结构包括合理地划分组成体系结构。这个体系结构包括合理地划分组成系统的模块、模块间的调用关系以及模块间的系统的模块、模块间的调用关系以及模块间的接口关系。软件体系结构还从总体方面决定了接口关系。软件体系结构还从总体方面决定了系统的可扩充性、可维护性,以及系统的性能系统的可扩充性、可维护性,以
17、及系统的性能等。总体设计的设计粒度较大,有时也被称为等。总体设计的设计粒度较大,有时也被称为概要设计、架构设计。概要设计、架构设计。31谷风优质2.5 设计活动设计活动详细设计详细设计 详细设计地任务是在总体设计的基础上进一步详细设计地任务是在总体设计的基础上进一步确定如何实现目标系统,包括系统的数据对象确定如何实现目标系统,包括系统的数据对象的设计、人机接口的设计以及模块逻辑的详细的设计、人机接口的设计以及模块逻辑的详细设计。设计。设计部件的粒度设计部件的粒度系统、子系统、框架、构件、组件、模块、类、系统、子系统、框架、构件、组件、模块、类、方法等方法等32谷风优质2.5 设计活动设计活动W
18、hy软件架构是软件系统的核心软件架构是软件系统的核心应对复杂多变的情况,同时保持完整性应对复杂多变的情况,同时保持完整性应对系统在扩展功能当中出现的问题应对系统在扩展功能当中出现的问题大规模复用的有效基础大规模复用的有效基础 项目管理的基础项目管理的基础 33谷风优质2.5 设计活动设计活动When项目的中、早期阶段?项目的中、早期阶段?工作量早期 中期 后期项目时间大小贯穿于整个软件开发过程的设计活动贯穿于整个软件开发过程的设计活动34谷风优质2.5 设计活动设计活动Who主要包括架构设计师、软件设计员、复用工主要包括架构设计师、软件设计员、复用工程师、设计复审员、项目经理、财务人员、程师、
19、设计复审员、项目经理、财务人员、软件质量保证(软件质量保证(SQA,Software Quality Assure)人员和需求变更者等)人员和需求变更者等Where建议在软件企业内部进行设计建议在软件企业内部进行设计 35谷风优质2.5 设计活动设计活动How36谷风优质2.6 实施活动实施活动What编码:是将软件设计结果转换成用某种程序编码:是将软件设计结果转换成用某种程序设计语言书写的程序。设计语言书写的程序。单元测试:是把一个模块作为独立的程序单单元测试:是把一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的元进行测试,以保证它能够正确执行规定的功能。功能。 集成:是指将单
20、独的软件构件合并成一个整集成:是指将单独的软件构件合并成一个整体的软件系统。集成分为集成子系统和集成体的软件系统。集成分为集成子系统和集成系统两个级别:系统两个级别:37谷风优质2.6 实施活动实施活动Why以实施为中心的软件开发以实施为中心的软件开发弱化的需求弱化的需求 弱化的设计弱化的设计 对实施人员的过度依赖对实施人员的过度依赖 38谷风优质2.6 实施活动实施活动Why将单元测试作为实施的一部分将单元测试作为实施的一部分When项目的中、后期阶段项目的中、后期阶段 工作量早期 中期 后期项目时间大小贯穿于整个软件开发过程的实施活动贯穿于整个软件开发过程的实施活动39谷风优质2.6 实施
21、活动实施活动Who包括实施员、代码复审员、集成员、测试工包括实施员、代码复审员、集成员、测试工程师、测试员、项目经理、架构设计师、软程师、测试员、项目经理、架构设计师、软件设计员、复用工程师、件设计员、复用工程师、SQA人员和财务人员和财务人员等人员等Where建议在软件企业内部进行开发建议在软件企业内部进行开发 40谷风优质2.6 实施活动实施活动How41谷风优质2.7 测试活动测试活动What测试:是选择适当的测试用例执行被测程序的过程,其目测试:是选择适当的测试用例执行被测程序的过程,其目的在于发现程序错误。的在于发现程序错误。 缺陷缺陷:是系统任一方面(包括需求、设计或代码)的缺:是
22、系统任一方面(包括需求、设计或代码)的缺点。该缺点会促成或潜在的促成一个或多个失败发生。点。该缺点会促成或潜在的促成一个或多个失败发生。错误错误:是指程序中的缺陷所产生的不正确结果。:是指程序中的缺陷所产生的不正确结果。失败失败:当一个程序不能运行或者其表现不可被接受时称:当一个程序不能运行或者其表现不可被接受时称为失败。失败是系统执行中出现的情况。失败源于代码为失败。失败是系统执行中出现的情况。失败源于代码缺陷。缺陷。单元测试、集成测试、系统测试、单元测试、集成测试、系统测试、(alpha)(alpha)、(Beta)(Beta) 验收测试验收测试 42谷风优质2.7 测试活动测试活动质量维
23、度:描述质量的概念或评测质量的方质量维度:描述质量的概念或评测质量的方法的不同视角法的不同视角 可靠性维度可靠性维度可用性维度可用性维度性能维度性能维度测试用例:为特定目标开发的测试输入、执测试用例:为特定目标开发的测试输入、执行条件和预期结果的集合。行条件和预期结果的集合。 43谷风优质2.7 测试活动测试活动When项目的后期阶段?项目的后期阶段?优点缩短测试时间缩短测试时间易于定位缺陷易于定位缺陷 避免错上加错避免错上加错 工作量早期 中期 后期项目时间大小44谷风优质2.7 测试活动测试活动Who主要包括测试工程师、测试员、软件设计员、主要包括测试工程师、测试员、软件设计员、实施员、项
24、目经理、部署工程师、部署员、实施员、项目经理、部署工程师、部署员、SQA人员和财务人员等人员和财务人员等 Where建议单元测试、集成测试和系统测试在实施建议单元测试、集成测试和系统测试在实施员所在的开发现场及其附近进行员所在的开发现场及其附近进行测试和验收测试则完全在用户现场测试测试和验收测试则完全在用户现场测试 45谷风优质2.7 测试活动测试活动 (5/5)How46谷风优质2.8 部署活动部署活动What部署:是为确保最终用户可以正常使用软部署:是为确保最终用户可以正常使用软件产品而进行的活动。件产品而进行的活动。 根据产品类型,可以将部署分为三种模式根据产品类型,可以将部署分为三种模
25、式: :自定义安装模式自定义安装模式现场支持模式现场支持模式InternetInternet模式模式 47谷风优质2.8 部署活动部署活动部署单元:由一个工作版本(可执行构件部署单元:由一个工作版本(可执行构件集)、文档(最终用户支持材料和发布说明)集)、文档(最终用户支持材料和发布说明)和安装工件组成和安装工件组成 部署计划:说明如何将产品从开发商转移部署计划:说明如何将产品从开发商转移到用户群到用户群兼容、转换和迁移策略兼容、转换和迁移策略 部署时间表部署时间表 部署顺序部署顺序用户培训用户培训 48谷风优质2.8 部署活动部署活动When项目的后期阶段?项目的后期阶段?工作量早期 中期
26、后期项目时间大小49谷风优质2.8 部署活动部署活动Who主要包括部署工程师、部署员、文档编写员、包装员、实施员、项目经理、SQA人员和财务人员等Where一部分工作可以在开发现场进行,如制定部署计划、包装产品、编写相关文档等;另一部分工作必须在用户现场进行,如测试、验收测试和用户正式使用中的安装、培训工作等。50谷风优质2.8 部署活动部署活动How51谷风优质3 3 软件过程模型软件过程模型3.1 3.1 过程模型概念过程模型概念3.2 3.2 线形顺序模型系列线形顺序模型系列3.3 3.3 演进模型系列演进模型系列3.4 3.4 其它模型系列其它模型系列3.5 3.5 过程模型的选择过程
27、模型的选择52谷风优质3.1 过程模型概念过程模型概念为什么需要模型为什么需要模型? ?模型帮助我们解释事物模型帮助我们解释事物如何工作如何工作模型能够拓宽我们的视野模型能够拓宽我们的视野( (抽象抽象) )软件过程模型软件过程模型一个过程模型是一个过程的抽象表示一个过程模型是一个过程的抽象表示过程模型帮助我们更好地理解软件开发过程模型帮助我们更好地理解软件开发53谷风优质3.1 过程模型概念过程模型概念(2/5)54谷风优质3.1 过程模型概念过程模型概念55谷风优质3.1 过程模型概念过程模型概念56谷风优质3.1 过程模型概念过程模型概念经典模型经典模型Linear Sequential
28、 ModelWaterfall ModelV ModelDepartment of Defense ModelRAD ModelPrototyping ModelBuild-and-Fix Model Incremental ModelSpiral ModelConcurrent Development ModelXP ModelRUP Model57谷风优质3.2 线形顺序模型系列线形顺序模型系列线性顺序模型线性顺序模型analysisdesigncodetestSystem/informationengineering58谷风优质3.2 线形顺序模型系列线形顺序模型系列瀑布模型瀑布模型59
29、谷风优质特征特征接受上一阶段的结果作为本阶段的输入接受上一阶段的结果作为本阶段的输入开发阶段严格按线性方式进行开发阶段严格按线性方式进行对本阶段的工作进行评审对本阶段的工作进行评审每一阶段具有相关的里程碑和交付产品每一阶段具有相关的里程碑和交付产品缺点缺点缺乏灵活性,难以适应需求不明确或需求经常变化的缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发软件开发开发早期存在的问题往往要到交付使用时才发现,维开发早期存在的问题往往要到交付使用时才发现,维护代价大护代价大适用适用在开发的早期阶段软件需求被完整确定在开发的早期阶段软件需求被完整确定3.2 3.2 线形顺序模型系列线形顺序模型系列60
30、谷风优质实际使用的瀑布模型实际使用的瀑布模型3.2 3.2 线形顺序模型系列线形顺序模型系列61谷风优质3.2 线形顺序模型系列线形顺序模型系列V V 模型模型62谷风优质3.2 线形顺序模型系列线形顺序模型系列RAD (Rapid Application Development)RAD (Rapid Application Development)模型模型60 90 days63谷风优质3.3 演进模型系列演进模型系列原型模型原型模型Listen to customerbuild/revisemock-upcustomer test-drives mock-up64谷风优质3.3 演进模型系
31、列演进模型系列边建边改边建边改 ModelModelBuild first versionModify until client is satisfiedMaintenancephaseRetirementDevelopmentMaintenance65谷风优质3.3 演进模型系列演进模型系列边建边改边建边改 Model(Model(续续) )66谷风优质3.3 演进模型系列演进模型系列增量模型增量模型System/InformationengineeringanalysisdesignCodeTest增量一增量一交付交付1analysisdesignCodetest增量二增量二analysi
32、sdesignCodetest增量三增量三analysisdesignCodetest增量四增量四Calendar Time交付交付2交付交付3交付交付567谷风优质3.3 演进模型系列演进模型系列CustomerCommunicationRisk AnalysisEngineeringConstruction & ReleasePlanningCustomerEvaluationProject entryPoint axis螺旋模型螺旋模型68谷风优质3.3 演进模型系列演进模型系列XP XP 模型,一种敏捷开发方法模型,一种敏捷开发方法69谷风优质3.4 其它模型系列其它模型系列构件组装模
33、型构件组装模型与瀑布模型对比与瀑布模型对比70谷风优质3.4 其它模型系列其它模型系列应用构件提取车间构件生产车间标准规范 与 质量保证1基础构件,2功能构件 3接口构件,4用户界面构件 应用构件库 构件库组装车间领域 1领域 2应用系统 . .1 12 23 34 471谷风优质各种模型的比较各种模型的比较模型模型优点优点缺点缺点瀑布模型瀑布模型规范,文档驱动规范,文档驱动系统可能不满足客系统可能不满足客户真正的需求户真正的需求快速原型快速原型克服了瀑布型的缺点克服了瀑布型的缺点增量模型增量模型开发早期回报明确,开发早期回报明确,易于维护易于维护要求开放的软件体要求开放的软件体系结构系结构螺
34、旋模型螺旋模型风险驱动,适用于大风险驱动,适用于大型项目开发型项目开发风险分析人员需要风险分析人员需要有经验且经过充分有经验且经过充分训练训练72谷风优质3.5 过程模型的选择过程模型的选择软件工程过程模型的选择是基于软件工程过程模型的选择是基于: :项目的应用特点项目的应用特点采用的方法和工具采用的方法和工具需要的控制需要的控制交付的产品交付的产品73谷风优质3.5 过程模型总结过程模型总结u在前期需求明确,尽量采用在前期需求明确,尽量采用瀑布模型瀑布模型u用户没有信息系统使用经验,需求分析人员技能不足,采用户没有信息系统使用经验,需求分析人员技能不足,采用用原型原型u不确定因素很多,无法一
35、下子计划,采用增量或螺旋不确定因素很多,无法一下子计划,采用增量或螺旋u需求不稳定,采用需求不稳定,采用增量增量u资金和成本无法一次到位,采用资金和成本无法一次到位,采用增量增量u可以各种模型可以各种模型合并使用合并使用,但每一次必须要有明确的交付物,但每一次必须要有明确的交付物和出口准则和出口准则u编程人员经验较少,不宜采用编程人员经验较少,不宜采用快速快速的方法的方法74谷风优质4 4 软件过程能力成熟度软件过程能力成熟度75谷风优质4 4 能力成熟度模型能力成熟度模型CMMCMM CMMCMM(Capability Maturity ModelCapability Maturity Mo
36、del)即能力成)即能力成熟度模型,是美国卡耐基梅隆大学软件工程研究所熟度模型,是美国卡耐基梅隆大学软件工程研究所(SEISEI)建立的,)建立的,用于评价软件机构的软件过程能力用于评价软件机构的软件过程能力成熟度的模型成熟度的模型。 此模型建立之初的主要目的在于提供一种评价此模型建立之初的主要目的在于提供一种评价软件承接方能力的方法,为大型软件项目的招投标活软件承接方能力的方法,为大型软件项目的招投标活动提供一种全面而客观的评审依据。而发展到后来,动提供一种全面而客观的评审依据。而发展到后来,又同时又同时被软件组织用于改进其软件过程被软件组织用于改进其软件过程。76谷风优质软件组织的成熟与不
37、成熟软件组织的成熟与不成熟不成熟的软件组织不成熟的软件组织软软件件过过程程一一般般并并不不预预先先计计划划,而而是是在在项项目目进进行行中中由由实实际际工作人员及管理员临时计划工作人员及管理员临时计划有时,即使软件过程已计划好,仍不按计划执行有时,即使软件过程已计划好,仍不按计划执行没没有有一一个个客客观观的的基基准准来来判判断断产产品品质质量量,或或解解决决产产品品和和过过程中的问题程中的问题对对软软件件过过程程步步骤骤如如何何影影响响软软件件质质量量,一一无无所所知知,产产品品质质量量得得不不到到保保证证。而而且且,一一些些提提高高质质量量的的环环节节,如如检检查查、测试等经常由于要赶进度
38、而减少或取消测试等经常由于要赶进度而减少或取消4 4 能力成熟度模型能力成熟度模型CMMCMM77谷风优质产品在交付前,对客户来说,一切都是不可见的产品在交付前,对客户来说,一切都是不可见的没有长远目标,管理员通常只关注解决任何当前的危机没有长远目标,管理员通常只关注解决任何当前的危机由由于于没没有有实实事事求求是是地地估估计计进进度度、预预算算,因因此此他他们们经经常常超超支支、超超时时。当当最最后后期期限限临临近近,他他们们往往往往在在功功能能性性和和质质量量上妥协,或以加班加点方式赶进度上妥协,或以加班加点方式赶进度4 4 能力成熟度模型能力成熟度模型CMMCMM78谷风优质2.2.成熟
39、的软件组织成熟的软件组织具有全面而充分的组织和管理软件开发和维护过程的能力具有全面而充分的组织和管理软件开发和维护过程的能力管理员监视软件产品的质量以及生产这些产品的过程。管理员监视软件产品的质量以及生产这些产品的过程。制制定定了了一一系系列列客客观观基基准准来来判判别别产产品品质质量量,并并分分析析产产品品和和过过程中的问题。程中的问题。进进度度和和预预算算可可以以按按照照以以前前积积累累的的经经验验来来制制定定,结结果果可可行行。预预期期的的成成本本、进进度度、功功能能与与性性能能和和质质量量都都能能实实现现,并并达达到到目的。目的。4 4 能力成熟度模型能力成熟度模型CMMCMM79谷风
40、优质能能准准确确及及时时地地向向工工作作人人员员通通报报实实际际软软件件过过程程,并并按按照照计计划划有规则地有规则地( (前后一致,不互相矛盾前后一致,不互相矛盾) )工作工作凡规定的过程都编成文档凡规定的过程都编成文档软软件件过过程程和和实实际际工工作作方方法法相相吻吻合合。必必要要时时,过过程程定定义义会会及及时更新,通过测试,或者通过成本时更新,通过测试,或者通过成本- -效益分析来改进过程。效益分析来改进过程。全全体体人人员员普普遍遍地地、积积极极地地参参与与改改进进软软件件过过程程的的活活动动。在在组组织织内内部部的的各各项项目目中中,每每人人在在软软件件过过程程中中的的职职责责都
41、都十十分分清清晰晰而而明明确确,各各守守其其责责,协协同同工工作作,有有条条不不紊紊,甚甚至至能能预预见见和和防范问题的发生。防范问题的发生。4 4 能力成熟度模型能力成熟度模型CMMCMM80谷风优质CMMCMM的组成的组成4 4 能力成熟度模型能力成熟度模型CMMCMM81谷风优质5.5.优化级优化级4.4.已管理级已管理级3.3.已定义级已定义级2.2.可重复级可重复级1.1.初始级初始级标标 准准 、 一一致的过程致的过程有纪律有纪律的过程的过程可预测的过程可预测的过程持续改进的过程持续改进的过程软件过程成熟软件过程成熟度的度的5 5个等级个等级4 4 能力成熟度模型能力成熟度模型CM
42、MCMM82谷风优质 CMMCMM提提供供了了一一个个成成熟熟度度等等级级框框架架:1 1级级- -初初始始级级、2 2级级- -可可重重复级、复级、3 3级级- -已定义级、已定义级、4 4级级- -已管理级和已管理级和5 5级级- -优化级。优化级。 1.1.初始(初始(initialinitial)级:)级: 软软件件过过程程的的特特点点是是无无秩秩序序的的,甚甚至至是是混混乱乱的的。几几乎乎没没有有什什么么过过程程是是经经过过妥妥善善定定义义的的,成成功功往往往往依依赖赖于于个个人人或或小小组的努力。组的努力。 2.2.可重复(可重复(repeatablerepeatable)级:)级
43、: 建建立立了了基基本本的的项项目目管管理理过过程程来来跟跟踪踪成成本本、进进度度和和功功能能特特性性。制制定定了了必必要要的的过过程程纪纪律律,能能重重复复早早先先类类似似应应用用项项目目取得的成功。取得的成功。4 4 能力成熟度模型能力成熟度模型CMMCMM83谷风优质 3. 3.已定义(已定义(defineddefined)级:)级: 己己将将管管理理和和工工程程活活动动两两方方面面的的软软件件过过程程文文档档化化、标标准准化化,并并综综合合成成该该机机构构的的标标准准软软件件过过程程。所所有有项项目目均均使使用经批准、剪裁的标准软件过程来开发和维护软件。用经批准、剪裁的标准软件过程来开
44、发和维护软件。 4.4.已管理(已管理(managedmanaged)级:)级: 收收集集对对软软件件过过程程和和产产品品质质量量的的详详细细度度量量值值,对对软软件件过过程和产品都有定量的理解和控制。程和产品都有定量的理解和控制。 5.5.优化(优化(optimizingoptimizing)级:)级: 整整个个组组织织关关注注软软件件过过程程改改进进的的持持续续性性、预预见见及及增增强强自自身身,防防止止缺缺陷陷及及问问题题的的发发生生。过过程程的的量量化化反反馈馈和和先先进进的的新思想、新技术促使过程不断改进。新思想、新技术促使过程不断改进。4 4 能力成熟度模型能力成熟度模型CMMCM
45、M84谷风优质 成成熟熟度度等等级级表表明明了了一一个个软软件件组组织织的的过过程程能能力力的的水水平平。除除初初始始级级外外,每每个个成成熟熟度度等等级级都都包包含含若若干干个个关关键键过过程程域域(Key Key Process Process AreaArea,简称,简称KPAKPA)达达到到某某个个成成熟熟度度级级别别,该该级级别别(以以及及较较低低级级别别)的的所所有有关关键键过过程程域域都都必必须须得得到到满满足足,并且过程必须实现制度化。并且过程必须实现制度化。4 4 能力成熟度模型能力成熟度模型CMMCMM85谷风优质缺缺陷陷预预防防、技技术术更更新新管理、过程更改管理管理、过
46、程更改管理定量过程管理定量过程管理软件质量管理软件质量管理机机构构过过程程焦焦点点、机机构构过过程程定定义义、培培训训大大纲纲、综综合合软软件件管管理理、软软件件产产品品工工程程、组间协调、同行评审组间协调、同行评审需需求求管管理理、软软件件项项目目计计划划、软软件件项项目目跟跟踪踪和和监监督督、软软件件分分包包合合同同管管理理、软软件件质质量保证、软件配置管理量保证、软件配置管理能能力力成成熟熟度度级级别别中中的的关关键键过过程域程域18个个优化级优化级已管理级已管理级已定义级已定义级可重复级可重复级初始级初始级4 4 能力成熟度模型能力成熟度模型CMMCMM6个个7个个2个个3个个86谷风
47、优质能力成熟度模型集成能力成熟度模型集成CMMICMMICapability Maturity Model IntegrationCapability Maturity Model IntegrationCMMCMM的的成成功功导导致致了了各各种种模模型型的的衍衍生生,每每一一种种模模型都探讨了某一特定领域中的过程改进问题型都探讨了某一特定领域中的过程改进问题SW-CMMSW-CMM:适用于软件开发:适用于软件开发SE-CMMSE-CMM:系统工程能力成熟度模型:系统工程能力成熟度模型SA-CMMSA-CMM:适用于软件获取:适用于软件获取SECAMSECAM:系统工程能力评估模型:系统工程能
48、力评估模型People People CMMCMM:讨讨论论软软件件组组织织吸吸引引、开开发发、激激励励、组组织织和留住人才的能力和留住人才的能力EIA/IS 731EIA/IS 731:替代:替代SW-CMMSW-CMM和和SECAMSECAMIPD-CMMIPD-CMM:适用于集成化产品开发:适用于集成化产品开发FAA-CMMFAA-CMM:集成了:集成了SE-CMMSE-CMM、 SA-CMMSA-CMM、 SW-CMMSW-CMM87谷风优质相应的国际标准:相应的国际标准: ISO/IEC 12207ISO/IEC 12207(软件生存周期过程)(软件生存周期过程) ISO/IEC 1
49、5288ISO/IEC 15288(系统生存周期过程)(系统生存周期过程) ISO/IEC 15504ISO/IEC 15504(软件过程评估)(软件过程评估)模型的繁衍导致模型框架、术语等方面的矛盾和不一致模型的繁衍导致模型框架、术语等方面的矛盾和不一致包包含含在在当当代代工工程程中中各各种种各各样样的的学学科科和和工工程程是是密密切切交交叉叉在在一一起起的的,应应用用不不同同模模型型时时效效率率低低下下且且容容易易混混淆淆,常常常常要要付付出出极其昂贵的代价极其昂贵的代价美美国国国国防防部部、美美国国国国防防工工业业委委员员会会和和SEI/CMUSEI/CMU于于19981998年年启启动
50、动CMMICMMI项项目目,希希望望CMMICMMI是是若若干干过过程程模模型型的的综综合合和和改改进进,是是支持多个工程学科和领域的系统的、一致的过程改进框架支持多个工程学科和领域的系统的、一致的过程改进框架。4 4 能力成熟度模型能力成熟度模型CMMCMM88谷风优质20002000年年发发布布第第一一个个CMMICMMI模模型型CMMI-SE/SW/IPPD CMMI-SE/SW/IPPD V1.0V1.0:集集成成了了SW-CMMSW-CMM、EIA/IS EIA/IS 731731、IPD IPD CMM CMM V0.98V0.9820022002年年1 1月月发发布布CMMI-S
51、E/SW/IPPD CMMI-SE/SW/IPPD V1.1V1.1,美美国国国国防防工工业业委委员员会会在在第第一一届届CMMICMMI国国际际研研讨讨会会上上宣宣布布, CMMI V1.1CMMI V1.1将至少稳定五年不变将至少稳定五年不变CMMICMMI模型提供两种表示法:模型提供两种表示法: 阶段式模型和连续式模型阶段式模型和连续式模型4 4 能力成熟度模型能力成熟度模型CMMCMM89谷风优质阶段式模型阶段式模型阶阶段段式式模模型型的的结结构构类类同同于于软软件件CMMCMM,它它关关注注组织的成熟度,其成熟度等级如下图所示组织的成熟度,其成熟度等级如下图所示 5优化的优化的4定量
52、管理的定量管理的3已定义的已定义的2已管理的已管理的1初始的初始的过程不可预测且缺乏控制过程不可预测且缺乏控制过程为项目服务过程为项目服务过程为组织服务过程为组织服务过程已度量和控制过程已度量和控制集中于过程改进集中于过程改进阶段式成熟度等级阶段式成熟度等级4 4 能力成熟度模型能力成熟度模型CMMCMM90谷风优质CMMI V1.1CMMI V1.1的的2424个过程域的分组如下:个过程域的分组如下:成熟度等级成熟度等级过程域过程域已管理的已管理的(7 7个)个)需求管理需求管理REQMREQM,项目计划,项目计划PPPP,项目监督和控制,项目监督和控制PMCPMC,供应商合同管理,供应商合
53、同管理SAMSAM,度量和分析,度量和分析MAMA,过,过程和产品质量保证程和产品质量保证PPQAPPQA,配置管理,配置管理CMCM已定义的已定义的(1313个)个)需求开发需求开发RDRD,技术解决方案,技术解决方案TSTS,产品集成,产品集成PIPI,验证验证VERVER,确认,确认VALVAL,组织级过程焦点,组织级过程焦点OPFOPF,组织,组织级过程定义级过程定义OPDOPD,组织级培训,组织级培训OTOT,集成化项目管,集成化项目管理理IPMIPM,风险管理,风险管理RSKMRSKM,集成化建组,集成化建组ITIT,决策分,决策分析和解决方案析和解决方案DARDAR,组织级集成环
54、境,组织级集成环境OEIOEI定量管理的定量管理的(2 2个)个)组织级过程性能组织级过程性能OPPOPP,项目定量管理,项目定量管理QPMQPM 优化的优化的(2 2个)个)组织级改革和实施组织级改革和实施OIDOID,因果分析和解决方案因果分析和解决方案CARCAR91谷风优质连续式模型连续式模型连连续续式式模模型型关关注注每每个个过过程程域域的的能能力力,一一个个组组织织对对不不同同的的过过程程域域可可以以达达到到不不同同的的过过程程域域能能力力等等级级(Capability Capability levellevel,CLCL)。)。CMMICMMI中中包包括括六六个个过过程程域域能能
55、力力等等级级,等等级级号号为为0 05 5。能能力力等级表明了单个过程域中组织执行的好坏程度。等级表明了单个过程域中组织执行的好坏程度。允允许许组组织织对对连连续续式式模模型型的的过过程程域域进进行行剪剪裁裁,也也允允许许对对不不同的过程域采用不同的能力等级同的过程域采用不同的能力等级下图给出了下图给出了某组织某组织的过程域能力等级的过程域能力等级4 4 能力成熟度模型能力成熟度模型CMMCMM92谷风优质能力等级特征示意图能力等级特征示意图CL0未完成的未完成的CL1已执行的已执行的CL2已管理的已管理的CL3已定义的已定义的CL4定量管理的定量管理的CL5优化的优化的过程域过程域RSKMI
56、PMSAMPMCPPITQPM4 4 能力成熟度模型能力成熟度模型CMMCMM93谷风优质连续式分组连续式分组过程域过程域过程管理过程管理(5 5个)个)组织级过程焦点组织级过程焦点OPFOPF,组织级过程定义,组织级过程定义OPDOPD,组,组织级培训织级培训OTOT,组织级过程性能,组织级过程性能OPPOPP,组织级改,组织级改革和实施革和实施OIDOID项目管理项目管理(7 7个)个)项目计划项目计划PPPP,项目监督和控制,项目监督和控制PMCPMC,供应商合,供应商合同管理同管理SAMSAM,集成化项目管理,集成化项目管理IPMIPM,风险管理,风险管理RSKMRSKM,集成化建组,集成化建组ITIT,项目定量管理,项目定量管理QPMQPM工程工程(6 6个)个)需求管理需求管理REQMREQM,需求开发,需求开发RDRD,技术解决方案,技术解决方案TSTS,产品集成,产品集成PIPI,验证,验证VERVER,确认,确认VALVAL支持支持(6 6个)个)配置管理配置管理CMCM,过程和产品质量保证,过程和产品质量保证PPQAPPQA,度量,度量和分析和分析MAMA,决策分析和解决方案,决策分析和解决方案DARDAR,组织级,组织级集成环境集成环境OEIOEI,因果分析和解决方案,因果分析和解决方案CARCAR4 4 能力成熟度模型能力成熟度模型CMMCMM94谷风优质