河北工业大学廊坊分院计算机系第2章软件工程教材:主编曹哲高诚中国水利水电出版社教案:河北工业大学廊坊分院计算机系黄南川河北工业大学廊坊分院计算机系第2章经理管什么?计划预算组织进度标准什么是软件项目管理?河北工业大学廊坊分院计算机系第2章第2章软件项目管理软件项目管理必须从项目的开头介入,并贯穿于整个软件生存周期的全过程。软件项目管理的范围主要集中于3个P上,即:People(人员)、Problem(问题)和Process(过程)。软件项目管理的主要任务是:根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。河北工业大学廊坊分院计算机系第2章第2章软件项目管理软件项目的成本管理、软件质量管理和软件配置管理有一定的特殊性和独立性,可单独立项。任务分别是:成本管理估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用质量管理制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量配置管理制定配置管理计划,对程序、数据、文档的各种版本进行管理,确保软件的完整性和一致性河北工业大学廊坊分院计算机系第2章第2章软件项目管理2.1软件度量2.2软件项目估算2.3软件质量度量2.4软件复杂性度量2.5软件开发过程的管理河北工业大学廊坊分院计算机系第2章软件度量是软件产品、软件开发过程或资源等属性的定量描述。如程序规模、操作符个数、程序中错误的个数等。面向规模的度量面向功能的度量2.1.1软件度量的基本概念河北工业大学廊坊分院计算机系第2章1)测量(measure):对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。2)度量(metric):对系统、部件或过程的某一特性所具有的程度进行的量化测量。如软件质量度量等。3)估算(estimation):对软件产品、过程、资源等使用历史资料或经验公式等进行预测。如工作量、成本、完成期限等。估算一般用于立项、签订合同、制定工作计划等。4)指标(guideline):是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。2.1软件的度量河北工业大学廊坊分院计算机系第2章产品指软件开发过程得到的文档和程序,如:需求规格说明、设计规格说明、源代码、测试报告等过程与软件项目有关的活动,如软件项目计划、开发活动、维护活动、管理活动等资源进行软件项目所需要的各种支持,如人力、经费、方法、工具、软硬件环境等2.软件项目管理的对象及其属性——对象河北工业大学廊坊分院计算机系第2章内部属性是指对象本身的属性,如软件产品的代码长度、模块化的程度、复杂性等。对象的外部属性体现了对象与环境的关系,如软件的可靠性、可维护性、可移植性、成本、人员的生产率等。对象的部分属性如表2-1所示。2.软件项目管理的对象及其属性——对象的属性河北工业大学廊坊分院计算机系第2章表2-1软件工程的产品、过程、资源的属性产品过程资源内部属性程序代码行长度;程序功能;模块化;控制流结构;重用性;模块耦合度与内聚度。工作量;计划及进度;事件。人员;方法;工具;环境;经验。外部属性软件的可靠性;软件的可理解性;软件的有效性;软件的可用性;软件的可维护性;软件的可移植性。成本;可控制性;可观察性;稳定性。成本;生产率;时间。河北工业大学廊坊分院计算机系第2章直接度量对不依赖于其他属性的简单属性的测量。如软件的模块数、程序的代码行数、操作符的个数,工作量、成本等。度量分类间接度量即对涉及若干个其他属性的软件要素、准则或属性的度量。如软件的功能性、复杂性、可靠性、可维护性等等。.3.软件度量的分类河北工业大学廊坊分院计算机系第2章图2-1-1两侧面间关系面向规模的度量面向功能的度量面向人的度量生产率度量质量度量技术度量河北工业大学廊坊分院计算机系第2章2.1.2面向规模的度量面向规模的度量是以软件的代码行(LOC,LineofCode)数为基础的直接度量。L表示软件的代码行数,单位为KLOC(千行代码)或LOC;E表示开发软件所需工作量,单位为人月(PM)或人年(PY);S表示软件成本,单位为美元或元;N表示错误个数;Pd表示软件文档页数;M表示开发所用的人数。河北工业大学廊坊分院计算机系第2章1.软件开发的生产率P:P=L/E(平均每人月开发的代码行数,单位:LOC/PM)2.开发每行代码的平均成本C:C=S/L(单位:美元/LOC或元/LOC)3.代码出错率EQR:EQR=N/L(每千行代码的平均错误数,单位:个/KLOC)4.软件的文档率D:D=Pd/L(平均每千行代码的文档页数,单位:页/KLOC)2.1.2面向规模的度量河北工业大学廊坊分院计算机系第2章优点:简单、直接。缺点:①代码行数的估算依赖于程序设计语言的功能和表达能力。②对设计精巧的软件项目产生不利影响。③在开发初期估算代码行十分困难。④只适用于过程式程序设计语言。2.1.2面向规模的度量河北工业大学廊坊分院计算机系第2章【例2.1】已知有一个国外典型的软件项目的记录,开发人员M=6人,其代码行数=20.2KLOC,工作量E=43PM,成本S=314000美元,错误数N=64,文档页数Pd=1050页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。解:根据给出的已知数据,可得:P=L/E=20.2KLOC/43PM=0.47KLOC/PM=470LOC/PMC=S/L=314000美元/20.2KLOC=15.54美元/LOCEQR=N/L=64个/20.2KLOC=3.17个/KLOCD=Pd/L=1050页/20.2KLOC=51.98页/KLOC河北工业大学廊坊分院计算机系第2章2.1.3面向功能的度量1.简单功能点度量1979年,Albrecht首先提出了功能点度量方法。这是一种面向功能的间接度量方法,即从软件定义的基本功能出发,来估算软件系统的规模。因此,该方法可以在软件开发项目的初期,在软件定义过程中即可预测待开发软件的规模。河北工业大学廊坊分院计算机系第2章1.简单功能点度量功能点FP的度量公式如下:FP=CT×TCF=CT[0.65+0.01∑Fi](2-5)其中:CT——基本功能点。CT值按表2-2来计算,它的值为5个参数加权值的总和。14i=1河北工业大学廊坊分院计算机系第2章表2-2简单功能点度量的基本功能点的计算测量参数值加权因子加权值简单一般复杂用户输入数×3×4×6=用户输出数×4×5×7=用户查询数×3×4×6=文件数×7×10×15=外部接口数×5×7×10=基本功能点CT河北工业大学廊坊分院计算机系第2章表2-2中的5个参数的含义1)用户输入数:用户为软件系统提供的输入参数的个数(不包括查询);2)用户输出数:软件为用户提供的输出参数(报告、屏幕帧、错误信息等)的个数;3)用户查询数:一次联机输入导致软件以联机输出方式实时产生一个响应的个数;4)文件数:逻辑主文件的个数;5)外部接口数:机器可读的接口(如磁盘或磁带上的数据文件等)的个数。河北工业大学廊坊分院计算机系第2章1.简单功能点度量在FP度量公式中:TCF——技术复杂性调节因子。0.65和0.01——经验数据。Fi(i=1,2,…,14)——复杂性调节值。Fi所代表的因素如表2-3所示,每个Fi可根据实际情况取0、1、2、3、4、5中的一个值。其中:0—没有影响、1—偶然的、2—适中、3—普通、4—重要、5—极重要的影响。由此可见,∑Fi的值在0~70之间变化,因此,TCF取值范围:0.65~1.35。河北工业大学廊坊分院计算机系第2章表2-3Fi取值表i因素Fii因素Fi1234567需要可靠的备份和恢复吗?需要数据通信吗?有分布式处理的功能吗?性能是关键吗?在现存实用的操作环境下运行吗?需要联机数据入口吗?联机数据入口需要用输入信息构造复杂的界面或操作吗?891011121314需要联机更新主文件吗?输入、输出、文件、查询复杂吗?内部处理过程复杂吗?要求代码设计可重用吗?设计中包含转换和安装吗?系统设计支持不同组织的多次安装吗?系统设计有利于用户的修改、使用吗?河北工业大学廊坊分院计算机系第2章2.功能点度量简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。1986年Jones对简单功能点度量进行了推广,在计算软件系统的基本功能点CT时,引入了算法复杂性因素,即使用表2-4计算CT。我们称这种推广的度量方法为功能点度量。这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的FP值基本相同,但对于较复杂的软件系统,功能点度量方法比简单功能点度量方法计算出来的FP值要高20%~35%。河北工业大学廊坊分院计算机系第2章表2-4推广的功能点度量的基本功能点的计算测量参数值权值加权值用户输入数×4=用户输出数×5=用户查询数×4=文件数×7=外部接口数×7=复杂算法数×3=基本功能点CT河北工业大学廊坊分院计算机系第2章用功能点计算软件项目的有关参考量:1)生产率P(平均每人月开发的功能点数,以功能点/PM为单位):P=FP/E(2-6)2)平均成本C(以美元/功能点或元/功能点为单位):C=S/FP(2-7)河北工业大学廊坊分院计算机系第2章用功能点计算软件项目的有关参考量:3)代码出错率EQR(即每功能点的平均错误数,以个/功能点为单位)为:EQR=N/FP(2-8)4)软件的文档率D(即平均每功能点的文档页数,以页/功能点为单位)为:D=Pd/FP(2-9)河北工业大学廊坊分院计算机系第2章3.功能点度量方法的优缺点优点:①可用于软件项目开发的初期阶段的项目估算。因为在可行性研究和需求分析阶段已能基本确定输入、输出等各个参考量;②与程序设计语言无关。适合于过程或非过程式语言。缺点:①某些参考量的收集有一定困难;②度量值的主观因素较多,如Fi取值;③功能点FP本身没有直观的物理意义。河北工业大学廊坊分院计算机系第2章4.软件的代码行与功能点的关系软件的功能点数和选用的程序设计语言无关,但对于同一个软件(功能点数已定),如用不同的程序设计语言来实现,所得到的软件的代码行数可能会有较大差别。Albrecht等人通过多个软件统计出了用不同程序设计语言实现每个功能点所需代码行数,即计算出各语言的LOC/FP的平均值,如表2-5所示。河北工业大学廊坊分院计算机系第2章表2-5部分程序设计语言LOC/FP平均值的比较程序设计语言LOC/FP程序设计语言LOC/FP汇编语言C语言COBOLFORTRANPascal3201281057190Ada面向对象语言第四代语言(4GL)代码生成器图形语言(图标)493020154河北工业大学廊坊分院计算机系第2章2.2软件项目估算常用的软件项目的估算方法主要有以下4种1.自顶向下的估算方法2.自底向上的估算方法3.差别估算法4.根据经验估算公式2.2.1软件项目的估算方法河北工业大学廊坊分院计算机系第2章基本思想:首先根据已完成项目的总成本或总工作量来推算待开发软件的总成本或总工作量,然后再按比例将其分配到各开发任务中去。即从整体到局部。优点:估算工作量小、速度快。缺点:对项目中的特殊困难估计不足,有可能产生遗漏,估算出的值盲目性较大。1.自顶向下的估算方法河北工业大学廊坊分院计算机系第2章2.自底向上的估算方法基本思想是:把待开发软件细分,直到每一个子任务或阶段都已经明确所需要的开发工作量或成本,然后再把它们累加起来,得到待开发软件的总工作量或总成本。优点:计算各个部分的准确性较高。缺点:缺少各个子任务之间相互联系的工作量和系统工作量(如项目管理、配置管理、质量管理),估算值往往偏低,必须用其他方法进行校正。河北工业大学廊坊分院计算机系第2章3.差别