《《软件度量整理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件度量整理》PPT课件.ppt(132页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件度量软件度量周周 立立 新新度量进行度量工作,是为了了解产品进行度量工作,是为了了解产品开发的技术过程和产品本身。开发的技术过程和产品本身。度量开发过程的目的是为了改进度量开发过程的目的是为了改进过程,过程,度量产品的目的是为了提高产品度量产品的目的是为了提高产品的质量的质量。度量的作用是为了有效地定量地度量的作用是为了有效地定量地进行管理。进行管理。为有效地度量,常常需要考虑:对为有效地度量,常常需要考虑:对于过程和产品,于过程和产品,合适的度量是什么?合适的度量是什么?所收集的数据如何使用?所收集的数据如何使用?用于比较个人、过程或产品的度量用于比较个人、过程或产品的度量是否合理?是否
2、合理?管理人员和技术人员可利用这些度管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况量来了解软件工程过程的实际情况和它所生产的产品质量和它所生产的产品质量。估算在软件项目管理过程中关键的在软件项目管理过程中关键的活动就是制定项目计划。活动就是制定项目计划。在做计划时必须就需要的人力在做计划时必须就需要的人力(以人月为单位)、项目持续(以人月为单位)、项目持续时间(以年份或月份为单位)、时间(以年份或月份为单位)、成本(以元为单位)做出估算。成本(以元为单位)做出估算。这种估算大多是利用以前的花这种估算大多是利用以前的花费做为参考而做出的。费做为参考而做出的。如果新项目与以前的一个项
3、目在如果新项目与以前的一个项目在大小上和功能上十分类似,则新大小上和功能上十分类似,则新项目需要工作量、开发持续时间、项目需要工作量、开发持续时间、成本大致与那个老项目相同。成本大致与那个老项目相同。假使项目背景完全生疏,只凭过假使项目背景完全生疏,只凭过去的经验做出估算可能就不够了。去的经验做出估算可能就不够了。现在已有了许多用于软件开发的现在已有了许多用于软件开发的估算技术。其共同特点是:估算技术。其共同特点是:事先建立软件范围事先建立软件范围 以软件度量(以往的度量)为以软件度量(以往的度量)为基础,以做出估算基础,以做出估算 项目被分解为可单独进行估算项目被分解为可单独进行估算的小块的
4、小块管理人员大多使用不止一种估管理人员大多使用不止一种估算技术,并用一种估算技术做算技术,并用一种估算技术做为另一种估算技术的交叉检查。为另一种估算技术的交叉检查。风险分析每当新建一个程序时,总是存在每当新建一个程序时,总是存在某些不确定性。某些不确定性。用户要求是否能确切地被理解?用户要求是否能确切地被理解?在项目最后结束之前要求实现的功在项目最后结束之前要求实现的功能能否建立?能能否建立?是否存在目前仍未发现的技术难题是否存在目前仍未发现的技术难题?在项目出现严重误期时是否在项目出现严重误期时是否 会发生一些变更?等等。会发生一些变更?等等。风险分析对于软件项目管理是决风险分析对于软件项目
5、管理是决定性的,然而现在还有许多项目定性的,然而现在还有许多项目不考虑风险就着手进行。不考虑风险就着手进行。所谓风险分析实际上就是一系列所谓风险分析实际上就是一系列风险管理步骤,其中包括风险识风险管理步骤,其中包括风险识别、风险估计、风险优化、风险别、风险估计、风险优化、风险管理策略、风险解决和风险监督。管理策略、风险解决和风险监督。这些步骤贯穿在软件工程过程中。这些步骤贯穿在软件工程过程中。进度安排每一个软件项目都要求制定一个每一个软件项目都要求制定一个进度安排,但不是所有的进度都进度安排,但不是所有的进度都得一样安排。得一样安排。对于进度安排,需要考虑的是:对于进度安排,需要考虑的是:预先
6、对进度如何计划?预先对进度如何计划?工作怎样就位?工作怎样就位?如何识别定义好的任务?如何识别定义好的任务?管理人员对结束时间如何掌握管理人员对结束时间如何掌握?如何识别和监控关键路径以确保结如何识别和监控关键路径以确保结束?束?对进展如何度量?对进展如何度量?如何建立分隔任务的里程碑。如何建立分隔任务的里程碑。软件项目的进度安排与任一个工程软件项目的进度安排与任一个工程项目的进度安排基本相同。首先识项目的进度安排基本相同。首先识别一组项目任务,再建立任务之间别一组项目任务,再建立任务之间的相互关联,然后估算各个任务的的相互关联,然后估算各个任务的工作量,分配人力和其它资源,制工作量,分配人力
7、和其它资源,制定进度时序。定进度时序。追踪和控制一旦建立了开发进度安排,就可以一旦建立了开发进度安排,就可以开始着手追踪和控制活动。开始着手追踪和控制活动。由项目管理人员负责追踪在进度安由项目管理人员负责追踪在进度安排中标明的每一个任务。排中标明的每一个任务。如果任务实际完成日期滞后于进度如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自安排,则管理人员可以使用一种自动的项目进度安排工具来确定在项动的项目进度安排工具来确定在项目的中间里程碑上进度误期所造成目的中间里程碑上进度误期所造成的影响。的影响。还可对资源重新定向还可对资源重新定向对任务重新安排对任务重新安排(做为最坏的结果)可
8、以修改(做为最坏的结果)可以修改交付日期以调整已经暴露的问交付日期以调整已经暴露的问题。用这种方式可以较好地控题。用这种方式可以较好地控制软件的开发。制软件的开发。软件生产率和质量的度量生产率与质量的度量是以投入工作生产率与质量的度量是以投入工作量为依据的软件开发活动的度量和量为依据的软件开发活动的度量和开发成果质量的度量。开发成果质量的度量。为什么要对软件进行度量为什么要对软件进行度量 面向规模的度量面向规模的度量 面向功能的度量面向功能的度量 软件质量的度量软件质量的度量 在软件工程过程中使用度量在软件工程过程中使用度量为什么要对软件进行度量 表明软件产品的质量;表明软件产品的质量;弄清软
9、件开发人员的生产率;弄清软件开发人员的生产率;给出使用了新的软件工程方法和给出使用了新的软件工程方法和工具所得到的(在生产率和质量两工具所得到的(在生产率和质量两方面)的效益;方面)的效益;建立项目估算的建立项目估算的“基线基线”;帮助调整对新的工具和附加培训帮助调整对新的工具和附加培训的要求。的要求。度量的方式 在物理世界中的度量有两种方式。在物理世界中的度量有两种方式。直接度量(例如,度量一个螺栓的直接度量(例如,度量一个螺栓的长度);长度);间接度量(例如,用次品率来度量间接度量(例如,用次品率来度量生产出的螺栓质量)。生产出的螺栓质量)。软件度量也同样分为两类:直接软件度量也同样分为两
10、类:直接度量与间接度量。度量与间接度量。软件工程过程的直接度量包括所软件工程过程的直接度量包括所投入的成本和工作量。投入的成本和工作量。软件产品的直接度量包括产生的软件产品的直接度量包括产生的代码行数(代码行数(LOC)、执行速度、)、执行速度、存储量大小、在某种时间周期中存储量大小、在某种时间周期中所报告的差错数。所报告的差错数。软件产品的间接度量包括功能性、软件产品的间接度量包括功能性、复杂性、效率、可靠性、可维护复杂性、效率、可靠性、可维护性和许多其它的质量特性。性和许多其它的质量特性。软件度量域的分类面向规模的度量面向规模的度量是对软件和软件开发过面向规模的度量是对软件和软件开发过程的
11、直接度量。程的直接度量。可以建立一个面向规模的数据表格来记可以建立一个面向规模的数据表格来记录项目的某些信息。录项目的某些信息。该表格列出了在过去几年完成的每一个该表格列出了在过去几年完成的每一个软件开发项目和关于这些项目的相应面软件开发项目和关于这些项目的相应面向规模的数据。向规模的数据。面向规模的数据表格根据数据表格可以对所有的项根据数据表格可以对所有的项目计算出平均值:目计算出平均值:生产率生产率 KLOCPM(人(人月)月)质量质量 错误数错误数KLOC成本成本 元元LOC文档文档 文档页数文档页数KLOC面向功能的度量面向功能的软件度量是对软件和软面向功能的软件度量是对软件和软件开发
12、过程的间接度量。件开发过程的间接度量。面向功能度量主要考虑程序的面向功能度量主要考虑程序的“功功能性能性”和和“实用性实用性”,而不是对,而不是对 LOC计数。计数。该度量是一种叫做功能点方法的生该度量是一种叫做功能点方法的生产率度量法,利用软件信息域中的产率度量法,利用软件信息域中的一些计数和软件复杂性估计的经验一些计数和软件复杂性估计的经验关系式而导出功能点关系式而导出功能点 FP。面向功能的数据表格功能点计算确定五个信息域的特征,并在表格确定五个信息域的特征,并在表格中相应位置给出计数。中相应位置给出计数。(1)用户输入数:各个用户输入是用户输入数:各个用户输入是面向不同应用的输入数据。
13、面向不同应用的输入数据。(2)用户输出数:各个用户输出是用户输出数:各个用户输出是面向应用的输出信息,包括报告,面向应用的输出信息,包括报告,屏幕信息,错误信息等。屏幕信息,错误信息等。在报告中在报告中的各个数据项不应再分别计数的各个数据项不应再分别计数。(3)用户查询数:查询是一种联机用户查询数:查询是一种联机的交互操作,每次询问的交互操作,每次询问/响应具备响应具备应计数。应计数。(4)文件数:每一个逻辑主文件都文件数:每一个逻辑主文件都应计数。逻辑主文件是指逻辑上的应计数。逻辑主文件是指逻辑上的一组数据,可以是一个大数据库的一组数据,可以是一个大数据库的一部分,可以是一个单独的文件。一部
14、分,可以是一个单独的文件。(5)外部接口数:与系统中其他设外部接口数:与系统中其他设备通过外部接口读写信息次数均应备通过外部接口读写信息次数均应计数。计数。一旦收集到上述数据,就可以计算一旦收集到上述数据,就可以计算出与每一个计数相关的复杂性值。出与每一个计数相关的复杂性值。一个信息域是简单的、平均的还是一个信息域是简单的、平均的还是复杂的,由使用功能点方法的机构复杂的,由使用功能点方法的机构自行确定,从而计算出加权计数。自行确定,从而计算出加权计数。计算功能点,使用如下的关系式:计算功能点,使用如下的关系式:FP 总计数总计数(0.65 +0.01SUM(Fi)总计数是所有加权计数项的和总计
15、数是所有加权计数项的和Fi(i1.14)是复杂性校正值,它)是复杂性校正值,它们应通过逐一回答如下提问来确定。们应通过逐一回答如下提问来确定。Fi的取值的取值0.5:0 没有影响没有影响 1 偶然的偶然的2 适中的适中的 3 普通的普通的4 重要的重要的 5 极重要的极重要的SUM(Fi)是求和函数。)是求和函数。复杂性校正值 Fi1.系统是否需要可靠的备份和恢复?系统是否需要可靠的备份和恢复?2.是否需要数据通信?是否需要数据通信?3.是否有分布处理的功能?是否有分布处理的功能?4.是否性能成为关键?是否性能成为关键?5.系统是否运行在既存的高度实用化系统是否运行在既存的高度实用化的操作环境
16、中?的操作环境中?6.系统是否需要联机数据项?系统是否需要联机数据项?7.联机数据项是否需要建立多重窗口联机数据项是否需要建立多重窗口 显示和操作,以处理输入处理。显示和操作,以处理输入处理。8.主文件是否联机更新?主文件是否联机更新?9.输入、输出、文件、查询是否复杂?输入、输出、文件、查询是否复杂?10.内部处理过程是否复杂?内部处理过程是否复杂?11.程序代码是否可复用?程序代码是否可复用?12.设计中是否包括了转移和安装?设计中是否包括了转移和安装?13.系统是否设计成可以重复安装在不系统是否设计成可以重复安装在不同机构中同机构中14.系统是否设计成易修改和易使用?系统是否设计成易修改
17、和易使用?一旦计算出功能点,就可仿照一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、的方式度量软件的生产率、质量和其它属性:质量和其它属性:生产率生产率 FPPM(人月)(人月)质量质量 错误数错误数FP成本成本 元元FP文档文档 文档页数文档页数FP功能点度量是为了商用信息系统应功能点度量是为了商用信息系统应用而设计的。用而设计的。特征点度量(特征点度量(Feature Points)可以)可以用于系统和工程软件应用用于系统和工程软件应用特征点度量适合于算法复杂性高的特征点度量适合于算法复杂性高的应用。而实时处理、过程控制、嵌应用。而实时处理、过程控制、嵌入式软件应用的算法复杂性都偏
18、高,入式软件应用的算法复杂性都偏高,因此适合于特征点度量。因此适合于特征点度量。为了计算特征点,可以象功能点计为了计算特征点,可以象功能点计算那样,对信息域值进行计数和加算那样,对信息域值进行计数和加权。此外,特征点度量要对一个新权。此外,特征点度量要对一个新的软件特征的软件特征“算法算法”进行计数。进行计数。计算特征点可使用一个计算表格。计算特征点可使用一个计算表格。对于每一个度量参数只使用一个权对于每一个度量参数只使用一个权值,并且使用值,并且使用 FP总计数总计数(0.650.01SUM(Fi)来计算总的特征点值。来计算总的特征点值。特征点度量计算表格软件质量的度量质量度量贯穿于软件工程
19、的全过程质量度量贯穿于软件工程的全过程中以及软件交付用户使用之后。中以及软件交付用户使用之后。在软件交付之前得到的度量可作为在软件交付之前得到的度量可作为判断设计和测试质量好坏的依据。判断设计和测试质量好坏的依据。这一类度量包括程序复杂性、有效这一类度量包括程序复杂性、有效的模块性和总的程序规模。的模块性和总的程序规模。在软件交付之后的度量则把注意力在软件交付之后的度量则把注意力集中于还未发现的差错数和系统的集中于还未发现的差错数和系统的可维护性方面。可维护性方面。使用得最广泛软件质量的事后度量使用得最广泛软件质量的事后度量包括正确性、可维护性、完整性和包括正确性、可维护性、完整性和可使用性。
20、可使用性。(1)正确性:一个程序必须正确地运正确性:一个程序必须正确地运行,并为它的用户提供某些输出。行,并为它的用户提供某些输出。正确性要求软件执行所要求的功能。正确性要求软件执行所要求的功能。正确性的度量是每千代码行正确性的度量是每千代码行(KLOC)的差错数,其中将差错定义为已被的差错数,其中将差错定义为已被证实是不符合需求的缺陷。证实是不符合需求的缺陷。(2)可维护性:软件维护比其它的软可维护性:软件维护比其它的软件工程活动需要更多的工作量。还件工程活动需要更多的工作量。还没有一种方法可以直接度量可维护没有一种方法可以直接度量可维护性,因此必须采取间接度量。性,因此必须采取间接度量。有
21、一种简单的面向时间的度量,叫有一种简单的面向时间的度量,叫做平均变更等待时间做平均变更等待时间MTTC。这个时间包括分析变更要求、设计这个时间包括分析变更要求、设计适当的修改、实现变更并测试、及适当的修改、实现变更并测试、及把变更发送给所有的用户。把变更发送给所有的用户。一个可维护的程序与不可维护的程一个可维护的程序与不可维护的程序相比,应有较低的序相比,应有较低的MTTC。(3)完整性:完整性度量一个系统完整性:完整性度量一个系统抗拒对它的安全性攻击(事故的和抗拒对它的安全性攻击(事故的和人为的)的能力。软件的所有三个人为的)的能力。软件的所有三个成分程序、数据和文档都会遭到攻成分程序、数据
22、和文档都会遭到攻击。击。度量完整性,需要定义两个附加的度量完整性,需要定义两个附加的属性:危险性和安全性。属性:危险性和安全性。危险性是特定类型的攻击将在一给危险性是特定类型的攻击将在一给定时间内发生的概率,安全性是排定时间内发生的概率,安全性是排除特定类型攻击的概率。除特定类型攻击的概率。一个系统的完整性可定义为完整性一个系统的完整性可定义为完整性(1危险性危险性(1安全性安全性)其中,对每一个攻击的危险性和其中,对每一个攻击的危险性和安全性都进行累加。安全性都进行累加。(4)可使用性:如果一个程序不具可使用性:如果一个程序不具有有“用户友好性用户友好性”,即使它所执,即使它所执行的功能很有
23、价值,也常常会失行的功能很有价值,也常常会失败。可使用性量化败。可使用性量化“用户友好性用户友好性”,并依据以下四个特征进行度,并依据以下四个特征进行度量:量:为学习系统所需要的体力上的为学习系统所需要的体力上的和智力上的技能;和智力上的技能;为达到适度有效使用系统所需为达到适度有效使用系统所需要的时间;要的时间;当软件被某些人适度有效地使当软件被某些人适度有效地使用时所度量的在生产率方面的用时所度量的在生产率方面的净增值;净增值;用户角度对系统的主观评价用户角度对系统的主观评价(可以通过问题调查表得到)。(可以通过问题调查表得到)。在软件工程过程中使用度量建立基线建立基线 为了将为了将LOC
24、和和FP用于软件估算技术用于软件估算技术中,必须建立历史数据基线。中,必须建立历史数据基线。根据历史经验,在软件工程过程的衔根据历史经验,在软件工程过程的衔接处划出一条基线,在此基线上附有接处划出一条基线,在此基线上附有一些用于度量的经验目标信息,作为一些用于度量的经验目标信息,作为工程过程评估的依据,判断工程过程工程过程评估的依据,判断工程过程的完成是否达到预想的要求。的完成是否达到预想的要求。质量度量数据一旦收集到,软件开质量度量数据一旦收集到,软件开发组织就可以根据它们来调整其软发组织就可以根据它们来调整其软件工程项目,以消除那些对软件开件工程项目,以消除那些对软件开发有重大影响的差错产
25、生的根源。发有重大影响的差错产生的根源。大多数软件开发人员都希望了解:大多数软件开发人员都希望了解:哪些用户需求可能会变更?系统中哪些用户需求可能会变更?系统中哪些模块容易出错?对每一个模块哪些模块容易出错?对每一个模块要做多少测试?在测试时能够预计要做多少测试?在测试时能够预计多少错误?如果能收集到相关的度多少错误?如果能收集到相关的度量数据,就能确定这些问题的答案。量数据,就能确定这些问题的答案。软件项目的估算软件项目管理过程开始于项目计划。软件项目管理过程开始于项目计划。在做项目计划时,第一项活动就是在做项目计划时,第一项活动就是估算。估算。在做估算时往往存在某些不确定性,在做估算时往往
26、存在某些不确定性,使得软件项目管理人员无法正常进使得软件项目管理人员无法正常进行管理而导致产品迟迟不能完成。行管理而导致产品迟迟不能完成。现在已使用的实用技术是时间和工现在已使用的实用技术是时间和工作量估算。作量估算。估算对风险的影响项目的复杂性对于增加软件计项目的复杂性对于增加软件计划的不确定性影响很大。复杂划的不确定性影响很大。复杂性越高,估算的风险就越高。性越高,估算的风险就越高。项目的规模对于软件估算的精项目的规模对于软件估算的精确性和功效影响也比较大。随确性和功效影响也比较大。随着软件规模的扩大,问题分解着软件规模的扩大,问题分解会变得更加困难。项目的规模会变得更加困难。项目的规模越
27、大,开发工作量越大,估算越大,开发工作量越大,估算的风险越高。的风险越高。项目的结构化程度也影响项目估项目的结构化程度也影响项目估算的风险。随着结构化程度的提算的风险。随着结构化程度的提高,高,进行精确估算的能力就能进行精确估算的能力就能提高,而风险将减少。提高,而风险将减少。历史信息的有效性也影响估算的历史信息的有效性也影响估算的风险。对过去的项目进行综合的风险。对过去的项目进行综合的软件度量,可借用来比较准确地软件度量,可借用来比较准确地进行估算,安排进度以避免重走进行估算,安排进度以避免重走过去的弯路,而总的风险也减少过去的弯路,而总的风险也减少了。了。如果对软件项目的作用范围还不如果对
28、软件项目的作用范围还不十分清楚,或者用户的要求经常十分清楚,或者用户的要求经常变更,都会导致对软件项目所需变更,都会导致对软件项目所需资源、成本、进度的估算频频变资源、成本、进度的估算频频变动,增加估算的风险。动,增加估算的风险。计划人员应当要求在软件系统的计划人员应当要求在软件系统的规格说明中给出完备的功能、性规格说明中给出完备的功能、性能、接口的定义。能、接口的定义。软件项目计划的目标软件项目管理人员在开发工作一开软件项目管理人员在开发工作一开始需要进行定量估算。始需要进行定量估算。软件项目计划的目标是提供一个能软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进使项目管理人员对资
29、源、成本和进度做出合理估算的框架。度做出合理估算的框架。这些估算应当在软件项目开始时的这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随一个有限的时间段内做出,并且随着项目的进展定期进行更新。着项目的进展定期进行更新。软件的范围软件范围包括功能、性能、限制、软件范围包括功能、性能、限制、接口和可靠性。接口和可靠性。估算开始时,应对软件的功能进行估算开始时,应对软件的功能进行评价,对其进行适当的细化以便提评价,对其进行适当的细化以便提供更详细的细节。由于成本和进度供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采的估算都与功能有关,因此常常采用某种程度的功能分解。用某种程度的
30、功能分解。性能的考虑包括处理和响应时性能的考虑包括处理和响应时间的需求。间的需求。约束条件则标识产品成本、外约束条件则标识产品成本、外部硬件、可用存储或其它现有部硬件、可用存储或其它现有系统对软件的限制。系统对软件的限制。功能、性能和约束必须在一起功能、性能和约束必须在一起进行评价。当性能限制不同时,进行评价。当性能限制不同时,为实现同样的功能,开发工作为实现同样的功能,开发工作量可能相差一个数量级。量可能相差一个数量级。还要叙述某些质量因素(例如,还要叙述某些质量因素(例如,给出的算法是否容易理解等)。给出的算法是否容易理解等)。软件与其它系统元素是相互作软件与其它系统元素是相互作用的。要考
31、虑每个接口的性质用的。要考虑每个接口的性质和复杂性,以确定对开发资源、和复杂性,以确定对开发资源、成本和进度的影响。接口的概成本和进度的影响。接口的概念可解释为:念可解释为:运行软件的硬件(如处理机与外运行软件的硬件(如处理机与外设)及间接受软件控制的设备设)及间接受软件控制的设备(如机器、显示器)(如机器、显示器);必须与新软件链接的现有的软件必须与新软件链接的现有的软件(如数据库存取例程、子程序包、(如数据库存取例程、子程序包、操作系统)操作系统);通过终端或其它输入输出设备通过终端或其它输入输出设备使用该软件的人使用该软件的人;该软件运行前后的一系列操作过该软件运行前后的一系列操作过程。
32、程。对于每一种情况,都必须清楚对于每一种情况,都必须清楚地了解通过接口的信息转换。地了解通过接口的信息转换。软件开发中的资源软件项目计划的第二个任务是对完软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。成该软件项目所需的资源进行估算。软件开发所需的资源有软件开发所需的资源有现成的用以支持软件开发的工具现成的用以支持软件开发的工具 硬件工具及软件工具硬件工具及软件工具最基本的资源最基本的资源 人人软件开发中的资源通常,对每一种资源,应说明通常,对每一种资源,应说明以下四个特性:以下四个特性:(1)资源的描述)资源的描述;(2)资源的有效性说明)资源的有效性说明;(3)资源在何时开始
33、需要)资源在何时开始需要;(4)使用资源的持续时间。)使用资源的持续时间。最后两个特性统称为时间窗口。最后两个特性统称为时间窗口。1.人力资源在考虑各种软件开发资源时,人是在考虑各种软件开发资源时,人是最重要的资源。在安排开发活动时最重要的资源。在安排开发活动时必须考虑人员的技术水平、专业、必须考虑人员的技术水平、专业、人数、以及在开发过程各阶段中对人数、以及在开发过程各阶段中对各种人员的需要。各种人员的需要。计划人员首先估算范围并选择为完计划人员首先估算范围并选择为完成开发工作所需要的技能。还要在成开发工作所需要的技能。还要在组织和专业两方面做出安排。组织和专业两方面做出安排。对于一些规模较
34、小的项目(对于一些规模较小的项目(1个人个人年或者更少),只要向专家做些咨年或者更少),只要向专家做些咨询,也许一个人就可以完成所有的询,也许一个人就可以完成所有的软件工程步骤。软件工程步骤。对一些规模较大的项目,在整个软对一些规模较大的项目,在整个软件生存期中,各种人员的参与情况件生存期中,各种人员的参与情况是不一样的。下面是各类不同的人是不一样的。下面是各类不同的人员随开发工作的进展在软件工程各员随开发工作的进展在软件工程各个阶段的参与情况的典型曲线。个阶段的参与情况的典型曲线。2.硬件资源硬件是作为软件开发项目的一种工硬件是作为软件开发项目的一种工具而投入的。具而投入的。(1)宿主机()
35、宿主机(Host)软件开发时软件开发时使用的计算机及外围设备;使用的计算机及外围设备;(2)目标机()目标机(Target)运行已开发运行已开发成功软件的计算机及外围设备;成功软件的计算机及外围设备;(3)其它硬件设备)其它硬件设备 专用软件开发专用软件开发时需要的特殊硬件资源;时需要的特殊硬件资源;3.软件资源软件工程人员在软件开发期间使用软件工程人员在软件开发期间使用了许多软件工具来帮助开发。这种了许多软件工具来帮助开发。这种软件工具集叫做计算机辅助软件工软件工具集叫做计算机辅助软件工程(程(CASE)。)。(1)业务系统计划工具集)业务系统计划工具集(2)项目管理工具集)项目管理工具集
36、(3)支援工具)支援工具文档生成工具、文档生成工具、网络系统软件、数据库、电子邮件、网络系统软件、数据库、电子邮件、通报板,以及配置管理工具。通报板,以及配置管理工具。(4)分析和设计工具)分析和设计工具(5)编程工具)编程工具(6)组装和测试工具)组装和测试工具(7)原型化和模拟工具)原型化和模拟工具(8)维护工具)维护工具(9)框架工具)框架工具这些工具能够提这些工具能够提供建立集成项目支撑环境(供建立集成项目支撑环境(IPSE)的框架。的框架。4.软件复用性及软件部件库为了促成软件的复用,以提高软件为了促成软件的复用,以提高软件的生产率和软件产品的质量,可建的生产率和软件产品的质量,可建
37、立可复用的软件部件库。立可复用的软件部件库。软件成本和工作量的估算软件成本和工作量的估算中变化的软件成本和工作量的估算中变化的东西太多,人、技术、环境、政治,东西太多,人、技术、环境、政治,都会影响软件最终成本和工作量。都会影响软件最终成本和工作量。软件项目的估算能够通过一系列系软件项目的估算能够通过一系列系统化的步骤,在可接受的风险范围统化的步骤,在可接受的风险范围内提供估算结果。内提供估算结果。成本估算必须成本估算必须“事前事前”给出。时间给出。时间越久,了解得越多,估算中出现的越久,了解得越多,估算中出现的严重误差就越少。严重误差就越少。分解技术当一个待解决的问题过于复杂时,当一个待解决
38、的问题过于复杂时,我们可以把它进一步分解,直到分我们可以把它进一步分解,直到分解后的子问题变得容易解决为止。解后的子问题变得容易解决为止。然后,分别解决每一个子问题,并然后,分别解决每一个子问题,并将这些子问题的解答综合起来,从将这些子问题的解答综合起来,从而得到原问题的解答。而得到原问题的解答。LOC和FP估算在软件项目估算中,在两个方面使在软件项目估算中,在两个方面使用了用了LOC和和FP数据:数据:把把LOC和和FP数据当做一个估算变量,数据当做一个估算变量,用于量度软件每一个元素的规模。用于量度软件每一个元素的规模。LOC和和FP数据作为从过去项目中收数据作为从过去项目中收集到的基线数
39、据,与其它估算变量集到的基线数据,与其它估算变量联合使用联合使用,进行成本和工作量的估算。进行成本和工作量的估算。LOC和和FP的共性在于的共性在于:给出一个有界的软件范围的叙述给出一个有界的软件范围的叙述 由此叙述把软件分解成一些小的由此叙述把软件分解成一些小的可分别独立进行估算的子功能可分别独立进行估算的子功能 对每一个子功能估算对每一个子功能估算LOC或或FP 把基线生产率度量把基线生产率度量(如如LOCPM或或FPPM)用做特定的估算用做特定的估算变量,导出子功能的成本或工作变量,导出子功能的成本或工作量量综合子功能的估算得到整个项目综合子功能的估算得到整个项目的总估算。的总估算。项目
40、计划人员可对每一个分解的功项目计划人员可对每一个分解的功能提出一个有代表性的估算值范围。能提出一个有代表性的估算值范围。利用历史数据或凭实际经验(当其利用历史数据或凭实际经验(当其它的方法失效时),对每个功能分它的方法失效时),对每个功能分别按最佳的、可能的、悲观的三种别按最佳的、可能的、悲观的三种情况给出情况给出LOC或或FP估计值。记作估计值。记作a、m、b。接着计算接着计算LOC或或FP的期望值的期望值 E。E (a4mb)6 所有子功能的总估算变量值除以相所有子功能的总估算变量值除以相应于该估算变量的平均生产率度量应于该估算变量的平均生产率度量得到项目的总工作量。得到项目的总工作量。例
41、如,若假定总的例如,若假定总的FP估算值是估算值是310,基于过去项目的平均,基于过去项目的平均FP生产率是生产率是5.5FPPM,则项目的总工作量是:,则项目的总工作量是:工作量工作量 3105.5 56 PM作为作为LOC和和FP估算的实例,考察估算的实例,考察一个为一个为CAD应用而开发的软件包。应用而开发的软件包。系统定义评审指明,软件是在系统定义评审指明,软件是在一个工作站上运行,其接口必一个工作站上运行,其接口必须使用各种计算机图形设备,须使用各种计算机图形设备,包括鼠标器、数字化仪、高分包括鼠标器、数字化仪、高分辩率彩色显示器和激光打印机。辩率彩色显示器和激光打印机。在这个实例中
42、,使用在这个实例中,使用LOC做为做为估算变量。估算变量。根据系统规格说明根据系统规格说明,软件范围的软件范围的初步叙述如下初步叙述如下“软件将从操作员那里接收软件将从操作员那里接收2维或维或3维几何维几何数据。数据。操作员通过用户界面与操作员通过用户界面与 CAD系统系统交互并控制它,这种用户界面将表现出交互并控制它,这种用户界面将表现出很好的人机接口设计特性。所有的几何很好的人机接口设计特性。所有的几何数据和其它支持信息保存在一个数据和其它支持信息保存在一个CAD数数据库内。要开发一些设计分析模块以产据库内。要开发一些设计分析模块以产生在各种图形设备上显示的输出。软件生在各种图形设备上显示
43、的输出。软件要设计得能控制并与能各种外部设备,要设计得能控制并与能各种外部设备,包括鼠标器、数字化仪、激光打印机和包括鼠标器、数字化仪、激光打印机和绘图仪交互。绘图仪交互。”经过分解经过分解,识别出下列主要软件功能:识别出下列主要软件功能:用户界面和控制功能用户界面和控制功能 二维几何分析二维几何分析 三维几何分析三维几何分析 数据库管理数据库管理 计算机图形显示功能计算机图形显示功能 外设控制外设控制PC 设计分析模块设计分析模块通过分解,可得到如下估算表通过分解,可得到如下估算表估算表估算表软件开发成本估算软件开发成本主要是指软件开发过软件开发成本主要是指软件开发过程中所花费的工作量及相应
44、的代价。程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗,主它不包括原材料和能源的消耗,主要是人的劳动的消耗。要是人的劳动的消耗。人的劳动消耗所需代价就是软件产人的劳动消耗所需代价就是软件产品的开发成本。品的开发成本。软件产品开发成本的计算方法不同软件产品开发成本的计算方法不同于其它物理产品成本的计算。于其它物理产品成本的计算。软件的开发成本是以一次性开软件的开发成本是以一次性开发过程所花费的代价来计算的。发过程所花费的代价来计算的。软件开发成本的估算,应是从软件开发成本的估算,应是从软件计划、需求分析、设计、软件计划、需求分析、设计、编码、单元测试、组装测试到编码、单元测试、组装测
45、试到确认测试,整个软件开发全过确认测试,整个软件开发全过程所花费的代价作为依据的。程所花费的代价作为依据的。软件开发成本估算方法对于一个大型的软件项目,由于项对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估一件简单的事,要进行一系列的估算处理。主要靠分解和类推。算处理。主要靠分解和类推。基本估算方法分为三类。基本估算方法分为三类。自顶向下的估算方法自顶向下的估算方法 自底向上的估计法自底向上的估计法 差别估计法差别估计法自顶向下的估算方法这种方法的主要思想是从项目的整这种方法的主要思想是从项目的整体出发,进行类推。体出发,
46、进行类推。估算人员根据以前已完成项目所消估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工将要开发的软件的总成本(或总工作量),然后按比例将它分配到各作量),然后按比例将它分配到各开发任务单元中去,再来检验它是开发任务单元中去,再来检验它是否能满足要求。否能满足要求。这种方法的优点是估算工作量这种方法的优点是估算工作量小,速度快。小,速度快。缺点是对项目中的特殊困难估缺点是对项目中的特殊困难估计不足,估算出来的成本盲目计不足,估算出来的成本盲目性大,有时会遗漏被开发软件性大,有时会遗漏被开发软件的某些部分。的某些部分。自底向
47、上的估计法这种方法的主要思想是把待开发的这种方法的主要思想是把待开发的软件细分,直到每一个子任务都已软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总把它们加起来,得到软件开发的总工作量。工作量。它的优点是估算各个部分的准确性它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许互联系所需要的工作量,还缺少许多与软件开发有关的系统级工作量多与软件开发有关的系统级工作量.差别估计法这种方法综合了上述两种方法的优这种方法综合了上述两种方法的优点,其主要思想是把待开
48、发的软件点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区类比,从其开发的各个子任务中区分出类似的部分和不同的部分。分出类似的部分和不同的部分。类似的部分按实际量进行计算,不类似的部分按实际量进行计算,不同的部分则采用相应方法进行估算。同的部分则采用相应方法进行估算。专家判定技术由多位专家进行成本估算由多位专家进行成本估算单独一位专家可能会有种种偏单独一位专家可能会有种种偏见,最好由多位专家进行估算,见,最好由多位专家进行估算,取得多个估算值。取得多个估算值。有多种方法把这些估算值合成有多种方法把这些估算值合成一个估算值。一
49、个估算值。一种方法是简单地求各估算值的中一种方法是简单地求各估算值的中值或平均值。其优点是简便。缺点值或平均值。其优点是简便。缺点是可能会由于受一、二个极端估算是可能会由于受一、二个极端估算值的影响而产生严重的偏差。值的影响而产生严重的偏差。一种方法是召开小组会,使各位专一种方法是召开小组会,使各位专家们统一于或至少同意某一个估算家们统一于或至少同意某一个估算值。优点是可以摈弃蒙昧无知的估值。优点是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权算值,缺点是一些组员可能会受权威或政治因素的影响。威或政治因素的影响。Deiphi技术标准标准Deiphi技术技术 组织者发给每位专家一份软件系组织
50、者发给每位专家一份软件系统规格说明书和一张记录估算值统规格说明书和一张记录估算值的表格,请他们进行估算。的表格,请他们进行估算。专家详细研究软件规格说明书的专家详细研究软件规格说明书的内容,对该软件提出三个规模的内容,对该软件提出三个规模的估算值,即:估算值,即:ai(最小最小),mi(可可能能),bi(最大最大),无记名地填写表无记名地填写表格格 组织者对专家们填在表格中的答组织者对专家们填在表格中的答复进行整理:复进行整理:a.计算各专家估算的期望值计算各专家估算的期望值 Ei;b.对专家的估算结果分类摘要。对专家的估算结果分类摘要。专家对此估算值另做一次估算。专家对此估算值另做一次估算。