1、 软件项目管理软件项目管理13.1 估算软件规模估算软件规模13.2 工作量估算工作量估算13.3 进度计划进度计划13.4 人员组织人员组织13.5 质量保证质量保证13.6 软件配置管理软件配置管理13.7 能力成熟度模型能力成熟度模型13.8 小结小结依据以往开发类似产品的经验和历史数据,估计实依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。现一个功能所需要的源程序行数。把实现每个功能所需要的源程序行数累加起来,就把实现每个功能所需要的源程序行数累加起来,就可得到实现整个软件所需要的源程序行数。可得到实现整个软件所需要的源程序行数。13.1 估算软件规模估算软件
2、规模 13.1.1 代码行技术代码行技术由多名有经验的软件工程师分别做出估计。由多名有经验的软件工程师分别做出估计。每个人都估计程序的最小规模每个人都估计程序的最小规模(a)、最大规模、最大规模(b)和和最可能的规模最可能的规模(m),分别算出这,分别算出这3种规模的平均值种规模的平均值,再用下式计算程序规模的估计值:再用下式计算程序规模的估计值:L=(13.1)单位是代码行数(单位是代码行数(LOC)或千行代码数(或千行代码数(KLOC)64bma 代码行技术的优点代码行技术的优点:代码是所有软件开发项目都有代码是所有软件开发项目都有的的“产品产品”,且容易计算行数。,且容易计算行数。代码行
3、技术的缺点是:代码行技术的缺点是:源程序仅是软件配置的一源程序仅是软件配置的一个成分。个成分。为了克服代码行技术的缺点,人们提出了功能点技为了克服代码行技术的缺点,人们提出了功能点技术。术。依据软件信息域特性和软件复杂性,用功能点依据软件信息域特性和软件复杂性,用功能点(FP)为单位度量软件规模。)为单位度量软件规模。1.信息域特性信息域特性功能点技术定义了信息域的功能点技术定义了信息域的5个特性个特性:输入项数输入项数(Inp)、输出项数、输出项数(Out)、查询数、查询数(Inq)、主文件数、主文件数(Maf)和外部接口数和外部接口数(Inf)。(1)输入项数:输入项数:用户向软件输入的项
4、数,这些用户向软件输入的项数,这些输入给软件提供面向应用的数据。输入给软件提供面向应用的数据。13.1.2 功能点技术功能点技术(2)输出项数:输出项数:软件向用户输出的项数,它们软件向用户输出的项数,它们向用户提供面向应用的信息,例如,报表和出错信向用户提供面向应用的信息,例如,报表和出错信息等。报表内的数据项不单独计数。息等。报表内的数据项不单独计数。(3)查询数:查询数:查询即是一次联机查询即是一次联机输入输入,它导致,它导致软件产生某种即时响应软件产生某种即时响应(输出输出)。(4)主文件数:主文件数:逻辑主文件(即数据的一个逻逻辑主文件(即数据的一个逻辑组合,它可能是大型数据库的一部
5、分或是一个独辑组合,它可能是大型数据库的一部分或是一个独立的文件)的数目。立的文件)的数目。(5)外部接口数:外部接口数:机器可读的全部接口(例如,机器可读的全部接口(例如,磁盘或磁带上的数据文件)的数量,用这些接口把磁盘或磁带上的数据文件)的数量,用这些接口把信息传送给另一个系统。信息传送给另一个系统。2.估算功能点的步骤估算功能点的步骤用下述用下述3个步骤,可估算出一个软件的功能点数个步骤,可估算出一个软件的功能点数(即软件规模)。(即软件规模)。FP=UFPTCF(1)计算未调整的功能点数计算未调整的功能点数UFP每个特性每个特性(即即Inp、Out、Inq、Maf和和Inf)都分类为都
6、分类为简单级、平均级或复杂级简单级、平均级或复杂级UFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf其中,其中,ai(1i5)是特性系数,其值由相应特性的复是特性系数,其值由相应特性的复杂级别决定,如表杂级别决定,如表13.1单击此处编辑母版标题样式单击此处编辑母版标题样式 单击此处编辑母版副标题样式单击此处编辑母版副标题样式(2)计算技术复杂性因子计算技术复杂性因子TCF14种技术因素种技术因素Fi(1i14)对软件规模的影响程度。对软件规模的影响程度。每个因素分配一个从每个因素分配一个从0(无影响)到(无影响)到5(有很大影响)(有很大影响)DI=值在值在070之间之间技术
7、复杂性因子技术复杂性因子TCF由下式计算:由下式计算:TCF=0.65+0.01DI(3)计算功能点数计算功能点数FPFP=UFPTCF功能点数与所用的编程语言无关。在判断信息域特功能点数与所用的编程语言无关。在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。大的主观因素。141iiF软件估算模型由经验导出的公式来预测软件开发工软件估算模型由经验导出的公式来预测软件开发工作量,工作量是软件规模(作量,工作量是软件规模(KLOC或或FP)的函数,)的函数,工作量的单位通常是人月(工作量的单位通常是人月(pm)。估算模型的经验数据,
8、是从有限个项目的样本集中估算模型的经验数据,是从有限个项目的样本集中总结出来的,因此,没有一个估算模型可以适用于总结出来的,因此,没有一个估算模型可以适用于所有类型的软件和开发环境。所有类型的软件和开发环境。13.2 工作量估算工作量估算这类模型的总体结构形式如下:这类模型的总体结构形式如下:E=A+B(ev)C其中,其中,A、B和和C是由经验数据导出的常数,是由经验数据导出的常数,E是以是以人月为单位的工作量,人月为单位的工作量,ev是估算变量(是估算变量(KLOC或或FP)。下面给出几个典型的静态单变量模型。)。下面给出几个典型的静态单变量模型。1.面向面向FP的估算模型的估算模型(1)A
9、lbrecht&Gaffney模型模型E=-13.39+0.0545FP(2)Maston,Barnett和和Mellichamp模型模型E=585.7+15.12FP13.2.1 静态单变量模型静态单变量模型2.面向面向KLOC的估算模型的估算模型(1)Walston_Felix模型模型E=5.2(KLOC)0.91(2)Bailey_Basili模型模型E=5.5+0.73(KLOC)1.16(3)Boehm简单模型简单模型E=3.2(KLOC)1.05(4)Doty模型(在模型(在KLOC9时适用)时适用)E=5.288(KLOC)1.047对于相同的对于相同的KLOC或或FP值,用不同
10、模型估算将得出值,用不同模型估算将得出不同的结果。不同的结果。主要原因是,这些模型多数都是仅根据若干应用领主要原因是,这些模型多数都是仅根据若干应用领域中有限个项目的经验数据推导出来的,适用范围域中有限个项目的经验数据推导出来的,适用范围有限。有限。因此,必须根据当前项目的特点选择适用的估算模因此,必须根据当前项目的特点选择适用的估算模型,并且根据需要适当地调整(例如,修改模型常型,并且根据需要适当地调整(例如,修改模型常数)估算模型。数)估算模型。动态多变量模型是根据从动态多变量模型是根据从4000多个当代软件项目中多个当代软件项目中收集的生产率数据推导出来的。收集的生产率数据推导出来的。工
11、作量是软件规模和开发时间这两个变量的函数。工作量是软件规模和开发时间这两个变量的函数。E=(LOCB0.333/P)3(1/t)4(13.2)E是以人月或人年为单位的工作量;是以人月或人年为单位的工作量;t1是以月或年为单位的项目持续时间;是以月或年为单位的项目持续时间;B是特殊技术因子,它随着规模和要求的增加而缓是特殊技术因子,它随着规模和要求的增加而缓慢增加慢增加:小的程序小的程序(KLOC=515),B=0.16,超过超过70 KLOC的程序,的程序,B=0.39;P是生产率参数是生产率参数(2000-30000)13.2.2 动态多变量模型动态多变量模型P生产率参数,反映了下述因素对工
12、作量的影响:生产率参数,反映了下述因素对工作量的影响:总体过程成熟度及管理水平;总体过程成熟度及管理水平;使用良好的软件工程实践的程度;使用良好的软件工程实践的程度;使用的程序设计语言的级别;使用的程序设计语言的级别;软件环境;软件环境;软件项目组的技术及经验;软件项目组的技术及经验;应用系统的复杂程度。应用系统的复杂程度。开发实时嵌入式软件时开发实时嵌入式软件时:P=2000;电信系统和系统;电信系统和系统软件时软件时:P=10000;商业应用系统;商业应用系统:P=28000。如果把如果把项目持续时间延长一些,则可降低完成项目项目持续时间延长一些,则可降低完成项目所需的工作量。所需的工作量
13、。构造性成本模型构造性成本模型:COCOMO(COnstructive COst Model)。1981年年Boehm在在软件工程经济学软件工程经济学中中首次提出了首次提出了COCOMO模型。模型。1997年年Boehm等人提等人提出的出的COCOMO2,修订了,修订了COCOMO。3个层次的软件开发工作量估算模型:个层次的软件开发工作量估算模型:(1)应用系统组成模型用于估算构建原型的工作量。应用系统组成模型用于估算构建原型的工作量。(2)早期设计模型适用于体系结构设计阶段。早期设计模型适用于体系结构设计阶段。(3)后体系结构模型适用于完成体系结构设计之后后体系结构模型适用于完成体系结构设计
14、之后的软件开发阶段。的软件开发阶段。13.2.3 COCOMO2模型模型后体系结构模型软件开发工作量函数:后体系结构模型软件开发工作量函数:E=(13.3)E是开发工作量(以人月为单位),是开发工作量(以人月为单位),a是模型系数,是模型系数,KLOC是估计的源代码行数(以千行为单位),是估计的源代码行数(以千行为单位),b是模型指数,是模型指数,fi(i=117)是成本因素,见下表。是成本因素,见下表。171iibfKLOCa(1)新增加了新增加了4个成本因素个成本因素:要求的可重用性、需要求的可重用性、需要的文档量、人员连续性(即人员稳定程度)和多要的文档量、人员连续性(即人员稳定程度)和
15、多地点开发。地点开发。(2)略去了原始模型中的略去了原始模型中的2个成本因素(计算机个成本因素(计算机切换时间和使用现代程序设计实践)。切换时间和使用现代程序设计实践)。(3)某些成本因素(分析员能力、平台经验、语某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响(即工作量系数最言和工具经验)对生产率的影响(即工作量系数最大值与最小值的比率)增加了,另一些成本因素大值与最小值的比率)增加了,另一些成本因素(程序员能力)的影响减小了。(程序员能力)的影响减小了。COCOMO2采用了更加精细得多的采用了更加精细得多的b分级模型,这分级模型,这个模型使用个模型使用5个分级因素个分级因
16、素Wi(1i5):划分成从甚低划分成从甚低(Wi=5)到特高到特高 (Wi=0)的的6个级别个级别b=(13.4)b的取值范围为的取值范围为1.011.26。5个分级因素如下所述:个分级因素如下所述:(1)项目先例性项目先例性:该项目的新奇程度。该项目的新奇程度。(2)开发灵活性开发灵活性:约束多少。约束多少。(3)风险排除度风险排除度:重大风险已被消除的比例。重大风险已被消除的比例。(4)项目组凝聚力项目组凝聚力:开发人员相互协作度。开发人员相互协作度。(5)过程成熟度过程成熟度:按照能力成熟度模型(见按照能力成熟度模型(见13.7节)节)5101.101.1iiW目的目的:保证项目按时完成
17、保证项目按时完成影响工期的因素影响工期的因素:工作量工作量,资源资源(人力人力,设备设备),项目特点项目特点方法方法:把项目分解成许多小任务以利于估计把项目分解成许多小任务以利于估计,执行执行,监控监控难点难点:根据项目根据项目,合理分配任务合理分配任务,优化使用资源优化使用资源,留有余地留有余地工具工具:经验模型经验模型,GANTT图图,工程网络工程网络项目管理者必须定义全部项目任务,识别出关键任务,项目管理者必须定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况。跟踪关键任务的进展状况。制定一个详细的进度表,监督项目进度并控制整个项目。制定一个详细的进度表,监督项目进度并控制整个项目
18、。13.3 进度计划进度计划工期工期=工作量工作量/人力人力正常情况下正常情况下,估算开发时间的模型方程:估算开发时间的模型方程:(1)Walston_Felix模型模型:T=2.5E0.35(2)原始的原始的COCOMO模型模型:T=2.5E0.38(3)COCOMO2模型模型:T=3.0E0.33+0.2(b-1.01)(4)Putnam模型模型:T=2.4E1/3E是开发工作量(以人月为单位),是开发工作量(以人月为单位),T是开发时间(以月为单位)。是开发时间(以月为单位)。13.3.1 估算开发时间估算开发时间为了缩短开发时间应该增加开发工作的人数。为了缩短开发时间应该增加开发工作的
19、人数。随着开发小组规模扩大,个人生产率将下降,随着开发小组规模扩大,个人生产率将下降,开发时间与开发工作的人数开发时间与开发工作的人数非简单反比非简单反比关系的两个关系的两个原因:原因:当小组变大时,通信开销增加了。当小组变大时,通信开销增加了。新成员要额外花费小组其他成员的时间。新成员要额外花费小组其他成员的时间。被称为被称为Brooks规律的下述现象:规律的下述现象:向一个已经延期向一个已经延期的项目增加人力,的项目增加人力,可能可能(只只)会使得它更加延期。会使得它更加延期。项目组规模与项目组总生产率的关系。项目组规模与项目组总生产率的关系。P名项目组员之间的通信路径数名项目组员之间的通
20、信路径数:MIN=P-1,MAX=P(P-1)/2通信路径数大约为通信路径数大约为P,其中,其中12。一个组员不与任何人通信时个人生产率为一个组员不与任何人通信时个人生产率为L,每条通信路径导致生产率减少每条通信路径导致生产率减少l,组员个人平均生产率为组员个人平均生产率为:Lr=L-l(P-1)r(13.5)其中,其中,r是对通信路径数的度量,是对通信路径数的度量,0r1规模为规模为P的项目组的总生产率为的项目组的总生产率为Ltot=P(L-l(P-1)r)(13.6)对于给定的对于给定的L,l和和r的值,总生产率的值,总生产率Ltot是是P的函数。的函数。存在一个最佳的项目组规模存在一个最
21、佳的项目组规模Popt,其总生产率最高。,其总生产率最高。Boehm根据经验指出,软件项目的开发时间最多可根据经验指出,软件项目的开发时间最多可以减少到正常开发时间的以减少到正常开发时间的75%。什么是项目网络图?项目网络图是项目的所有活动以及它们之间逻辑关系或排序的图形显示。项目网络图是活动排序的输出,它有以下作用:(1)能表示项目活动,并表示活动之间的依赖关系。(2)表明项目活动将以什么顺序继续。(3)在进行工期估计时,表明项目将需要多长时间。(4)当改变某项活动工期时,表明项目工期将如何变化。项目网络图有两种表示形式:(1)前导图法(PDM:Precedence Diagramming
22、Method)(2)箭线图法(ADM:Arrow Diagramming Method)甲项目中包含的活动清单、各个活动的历时以及活动间的依赖关系如下:各活动的依赖关系:各活动的依赖关系:A、B、C可以同时开始;D必须在A完成后开始;E、F必须在B完成后开始;G必须在C完成后开始;H必须在D、E完成后开始;I必须在G完成后开始;J必须在F、H、I完成后开 始。活动历时估计是根据任务分解中定义的项目活动和项目活动清单来估计完成这些项目所需要的工期。工期包括一项活动所消耗的实际工作时间 加上间歇时间。甘特图甘特图,通过日历形式列出项目活动及其相 应的开始和结束日期,它为反映项目进度信 息提供了一种
23、标准形式。下图是用下图是用PROJECTPROJECT制作的甲项目的最简单的一个甘特图制作的甲项目的最简单的一个甘特图早期的甘特图的最大缺点是通常不反映依赖关系,早期的甘特图的最大缺点是通常不反映依赖关系,但是如果在但是如果在ProjectProject上建立了依赖关系,这种依赖关系会自动上建立了依赖关系,这种依赖关系会自动显示在甘特图上。显示在甘特图上。使用项目管理软件可以创建更为复杂的甘特图使用项目管理软件可以创建更为复杂的甘特图 跟踪甘特图可以用来评价项目的进展跟踪甘特图可以用来评价项目的进展注意:任务用两种水平横线表示。下部表示计划历史(基准计划历史);上部表示实际历史。由于跟踪甘特图
24、是建立在实际开始与完成日期的基础之上,将计划与实际的项目进度信息进行比较,所以,项目经理可以用它来监控单个任务和整体项目的进展情况。甘特图与网络图的比较l 甘特图甘特图在进度报告中很有效在进度报告中很有效在作管理陈述时易于读懂和使用。在作管理陈述时易于读懂和使用。作为计划编制工具不是太强。作为计划编制工具不是太强。没有表示活动间的逻辑关系。没有表示活动间的逻辑关系。l 网络图网络图表明活动和事件间的相互关系。表明活动和事件间的相互关系。识别关键路径,项目历程和活动排序。识别关键路径,项目历程和活动排序。表明工作流程。表明工作流程。帮助编制计划和组织工作。帮助编制计划和组织工作。查找关键路径实例
25、:使用箭线图来确定关键路径。使用前导图来确定关键路径。单个软件开发人员无法在给定期限内完成软件项目,单个软件开发人员无法在给定期限内完成软件项目,因此,必须把多名软件开发人员合理地组织起来,因此,必须把多名软件开发人员合理地组织起来,使他们有效地分工协作共同完成开发工作。使他们有效地分工协作共同完成开发工作。3种典型的组织方式种典型的组织方式:民主制程序员组、主程序员民主制程序员组、主程序员组和现代程序员组。组和现代程序员组。13.4 人员组织人员组织民主制程序员组民主制程序员组:小组成员完全平等小组成员完全平等,通信信道共有通信信道共有n(n-1)/2条。条。程序设计小组的规模应该以程序设计
26、小组的规模应该以28名成员为宜。名成员为宜。优点优点:组员们对发现程序错误持积极的态度,这种组员们对发现程序错误持积极的态度,这种态度有助于更快速地发现错误,从而导致高质量的态度有助于更快速地发现错误,从而导致高质量的代码。代码。缺点:缺点:由于没有明确的权威指导开发工程的进行由于没有明确的权威指导开发工程的进行,组员间将缺乏必要的协调组员间将缺乏必要的协调,最终可能导致工程失败。最终可能导致工程失败。13.4.1 民主制程序员组民主制程序员组IBM公司公司20世纪世纪70年代初期开始采用年代初期开始采用,几点考虑:几点考虑:(1)软件开发人员多数比较缺乏经验;软件开发人员多数比较缺乏经验;(
27、2)程序设计过程中有许多事务性的工作,例如,程序设计过程中有许多事务性的工作,例如,大量信息的存储和更新;大量信息的存储和更新;(3)多渠道通信很费时间,将降低程序员的生产率。多渠道通信很费时间,将降低程序员的生产率。用经验多、技术好、能力强的程序员作为主程序员,用经验多、技术好、能力强的程序员作为主程序员,同时,组内分工,给主程序员提供充分支持,所有同时,组内分工,给主程序员提供充分支持,所有通信都通过一两个人进行。通信都通过一两个人进行。13.4.2 主程序员组主程序员组主程序员组的两个重要特性:主程序员组的两个重要特性:(1)专业化。成员完成受过专业训练的工作。专业化。成员完成受过专业训
28、练的工作。(2)层次性。主程序员全面负责。层次性。主程序员全面负责。组织形式如图组织形式如图13.5所示。所示。问题:问题:主程序员具备两方面的才能,这样的人才不多。主程序员具备两方面的才能,这样的人才不多。后备程序员更难找。后备程序员更难找。编程秘书也很难找到。编程秘书也很难找到。“主程序员主程序员”由两个人担任:由两个人担任:一个负责小组的技术;一个负责小组的技术;一个负责管理决策。一个负责管理决策。13.4.3 现代程序员组现代程序员组当软件项目规模较大时,应该把程序员分成若干个当软件项目规模较大时,应该把程序员分成若干个小组,采用图小组,采用图13.7所示的组织结构。所示的组织结构。该
29、图描绘的是技术管理组织结构,非技术管理组织该图描绘的是技术管理组织结构,非技术管理组织结构与此类似。结构与此类似。由图可以看出,产品开发作为一个整体是在项目经由图可以看出,产品开发作为一个整体是在项目经理的指导下进行的,程序员向他们的组长汇报工作,理的指导下进行的,程序员向他们的组长汇报工作,而组长则向项目经理汇报工作。而组长则向项目经理汇报工作。当产品规模更大时,可以适当增加中间管理层次。当产品规模更大时,可以适当增加中间管理层次。图图13.7 大型项目的技术管理组织结构大型项目的技术管理组织结构软件质量就是软件质量就是“软件与明确地和隐含地定义的需求软件与明确地和隐含地定义的需求相一致的程
30、度相一致的程度”:(1)软件需求是度量软件质量的基础。)软件需求是度量软件质量的基础。(2)有没有显式描述的隐含需求。)有没有显式描述的隐含需求。(3)不遵守一组指导软件开发的准则,会导致软)不遵守一组指导软件开发的准则,会导致软件质量不高。件质量不高。13.5 质量保证质量保证 13.5.1 软件质量软件质量图图13.9 软件质量因素软件质量因素软件质量保证(软件质量保证(software quality assurance,SQA)的措施主要有:的措施主要有:技术复审技术复审和测试。和测试。两类参加软件质量保证工作的人员:两类参加软件质量保证工作的人员:软件工程师通过采用先进的技术方法和度
31、量,进行软件工程师通过采用先进的技术方法和度量,进行正式的技术复审以及完成软件测试来保证软件质量。正式的技术复审以及完成软件测试来保证软件质量。SQA小组的职责,是辅助软件工程师以获得高质量小组的职责,是辅助软件工程师以获得高质量的软件产品。其从事的软件质量保证活动主要是:的软件产品。其从事的软件质量保证活动主要是:计划,监督,记录,分析和报告。计划,监督,记录,分析和报告。确保软件过程的质量来保证软件产品的质量。确保软件过程的质量来保证软件产品的质量。13.5.2 软件质量保证措施软件质量保证措施1.技术复审的必要性技术复审的必要性较早发现错误,防止被传播到软件过程的后续阶段。较早发现错误,
32、防止被传播到软件过程的后续阶段。大型软件产品中检测出的错误,大型软件产品中检测出的错误,60%70%属于规属于规格说明错误或设计错误,而正式技术复审在发现规格说明错误或设计错误,而正式技术复审在发现规格说明错误和设计错误方面的有效性高达格说明错误和设计错误方面的有效性高达75%。正式技术复审包括走查(正式技术复审包括走查(walkthrough)和审查和审查(inspection)。)。走查的步骤比审查少,而且没有审查正规。走查的步骤比审查少,而且没有审查正规。2.走查走查成员组成成员组成(走查规格说明的小组为例走查规格说明的小组为例):一名负责起草规格说明的人,一名负责起草规格说明的人,一名
33、负责该规格说明的管理员,一名负责该规格说明的管理员,一位客户代表,一位客户代表,一名下阶段开发组代表一名下阶段开发组代表一名一名SQA小组代表小组代表(组长组长)。走查组成员最好是经验丰富的高级技术人员。走查组成员最好是经验丰富的高级技术人员。必须把被走查的材料预先分发给走查组每位成员。必须把被走查的材料预先分发给走查组每位成员。走查组成员应该仔细研究材料并列出两张表:走查组成员应该仔细研究材料并列出两张表:一张表是不理解的术语,一张表是不理解的术语,一张是认为不正确的术语。一张是认为不正确的术语。走查组的任务仅仅是标记出错误而不是改正错误。走查组的任务仅仅是标记出错误而不是改正错误。走查主要
34、有下述两种方式:走查主要有下述两种方式:(1)参与者驱动法。参与者提出他们不理解的术参与者驱动法。参与者提出他们不理解的术语和认为不正确的术语。文档编写组的代表必须回语和认为不正确的术语。文档编写组的代表必须回答每个质疑,要么承认确实有错误,要么对质疑做答每个质疑,要么承认确实有错误,要么对质疑做出解释。出解释。(2)文档驱动法。文档编写者向走查组成员仔细文档驱动法。文档编写者向走查组成员仔细解释文档。走查组成员针对事先准备好的问题或解解释文档。走查组成员针对事先准备好的问题或解释过程中发现的问题提出质疑。释过程中发现的问题提出质疑。3.审查审查审查的范围比走查广,包括下述审查的范围比走查广,
35、包括下述5个基本步骤:个基本步骤:(1)综述。编写文档的一名成员向审查组综述该综述。编写文档的一名成员向审查组综述该文档。在综述会结束时把文档分发给每位与会者。文档。在综述会结束时把文档分发给每位与会者。(2)准备。评审员仔细阅读文档。列出在审查中准备。评审员仔细阅读文档。列出在审查中发现的错误的类型,频率,分级。发现的错误的类型,频率,分级。(3)审查。评审组仔细走查整个文档。审查组组审查。评审组仔细走查整个文档。审查组组长应该在一天之内写出一份关于审查的报告。长应该在一天之内写出一份关于审查的报告。(4)返工。文档的作者负责解决在审查报告中列返工。文档的作者负责解决在审查报告中列出的所有错
36、误及问题。出的所有错误及问题。(5)跟踪。组长必须确保所提出的每个问题都得跟踪。组长必须确保所提出的每个问题都得到了圆满的解决。到了圆满的解决。4.程序正确性证明程序正确性证明即使有程序正确性证明,软件测试也仍然是需要的:即使有程序正确性证明,软件测试也仍然是需要的:正确性证明过程本身也可能发生错误。正确性证明过程本身也可能发生错误。程序正确性证明,对于评价小程序有价值。程序正确性证明,对于评价小程序有价值。还不能实际用于大型程序的正确性证明。还不能实际用于大型程序的正确性证明。正确性证明的基本思想是证明程序能完成预定的功正确性证明的基本思想是证明程序能完成预定的功能。能。假设在程序的假设在程
37、序的P1,P2,,Pn等点上的断言分别是等点上的断言分别是a(1),a(2),a(n),其中,其中a(1)必须是关于程序输入必须是关于程序输入的断言,的断言,a(n)必须是关于程序输出的断言。必须是关于程序输出的断言。为了证明在点为了证明在点Pi和和Pi+1之间的程序语句是正确的,之间的程序语句是正确的,只须证明若断言只须证明若断言a(i)为真且执行这些语句之后将使为真且执行这些语句之后将使a(i+1)为真。为真。如果对所有数据输入断言为真时,能对程序内所有如果对所有数据输入断言为真时,能对程序内所有相邻点都能完成上述证明过程,而且程序总可以终相邻点都能完成上述证明过程,而且程序总可以终止的,
38、则证明了程序的正确性。止的,则证明了程序的正确性。变化是不可避免的变化是不可避免的,必须控制和管理变化。必须控制和管理变化。软件配置管理软件配置管理:用于管理变化的软件质量保证活动。用于管理变化的软件质量保证活动。软件配置管理在整个生命期内管理变化:软件配置管理在整个生命期内管理变化:标识标识变化;变化;控制变化;控制变化;确保适当地实现了变化;确保适当地实现了变化;向需要知道这类信息的人报告变化。向需要知道这类信息的人报告变化。软件配置管理的目标:使变化更正确更容易被实现。软件配置管理的目标:使变化更正确更容易被实现。保证每个软件配置项正确,保证每个软件配置项正确,保证一个软件的所有配置项是
39、完全一致的。保证一个软件的所有配置项是完全一致的。13.6 软件配置管理软件配置管理1.软件配置项软件配置项软件过程的输出信息可以分为软件过程的输出信息可以分为3类:类:计算机程序(源代码和可执行程序);计算机程序(源代码和可执行程序);计算机程序的文档(供技术人员或用户使用);计算机程序的文档(供技术人员或用户使用);数据(程序内包含的或在程序外的)。数据(程序内包含的或在程序外的)。我们把它们统称为软件配置,而这些项就是软件配我们把它们统称为软件配置,而这些项就是软件配置项(置项(ITEM=元素)。元素)。13.6.1 软件配置软件配置2.基线基线(Baseline,里程碑里程碑)IEEE
40、把基线定义为:把基线定义为:已经通过了正式复审的规格已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。并且只有通过正式的变化控制过程才能改变它。软件工具也应置于配置管理之下:编辑器、编译器软件工具也应置于配置管理之下:编辑器、编译器和其他和其他CASE工具。工具。不同版本的工具产生的结果不同。不同版本的工具产生的结果不同。软件配置管理主要有软件配置管理主要有5项任务:项任务:标识、版本控制、标识、版本控制、变化控制、配置审计和报告。变化控制、配置审计和报告。1.标识软件配置中的对象标识软件配
41、置中的对象命名每个配置项。两类对象:命名每个配置项。两类对象:基本和聚集对象。基本和聚集对象。基本对象是软件工程师在分析、设计、编码或测试基本对象是软件工程师在分析、设计、编码或测试过程中创建出来的过程中创建出来的“文本单元文本单元”。聚集对象是基本对象和其他聚集对象的集合。聚集对象是基本对象和其他聚集对象的集合。每个对象都有一组能惟一地标识它的特征:每个对象都有一组能惟一地标识它的特征:名字、名字、描述、版本。描述、版本。13.6.2 软件配置管理过程软件配置管理过程2.版本控制版本控制版本控制管理软件配置对象的不同版本。版本控制管理软件配置对象的不同版本。用户能够通过选择版本来指定软件的配
42、置。用户能够通过选择版本来指定软件的配置。属性和软件的每个版本相关联。属性和软件的每个版本相关联。描述一组所期望的属性来指定和构造所需要的配置。描述一组所期望的属性来指定和构造所需要的配置。“属性属性”,既可以是配置对象的版本号,也可以复,既可以是配置对象的版本号,也可以复杂到是一个布尔变量串。杂到是一个布尔变量串。3.变化控制变化控制变化控制过程在维护一章讲过。变化控制过程在维护一章讲过。批准的变化生成一个批准的变化生成一个“工程变化命令工程变化命令”描述将要描述将要实现的变化。实现的变化。把要修改的对象从项目数据库中把要修改的对象从项目数据库中“提取(提取(check out)”出来,进行
43、修改。出来,进行修改。把修改后的对象把修改后的对象“提交(提交(check in)”进数据库,进数据库,并创建该软件的下一个版本。并创建该软件的下一个版本。变化控制的两个主要功能变化控制的两个主要功能:1)访问控制决定软件工程师有权访问和修改一个特访问控制决定软件工程师有权访问和修改一个特定的配置对象定的配置对象2)同步控制有助于保证由两名不同的软件工程师完同步控制有助于保证由两名不同的软件工程师完成的并行修改不会相互覆盖。成的并行修改不会相互覆盖。4.配置审计配置审计两方面采取措施确保适当地实现了所需要的变化:两方面采取措施确保适当地实现了所需要的变化:正式的技术复审;正式的技术复审;软件配
44、置审计。软件配置审计。正式的技术复审(见正式的技术复审(见13.5.2节)关注被修改后的配节)关注被修改后的配置对象的技术正确性。置对象的技术正确性。软件配置审计通过评估配置对象的那些通常不在复软件配置审计通过评估配置对象的那些通常不在复审过程中考虑的特征(例如,修改时是否遵循了软审过程中考虑的特征(例如,修改时是否遵循了软件工程标准,是否在该配置项中显著地标明了所做件工程标准,是否在该配置项中显著地标明了所做的修改,是否注明了修改日期和修改者,是否适当的修改,是否注明了修改日期和修改者,是否适当地更新了所有相关的软件配置项,地更新了所有相关的软件配置项,是否遵循了标注是否遵循了标注变化、记录
45、变化和报告变化的规程变化、记录变化和报告变化的规程),而成为对正),而成为对正式技术复审的补充。式技术复审的补充。5.状态报告状态报告配置状态报告回答下述问题:配置状态报告回答下述问题:发生了什么事?发生了什么事?谁做的这件事?谁做的这件事?这件事是什么时候发生的?这件事是什么时候发生的?它将影响哪些其他事物?它将影响哪些其他事物?配置状态改善所有相关人员之间的通信,消除冲突,配置状态改善所有相关人员之间的通信,消除冲突,避免重复,提高效率。避免重复,提高效率。美国卡内基梅隆大学软件工程研究所在美国国防部美国卡内基梅隆大学软件工程研究所在美国国防部资助下于资助下于20世纪世纪80年代末建立的能
46、力成熟度模型年代末建立的能力成熟度模型(capability maturity model,CMM),是用于评价,是用于评价软件机构的软件过程能力成熟度的模型。最初,建软件机构的软件过程能力成熟度的模型。最初,建立此模型的目的主要是,为大型软件项目的招投标立此模型的目的主要是,为大型软件项目的招投标活动提供一种全面而客观的评审依据,发展到后来,活动提供一种全面而客观的评审依据,发展到后来,此模型又同时被应用于许多软件机构内部的过程改此模型又同时被应用于许多软件机构内部的过程改进活动中。进活动中。13.7 能力成熟度模型能力成熟度模型改进对软件过程的管理是消除软件危机的突破口,改进对软件过程的管
47、理是消除软件危机的突破口,比采用先进的技术和工具更重要。比采用先进的技术和工具更重要。能力成熟度模型的基本思想:能力成熟度模型的基本思想:通过建立成熟的优化的软件过程,提高软件的生产通过建立成熟的优化的软件过程,提高软件的生产率和质量。而技术的改进是软件过程改进的结果。率和质量。而技术的改进是软件过程改进的结果。CMM的作用:指导软件机构通过确定当前的过程的作用:指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用的问题,进成熟度并识别出对过程改进起关键作用的问题,进而稳步而有效地改进其软件过程,提高成熟度,使而稳步而有效地改进其软件过程,提高成熟度,使其软件过程能力得到循序渐进的
48、提高。其软件过程能力得到循序渐进的提高。CMM把软件过程从无序到优化的进化过程分成把软件过程从无序到优化的进化过程分成5个个有序的阶段,用以测量软件机构的软件过程成熟度有序的阶段,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机和评价其软件过程能力,这些等级还能帮助软件机构把应做的改进工作排出优先次序。构把应做的改进工作排出优先次序。CMM对对5个成熟度级别特性的描述,说明了不同级个成熟度级别特性的描述,说明了不同级别之间软件过程的主要变化。别之间软件过程的主要变化。从从“1级级”到到“5级级”,反映出从混乱到成熟的软件,反映出从混乱到成熟的软件过程必须经历的过程改
49、进途径。过程必须经历的过程改进途径。CMM的每个成熟度级别中都包含一组过程改进的的每个成熟度级别中都包含一组过程改进的目标,满足这些目标后一个机构的软件过程就从当目标,满足这些目标后一个机构的软件过程就从当前级别进化到下一个成熟度级别。前级别进化到下一个成熟度级别。CMM不提供做这些改进的具体措施。不提供做这些改进的具体措施。软件工程71过程变更管理过程变更管理 PCM技术变更管理技术变更管理 TCM缺陷预防缺陷预防 DP软件配置管理软件配置管理 SCM软件质量保证软件质量保证 SQA软件子合同管理软件子合同管理 SSM软件项目追踪与监督软件项目追踪与监督 SPTO软件项目策划软件项目策划 S
50、PP需求管理需求管理 RM软件产品工程软件产品工程 SPE集成软件管理集成软件管理 ISM培训大纲培训大纲 TP组织过程定义组织过程定义 OPD组织过程焦点组织过程焦点 OPF同行评审同行评审 PR组间协调组间协调 IC软件质量管理软件质量管理 SQM定量定量 过程管理过程管理 QPM规范化过程规范化过程标准化过程标准化过程可预测过程可预测过程持续改进过程持续改进过程个别过程个别过程 2 级级(可重复级)(可重复级)3 级级(已定义级)(已定义级)4 级级(已管理级)(已管理级)5 级级(优化级)(优化级)1 级(初始级)级(初始级)单击此处编辑母版标题样式单击此处编辑母版标题样式 单击此处编
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。