《第9章软件工程管理.ppt》由会员分享,可在线阅读,更多相关《第9章软件工程管理.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第9章章 面向对象技面向对象技术术 内容介绍内容介绍n n9.1 9.1 软件工程管理概述软件工程管理概述软件工程管理概述软件工程管理概述n n9.2 9.2 软件规模估算软件规模估算软件规模估算软件规模估算n n9.3 9.3 软件项目的组织与计划软件项目的组织与计划软件项目的组织与计划软件项目的组织与计划n n9.4 9.4 软件质量软件质量软件质量软件质量 n n9.5 ISO90009.5 ISO9000软件质量体系软件质量体系软件质量体系软件质量体系n n9.6 9.6 软件配置管理软件配置管理软件配置管理软件配置管理n n9.7 CMM9.7 CMM软件能力成熟度模型软件能力成熟
2、度模型软件能力成熟度模型软件能力成熟度模型n n9.8 9.8 软件工程标准与软件文档软件工程标准与软件文档软件工程标准与软件文档软件工程标准与软件文档n n9.9 9.9 小结小结小结小结9.1 软件工程管理概述软件工程管理概述 n n软件工程管理的目的是为了按照预定的时间和费用,成功软件工程管理的目的是为了按照预定的时间和费用,成功软件工程管理的目的是为了按照预定的时间和费用,成功软件工程管理的目的是为了按照预定的时间和费用,成功地完成软件的计划、开发和维护任务地完成软件的计划、开发和维护任务地完成软件的计划、开发和维护任务地完成软件的计划、开发和维护任务。n 1 1费用管理费用管理 目的
3、是对软件开发进行成本核算,使软件生产按照商品生产的经济规律办事。其主要任务是:以简单实用和科学的方法估算出软件的开发费用,作为签订开发合同的根据;管理开发费用的有效使用,用经济手段来保证产品如期按质完成。9.1 软件工程管理概述软件工程管理概述 n 2 2质量管理质量管理 目的在于保证软件产品(包括最终程序和文档)的质量,为了贯彻全面质量控制(TQC)的原则,每个项目都要订出“质量保证计划”,并由专设的质量保证小组负责贯彻,确保在各个阶段的开发和维护工作全都按软件工程的规范进行。配置管理是质量管理的重要组成部分,包括对于程序、文档和数据的各种版本所进行的管理,以保证资料的完整性与一致性。对于重
4、要的和大型的软件,需要制订单独的”配置管理计划”,并由专设的人员进行管理。9.1 软件工程管理概述软件工程管理概述 n 3 3项目的其他管理项目的其他管理除项目经费和软件质量外,项目的进度和人员也是项目管理的重要内容。9.2 软件规模估算软件规模估算n n9.2.1软件开发成本估算方法软件开发成本估算方法n n9.2.2代码行技术和任务估算技术代码行技术和任务估算技术n n9.2.3 COCOMO模型模型 9.2.1软件开发成本估算方法软件开发成本估算方法n n软件开发成本主要是指软件开发过程中所花费的工作量及相软件开发成本主要是指软件开发过程中所花费的工作量及相软件开发成本主要是指软件开发过
5、程中所花费的工作量及相软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,主要是人的劳动的消耗。软件开发成本的估算,应的代价,主要是人的劳动的消耗。软件开发成本的估算,应的代价,主要是人的劳动的消耗。软件开发成本的估算,应的代价,主要是人的劳动的消耗。软件开发成本的估算,应是从软件计划、需求分析、设计、单元测试、组装测试到应是从软件计划、需求分析、设计、单元测试、组装测试到应是从软件计划、需求分析、设计、单元测试、组装测试到应是从软件计划、需求分析、设计、单元测试、组装测试到确认测试,整个软件开发过程所花费的代价作为依据的。确认测试,整个软件开发过程所花费的代价作为依据的。确认测试,
6、整个软件开发过程所花费的代价作为依据的。确认测试,整个软件开发过程所花费的代价作为依据的。n n基于估算方法分为三类:基于估算方法分为三类:基于估算方法分为三类:基于估算方法分为三类:(1)(1)(1)(1)自顶向下估算方法自顶向下估算方法自顶向下估算方法自顶向下估算方法 估算人员参照以前完成的项目所耗费的总成本,来推算将要估算人员参照以前完成的项目所耗费的总成本,来推算将要估算人员参照以前完成的项目所耗费的总成本,来推算将要估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元开发的软件的总成本,然后把它们按阶段、步骤和工作单元开发的软件的总
7、成本,然后把它们按阶段、步骤和工作单元开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行分配进行分配进行分配进行分配.9.2.1软件开发成本估算方法软件开发成本估算方法(3)(3)(3)(3)差别估算方法差别估算方法差别估算方法差别估算方法 差别估算是将开发项目与一个或多个已完成的类似项目进行差别估算是将开发项目与一个或多个已完成的类似项目进行差别估算是将开发项目与一个或多个已完成的类似项目进行差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干不同之处,并估算每个比较,找到与某个相类似项目的若干不同之处,并估算每个比较,找到与某个相类似项目的若干不同之处
8、,并估算每个比较,找到与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。不同之处对成本的影响,导出开发项目的总成本。不同之处对成本的影响,导出开发项目的总成本。不同之处对成本的影响,导出开发项目的总成本。(4)(4)(4)(4)专家估算法。专家估算法。专家估算法。专家估算法。(5)(5)(5)(5)类推估算法。类推估算法。类推估算法。类推估算法。(6)(6)(6)(6)算式估算法。算式估算法。算式估算法。算式估算法。(2)(2)(2)(2)自底向上估算方法自底向上估算方法自底向上估算方法自底向上估算方法 将待开发的软件细分,分别估算每一个子任务所需要的开发将
9、待开发的软件细分,分别估算每一个子任务所需要的开发将待开发的软件细分,分别估算每一个子任务所需要的开发将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来工作量,然后将它们加起来工作量,然后将它们加起来工作量,然后将它们加起来 ,得到软件的总开发量。,得到软件的总开发量。,得到软件的总开发量。,得到软件的总开发量。9.2.2代码行技术和任务估算技代码行技术和任务估算技术术 有时难以根据经验估算所需代码行数,为了使得对程序有时难以根据经验估算所需代码行数,为了使得对程序有时难以根据经验估算所需代码行数,为了使得对程序有时难以根据经验估算所需代码行数,为了使得对程序规模的估
10、计值更接近实际值,可以由多名有经验的软件工程规模的估计值更接近实际值,可以由多名有经验的软件工程规模的估计值更接近实际值,可以由多名有经验的软件工程规模的估计值更接近实际值,可以由多名有经验的软件工程师分别作出估计。每个人都估计程序的最小规模(师分别作出估计。每个人都估计程序的最小规模(师分别作出估计。每个人都估计程序的最小规模(师分别作出估计。每个人都估计程序的最小规模(a a a a)、最)、最)、最)、最大规模(大规模(大规模(大规模(b b b b)和最可能的规模()和最可能的规模()和最可能的规模()和最可能的规模(m m m m),分别算出这三种规模的),分别算出这三种规模的),分
11、别算出这三种规模的),分别算出这三种规模的平均值,和之后,再利用下面公式计算程序规模的估计值:平均值,和之后,再利用下面公式计算程序规模的估计值:平均值,和之后,再利用下面公式计算程序规模的估计值:平均值,和之后,再利用下面公式计算程序规模的估计值:n n代码行技术是把开发每个软件功能的成本和实现这个功能需代码行技术是把开发每个软件功能的成本和实现这个功能需代码行技术是把开发每个软件功能的成本和实现这个功能需代码行技术是把开发每个软件功能的成本和实现这个功能需要用的源代码行数据联系起来。通常根据经验和历史数据估要用的源代码行数据联系起来。通常根据经验和历史数据估要用的源代码行数据联系起来。通常
12、根据经验和历史数据估要用的源代码行数据联系起来。通常根据经验和历史数据估计实现一个功能需要的源程序行数。计实现一个功能需要的源程序行数。计实现一个功能需要的源程序行数。计实现一个功能需要的源程序行数。当程序较小时常用的单位是代码行数(LOC),当程序较大时常用的单位是千代码行(KLOC)9.2.2代码行技术和任务估算技代码行技术和任务估算技术术 在估计每个任务的成本时,通常先估计完成该项任务需要在估计每个任务的成本时,通常先估计完成该项任务需要在估计每个任务的成本时,通常先估计完成该项任务需要在估计每个任务的成本时,通常先估计完成该项任务需要用的人力(一人月为单位),再乘以每人每月的平均工资而
13、用的人力(一人月为单位),再乘以每人每月的平均工资而用的人力(一人月为单位),再乘以每人每月的平均工资而用的人力(一人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。得出每个任务的成本。得出每个任务的成本。得出每个任务的成本。n n任务估算技术实际是一种任务分解技术,它首先把软件开发任务估算技术实际是一种任务分解技术,它首先把软件开发任务估算技术实际是一种任务分解技术,它首先把软件开发任务估算技术实际是一种任务分解技术,它首先把软件开发工程分解为若干个相对独立的任务,再分别估计每个单独开工程分解为若干个相对独立的任务,再分别估计每个单独开工程分解为若干个相对独立的任务,再分别估计每个
14、单独开工程分解为若干个相对独立的任务,再分别估计每个单独开发任务的成本,最后累加起来得出软件开发工程的总成本。发任务的成本,最后累加起来得出软件开发工程的总成本。发任务的成本,最后累加起来得出软件开发工程的总成本。发任务的成本,最后累加起来得出软件开发工程的总成本。9.2.3 COCOMO模型模型 构造性成本模型构造性成本模型构造性成本模型构造性成本模型COCOMOCOCOMOCOCOMOCOCOMO(COnstructiveCOnstructiveCOnstructiveCOnstructive COstCOstCOstCOst MOdelMOdelMOdelMOdel)是)是)是)是最精确
15、、最易于使用的成本估算方法之一。最精确、最易于使用的成本估算方法之一。最精确、最易于使用的成本估算方法之一。最精确、最易于使用的成本估算方法之一。该模型分为:基本该模型分为:基本该模型分为:基本该模型分为:基本COCOMOCOCOMOCOCOMOCOCOMO模型,是一个静态单变量模型,模型,是一个静态单变量模型,模型,是一个静态单变量模型,模型,是一个静态单变量模型,它是对整个软件系统进行估算;中级它是对整个软件系统进行估算;中级它是对整个软件系统进行估算;中级它是对整个软件系统进行估算;中级COCOMOCOCOMOCOCOMOCOCOMO模型,是一个静模型,是一个静模型,是一个静模型,是一个
16、静态多变量模型;详细态多变量模型;详细态多变量模型;详细态多变量模型;详细COCOMOCOCOMOCOCOMOCOCOMO模型,将软件系统模型分为系统、模型,将软件系统模型分为系统、模型,将软件系统模型分为系统、模型,将软件系统模型分为系统、子系统和模块三个层次。子系统和模块三个层次。子系统和模块三个层次。子系统和模块三个层次。9.2.3 COCOMO模型模型n n1.1.1.1.基本基本基本基本COCOMOCOCOMOCOCOMOCOCOMO模型模型模型模型 E E为开发所需的人力(人/月),D D为所需的开发时间(月),L L是项目的源代码行估计值,不包括程序中的注释和文档,单位是千代码行
17、。a、b、c、d指不同软件开发方式的值,是常数。其取值如表9-2所示。9.2.3 COCOMO模型模型n n2.2.2.2.中级中级中级中级COCOMOCOCOMOCOCOMOCOCOMO模型模型模型模型 L L是软件产品的目标代码行数,单位是千代码行,a,b是常数,取值如表9-3所示。9.2.3 COCOMO模型模型n n2.2.2.2.中级中级中级中级COCOMOCOCOMOCOCOMOCOCOMO模型模型模型模型 表9-4给出了影响工作量的因素及其取值,每个调节因子Fi的取值分为很低、低、正常、高、极高6级,正常情况下Fi=1;当15个Fi选定后,可得:9.2.3 COCOMO模型模型n
18、 n3.3.3.3.详细详细详细详细COCOMOCOCOMOCOCOMOCOCOMO模型模型模型模型 详细COCOMO模型的估算公式与中级COCOMO模型相同,并按分层、分阶段的形势给出其工作量影响因素分级表。针对每一个影响因素,按模块层、子系统层、系统层,有3张工作量因素分级表,供不同层次的估算使用。每一张表中又按开发各个不同阶段给出。9.3 软件项目的组织与计划软件项目的组织与计划n n9.3.1 软件项目管理的特点软件项目管理的特点 n n9.3.2 软件开发进度计划软件开发进度计划 n n9.3.3 人员配备与组织人员配备与组织 9.3.1 软件项目管理的特点软件项目管理的特点 n n
19、软件项目管理是为了使软件项目能够按照预定的成本、进软件项目管理是为了使软件项目能够按照预定的成本、进软件项目管理是为了使软件项目能够按照预定的成本、进软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(度、质量顺利完成,而对人员(度、质量顺利完成,而对人员(度、质量顺利完成,而对人员(PeoplePeoplePeoplePeople)、产品)、产品)、产品)、产品(ProductProductProductProduct)、过程()、过程()、过程()、过程(ProcessProcessProcessProcess)和项目)和项目)和项目)和项目(Project)(P
20、roject)(Project)(Project)进行分进行分进行分进行分析和管理的活动。析和管理的活动。析和管理的活动。析和管理的活动。n n软件项目管理的根本目的是为了让软件项目尤其是大型项软件项目管理的根本目的是为了让软件项目尤其是大型项软件项目管理的根本目的是为了让软件项目尤其是大型项软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维目的整个软件生命周期(从分析、设计、编码到测试、维目的整个软件生命周期(从分析、设计、编码到测试、维目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期,护全过
21、程)都能在管理者的控制之下,以预定成本按期,护全过程)都能在管理者的控制之下,以预定成本按期,护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。按质的完成软件交付用户使用。按质的完成软件交付用户使用。按质的完成软件交付用户使用。n n研究软件项目管理为了从已有的成功或失败的案例中总结研究软件项目管理为了从已有的成功或失败的案例中总结研究软件项目管理为了从已有的成功或失败的案例中总结研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的出能够指导今后开发的通用原则,方法,同时避免前人的出能够指导今后开发的通用原则,方法,同
22、时避免前人的出能够指导今后开发的通用原则,方法,同时避免前人的失误。失误。失误。失误。9.3.1 软件项目管理的特点软件项目管理的特点 n n1 1 1 1软件项目的特点软件项目的特点软件项目的特点软件项目的特点n n2 2 2 2软件项目管理的困难软件项目管理的困难软件项目管理的困难软件项目管理的困难n n3 3 3 3造成软件失误的原因造成软件失误的原因造成软件失误的原因造成软件失误的原因n n4 4 4 4软件管理的主要职能软件管理的主要职能软件管理的主要职能软件管理的主要职能9.3.2 软件开发进度计划软件开发进度计划 n n1 1 1 1基本原则基本原则基本原则基本原则软件开发进度计
23、划是根据系统开发目标、时间要求和技术力量情况来制定的,主要确定各项具体开发工作的所需时间、开始与完成日期以及相互之间的前后衔接关系。(1)划分必须把项目划分成若干个可以管理的活动和任务,这些活动和任务由所采用的软件过程模型定义。为了完成项目划分,对产品和过程都需要进行分解。9.3.2 软件开发进度计划软件开发进度计划(2)相互依赖性必须确定划分出的各个活动或任务之间的相互依赖性。某些任务必须顺序完成,而其他的任务可以并发进行。有些活动只有在其他活动产生的工作产品完成之后才能够开始,而其他的活动可以独立地进行。(3)时间分配必须给每个任务都分配一定数量的工作单位(例如,若干人天的工作量)。此外,
24、必须为每个任务都指定开始日期和结束日期,在确定这些日期时既要考虑各个任务之间的相互依赖性,又要考虑开发人员每日工作时间的长短(全职还是兼职)。9.3.2 软件开发进度计划软件开发进度计划(4)工作量确认在制定进度计划时,项目管理者必须确保在任意时段中分配给任务的人员数量,不超过项目组中的人员数量。(5)定义责任每个任务都应该指定具体的负责人。(6)定义结果每个任务都应该有一个定义好的输出结果。对于软件项目而言,输出通常是一个工作产品或工作产品的一部分。通常把多个工作产品组合成一个“可交付产品”。(7)定义里程碑 9.3.2 软件开发进度计划软件开发进度计划 n 2 2计划评审技术计划评审技术
25、PERT(Program Evaluation and Review Technique)即计划评审技术,最早是由美国海军在计划和控制北极星导弹的研制时发展起来的。(1)建立PERT图图中的每一圆圈,都代表一项开发活动。箭头代表活动发生的先后顺序,箭头上的数字表示完成这一活动所需的时间。9.3.2 软件开发进度计划软件开发进度计划(2)找出关键路径(Critical Path)从起点到终点,可能有多条路径。其中耗时最长的路径就是关键路径,它决定了完成整个工程所需要的时间。(3)标出最迟开始时间箭头下面括号中的数字表示该任务的机动时间,图中的圆表示与某个子任务开始或结束事件的时间点。9.3.2
26、软件开发进度计划软件开发进度计划 n 3 3GanttGantt图图Gantt图(甘特图)是在1917年由亨利甘特开发的,其内在思想简单,基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况。9.3.3 人员配备与组织人员配备与组织 横坐标表示距开发起点的时间,纵坐标代表在不同时间点需要的人力。td位于曲线的峰点。在td之前,开发所需的人力逐渐上升,到td达到峰值;td以后,单位时间所需的人力渐趋下降。n1 1Rayleigh-NordenRayleigh-Norden曲线曲线9.3.3 人员配备与组织人员配备与组织(1)人员-时间权衡定律(Peo
27、ple-Time Trade-Off Law)n 2 2两条重要的定律两条重要的定律Putnam在对Rayleigh曲线作了大量研究的基础上,提出了Putnam模型。这个模型指出,开发工作量与开发时间的4次方成反比。即 E=常数/(T或td)Putnam将这一结论称为“软件开发的权衡定律”。(2)Brooks定律 对这原则的一个合理解释是,当开发人员以算术级数增长时,人员之间的通信将以几何级数增长,从而可能导致“得不偿失”的结果。9.3.3 人员配备与组织人员配备与组织 软件开发单位怎样组织软件的开发工作,取决于许多因素。一般情况下,可采取以下的层次型组织结构,即:软件经理项目经理开发小组n
28、3 3人员组织人员组织 软件经理负责管理整个单位的开发工作。每一开发项目设一位项目经理,每一项目经理又管理若干开发小组。本节介绍两种不同的开发小组形式。9.3.3 人员配备与组织人员配备与组织 Weinberg认为,软件开发是一种合作的事业,最理想的形式是组成“无我小组(egoless team)”。这种小组提倡“无我程序设计”,人人把小组开发的程序看成“我们的”程序,而不是“我的程序。组内人人平等,一切问题均由集体决定,甚至组长也轮流担任,这种形式的优点是,便于集思广益,取长补短;但责任不清,而且每事都要讨沦,效率不高。(1)(1)民主开发小组民主开发小组 民主开发小组的人数,通常为57人。
29、9.3.3 人员配备与组织人员配备与组织 这是由Mills和Baker等人提出的一种方式,它的特点是强调“一元化”领导,每一组员的工作由主程序员分配,一切重大的问题由主程序员决定。(2)(2)主程序员小组主程序员小组 9.4 软件质量软件质量 n n9.4.1 软件质量特性软件质量特性 n n9.4.2 软件质量保证措施软件质量保证措施 9.4.1 软件质量特性软件质量特性 n n软软软软件件件件质质质质量量量量是是是是指指指指反反反反映映映映软软软软件件件件系系系系统统统统或或或或软软软软件件件件产产产产品品品品满满满满足足足足规规规规定定定定或或或或隐隐隐隐含含含含需需需需求求求求的能力的
30、特征和特性全体。软件质量的要点:的能力的特征和特性全体。软件质量的要点:的能力的特征和特性全体。软件质量的要点:的能力的特征和特性全体。软件质量的要点:(1)软件功能必须满足用户规定的需求;(2)软件应遵守规定标准所定义的一系列开发准则;(3)软件应满足某些隐含的需求。例如,可理解性、可维护性等。评价软件质量的关键要定出评定质量的指标和评定优劣的标准。如我国国家标准GB/T 12504-1990计算机软件质量保证计划规范、GB/T 17544-1998信息技术软件包质量要求和测试、国际标准ISO9000等 9.4.1 软件质量特性软件质量特性 n n软件质量特性由下面六个方面来衡量。软件质量特
31、性由下面六个方面来衡量。软件质量特性由下面六个方面来衡量。软件质量特性由下面六个方面来衡量。(1)功能性(2)可靠性(3)易使用性(4)效率(5)可维护性(6)可移植性9.4.2 软件质量保证措施软件质量保证措施 n n1 1应用好的技术方法应用好的技术方法n n2 2测试软件测试软件n n3 3进行正式的技术评审进行正式的技术评审n n4 4标准的实施标准的实施n n5 5控制变动控制变动n n6 6度量度量n n7 7保存记录和报告保存记录和报告9.5 ISO 9000软件质量体系软件质量体系n9.5.1 ISO9000国际标准n9.5.2 企业软件质量体系的建立和实施9.5.1 ISO
32、9000国际标准国际标准nISO 9000不是指一个标准,而是一族标准的统称。根据ISO 9000-1:1994的定义:“ISO 9000族”是由ISO/TC176制定的所有国际标准。”n具体地讲ISO 9000族标准就是在四个方面规范质量管理:(1)机构:标准明确规定了为保证产品质量而必须建立的管理机构及其职责权限。(2)程序:企业组织产品生产必须制定规章制度、技术标准、质量手册、质量体系操作检查程序,并使之文件化、档案化。9.5.1 ISO 9000国际标准国际标准n通俗地讲就是把企业的管理标准化,而标准化管理生产的产品及其服务,其质量是可以信赖的。(3)过程:质量控制是对生产的全部过程加
33、以控制,是面的控制,不是点的控制。从根据市场调研确定产品、设计产品、采购原料,到生产检验、包装、储运,其全过程按程序要求控制质量。并要求过程具有标识性、监督性、可追溯性。(4)总结:不断地总结、评价质量体系,不断地改进质量体系,使质量管理呈螺旋式上升。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施软件企业建立和实施质量体系的主要过程如下。(1)准备阶段 召开员工大会,阐明企业建立和实施质量体系的重要性和必要性;成立质量体系认证申办小组;组织企业所有与质量有关的人员参加培训班,学习IS0 9000族标准中的部分标准和有关国家标准;必要时可聘请咨询机构为企业建立和实施质量体系
34、提供咨询。(2)质量体系策划 准备工作完成之后,接下来便可进行质量体系策划工作,包括调查企业组织现状、制订实施工作计划、选择质量保证模式、确定质量方针、调整和完善企业组织、制订质量体系要素的实施办法。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施(3)编写质量体系文件质量体系文件是描述质量体系的一整套文件,是质量体系的具体体现和质量体系运行的法规,也是质量体系审核的依据。用图形描述典型的质量体系文件层次,如图9-6所示,上层由下层提供支持。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施 (4)培训内部审核员内部审核员除了执行内部质量体系审核外,还承担
35、企业管理层与各职能部门、企业与供应商、企业与顾客、企业与审核机构的联系工作。(5)质量体系试运行 主要工作包括:企业最高管理者审查并签发质量方针;企业最高管理者批准并签发质量手册;管理者代表签发程序文件;组织培训,使每个员工熟悉与本岗位有关的程序文件;进行岗位质量责任培训与考核;各部门的各项与质量体系要素有关的活动纳入体系运行;运行中发现质量体系文件存在问题和不足,可按程序的规定进行修改。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施 (6)内部质量体系审核 内部质量体系审核由管理层委派的审核小组进行,审核组成员应是内部审核员,必要时可以聘请外部审核员。(7)管理评审 管
36、理评审组由企业的最高管理者主持,成员是管理层人员及与质量有关的职能部门的负责人,根据质量方针和目标对质量体系的现状和适应性进行正式评价。一般定期为一年一次。(8)质量体系认证前的准备 准备工作包括:选择认证机构;对质量体系文件的全面清理;接受审核的教育培训及其他准备工作(如指定负责陪同审核组成员的工作人员等)。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施 (9)质量体系认证过程所谓质量体系认证,就是由认证机构对企业进行的外部质量体系审核。认证过程如图9-7所示。9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施9.5.2 企业软件质量体系的建立和实企业
37、软件质量体系的建立和实施施9.5.2 企业软件质量体系的建立和实企业软件质量体系的建立和实施施(10)质量体系的进一步改进与完善 取得了质量体系认证证书,仅说明该企业的质量体系已基本符合ISO 9000质量保证模式标准的要求。如果企业的最高管理者尚不满足已建立的质量体系,则还可以在原来质量体系的基础上增加GB/T19004-1(即ISO9004-1)和其他质量管理指南中的使用内容,建立一个更加全面的质量管理体系。9.6 软件配置管理软件配置管理n9.6.1 软件配置项n9.6.2 软件配置管理9.6.1 软件配置项软件配置项n软件配置项(Software Configuration Items
38、,SCI)是软件配置管理的对象生存周期内产生的所有信息项。按IS0 9000-3的说明,配置项有:(1)与合同、源代码、过程、计划和产品有关的文档及数据;(2)目标代码和可执行代码;(3)相关产品,包括软件工具、库内的可复用件、外购软件等。n 随着软件过程的进展,软件配置项也迅速增长,并且变化接踵而至,主要变化表现在:(1)新的商业或市场环境,引起产品需求或业务规则的变化;(2)新的用户要求;(3)企业结构变化,导致项目优先级或软件工程队伍结构的变化:(4)预算或进度的限制。9.6.2 软件配置管理软件配置管理n 软件配置管理是一组用于在计算机软件的整个生存周期内管理变化的活动。按ISO 90
39、00-3的说明,软件配置管理是一个管理学科,对配置项的开发和支持生存周期给予技术上和管理上的指导。配置管理的应用取决于项目的规模、复杂程度和风险大小。n 软件配置管理不同于软件维护,最主要的一点是软件配置管理是在软件项目开始时启动、仅当软件终止运行后才结束的一组跟踪和控制变化的活动。实施软件配置管理主要有以下任务:9.6.2 软件配置管理软件配置管理1 1制订配置管理计划制订配置管理计划 按IS09000-3的说明,配置管理计划的内容如下:(1)负责配置管理的组织以及每一管理组织的职责;(2)需要进行的配置管理活动;(3)所使用的配置管理工具、技术和方法;(4)将软件配置项置于配置控制下的时机
40、。2 2确定配置标识确定配置标识 对软件配置项进行控制的第一步便是命名,制订适当的命名规则是标识配置的重要任务。对命名的要求为:惟一性,避免重名,造成混乱;可追溯性,使命名能反映配置项间的关系。9.6.2 软件配置管理软件配置管理3 3进行配置控制,实施变更管理进行配置控制,实施变更管理其主要任务如下:(1)分析变更,依据成本/效益和涉及到的技术等确定是否实施变更;(2)记录并追踪变更信息;(3)确保变更在受控条件下进行。9.6.2 软件配置管理软件配置管理4 4配置审计配置审计 配置审计的目的是要保证整个软件生存周期中各项产品在技术上和管理上的完整性。同时,还要确保所有文档内容的变动不超出当
41、初确定的要求范围。配置审计询问并回答如下问题:(1)是否完成了工程变更顺序中规定的变更?是否加入了任意附加的修改?(2)是否经过正式的技术复审评估其技术正确性?(3)是否遵循了软件工程标准?(4)变更在配置项中是否被强调?是否说明了变更日期和变更者?配置对象的属性是 否反映了变更?9.6.2 软件配置管理软件配置管理(5)是否遵循了标记变更、记录变更、报告变更的软件配置管理过程?(6)所有相关的软件配置项是否都已正确地做了更新?5 5记录并报告配置状态记录并报告配置状态配置状态报告对每一项变更记录以下内容:(1)由谁完成;(2)发生了什么:(3)为什么发生;(4)什么时候发生的;(5)有什么影
42、响。9.6.2 软件配置管理软件配置管理 6 6版本控制版本控制 版本控制用来管理在软件工程过程中所创建的配置项的不同版本,是对系统不同版本进行标识和跟踪的过程。版本标识的目的是便于对版本加以区分,便于检索和跟踪,并显示各版本之间的关系。版本标识的方法有如下几种:(1)号码版本标识。如V1.0、V1.1、VI.2。(2)以符号命名版本标识。如V1/Windows NT/DB Server(3)属性版本标识。如Windows 2000 9.6.2 软件配置管理软件配置管理 7 7发行管理和交付发行管理和交付 系统发行是分配给客户一个系统版本。每次发行都应有新的功能或是针对不同的硬件平台,且通常软
43、件系统的版本数要比发行次数多。一次发行除提供一个可执行程序或一套程序外,还包括:(1)配置文件,规定发行所做的特定配置;(2)数据文件,系统运行所需的数据;(3)安装程序,说明系统如何安装到目标机器上;(4)电子文档或书面文档,描述系统。9.7 CMM软件能力成熟度模型软件能力成熟度模型n9.7.1 CMM的基本概念 n9.7.2 软件能力成熟度等级 n9.7.3 关键过程区域n9.7.4 CMM评估的实施9.7.1 CMM的基本概念的基本概念 n 1 1软件过程软件过程 软件过程包括一个软件企业(或软件项目开发小组,下同)在计划、开发和维护一个软件时所执行的一系列活动,包括工程技术活动和软件
44、管理活动。通常用软件过程能力来描述软件企业遵循其软件过程能够实现的“预期”结果;用软件过程性能表示软件企业遵循其软件过程能够得到的“实际”结果。软件过程成熟度用于表达一个特定的软件过程被明确和有效地定义、管理、测量和控制的程度。9.7.1 CMM的基本概念的基本概念 n 2 2关键过程域关键过程域 所谓过程域,是指互相关联的若干软件实践活动和有关基础设施的一个集合。对实施关键过程域起关键作用的措施、活动、规程以及相关基础设施,可称为关键实践(Key Practice)。关键过程域的目标,就是通过它所包含的关键实践的实施来达到的。n 3 3CMMCMM模型模型 CMM模型是用来确定一个软件过程的
45、成熟程度以及指明如何提高过程成熟度的参考模型。9.7.2 软件能力成熟度等级软件能力成熟度等级 在CMM中把软件过程分成五个阶段,并把这些阶段排序,形成五个逐层提高的等级,如图9-10所示。9.7.2 软件能力成熟度等级软件能力成熟度等级 n1 1初始级(混沌的软件过程)初始级(混沌的软件过程)软件过程的特征是无序的,有时甚至是混乱的。几乎没有什么过程是经过定义的,项目能否成功完全取决于个人能力。n2 2可重复级(经过训练的软件过程)可重复级(经过训练的软件过程)建立了基本的项目管理过程,以追踪成本、进度和功能性。必要的过程规范已经建立起来了,使得可以重复以前类似项目所取得的成功。9.7.2
46、软件能力成熟度等级软件能力成熟度等级 n3 3已定义级(标准、一致的软件过程)已定义级(标准、一致的软件过程)用于管理和工程活动的软件过程已经文档化和标准化,并且已经集成到整个组织的软件过程中。所有项目都使用文档化的、组织批准的过程来开发和维护软件。n4 4定量管理级(可预测的软件过程)定量管理级(可预测的软件过程)已收集了软件过程和产品质量的详细度量数据,使用这些详细的度量数据,能够定量地理解和控制软件过程和产品。9.7.2 软件能力成熟度等级软件能力成熟度等级 n5 5优化级(能持续改善的软件过程)优化级(能持续改善的软件过程)通过定量的反馈能够实现持续的过程改进,这些反馈是从过程及对新想
47、法和技术的测试中获得的。这一级包含了第4级的所有特征。处于第5级的组织的目标是持续地改进软件过程。n经验表明,提高一个完整的成熟度等级通常需要花经验表明,提高一个完整的成熟度等级通常需要花1818个个月到月到3 3年的时间,但是从第年的时间,但是从第1 1级上升到第级上升到第2 2级有时要花级有时要花3 3年甚年甚至至5 5年时间。年时间。9.7.3 关键过程区域关键过程区域除“初始级”外,每个成熟度等级均包含几个关键过程域。为了达到一个成熟度等级,必须实现该等级上的全部关键过程域9.7.3 关键过程区域关键过程区域n(1)需求管理:在客户和软件项目之间建立对客户需求的共同理解。在取得关于客户
48、需求的共识后,与客户签订协议,作为软件项目策划和管理的基础。n(2)软件项目策划:制订软件工程和软件项目管理的合理的计划。这些计划是管理软件项目的必要基础。n(3)软件项目跟踪和监督:建立适当的对实际进展的跟踪和监督制度,使管理者在软件项目实施情况明显偏离软件计划时能及时采取有效措施。n(4)软件子合同管理:选择合格的软件分承包商,并有效地管理他们。9.7.3 关键过程区域关键过程区域n(5)软件质量保证:提供对软件项目所采用的过程和所构造的产品的某种可视性和透明性,使管理者能较容易地发现软件过程和产品的质量问题,以便采取及时有效的措施。n(6)软件配置管理:在整个软件生存周期中建立和维护软件
49、产品的完整性和一致性。n(7)组织过程焦点:规定组织在提高整体过程能力、改进软件过程活动方面的责任。n(8)组织过程定义:总结和保持一组便于使用的软件过程的成功的实践经验,以便使项目的过程实施能得到改进,为组织获得积累性的长期效益奠定基础。n(9)培训大纲:培训个人的技能和知识,以提高其执行任务的质量和效率。9.7.3 关键过程区域关键过程区域n(10)集成软件管理:将软件工程活动和软件管理活动集成为一个协调的、已定义的软件过程。n(11)组间协调:制订组间协作的方法。组间协调是集成软件管理中涉及多学科的一个方面,它将延伸到软件工程学科之外。n(12)软件工程产品:一致地执行妥善定义的软件工程
50、过程,实现全面彻底的软件工程化。n(13)同行专家评审:尽早且高效地消除软件工作产品中的缺陷。n(14)定量过程管理:为已定义的过程建立一套详细的性能度量机制。9.7.3 关键过程区域关键过程区域n(15)软件质量管理:为产品和过程设立质量目标,度量软件过程和产品。n(16)技术变更管理:识别能带来好处的新技术(即工具、方法和过程),并以有序的方式引进这些新技术。n(17)过程变更管理:持续不断地改进组织中所采用的软件过程,以改进软件质量、提高生产率和缩短产品开发周期。n(18)缺陷预防:判断缺陷出现的原因,并防止其再度出现。9.7.4 CMM评估的实施评估的实施 CMM评估要遵循SEI的CA