1、第第3章软件开发过程管理章软件开发过程管理本章内容提要本章内容提要CMMCMM和和ISO9000 ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.3n 软件过程软件过程n是指人们用于开发和维护软件及其相关产品的一是指人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和革新。系列活动、方法、实践和革新。n 软件开发过程管理软件开发过程管理n是指在软件开发过程中,除了先进技术和开发方是指在软件开发过程中,除了
2、先进技术和开发方法外,还有一整套的管理技术。法外,还有一整套的管理技术。n 软件过程改进软件过程改进n是针对软件生产过程中会对产品质量产生影响的是针对软件生产过程中会对产品质量产生影响的问题而进行的,它的直接结果是软件过程能力的提高。问题而进行的,它的直接结果是软件过程能力的提高。n现在常见的软件过程改进方法:现在常见的软件过程改进方法:ISO 9000,SW-CMM和由多种能力模型演变而来的和由多种能力模型演变而来的CMMI。3.1 CMM和和ISO9000 3.1.1 SW-CMM和和CMMI nSW-CMMSW-CMM简介简介n 为了保证软件产品的质量,为了保证软件产品的质量,19911
3、991年美国卡内基年美国卡内基梅隆大学软件工程研究所(梅隆大学软件工程研究所(CMU/SEICMU/SEI)将软件过程成熟)将软件过程成熟度框架进化为软件能力成熟度模型(度框架进化为软件能力成熟度模型(Capability Capability Maturity Model For SoftwareMaturity Model For Software,简称,简称SW-CMMSW-CMM),并发),并发布了最早的布了最早的SW-CMM 1.0SW-CMM 1.0版。版。nSW-CMMSW-CMM为软件企业的过程能力提供了一个阶梯式为软件企业的过程能力提供了一个阶梯式的进化框架,阶梯共有五级。的
4、进化框架,阶梯共有五级。3.1.1 SW-CMM和和CMMI 1 初始级2 可重复级3 已定义级4 已管理级5 优化级无序、混乱的软件过程。依赖个别人的努力和机遇。建立基本的项目管理过程。相似项目,重复以往成果。文档化、标准化和标准的软件软件过程。软件过程和产品质量有详细的度量标准。持续的对过程进行改进。图 CMM分级标准3.1.1 SW-CMM和和CMMI n KPA KPA及及KPKPn除第一级外,除第一级外,SW-CMMSW-CMM的每一级都是按完全相同的的每一级都是按完全相同的结构组成的。每一级包含了实现这一级目标的若干关键结构组成的。每一级包含了实现这一级目标的若干关键过程域(过程域
5、(KPAKPA),每个),每个KPAKPA进一步包含若干关键实施活动进一步包含若干关键实施活动(KPKP),无论哪个),无论哪个KPAKPA,它们的实施活动都统一按六个,它们的实施活动都统一按六个公共属性进行组织,即每一个公共属性进行组织,即每一个KPAKPA都包含六类都包含六类KPKP:n1. 1. 目标目标n2. 2. 实施保证实施保证n3. 3. 实施能力实施能力 n4. 4. 执行活动执行活动 n5. 5. 度量分析度量分析n6. 6. 实施验证实施验证3.1.1 SW-CMM和和CMMI n CMMI CMMI简介简介n由于不同领域能力成熟度模型存在不同的过程改由于不同领域能力成熟度
6、模型存在不同的过程改进,重复的培训、评估和改进活动以及活动不协调等进,重复的培训、评估和改进活动以及活动不协调等一些问题。于是由美国国防部出面,美国卡内基一些问题。于是由美国国防部出面,美国卡内基梅梅隆大学软件工程研究所(隆大学软件工程研究所(CMU/SEICMU/SEI)于)于20012001年年1212月发布月发布的的CMMI 1.1CMMI 1.1版本包括四个领域:软件工程(版本包括四个领域:软件工程(SWSW)、系)、系统工程(统工程(SESE)、集成的产品和过程开发()、集成的产品和过程开发(IPPDIPPD)、采)、采购(购(SSSS)。)。3.1.1 SW-CMM和和CMMI n
7、 CMMI有两种不同的实施方法n连续式主要是衡量一个企业的项目能力n阶段式主要是衡量一个企业的成熟度n CMMI的五个台阶n 完成级n 管理级 n 定义级 n 量化管理级 n 优化级 n 每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。 3.1.2 ISO9000质量标准质量标准 n ISO9000n 所谓“ISO9000”不是指一般意义上的一个质量保证标准,而是一族系列标准的统称。 n作用作用n强化品质管理,提高企业效益;增强客户信心,扩大强化品质管理,提高企业效益;增强客户信心,扩大市场份额;市场份额;n获得了国际贸易获得了国际贸易“通行证通行证”,消除了国际贸易壁
8、垒;,消除了国际贸易壁垒;n节省了第二方审核的精力和费用;节省了第二方审核的精力和费用;n在产品品质竞争中永远立于不败之地;在产品品质竞争中永远立于不败之地;n有效地避免产品责任;有效地避免产品责任;n有利于国际间的经济合作和技术交流。有利于国际间的经济合作和技术交流。3.1.3 三者之间的比较三者之间的比较 n 选择选择SW-CMMSW-CMM还是还是CMMICMMI的考虑的考虑n实施企业的业务特点。实施企业的业务特点。n实施企业对过程改进的熟悉程度。实施企业对过程改进的熟悉程度。n实施企业对过程改进项目的预算。实施企业对过程改进项目的预算。n实施企业是否可以使用阶段式的演进路线。实施企业是
9、否可以使用阶段式的演进路线。n实施实施CMMCMM与与CMMICMMI可以平滑的转换。可以平滑的转换。n ISO9001 ISO9001与与CMMCMM的关系的关系nISO9001ISO9001和和CMMCMM既有区别又相互联系,两者不可简单地互既有区别又相互联系,两者不可简单地互相替相替 代。代。n取得取得ISO9001ISO9001认证并不意味着完全满足认证并不意味着完全满足CMMCMM某个等级的要某个等级的要求。求。n取得取得CMMCMM第第2 2级级( (或第或第3 3级级) )不能笼统地认为可以满足不能笼统地认为可以满足ISO9001ISO9001的要求。的要求。本章内容提要本章内容
10、提要CMMCMM和和ISO9000 ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.3n软件生命周期软件生命周期n软件从需求确定、设计、开发、测试直至投入使用,软件从需求确定、设计、开发、测试直至投入使用,并在使用中不断地修改、增补和完善,直至被新的系统所替并在使用中不断地修改、增补和完善,直至被新的系统所替代而停止该软件的使用的全过程。代而停止该软件的使用的全过程。n可划分为以下子阶段可划分为以下子阶段 n 1
11、.可行性研究可行性研究n2.需求分析和定义需求分析和定义n3.总体设计总体设计n4.详细设计详细设计n5.编码(实现)编码(实现)n6.软件测试、运行软件测试、运行/维护维护n据此相继产生了瀑布模型、螺旋模型、进化模型、原据此相继产生了瀑布模型、螺旋模型、进化模型、原型模型、增量模型等。本节分别对这几种传统的软件开发生型模型、增量模型等。本节分别对这几种传统的软件开发生命周期模型予以介绍。命周期模型予以介绍。 3.2 传统软件开发生命周期模型传统软件开发生命周期模型 3.2.1 瀑布模型瀑布模型系统需求系统需求软件需求软件需求分析分析设计设计编码编码测试测试运行运行n瀑布模型总结瀑布模型总结n
12、文档驱动的模型文档驱动的模型n阶段间具有顺序性和阶段间具有顺序性和依赖性依赖性n项目开发周期较长项目开发周期较长n实际项目很少按照该实际项目很少按照该模型给出的顺序进行模型给出的顺序进行3.2.2 原型模型原型模型 3.2.2 原型模型原型模型 nPrototyping modelPrototyping model特点特点n在需求定义之前,需要快速构建一个系统在需求定义之前,需要快速构建一个系统n根据构建系统的优缺点,用户给开发人员提出根据构建系统的优缺点,用户给开发人员提出反馈意见反馈意见n根据反馈意见修改软件需求规格,以便系统可根据反馈意见修改软件需求规格,以便系统可以更正确地反映用户的需
13、求以更正确地反映用户的需求n减少各种假设以及风险减少各种假设以及风险3.2.3 增量模型增量模型 设设 计计编编 码码测测 试试分分 析析设设 计计编编 码码测测 试试分分 析析设设 计计编编 码码测测 试试分分 析析设设 计计编编 码码测测 试试分分 析析增量增量1增量增量2增量增量3增量增量4第一个增量发布第一个增量发布第二个增量发布第二个增量发布第三个增量发布第三个增量发布第四个增量发布第四个增量发布开发进度开发进度3.2.3 增量模型增量模型 3.2.4 进化模型进化模型 建造建造/ /修改修改原型原型听取用户听取用户意见意见用户测试用户测试运行原型运行原型这个模型可看作是重复执行的多
14、个瀑布模型。 3.2.5 螺旋模型螺旋模型原型原型1原型原型2原型原型3可运行可运行原型原型需求计划需求计划 生存期生存期 计划计划开开发发计计划划集集成成与与测测试试软件软件需求需求需求需求确认确认设计确认设计确认与验证与验证 软件软件 产品产品设计设计详细设计详细设计风风险险分分析析风风险险分分析析风风险险分分析析验收验收测试测试实现实现集成集成与与测试测试单元单元测试测试编码编码开发、验证开发、验证下一产品下一产品实施工程实施工程提交线提交线评审评审累计累计成本成本风险分析风险分析评价方案,识别评价方案,识别风险、消除风险风险、消除风险制订计划制订计划决定目标决定目标方案和限制方案和限制
15、客户评估客户评估3.2.5 螺旋模型螺旋模型 n螺旋模型总结n基于风险驱动的开发模型, 使用原型法或其它方法来尽量降低风险。n适用于需求不明确的大规模软件项目本章内容提要本章内容提要CMMCMM和和ISO9000 ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.33.3.1 极限模型极限模型 n极限模型简介极限模型简介n2001年,为了避免许多公司的软件团队陷入不断年,为了避免许多公司的软件团队陷入不断增长的过程
16、泥潭,一批业界专家一起概括出了一些敏增长的过程泥潭,一批业界专家一起概括出了一些敏捷开发过程的方法:捷开发过程的方法:SCRUM,Crystal,特征驱动软件,特征驱动软件开发(开发(Feature Driven Development,简称,简称FDD),自),自适应软件开发(适应软件开发(Adaptive Software Development,简称,简称ASD),以及最重要的极限编程(),以及最重要的极限编程(eXtreme Programming,简称简称XP)。)。 3.3.1 极限模型极限模型 极限编程将极限编程将开发阶段的开发阶段的4 4个活动(分个活动(分析、设计、析、设计、
17、编码和测试)编码和测试)混合在一起,混合在一起,在全过程中在全过程中采用迭代增采用迭代增量开发、反量开发、反馈修正和反馈修正和反复测试。复测试。 3.3.1 极限模型极限模型 nXPXP开发模型核心思想:开发模型核心思想:n交流(交流(CommunicationCommunication)n简单(简单(Simplicity Simplicity )n反馈(反馈(FeedbackFeedback)n进取(进取(AggressivenessAggressiveness) 3.3.1 极限模型极限模型 n优点优点n采用简单计划策略,采用简单计划策略,不需要长期计划和复不需要长期计划和复杂模型,开发周
18、期短;杂模型,开发周期短;n 在全过程采用迭代增在全过程采用迭代增量开发、反馈修正和量开发、反馈修正和反复测试的方法,能反复测试的方法,能够适应用户经常变化够适应用户经常变化的需求。的需求。n n缺点缺点n目前主要在小规模项目前主要在小规模项目上应用并取得成功,目上应用并取得成功,但是否适用于中等规但是否适用于中等规模或大规模软件产品,模或大规模软件产品,需慎重考虑;需慎重考虑;n由于这个模型较新产由于这个模型较新产品交付后维护成本是品交付后维护成本是否降低,不能确定;否降低,不能确定; n对编码人员的经验要对编码人员的经验要求高求高 3.3.2 Rational统一过程统一过程 (RUP)3
19、.3.2 Rational统一过程统一过程 (RUP)3.3.3 微软产品开发周期模型微软产品开发周期模型 微软产品周期模型微软产品周期模型产品规划阶段产品规划阶段测试阶段测试阶段产品开发阶段产品开发阶段发布阶段发布阶段M1MnCCZBBRTM/WRC1RCnAlphaGolden MastersBetaProduct VisionFunction SpecQFEs本章内容提要本章内容提要CMM和和ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习
20、思考题复习思考题 3.73.23.33.4.1 质量与质量规划质量与质量规划 n 软件质量n 是“所有描述计算机软件优秀程度的特性的组合”。n软件质量度量模型由三层组成n 第一层为质量特性n 第二层为质量子特性n 第三层称为度量3.4.1 质量与质量规划质量与质量规划 n ISO ISOIEC9126 1991IEC9126 1991(GBGBT16260 1996T16260 1996)标准)标准标准定义的标准定义的6 6个质量特性个质量特性n功能性功能性n可靠性可靠性n易使用性易使用性n高效性高效性n可维护性可维护性n可移植性可移植性n 质量规划质量规划n指识别哪些质量标准适用于软件项目,
21、并确定如何满足指识别哪些质量标准适用于软件项目,并确定如何满足这些标准的要求这些标准的要求 3.4.2 质量体系、质量手册和质量计划质量体系、质量手册和质量计划 n 质量体系质量体系n指为保证产品、过程或服务质量,满足规定(或潜指为保证产品、过程或服务质量,满足规定(或潜在)的要求,由组织机构、职责、程序、活动、能力在)的要求,由组织机构、职责、程序、活动、能力和资源等构成的有机整体。和资源等构成的有机整体。 n 质量手册质量手册n是描述企业质量体系的文件。是描述企业质量体系的文件。n 质量计划质量计划n是质量管理(质量计划编制、质量保证和质量控制是质量管理(质量计划编制、质量保证和质量控制)
22、的第一过程域)的第一过程域 。3.4.2 质量体系、质量手册和质量计划质量体系、质量手册和质量计划 质量体系、质量手册和质量质量体系、质量手册和质量计划之间的关系计划之间的关系 质量体系好比一个国家的质量体系好比一个国家的法制机构,质量手册就如同宪法制机构,质量手册就如同宪法,是质量体系的文档化的体法,是质量体系的文档化的体现。而为每个项目制定的质量现。而为每个项目制定的质量计划类似地方法规,它在符合计划类似地方法规,它在符合质量手册的前提下,根据自身质量手册的前提下,根据自身的要求与特殊性,通过适当的的要求与特殊性,通过适当的裁减修正而来。裁减修正而来。 n 关系图关系图3.4.3 项目质量
23、计划的内容项目质量计划的内容 n 项目实施总体目标n 质量n 时间n 成本n三者是一个相互制约、相互影响的统一体,其中任一项目标变化,都会引起另两个目标变化,并受其制约。 n 项目分类n 质量倾斜型体系n 工期倾斜型体系n 成本倾斜型体系3.4.3 项目质量计划的内容项目质量计划的内容 n 编写软件质量计划涉及的范围相当广,不论是项目选型、软件开发各阶段,还是配置管理、岗位职责与团队组织,又或是其他如项目制度的制定等等方面,都应该是包含在项目质量计划中的内容。3.4.4 质量目标质量目标 n 软件生命周期三大阶段(以传统的瀑布模型为例)n 软件定义n 软件开发n 软件使用与维护阶段阶段 需要监
24、控的关键元素需要监控的关键元素问题定义问题定义 关于规模和目标的报告书关于规模和目标的报告书可行性研究可行性研究系统的高层逻辑模型:数据流图,成本系统的高层逻辑模型:数据流图,成本/效益分析效益分析需求分析需求分析系统的逻辑模型:数据流图(系统的逻辑模型:数据流图(MSC图),数据字图),数据字典(类清单、对象间关系),算法描述典(类清单、对象间关系),算法描述总体设计总体设计可能的解法:系统流程图,成本可能的解法:系统流程图,成本/效益分析效益分析推荐的系统结构:层次图推荐的系统结构:层次图 ,结构图,结构图详细设计详细设计 编码规格说明编码规格说明综合测试综合测试综合测试方案和结果综合测试
25、方案和结果完整性一致的软件配置完整性一致的软件配置维护维护 完整准确的维护记录完整准确的维护记录3.4.4 质量目标质量目标 n各阶段的关键元素各阶段的关键元素3.4.5 项目质量计划的编写项目质量计划的编写 n 质量计划n 应说明项目管理小组如何具体执行它的质量策略。n 目的n 规划出哪些是需要被跟踪的质量工作,并建立文档,此文档可以作为软件质量工作指南,帮助项目经理确保所有工作按计划完成。n 编写准则n 具体情况具体对待,没有统一定律。 3.4.6 按照质量计划实施有效的质量控制按照质量计划实施有效的质量控制 质量计划确定后,按其建立的质量管理体系,各责任单位必须按PDCA质量环的要求,实
26、施有效的质量控制。质量控制可分为两个阶段监测控制质量控制应贯穿于项目的整个过程。项目收尾的两个阶段项目评估项目终止项目收尾阶段的质量控制是一个非常重要而又容易忽视的内容。本章内容提要本章内容提要CMM和和ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.33.5 案例分析案例分析n HRMS系统n即人力资源管理系统,是为某跨国企业的ISS部门而开发的。n HRMS系统生存期模型选择过程n针对本项目的开发特点,参考企
27、业的生存期模型说明和软件过程体系,决定采用迭代增量式模型。 3.5 案例分析案例分析H HR RM MS S项项目目生生存存期期模模型型 本章内容提要本章内容提要CMM和和ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.33.6 本章小结本章小结 讲述了软件开发过程管理需要掌握的部分知识。讲述了软件开发过程管理需要掌握的部分知识。介绍了介绍了ISO9000,CMM和和CMMI三种常见的软件过程改进方法,并比较了它
28、们之间的异同,对于选取哪种方法给予了建议。三种常见的软件过程改进方法,并比较了它们之间的异同,对于选取哪种方法给予了建议。详细介绍了多种软件开发生命周期模型的特点、优缺点,对于软件开发中的相当重要的项目选型工作提供了参照。详细介绍了多种软件开发生命周期模型的特点、优缺点,对于软件开发中的相当重要的项目选型工作提供了参照。此外还介绍了质量计划的定义和详细的模版。此外还介绍了质量计划的定义和详细的模版。(质量计划的制定对于软件质量控制的重要性非同小可,它涉及的范围很广,需质量计划的制定对于软件质量控制的重要性非同小可,它涉及的范围很广,需要制定的内容相当多,部分内容读者可以在其它章节去详细了解。要
29、制定的内容相当多,部分内容读者可以在其它章节去详细了解。)本章内容提要本章内容提要CMMCMM和和ISO9000 ISO9000 传统软件开发生命周期模型传统软件开发生命周期模型 扩展软件开发生命周期模型扩展软件开发生命周期模型 3.1质量计划质量计划 3.4案例分析案例分析 3.5本章小结本章小结 3.6复习思考题复习思考题 3.73.23.33.7 复习思考题复习思考题 CMM和和CMMI的五个级别分别是什么?的五个级别分别是什么?CMM和和CMMI的关的关系是什么?系是什么?在软件企业中推行在软件企业中推行ISO9000的意义何在?的意义何在?传统的软件开发生命周期可以分为哪几个子阶段?传统的软件开发生命周期可以分为哪几个子阶段?原型模型可以细分为哪两种?它们的内容是什么?原型模型可以细分为哪两种?它们的内容是什么?你觉得进化模型和螺旋模型有哪些相似之处吗?它们的核心你觉得进化模型和螺旋模型有哪些相似之处吗?它们的核心思想是什么?思想是什么?质量体系、质量手册和质量计划的联系何在?质量体系、质量手册和质量计划的联系何在?在需求分析阶段需要监控的关键元素是什么?在需求分析阶段需要监控的关键元素是什么?