第13章软件项目管理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第13章软件项目管理13.1估算软件规模13.2工作量估算13.3进度计划13.4人员组织13.5质量保证13.6软件配置管理13.7能力成熟度模型13.8小结依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。把实现每个功能所需要的源程序行数累加起来,就可得到实现整个软件所需要的源程序行数。13.1估算软件规模13.1.1代码行技术由多名有经验的软件工程师分别做出估计。每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出这3种规模的平均值,再用下式计算程序规模的估计值:L=(13.1)单位是代码行数(LOC)或千行代码数(KLOC)64bma代码行技术的优点:代码是所有软件开发项目都有的“产品”,且容易计算行数。代码行技术的缺点是:源程序仅是软件配置的一个成分。为了克服代码行技术的缺点,人们提出了功能点技术。依据软件信息域特性和软件复杂性,用功能点(FP)为单位度量软件规模。1.信息域特性功能点技术定义了信息域的5个特性:输入项数(Inp)、输出项数(Out)、查询数(Inq)、主文件数(Maf)和外部接口数(Inf)。(1)输入项数:用户向软件输入的项数,这些输入给软件提供面向应用的数据。13.1.2功能点技术(2)输出项数:软件向用户输出的项数,它们向用户提供面向应用的信息,例如,报表和出错信息等。报表内的数据项不单独计数。(3)查询数:查询即是一次联机输入,它导致软件产生某种即时响应(输出)。(4)主文件数:逻辑主文件(即数据的一个逻辑组合,它可能是大型数据库的一部分或是一个独立的文件)的数目。(5)外部接口数:机器可读的全部接口(例如,磁盘或磁带上的数据文件)的数量,用这些接口把信息传送给另一个系统。2.估算功能点的步骤用下述3个步骤,可估算出一个软件的功能点数(即软件规模)。FP=UFP×TCF(1)计算未调整的功能点数UFP每个特性(即Inp、Out、Inq、Maf和Inf)都分类为简单级、平均级或复杂级UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1≤i≤5)是特性系数,其值由相应特性的复杂级别决定,如表13.1单击此处编辑母版标题样式•单击此处编辑母版副标题样式(2)计算技术复杂性因子TCF14种技术因素Fi(1≤i≤14)对软件规模的影响程度。每个因素分配一个从0(无影响)到5(有很大影响)DI=值在0~70之间技术复杂性因子TCF由下式计算:TCF=0.65+0.01×DI(3)计算功能点数FPFP=UFP×TCF功能点数与所用的编程语言无关。在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。141iiF软件估算模型由经验导出的公式来预测软件开发工作量,工作量是软件规模(KLOC或FP)的函数,工作量的单位通常是人月(pm)。估算模型的经验数据,是从有限个项目的样本集中总结出来的,因此,没有一个估算模型可以适用于所有类型的软件和开发环境。13.2工作量估算这类模型的总体结构形式如下:E=A+B×(ev)C其中,A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,ev是估算变量(KLOC或FP)。下面给出几个典型的静态单变量模型。1.面向FP的估算模型(1)Albrecht&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值,用不同模型估算将得出不同的结果。主要原因是,这些模型多数都是仅根据若干应用领域中有限个项目的经验数据推导出来的,适用范围有限。因此,必须根据当前项目的特点选择适用的估算模型,并且根据需要适当地调整(例如,修改模型常数)估算模型。动态多变量模型是根据从4000多个当代软件项目中收集的生产率数据推导出来的。工作量是软件规模和开发时间这两个变量的函数。E=(LOC×B0.333/P)3×(1/t)4(13.2)E是以人月或人年为单位的工作量;t1是以月或年为单位的项目持续时间;B是特殊技术因子,它随着规模和要求的增加而缓慢增加:小的程序(KLOC=5~15),B=0.16,超过70KLOC的程序,B=0.39;P是生产率参数(2000-30000)13.2.2动态多变量模型P生产率参数,反映了下述因素对工作量的影响:总体过程成熟度及管理水平;使用良好的软件工程实践的程度;使用的程序设计语言的级别;软件环境;软件项目组的技术及经验;应用系统的复杂程度。开发实时嵌入式软件时:P~=2000;电信系统和系统软件时:P=10000;商业应用系统:P=28000。如果把项目持续时间延长一些,则可降低完成项目所需的工作量。构造性成本模型:COCOMO(COnstructiveCOstModel)。1981年Boehm在《软件工程经济学》中首次提出了COCOMO模型。1997年Boehm等人提出的COCOMO2,修订了COCOMO。3个层次的软件开发工作量估算模型:(1)应用系统组成模型用于估算构建原型的工作量。(2)早期设计模型适用于体系结构设计阶段。(3)后体系结构模型适用于完成体系结构设计之后的软件开发阶段。13.2.3COCOMO2模型后体系结构模型软件开发工作量函数:E=(13.3)E是开发工作量(以人月为单位),a是模型系数,KLOC是估计的源代码行数(以千行为单位),b是模型指数,fi(i=1~17)是成本因素,见下表。171iibfKLOCa(1)新增加了4个成本因素:要求的可重用性、需要的文档量、人员连续性(即人员稳定程度)和多地点开发。(2)略去了原始模型中的2个成本因素(计算机切换时间和使用现代程序设计实践)。(3)某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响(即工作量系数最大值与最小值的比率)增加了,另一些成本因素(程序员能力)的影响减小了。COCOMO2采用了更加精细得多的b分级模型,这个模型使用5个分级因素Wi(1≤i≤5):划分成从甚低(Wi=5)到特高(Wi=0)的6个级别b=(13.4)b的取值范围为1.01~1.26。5个分级因素如下所述:(1)项目先例性:该项目的新奇程度。(2)开发灵活性:约束多少。(3)风险排除度:重大风险已被消除的比例。(4)项目组凝聚力:开发人员相互协作度。(5)过程成熟度:按照能力成熟度模型(见13.7节)5101.101.1iiW目的:保证项目按时完成影响工期的因素:工作量,资源(人力,设备),项目特点方法:把项目分解成许多小任务以利于估计,执行,监控难点:根据项目,合理分配任务,优化使用资源,留有余地工具:经验模型,GANTT图,工程网络项目管理者必须定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况。制定一个详细的进度表,监督项目进度并控制整个项目。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估算开发时间为了缩短开发时间应该增加开发工作的人数。随着开发小组规模扩大,个人生产率将下降,开发时间与开发工作的人数非简单反比关系的两个原因:当小组变大时,通信开销增加了。新成员要额外花费小组其他成员的时间。被称为Brooks规律的下述现象:向一个已经延期的项目增加人力,可能(只)会使得它更加延期。项目组规模与项目组总生产率的关系。P名项目组员之间的通信路径数:MIN=P-1,MAX=P(P-1)/2通信路径数大约为Pα,其中1α2。一个组员不与任何人通信时个人生产率为L,每条通信路径导致生产率减少l,组员个人平均生产率为:Lr=L-l(P-1)r(13.5)其中,r是对通信路径数的度量,0r≤1规模为P的项目组的总生产率为Ltot=P(L-l(P-1)r)(13.6)对于给定的L,l和r的值,总生产率Ltot是P的函数。存在一个最佳的项目组规模Popt,其总生产率最高。Boehm根据经验指出,软件项目的开发时间最多可以减少到正常开发时间的75%。制定进度计划任务(活动)之间的依赖关系类型项目网络图什么是项目网络图?项目网络图是项目的所有活动以及它们之间逻辑关系或排序的图形显示。项目网络图是活动排序的输出,它有以下作用:(1)能表示项目活动,并表示活动之间的依赖关系。(2)表明项目活动将以什么顺序继续。(3)在进行工期估计时,表明项目将需要多长时间。(4)当改变某项活动工期时,表明项目工期将如何变化。项目网络图有两种表示形式:(1)前导图法(PDM:PrecedenceDiagrammingMethod)(2)箭线图法(ADM:ArrowDiagrammingMethod)项目网络图甲项目例甲项目中包含的活动清单、各个活动的历时以及活动间的依赖关系如下:各活动的依赖关系:•A、B、C可以同时开始;•D必须在A完成后开始;•E、F必须在B完成后开始;•G必须在C完成后开始;•H必须在D、E完成后开始;•I必须在G完成后开始;•J必须在F、H、I完成后开始。甲项目的箭线图(ADM)或双代号网络图(AOA)示例采用PDM绘制的甲项目的网络图示例活动历时估计活动历时估计是根据任务分解中定义的项目活动和项目活动清单来估计完成这些项目所需要的工期。工期包括一项活动所消耗的实际工作时间加上间歇时间。制定进度计划甘特图甘特图,通过日历形式列出项目活动及其相应的开始和结束日期,它为反映项目进度信息提供了一种标准形式。下图是用PROJECT制作的甲项目的最简单的一个甘特图早期的甘特图的最大缺点是通常不反映依赖关系,但是如果在Project上建立了依赖关系,这种依赖关系会自动显示在甘特图上。甘特图使用项目管理软件可以创建更为复杂的甘特图甘特图跟踪甘特图可以用来评价项目的进展注意:任务用两种水平横线表示。下部表示计划历史(基准计划历史);上部表示实际历史。由于跟踪甘特图是建立在实际开始与完成日期的基础之上,将计划与实际的项目进度信息进行比较,所以,项目经理可以用它来监控单个任务和整体项目的进展情况。甘特图甘特图与网络图的比较甘特图在进度报告中很有效在作管理陈述时易于读懂和使用。作为计划编制工具不是太强。没有表示活动间的逻辑关系。网络图表明活动和事件间的相互关系。识别关键路径,项目历程和活动排序。表明工作流程。帮助编制计划和组织工作。关键路径法查找关键路径实例:•使用箭线图来确定关键路径。•使用前导图来确定关键路径。甲项目的箭线图(ADM)或双代号网络图(AOA)示例采用PDM绘制的甲项目的网络图示例关键路径法单个软件开发人员无法在给定期限内完成软件项目,因此,必须把多名软件开发人员合理地组织起来,使他们有效地分工协作共同完成开发工作。3种典型的组织方式:民主制程序员组、主程序员组和现代程序员组。13.4人员组织民主制程序员组:小组成员完全平等,通信信道共有n(n-1)/2条。程序设计小组的规模应该以2~8名成员为宜。优点:组员们对发现程序错误持积极的态度,这种态度有助于更快速地发现错误,从而导致高质量的代码。缺点:由于没有明确的权威指导开发工程的进行,组员间将缺乏必要的协调,最终可能导致工程失败。13.4.1民主制程序员组IBM公司20世纪70年代初期开始采用,几点考虑:(1)软件开发人员多数比较缺乏经验;(2)程

1 / 80
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功