《《软件项目管理》PPT课件》由会员分享,可在线阅读,更多相关《《软件项目管理》PPT课件(240页珍藏版)》请在金锄头文库上搜索。
1、软件项目管理软件项目管理1.1 项目管理过程项目管理过程1.2 软件生产率和质量的度量软件生产率和质量的度量1.3 软件项目的估算软件项目的估算1.4 成本成本效益分析效益分析1.5 软件项目软件项目组织与计划组织与计划1.6 进度安排与跟踪进度安排与跟踪11.1 项目管理过程项目管理过程软件项目管理的对象是软件项目管理的对象是软件工程项目软件工程项目。涉及的范围涉及的范围覆盖了整个软件工程过程覆盖了整个软件工程过程。为使软件项目开发获得成功,为使软件项目开发获得成功,关键问题关键问题是必须对软件项目的是必须对软件项目的工作范围工作范围、可能风可能风险险、需要资源需要资源(人人、硬件硬件软件软
2、件)、要实要实现的任务现的任务、经历的里程碑经历的里程碑、花费工作量花费工作量(成本成本)、进度安排进度安排等做到心中有数。等做到心中有数。软件项目管理可以提供这些信息。软件项目管理可以提供这些信息。2什么是项目管理什么是项目管理?项目管理是指项目管理是指“在项目活动中运用专门的在项目活动中运用专门的知识知识、技能技能、工具工具和和方法方法,使项目能够实,使项目能够实现或超过项目相关人员的需要和期限。现或超过项目相关人员的需要和期限。”项目相关人员是指参与项目和受项目影响项目相关人员是指参与项目和受项目影响的人,包括项目发起人、项目组、支持人的人,包括项目发起人、项目组、支持人员、客户、最终用
3、户、供应商,项目对手。员、客户、最终用户、供应商,项目对手。项目的核心知识是项目的核心知识是范围范围、时间时间、成本成本和和质质量量。辅助知识是。辅助知识是人力资源管理人力资源管理、风险管理风险管理和和采购管理采购管理。3经过多年的发展,项目管理已经成为一经过多年的发展,项目管理已经成为一个较为成熟的领域。个较为成熟的领域。美国项目管理协会为此建立了一套美国项目管理协会为此建立了一套项项目管理知识体系指南目管理知识体系指南,作为了解和学,作为了解和学习项目管理的知识框架和起点。它包括习项目管理的知识框架和起点。它包括项目管理引论项目管理引论、9大项目管理知识领域大项目管理知识领域的的简要描述以
4、及相关术语。简要描述以及相关术语。本课程将结合软件开发项目的特点,在本课程将结合软件开发项目的特点,在软件项目管理中全面应用项目管理的软件项目管理中全面应用项目管理的9大大块知识领域以及全部的块知识领域以及全部的5个过程组个过程组启动、启动、计划计划、执行执行、控制控制和和收尾收尾。4项目管理框架项目管理框架范围范围管理管理时间时间管理管理成本成本管理管理质量质量管理管理人力人力资源资源管理管理沟通沟通管理管理风险风险管理管理采购采购管理管理项目整体管理项目整体管理9大知识领域的核心功能大知识领域的核心功能促成功能促成功能工具和工具和技术技术项目项目成功成功项目项目相关相关人员人员的需的需要和
5、要和期望期望5项目过程与项目知识领域的关系项目过程与项目知识领域的关系通常项目过程和项目的知识领域的关系通常项目过程和项目的知识领域的关系如下:如下:知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过程执行过程 控制过程控制过程 收尾过程收尾过程项目整体项目整体管理管理项目计划项目计划制定制定项目计划项目计划执行执行整体变更整体变更控制控制范围管理范围管理 起始起始范围计划范围计划范围定义范围定义范围验证范围验证范围变更范围变更控制控制6知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过程执行过程 控制过程控制过程 收尾过程收尾过程时
6、间管理时间管理活动定义活动定义活动顺序活动顺序活动历时活动历时估计估计进度安排进度安排进度控制进度控制成本管理成本管理资源计划资源计划成本估算成本估算成本预算成本预算成本控制成本控制质量管理质量管理质量计划质量计划 质量保证质量保证 质量控制质量控制人力资源人力资源管理管理组织计划组织计划成员物色成员物色团队建立团队建立7知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过程执行过程 控制过程控制过程 收尾过程收尾过程沟通管理沟通管理沟通计划沟通计划 信息发布信息发布 绩效报告绩效报告 管理终止管理终止风险管理风险管理风险管理风险管理计划计划风险识别风险识别风险定性
7、风险定性分析分析风险定量风险定量分析分析风险应对风险应对计划计划风险监督风险监督与控制与控制采购管理采购管理采购计划采购计划揽货计划揽货计划揽货揽货货源选择货源选择合同结束合同结束8在系统开发生命周期(在系统开发生命周期(SDLC)过程)过程中应用项目管理知识领域中应用项目管理知识领域与与SDLC各阶段相关的知识领域的任务:各阶段相关的知识领域的任务:知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段范围管理范围管理识别目标识别目标;标识业务标识业务要求要求;标识主要标识主要功能功能;定义详细定义详细需求需求;核实需求核实需求;确定范确定范围围
8、;计划实现计划实现途径途径;控制范围控制范围蔓延蔓延;监控请求监控请求日志日志;评估变更评估变更请求请求;控制范围控制范围蔓延蔓延;监控请求监控请求日志日志;评估变更评估变更请求请求;9知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段时间管理时间管理建立建立WBS;建立进度建立进度表表;标识里程标识里程碑碑;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;成本管理成本管理执行成本执行成本/效益分析效益分析;建立预算建立
9、预算(资金流资金流);监视正在监视正在发生的各发生的各种成本种成本;更新成本更新成本/效益效益;监视正在监视正在发生的各发生的各种成本种成本;评审预算评审预算/资金流资金流;监视正在监视正在发生的各发生的各种成本种成本;评审预算评审预算/资金流资金流;10知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段质量管理质量管理标识质量标识质量的度量的度量;标识项目标识项目成功度量成功度量;建立质量建立质量控制过程控制过程;用过程和用过程和评审来控评审来控制质量制质量;用评审来用评审来控制质量控制质量;控制和监控制和监视测试视测试;监视测试监视测试错误
10、日志错误日志;确保最终确保最终系统质量系统质量;人力资源人力资源管理管理标识项目标识项目经理经理;制定人员制定人员计划计划;招募人员招募人员;组织团队组织团队;引导团队引导团队大厦大厦;标识标识/增增加人员;加人员;提供团队提供团队培训培训;标识标识/增增加资源加资源;引导绩效引导绩效评审;评审;提供培训提供培训;引导绩效引导绩效评审评审;11知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段沟通管理沟通管理标识项目标识项目相关人员相关人员;制定沟通制定沟通计划计划;建立沟通建立沟通机制机制;引导状态引导状态评审评审;报告状态报告状态;监视内部
11、监视内部沟通沟通;引导状态引导状态评审评审;报告状态报告状态;监视沟通监视沟通;引导状态引导状态评审评审;报告状态报告状态;监视沟通监视沟通;风险管理风险管理分析可行分析可行性和风险性和风险;制定可供制定可供选择的计选择的计划划;评价风险评价风险;监视风险监视风险区域区域;评价风险评价风险;监视风险监视风险区域区域;评价风险评价风险;监视风险监视风险区域区域;12知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段采购管理采购管理标识购买标识购买选择选择;标识潜在标识潜在的供应商的供应商;制定标书制定标书申请申请RFP;收取投标收取投标书书;选择
12、供应选择供应商商;制定合同制定合同;监视可交监视可交付物付物;监视可交监视可交付物付物;131、启动一个软件项目、启动一个软件项目在制定软件项目计划之前,必须在制定软件项目计划之前,必须 明确项目的目标和范围明确项目的目标和范围 考虑候选的解决方案考虑候选的解决方案 标明技术和管理上的要求标明技术和管理上的要求有了这些信息,才能确定有了这些信息,才能确定合理合理、精确的精确的成本估算成本估算,实际可行的任务分解实际可行的任务分解以及以及可可管理的进度安排管理的进度安排。软件人员和用户是在软件人员和用户是在系统工程步骤系统工程步骤中中确确定项目的目标和范围定项目的目标和范围。14目标目标标明了标
13、明了软件项目的目的软件项目的目的但不涉及如但不涉及如何去达到这些目的。何去达到这些目的。范围范围标明了标明了软件要实现的基本功能软件要实现的基本功能,并,并尽量以定量的方式界定这些功能。尽量以定量的方式界定这些功能。当明确了软件项目的目标和范围后,就当明确了软件项目的目标和范围后,就应考虑应考虑候选的解决方案候选的解决方案。有了方案,管理人员和技术人员就能够有了方案,管理人员和技术人员就能够据此选择据此选择一种一种“好的好的”方法方法,给出诸如,给出诸如交付期限交付期限、预算预算、个人能力个人能力、技术界面技术界面及其它许多因素所构成的限制。及其它许多因素所构成的限制。152- -1、制定计划
14、:度量、制定计划:度量什么是度量什么是度量? IEEE 定义度量是定义度量是“对一个对一个系统、构件或过程具有的某个给定属性系统、构件或过程具有的某个给定属性的一个定量测量的一个定量测量”。进行度量工作,是为了进行度量工作,是为了了解产品开发的了解产品开发的技术过程技术过程和和产品本身产品本身。uu 度量度量开发过程开发过程的目的是为了的目的是为了改进过改进过程程;uu 度量度量产品产品的目的是为了提高的目的是为了提高产品质产品质量量。度量的作用是为度量的作用是为有效地定量地进行管理有效地定量地进行管理。16为有效地度量,对于为有效地度量,对于过程过程和和产品产品,常常,常常需要考虑:需要考虑
15、:uu 合适的度量是什么?合适的度量是什么?uu 所收集的数据如何使用?所收集的数据如何使用?uu 用于比较个人、过程或产品的度量是用于比较个人、过程或产品的度量是否合理?否合理?管理人员和技术人员可利用这些度量来管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况和它所生了解软件工程过程的实际情况和它所生产的产品质量产的产品质量 。172- -2、制定计划:制定计划:估算估算在在软件项目管理过程软件项目管理过程中关键的活动就是中关键的活动就是制定项目计划制定项目计划。在做计划时必须就在做计划时必须就需要的人力需要的人力(以人月以人月为单位为单位)、)、项目持续时间项目持续时间(以年份
16、或月以年份或月份为单位份为单位)、)、成本成本(以元为单位以元为单位)做出)做出估算。估算。这种估算大多是这种估算大多是利用以前的花费做为参利用以前的花费做为参考考而做出的。而做出的。18如果新项目与以前的一个项目在如果新项目与以前的一个项目在大小大小上上和和功能功能上十分上十分类似类似,则新项目需要工作,则新项目需要工作量、开发持续时间、成本大致与那个老量、开发持续时间、成本大致与那个老项目相同。项目相同。假使项目背景完全生疏,只凭过去的经假使项目背景完全生疏,只凭过去的经验做出估算可能就不够了。验做出估算可能就不够了。现在已有了许多用于软件开发的现在已有了许多用于软件开发的估算技估算技术术
17、。其共同特点是:。其共同特点是: 事先建立软件范围事先建立软件范围19以软件度量(以往的度量)为基础,以软件度量(以往的度量)为基础,以做出估算以做出估算项目被分解为可单独进行估算的小块项目被分解为可单独进行估算的小块管理人员大多使用不止一种估算技术,管理人员大多使用不止一种估算技术,并用一种估算技术做为另一种估算技术并用一种估算技术做为另一种估算技术的交叉检查。的交叉检查。202- -3、制定计划:风险分析、制定计划:风险分析每当新建一个程序时,总是存在某些每当新建一个程序时,总是存在某些 不不确定性。确定性。uu 用户要求是否能确切地被理解?用户要求是否能确切地被理解?uu 在项目最后结束
18、之前要求实现的功能在项目最后结束之前要求实现的功能能否建立?能否建立?uu 是否存在目前仍未发现的技术难题?是否存在目前仍未发现的技术难题?uu 在项目出现严重误期时是否会发生一在项目出现严重误期时是否会发生一些变更?些变更?等等。等等。21风险分析风险分析对于软件项目管理对于软件项目管理是决定性的是决定性的,然而现在还有许多项目不考虑风险就着然而现在还有许多项目不考虑风险就着手进行。手进行。所谓所谓风险分析风险分析实际上就是一系列实际上就是一系列风险管风险管理步骤理步骤,其中包括,其中包括风险识别风险识别、风险估计风险估计、风险管理策略风险管理策略、风险解决风险解决和和风险监督风险监督。这些
19、步骤贯穿在软件工程过程中。这些步骤贯穿在软件工程过程中。222- -4、制定计划:进度安排、制定计划:进度安排每个软件项目都要求制定一个每个软件项目都要求制定一个进度安排进度安排,但不是所有进度都得一样安排。但不是所有进度都得一样安排。对于进度安排,需要考虑的是:对于进度安排,需要考虑的是:uu 预先对进度如何计划?预先对进度如何计划?uu 工作怎样就位?工作怎样就位?uu 如何识别定义好的任务?如何识别定义好的任务?uu 管理人员对管理人员对结束时间如何掌握结束时间如何掌握 ?uu 如何如何识别识别和和监控关键路径监控关键路径以以确保结束确保结束? 23uu 对进展如何度量?对进展如何度量?
20、uu 如何建立如何建立分隔任务的里程碑分隔任务的里程碑。软件项目的进度安排与任一个工程项目软件项目的进度安排与任一个工程项目的进度安排基本相同。的进度安排基本相同。uu 识别一组项目任务识别一组项目任务uu 建立任务之间的相互关联建立任务之间的相互关联uu 估算各个任务的工作量估算各个任务的工作量uu 分配人力分配人力和和其它资源其它资源uu 制定进度时序制定进度时序243、追踪和控制、追踪和控制一旦建立了一旦建立了开发进度安排开发进度安排,就可以开始,就可以开始着手着手追踪和控制活动追踪和控制活动。由由项目管理人员负责追踪在进度安排中项目管理人员负责追踪在进度安排中标明的每一个任务。标明的每
21、一个任务。如果任务实际完成日期滞后于进度安排,如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自动的项目进则管理人员可以使用一种自动的项目进度安排工具来确定在项目的中间里程碑度安排工具来确定在项目的中间里程碑上进度误期所造成的影响。上进度误期所造成的影响。25可可对资源重新定向对资源重新定向对对任务重新安排任务重新安排(做为最坏的结果做为最坏的结果)可以修改交付日期可以修改交付日期以调整已经暴露的问题以调整已经暴露的问题。用这种方式可。用这种方式可以较好地控制软件的开发。以较好地控制软件的开发。261.2 软件生产率和质量的度量软件生产率和质量的度量生产率与质量的度量是生产率与质量的
22、度量是以投入工作量以投入工作量为为依据的依据的软件开发活动软件开发活动的度量和的度量和开发成果开发成果质量的度量。质量的度量。 为什么要对软件进行度量为什么要对软件进行度量1.2.2 面向规模的度量面向规模的度量 面向功能的度量面向功能的度量 软件质量的度量软件质量的度量 在软件工程过程中使用度量在软件工程过程中使用度量271.2.1 为什么要对软件进行度量为什么要对软件进行度量表明表明软件产品的质量软件产品的质量;弄清弄清软件开发人员的生产率软件开发人员的生产率;给出使用了给出使用了新的软件工程方法和工具新的软件工程方法和工具所所得到的(在生产率和质量两方面)的得到的(在生产率和质量两方面)
23、的效效益益;建立建立项目估算项目估算的的“基线基线”;帮助帮助调整对新的工具调整对新的工具和和附加培训的要求;附加培训的要求;在项目中辅助决策在项目中辅助决策。28度量的方式度量的方式 在物理世界中的度量有两种方式。在物理世界中的度量有两种方式。 直接度量(如度量一个螺栓的长度);直接度量(如度量一个螺栓的长度); 间接度量(如用次品率来度量生产出间接度量(如用次品率来度量生产出的螺栓质量)。的螺栓质量)。软件度量也同样分为两类:软件度量也同样分为两类:直接度量直接度量与与间接度量间接度量。软件工程过程的直接度量包括软件工程过程的直接度量包括所投入的所投入的成本成本和和工作量工作量。29软件产
24、品的直接度量包括软件产品的直接度量包括产生的代码行产生的代码行数数(LOC)、)、执行速度执行速度、存储量大小存储量大小、在某种时间周期中报告的差错数在某种时间周期中报告的差错数。软件产品的间接度量包括软件产品的间接度量包括功能性功能性、复杂复杂性性、效率效率、可靠性可靠性、可维护性可维护性和和许多其许多其它的质量特性它的质量特性。只要事先建立只要事先建立特定的度量规程特定的度量规程,很容易,很容易做到做到直接度量直接度量软件所需要的软件所需要的成本成本和和工作工作量量、产生的代码行数产生的代码行数等。等。30软件度量领域的分类软件度量领域的分类面向人的度量面向人的度量面向功能的度量面向功能的
25、度量面向规模的度量面向规模的度量生产率度量生产率度量质量度量质量度量技术度量技术度量321.2.2 面向规模的度量面向规模的度量面向规模的度量面向规模的度量是对是对软件软件和和软件开发过软件开发过程程的直接度量。的直接度量。可以建立一个可以建立一个面向规模面向规模的的数据表格数据表格来记来记录项目的某些信息。录项目的某些信息。该表格列出了该表格列出了在过去几年完成的每一个在过去几年完成的每一个软件开发项目软件开发项目和和关于这些项目的相应面关于这些项目的相应面向规模的数据向规模的数据。35面向规模的数据表格面向规模的数据表格项目项目项目项目 工作量工作量工作量工作量 元元元元 KLOC KLO
26、C 文档页数文档页数文档页数文档页数 错误数错误数错误数错误数 人数人数人数人数aaa-aaa-aaa-aaa-01 24 168 12.1 365 29 301 24 168 12.1 365 29 3ccc-ccc-ccc-ccc-04 62 440 27.2 1224 86 504 62 440 27.2 1224 86 5fff-fff-fff-fff-03 43 314 20.2 105003 43 314 20.2 1050 64 664 6 36根据数据表格可以对所有的项目计算出根据数据表格可以对所有的项目计算出平均值:平均值: 生产率生产率 KLOCPM(人月)人月) 质量质量
27、 错误数错误数KLOC 成本成本 元元LOC 文档文档 文档页数文档页数KLOC391.2.3 面向功能的度量面向功能的度量面向功能的软件度量是对面向功能的软件度量是对软件软件和和软件开软件开发过程发过程的的间接度量间接度量。面向功能度量主要考虑面向功能度量主要考虑程序的程序的“功能性功能性”和和“实用性实用性”,而不是对而不是对 LOC计数计数。该度量是一种叫做该度量是一种叫做功能点方法功能点方法的生产率的生产率度量法,利用度量法,利用软件信息域软件信息域中的中的一些计数一些计数和和软件复杂性估计软件复杂性估计的的经验关系式经验关系式而导出而导出功能点功能点 FP。40面向功能的数据表格面向
28、功能的数据表格信息域参数信息域参数用户输入数用户输入数 3 4 6 =用户输出数用户输出数 4 5 7 =用户查询数用户查询数 3 4 6 =文文 件件 数数 7 10 15 = 外部接口数外部接口数 5 7 10 =总总 计计 数数计数计数 加加 权权 因因 数数简单简单 中间中间 复杂复杂 加权计数加权计数41功能点计算功能点计算确定确定五个信息域五个信息域的特征,并在表格中的特征,并在表格中相应位置给出计数。相应位置给出计数。1)用户输入数:用户输入数:各个用户输入是各个用户输入是面向面向不同应用的输入数据不同应用的输入数据。2)用户输出数:用户输出数:各个用户输出是各个用户输出是面向面
29、向应用的输出信息应用的输出信息,包括,包括报告报告,屏幕屏幕信息信息,错误信息错误信息等。等。423)用户查询数:用户查询数:查询是一种联机的交查询是一种联机的交互操作,每次询问互操作,每次询问/响应都应计数。响应都应计数。4)文件数:文件数:每一个逻辑文件都应计数。每一个逻辑文件都应计数。逻辑文件可以是一个大数据库的一逻辑文件可以是一个大数据库的一部分,可以是一个单独的文件。部分,可以是一个单独的文件。5)外部接口数:外部接口数:与系统中其他设备通与系统中其他设备通过外部接口读写信息次数均应计数。过外部接口读写信息次数均应计数。一旦收集到上述数据,就可以计算出一旦收集到上述数据,就可以计算出
30、与每一个计数相关的复杂性值与每一个计数相关的复杂性值。43一个信息域是一个信息域是简单的简单的、平均的平均的还是还是复杂复杂的的,由使用功能点方法的机构自行确定,由使用功能点方法的机构自行确定,从而计算出加权计数。从而计算出加权计数。计算功能点,使用如下的关系式计算功能点,使用如下的关系式:FP 总计数总计数(0.650.01SUM(Fi)总计数是所有加权计数项的和;总计数是所有加权计数项的和;SUM(Fi) 是求和函数是求和函数: Fi(i1.14)是是复杂性校正值复杂性校正值,它们应通过逐一回答如,它们应通过逐一回答如下提问来确定。下提问来确定。44复杂性校正值复杂性校正值 Fi的取值的取
31、值0.5: = 0 没有影响没有影响 = 1 偶然的偶然的 = 2 适中的适中的 = 3 普通的普通的 = 4 重要的重要的 = 5 极重要的极重要的F1 系统是否需要系统是否需要可靠的备份可靠的备份和和恢复恢复?F2 系统系统是否需要是否需要数据通信数据通信?F3 系统系统是否有是否有分布处理的功能分布处理的功能?F4 在系统中在系统中是否是否性能成为关键要素性能成为关键要素?F5 系统系统是否是否运行在高度实用化的操作环境运行在高度实用化的操作环境中中?45F6 系统系统是否需要是否需要联机数据输入联机数据输入?F7 联机数据输入是否需要联机数据输入是否需要建立多重窗口建立多重窗口?F8
32、主文件是否可以主文件是否可以在线更新在线更新?F9 输入输入、输出输出、文件文件、查询界面查询界面是否是否复复 杂杂?F10 内部处理过程内部处理过程是否是否复杂复杂?F11 程序代码程序代码是否是否可复用可复用?F12 设计中是否包括了设计中是否包括了转移转移和和安装安装?F13 系统是否设计成可以系统是否设计成可以重复安装在不同重复安装在不同 站点中站点中? 46F14 系统是否设计成系统是否设计成易修改易修改和和易使用易使用?一旦计算出一旦计算出功能点功能点,就可仿照,就可仿照LOC的方的方式式度量软件的生产率、质量和其它属性:度量软件的生产率、质量和其它属性: 生产率生产率 FPPM(
33、人月)(人月) 质量质量 错误数错误数FP 成本成本 元元FP 文档文档 文档页数文档页数FP47功能点度量功能点度量是为了是为了商用信息系统应用商用信息系统应用而而设计的。设计的。特征点度量特征点度量(Feature Points)可以用于可以用于系统系统和和工程软件应用工程软件应用特征点度量适合于特征点度量适合于算法复杂性高算法复杂性高的应用。的应用。而实时处理、过程控制、嵌入式软件应而实时处理、过程控制、嵌入式软件应用的算法复杂性都偏高,因此适合于特用的算法复杂性都偏高,因此适合于特征点度量。征点度量。48为了计算特征点,可以象为了计算特征点,可以象功能点计算功能点计算那那样,样,对对信
34、息域值信息域值进行计数和加权进行计数和加权。此外,。此外,特征点度量要对一个新的软件特征特征点度量要对一个新的软件特征 “算算法法” 进行计数进行计数。计算特征点可使用一个计算表格。对于计算特征点可使用一个计算表格。对于每一个度量参数只使用一个权值,并且每一个度量参数只使用一个权值,并且使用使用 FP总计数总计数(0.650.01SUM(Fi) 来计算总的特征点值。来计算总的特征点值。49特征点度量计算表格特征点度量计算表格度量参数度量参数 计数计数 权值权值 加权计数加权计数用户输入数用户输入数 4 =用户输出数用户输出数 5 =用户查询数用户查询数 4 =文文 件件 数数 7 = 外部接口
35、数外部接口数 7 =算算 法法 3 =总总 计计 数数501.2.4 软件质量的度量软件质量的度量质量度量贯穿于软件工程的全过程中质量度量贯穿于软件工程的全过程中以以及及软件交付用户使用之后软件交付用户使用之后。在在软件交付之前软件交付之前得到的度量可作为判断得到的度量可作为判断设计和测试质量好坏的依据。这一类度设计和测试质量好坏的依据。这一类度量包括程序复杂性、有效的模块性和总量包括程序复杂性、有效的模块性和总的程序规模。的程序规模。在在软件交付之后软件交付之后的度量则把注意力集中的度量则把注意力集中于还未发现的差错数和系统的可维护性于还未发现的差错数和系统的可维护性方面。方面。51使用得最
36、广泛软件质量的事后度量包括使用得最广泛软件质量的事后度量包括正确性正确性、可维护性可维护性、完整性完整性和和可使用可使用性性。1)正确性:正确性:一个程序必须一个程序必须正确地运行正确地运行,并并为它的用户提供某些输出为它的用户提供某些输出。正确性。正确性要求软件执行所要求的功能。要求软件执行所要求的功能。正确性正确性的度量的度量是是每千代码行每千代码行(KLOC)的差错数的差错数,其中其中将差错定义为已被证实是不符合将差错定义为已被证实是不符合需求的缺陷需求的缺陷。522)可维护性:可维护性:软件维护比其它的软件工软件维护比其它的软件工程活动需要更多的工作量。还没有一程活动需要更多的工作量。
37、还没有一种方法可以直接度量可维护性,种方法可以直接度量可维护性,必须必须采取间接度量采取间接度量。 一种简单的面向时间的度量一种简单的面向时间的度量: 平均变平均变 更等待时间更等待时间MTTC。这个时间包括这个时间包括分分析变更要求、设计适当修改、实现变析变更要求、设计适当修改、实现变更并测试、把变更发送给所有用户更并测试、把变更发送给所有用户。 一个可维护的程序与不可维护的程序一个可维护的程序与不可维护的程序相比,应有较低的相比,应有较低的MTTC。 533)完整性:完整性:完整性完整性度量一个系统抗拒对度量一个系统抗拒对它的安全性攻击它的安全性攻击(事故的和人为的)(事故的和人为的)的能
38、力的能力。软件的所有三个成分。软件的所有三个成分程序程序、数据数据和和文档文档都会遭到攻击。都会遭到攻击。 度量度量完整性完整性,需要定义两个附加的属,需要定义两个附加的属性:性:危险性危险性和和安全性安全性。 危险性危险性是是特定类型的攻击将在一给定特定类型的攻击将在一给定时间内发生的概率时间内发生的概率, 安全性安全性是是排除特定类型攻击的概率排除特定类型攻击的概率。54 一个系统的完整性可定义为一个系统的完整性可定义为 完整性完整性(1危险性危险性)(1安全性安全性) 其中,对每一个攻击的其中,对每一个攻击的危险性危险性和和安全安全性性都进行累加。都进行累加。4)可使用性:可使用性:如果
39、一个程序不具有如果一个程序不具有“用用户友好性户友好性”,即使它所执行的功能很,即使它所执行的功能很有价值,也常常会失败。有价值,也常常会失败。 可使用性量化可使用性量化“用户友好性用户友好性”,并依,并依据据以下四个特征进行度量:以下四个特征进行度量:55为学习系统所需要的为学习系统所需要的体力上的体力上的和和智智力上的力上的技能;技能;为达到适度有效使用系统所需要的为达到适度有效使用系统所需要的时间;时间;当软件被某些人适度有效地使用时当软件被某些人适度有效地使用时所度量的所度量的在生产率方面的净增值在生产率方面的净增值;用户角度对用户角度对系统的主观评价系统的主观评价 (可以可以通过问题
40、调查表得到通过问题调查表得到)。56协调不同的度量方法协调不同的度量方法代码行数代码行数和和功能点功能点之间的关系依赖于用之间的关系依赖于用来实现软件的来实现软件的程序设计语言程序设计语言和和设计质量设计质量。下面给出使用各种程序设计语言建立一下面给出使用各种程序设计语言建立一个功能点所需要的平均代码行数的粗略个功能点所需要的平均代码行数的粗略估算。估算。57建立一个功能点所需平均代码行数建立一个功能点所需平均代码行数程序设计语言程序设计语言LOC/FP(平均值)(平均值)汇编语言汇编语言320C128COBOL106FOETRAN106Pascal90C+64Ada9553Vasual Ba
41、sic32Smalltalk22PowerBuilder16SQL1258影响软件生产率的重要因素影响软件生产率的重要因素人的因素:人的因素:软件开发组织的规模和专长;软件开发组织的规模和专长;问题因素:问题因素:问题的复杂性和对设计限制,问题的复杂性和对设计限制,以及需求的变更次数;以及需求的变更次数;过程因素:过程因素:使用的分析与设计技术、语使用的分析与设计技术、语言和言和CASE工具的有效性,及评审技术;工具的有效性,及评审技术;产品因素:产品因素:计算机系统的可靠性和性能;计算机系统的可靠性和性能;资源因素:资源因素:CASE工具、硬件和软件资工具、硬件和软件资源的有效性。源的有效性
42、。591.2.5 在软件工程过程中使用度量在软件工程过程中使用度量建立基线建立基线uu 为了将为了将LOC和和FP用于软件估算技用于软件估算技术中,必须建立术中,必须建立历史数据基线历史数据基线。uu 根据历史经验,根据历史经验,在软件工程过程的在软件工程过程的衔接处划出一条基线衔接处划出一条基线,在此基线上,在此基线上附有一些用于度量的经验目标信息附有一些用于度量的经验目标信息,作为工程过程评估的依据,判断工作为工程过程评估的依据,判断工程过程的完成是否达到预想的要求程过程的完成是否达到预想的要求。60质量度量数据一旦收集到,软件开发组质量度量数据一旦收集到,软件开发组织就可以织就可以根据它
43、们来调整其软件工程项根据它们来调整其软件工程项目目,以消除那些对软件开发有重大影响以消除那些对软件开发有重大影响的差错产生的根源的差错产生的根源。大多数软件开发人员都希望了解:大多数软件开发人员都希望了解: 哪些用户需求哪些用户需求可能会可能会变更变更? 系统中系统中哪些模块哪些模块容易容易出错出错? 对对每一个模块每一个模块要要做多少测试做多少测试? 在测试时能够在测试时能够预计多少错误预计多少错误?611.3 软件项目的估算软件项目的估算软件项目管理过程开始于项目计划。软件项目管理过程开始于项目计划。在做项目计划时,第一项活动就是在做项目计划时,第一项活动就是估算估算。在做估算时往往存在某
44、些不确定性,使在做估算时往往存在某些不确定性,使得软件项目管理人员无法正常进行管理得软件项目管理人员无法正常进行管理而导致产品迟迟不能完成。而导致产品迟迟不能完成。现在已使用的实用技术是现在已使用的实用技术是时间时间和和工作量工作量估算。估算。631.3.1 估算对风险的影响估算对风险的影响低风险低风险区区项目复杂性项目复杂性项目结构化、规约项目结构化、规约的不确定程度的不确定程度项目工作量大小项目工作量大小64项目复杂性项目复杂性对于对于增加软件计划的不确定性增加软件计划的不确定性影响很大影响很大。复杂性越高,估算的风险就越。复杂性越高,估算的风险就越高。高。项目规模项目规模对于软件估算的精
45、确性和功效影对于软件估算的精确性和功效影响也比较大响也比较大。随着软件规模的扩大,问题。随着软件规模的扩大,问题分解会更加困难。分解会更加困难。项目的规模越大项目的规模越大,开发开发工作量越大工作量越大,估算的风险越高估算的风险越高。项目的结构化程度项目的结构化程度也影响项目估算的风险。也影响项目估算的风险。随着结构化程度的提高,进行精确估算的随着结构化程度的提高,进行精确估算的能力就能提高,而风险将减少能力就能提高,而风险将减少。65历史信息的有效性历史信息的有效性也也影响估算的风险影响估算的风险。对以往项目进行综合度量,可借用来比对以往项目进行综合度量,可借用来比较准确地进行估算,安排进度
46、以避免重较准确地进行估算,安排进度以避免重走过去的弯路,而总的风险也减少了。走过去的弯路,而总的风险也减少了。如果如果对软件项目的作用范围还不十分清对软件项目的作用范围还不十分清楚楚,或者,或者用户的要求经常变更用户的要求经常变更,都会导,都会导致对致对软件项目所需资源软件项目所需资源、成本成本、进度进度的的估算频频变动,增加估算的风险。估算频频变动,增加估算的风险。计划人员应当要求计划人员应当要求在软件的规格说明中在软件的规格说明中给出完备的功能给出完备的功能、性能性能、接口的定义接口的定义。661.3.2 软件成本和工作量的估算技术软件成本和工作量的估算技术软件成本和工作量的估算中变化的东
47、西软件成本和工作量的估算中变化的东西太多,太多,人人、技术技术、环境环境、政治政治,都会,都会影影响软件最终成本和工作量响软件最终成本和工作量。软件项目的估算能够通过一系列系统化软件项目的估算能够通过一系列系统化的步骤,在可接受的风险范围内提供估的步骤,在可接受的风险范围内提供估算结果。算结果。成本估算必须成本估算必须“事前事前”给出。时间越久,给出。时间越久,了解得越多,估算中出现的严重误差就了解得越多,估算中出现的严重误差就越少。越少。67分解技术分解技术当一个当一个待解决的问题过于复杂待解决的问题过于复杂时,我们时,我们可以把它可以把它进一步分解进一步分解,直到,直到分解后的子分解后的子
48、问题变得容易解决问题变得容易解决为止。然后,为止。然后,分别解分别解决每一个子问题决每一个子问题,并,并将这些子问题的解将这些子问题的解答综合起来答综合起来,从而,从而得到原问题的解答得到原问题的解答。68 LOC和和FP估算估算在软件项目估算中,在两个方面使用了在软件项目估算中,在两个方面使用了LOC和和FP数据:数据:uu 把把LOC和和FP数据当做一个估算变量,数据当做一个估算变量,用于用于量度软件每一个元素的规模量度软件每一个元素的规模。uu LOC和和FP数据作为从过去项目中收数据作为从过去项目中收集到的集到的基线数据基线数据,与其它估算变量联,与其它估算变量联合使用合使用, 进行成
49、本和工作量的估算进行成本和工作量的估算。69LOC和和FP的共性在于的共性在于: uu 给出一个有界的软件范围的叙述给出一个有界的软件范围的叙述uu 由此叙述由此叙述把软件分解成一些小的可分把软件分解成一些小的可分别独立进行估算的子功能别独立进行估算的子功能uu 对每一个子功能对每一个子功能估算估算LOC或或FPuu 把基线生产率度量把基线生产率度量(如如LOCPM或或FPPM) 用做特定的估算变量,用做特定的估算变量,导出导出子功能的成本或工作量子功能的成本或工作量uu综合子功能的估算综合子功能的估算得到得到整个项目的总整个项目的总估算估算。70项目计划人员可项目计划人员可对每一个分解的功能
50、提对每一个分解的功能提出一个有代表性的估算值范围出一个有代表性的估算值范围。利用历史数据利用历史数据或或凭实际经验凭实际经验(当其它的(当其它的方法失效时),方法失效时),对每个功能分别按对每个功能分别按最佳最佳的的、可能的可能的、悲观的悲观的三种情况给出三种情况给出LOC或或FP估计值估计值。记作。记作a、m、b。接着计算接着计算LOC或或FP的的期望值期望值 E。 E (a4mb)6 72所有子功能的总估算变量值所有子功能的总估算变量值除以除以相应于相应于该估算变量的平均生产率度量该估算变量的平均生产率度量得到得到项目项目的总工作量的总工作量。例如,若假定总的例如,若假定总的FP估算值估算
51、值是是310,基基于过去项目的平均于过去项目的平均FP生产率生产率是是5.5FPPM,则则项目的总工作量项目的总工作量是:是: 工作量工作量 3105.5 56 PM作为作为LOC和和FP估算的实例,考察一估算的实例,考察一 个个为为CAD应用而开发的软件包。应用而开发的软件包。73系统定义评审指明,系统定义评审指明,软件是在一个工作软件是在一个工作站上运行,其接口必须使用各种计算机站上运行,其接口必须使用各种计算机图形设备,包括鼠标器、数字化仪、高图形设备,包括鼠标器、数字化仪、高分辩率彩色显示器和激光打印机。分辩率彩色显示器和激光打印机。在这个实例中,使用在这个实例中,使用LOC做为估算变
52、量。做为估算变量。根据系统规格说明根据系统规格说明, 软件范围软件范围的初步叙的初步叙述如下述如下“软件将从操作员那里接收软件将从操作员那里接收2 维或维或 3 维几维几何数据何数据。 操作员通过操作员通过用户界面用户界面与与 CAD系统系统交互并控制它交互并控制它,这种用户界面将表,这种用户界面将表74 现出很好的人机接口设计特性。所有的现出很好的人机接口设计特性。所有的几何数据和其它支持信息保存在一个几何数据和其它支持信息保存在一个CAD数据库数据库内。要开发一些内。要开发一些设计分析模设计分析模块块以产生在各种图形设备上显示的输出。以产生在各种图形设备上显示的输出。软件要设计得软件要设计
53、得能控制并与能各种外部设能控制并与能各种外部设备备,包括鼠标器、数字化仪、激光打印,包括鼠标器、数字化仪、激光打印机和绘图仪机和绘图仪交互交互。”75经过分解经过分解, 识别出下列主要软件功能:识别出下列主要软件功能:uu 用户界面和控制功能用户界面和控制功能uu 二维几何分析二维几何分析uu 三维几何分析三维几何分析uu 数据库管理数据库管理uu 计算机图形显示功能计算机图形显示功能uu 外设控制外设控制PCuu 设计分析模块设计分析模块通过分解,可得到如下估算表通过分解,可得到如下估算表76771.3.4 软件开发成本估算方法软件开发成本估算方法软件开发成本主要是指软件开发成本主要是指软件
54、开发过程中软件开发过程中所花费的工作量及相应的代价所花费的工作量及相应的代价。它不包。它不包括原材料和能源的消耗,主要是人的劳括原材料和能源的消耗,主要是人的劳动的消耗。动的消耗。人的劳动消耗所需代价就是软件产品的人的劳动消耗所需代价就是软件产品的开发成本。开发成本。软件产品开发成本的计算方法不同于其软件产品开发成本的计算方法不同于其它物理产品成本的计算。它物理产品成本的计算。79软件的开发成本是软件的开发成本是以一次性开发过程所以一次性开发过程所花费的代价花费的代价来计算的。来计算的。软件开发成本的估算,应是从软件开发成本的估算,应是从软件计划软件计划、需求分析需求分析、设计设计、编码编码、
55、单元测试单元测试、组组装测试装测试到到确认测试确认测试,整个软件开发全过,整个软件开发全过程所花费的代价作为依据的。程所花费的代价作为依据的。80对于一个大型的软件项目,由于对于一个大型的软件项目,由于项目的项目的复杂性复杂性,开发成本的估算不是一件简单,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要的事,要进行一系列的估算处理。主要靠靠分解分解和和类推类推。基本估算方法分为三类。基本估算方法分为三类。uu 自顶向下的估算方法自顶向下的估算方法uu 自底向上的估计法自底向上的估计法uu 差别估计法差别估计法811. 自顶向下的估算方法自顶向下的估算方法这种方法的主要思想是这种方法
56、的主要思想是从项目的整体出从项目的整体出发发,进行类推进行类推。估算人员根据估算人员根据以前已完成项目所消耗的以前已完成项目所消耗的总成本总成本(或总工作量或总工作量),),推算将要开发推算将要开发的软件的总成本的软件的总成本(或总工作量或总工作量),然后),然后按比例将它分配到各开发任务单元中去按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。再来检验它是否能满足要求。82832. 自底向上的估计法自底向上的估计法这种方法的主要思想是把这种方法的主要思想是把待开发的软件待开发的软件细分细分,直到每一个子任务都已经明确所直到每一个子任务都已经明确所需要的开发工作量需要的开发工作量,
57、然后,然后把它们加起来把它们加起来,得到软件开发的总工作量得到软件开发的总工作量。它的优点是估算各个部分的准确性高。它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相互联系所缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许多与软件开发需要的工作量,还缺少许多与软件开发有关的系统级工作量有关的系统级工作量.843. 差别估计法差别估计法这种方法综合了上述两种方法的优点,这种方法综合了上述两种方法的优点,其主要思想是其主要思想是把待开发的软件项目与过把待开发的软件项目与过去已完成的软件项目进行类比去已完成的软件项目进行类比,从其开从其开发的各个子任务中区分出类似的部分和发的各个子
58、任务中区分出类似的部分和不同的部分不同的部分。类似的部分按实际量进行计算类似的部分按实际量进行计算,不同的不同的部分则采用相应方法进行估算部分则采用相应方法进行估算。854. 专家判定技术专家判定技术由多位专家进行成本估算。由多位专家进行成本估算。单独一位专家可能会有种种偏见,单独一位专家可能会有种种偏见,最好最好由多位专家进行估算由多位专家进行估算,取得多个估算值取得多个估算值。有多种方法把这些估算值合成一个估算有多种方法把这些估算值合成一个估算值。值。一种方法是一种方法是简单地求各估算值的中值或简单地求各估算值的中值或平均值平均值。其优点是简便。缺点是可能会。其优点是简便。缺点是可能会由于
59、受一、二个极端估算值的影响而产由于受一、二个极端估算值的影响而产生严重的偏差。生严重的偏差。86一种方法是一种方法是召开小组会召开小组会,使各位专家们使各位专家们统一于或至少同意某一个估算值统一于或至少同意某一个估算值。优点。优点是可以摈弃蒙昧无知的估算值,缺点是是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权威或政治因素的影一些组员可能会受权威或政治因素的影响。响。875. Deiphi技术技术标准标准Deiphi技术技术 组织者发给每位专家一份组织者发给每位专家一份软件系统软件系统规格说明书规格说明书和一张和一张记录估算值的表格记录估算值的表格,请他们进行估算。请他们进行估算。 专家详
60、细研究软件规格说明书的内专家详细研究软件规格说明书的内容,对该软件提出容,对该软件提出三个规模三个规模的估算值,的估算值,即:即:ai (最小最小), mi (可能可能), bi (最大最大), 无记名地填写表格无记名地填写表格88 组织者对专家们填在表格中的答复组织者对专家们填在表格中的答复进进行整理行整理: a. 计算各专家估算的期望值计算各专家估算的期望值 Ei; b. 对专家的估算结果分类摘要对专家的估算结果分类摘要。 专家对此估算值另做一次估算专家对此估算值另做一次估算。 在综合专家估算结果的基础上,在综合专家估算结果的基础上,组织组织专家再次无记名地填写表格专家再次无记名地填写表格
61、。比较两。比较两次估算的结果。若差异很大,要通过次估算的结果。若差异很大,要通过查询找出差异的原因。查询找出差异的原因。89 上述过程可重复多次。上述过程可重复多次。最终可获得一最终可获得一个得到多数专家共识的软件规模个得到多数专家共识的软件规模(源代源代码行数码行数)。最后,通过与历史资料进行类比,根据最后,通过与历史资料进行类比,根据过去完成软件项目的规模和成本等信息,过去完成软件项目的规模和成本等信息,推算出该软件每行源代码所需要的成本。推算出该软件每行源代码所需要的成本。然后再乘以该软件源代码行数的估算值,然后再乘以该软件源代码行数的估算值,就可得到该软件的成本估算值。就可得到该软件的
62、成本估算值。901.3.5 软件开发成本估算的经验模型软件开发成本估算的经验模型软件开发成本估算是软件开发成本估算是依据开发成本估算依据开发成本估算模型进行估算模型进行估算的。的。开发成本估算模型通常开发成本估算模型通常采用经验公式采用经验公式来来预测软件项目计划所需要的成本预测软件项目计划所需要的成本、工作工作量和进度数据量和进度数据。用以支持大多数模型的经验数据都是用以支持大多数模型的经验数据都是从从有限的一些项目样本有限的一些项目样本中得到的。中得到的。911. IBM模型模型(Walston-Felix) E 5.2(KLOC)0.91 D 4.1(KLOC) 0.36 14.47E0
63、.35 S 0.54E0.6 DOC 49(KLOC) 1.01KLOC是是千千源代码行数源代码行数,E是是工作量工作量 (PM),D 是是项目持续时间项目持续时间(月月),S 是是人员需要人员需要量量 (人人),DOC是是文档数量文档数量 (页页)。92IBM模型是模型是静态单变量模型静态单变量模型。在此模型中,一般指在此模型中,一般指一条机器指令为一条机器指令为 一一行源代码行源代码。一个软件的源代码行数一个软件的源代码行数不包括程序注释不包括程序注释、作业命令作业命令、调试程序在内调试程序在内。对于非机器指令编写的源程序,例如汇编对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应
64、语言或高级语言程序,应转换成机器指令转换成机器指令源代码行数源代码行数来考虑。来考虑。93转换系数表转换系数表定义定义: 转换系数机器指令条数非机器转换系数机器指令条数非机器语言执行步数。语言执行步数。94其他静态单变量模型其他静态单变量模型面向规模的估算面向规模的估算 E = 5.5 + 0.73(KLOC)1.16 Beiley-Basili模型模型 E = 3.2(KLOC)1.05 Boehm的简单模型的简单模型 E = 5.288(KLOC)1.047 Doty模型模型, 针对针对KLOC9的情况的情况95面向功能点的估算面向功能点的估算 E = - -13.39 + 0.0545F
65、P Albrecht-Gaffney模型模型 E = 60.627.72810-8FP3 Kemerer模型模型 E = 585.7 + 15.12FP Maston-Barnrtt-Mellichamp模型模型962. Putnam 模型模型Putnam模型是一种模型是一种动态多变量模型动态多变量模型。适。适用于大型项目,但也可以应用在一些较用于大型项目,但也可以应用在一些较小的软件项目中。小的软件项目中。它是它是假定在软件开发的整个生存期中工假定在软件开发的整个生存期中工作量有特定的分布作量有特定的分布。大型软件项目的开发工作量分布可以用大型软件项目的开发工作量分布可以用Rayleigh-
66、Norden曲线曲线表示。表示。97系统定义系统定义系统定义系统定义功能设计功能设计功能设计功能设计规格说明规格说明规格说明规格说明系统开发系统开发系统开发系统开发系统维护与支持系统维护与支持系统维护与支持系统维护与支持工作量(人月)工作量(人月)工作量(人月)工作量(人月)时间时间时间时间系统定义系统定义系统定义系统定义功能设计功能设计功能设计功能设计规格说明规格说明规格说明规格说明安装安装安装安装测试与确认测试与确认测试与确认测试与确认设计与编码设计与编码设计与编码设计与编码开发工作开发工作 = 总工作量的总工作量的40%维护与支持工作维护与支持工作 = 总工作量的总工作量的60%98用用
67、Rayleigh-Norden曲线可以导出一个曲线可以导出一个“软软件方程件方程”td 是是开发持续时间开发持续时间 (年年), K是是软件开发与软件开发与维护在内的整个生存期所花费的工作量维护在内的整个生存期所花费的工作量 (人年人年),L是是源代码行数源代码行数 (LOC),Ck是是技技术状态常数术状态常数,因开发环境而异因开发环境而异。99技术状态常数技术状态常数Ck的取值的取值Ck的的典型值典型值开发开发环境环境开开 发发 环环 境境 举举 例例2000差差没有系统的开发方法,缺乏文档没有系统的开发方法,缺乏文档和复审,批处理方式。和复审,批处理方式。8000好好有合适的系统开发方法,
68、有充分有合适的系统开发方法,有充分的文档和复审,交互执行方式。的文档和复审,交互执行方式。11000优优有自动开发工具和技术有自动开发工具和技术1003. COCOMO模型模型 (COnstructive COst MOdel)结构型成本估算模型是一种结构型成本估算模型是一种精确精确、易于易于使用使用的成本估算方法。的成本估算方法。DSI(源指令条数源指令条数)定义为)定义为代码代码的的源程源程序行数序行数。若一行有两个语句,则算做一。若一行有两个语句,则算做一条指令。它条指令。它包括作业控制语句包括作业控制语句和和格式语格式语句句,但不包括注释语句。但不包括注释语句。 KDSI1024DSI
69、。101MM(度量单位为度量单位为人月人月)表示)表示开发工作开发工作量量。TDEV(度量单位为度量单位为月月)表示)表示开发进度开发进度。它由工作量决定。它由工作量决定。软件开发项目的分类软件开发项目的分类软件开发项目的软件开发项目的总体类型总体类型:uu 组织型组织型uu 嵌入型嵌入型uu 半独立型半独立型102COCOMO模型的分类模型的分类COCOMO模型模型按其详细程度按其详细程度分成三级:分成三级:uu 基本基本COCOMO模型模型uu 中间中间COCOMO模型模型uu 详细详细COCOMO模型模型基本基本COCOMO模型模型是是静态单变量模型静态单变量模型,用用源代码行数源代码行
70、数(LOC) 为为自变量自变量的经验函数的经验函数计算软件开发工作量。计算软件开发工作量。103中间中间COCOMO模型模型在用在用LOC为为自变量自变量的函数计算软件开发工作量(称为名义的函数计算软件开发工作量(称为名义工作量)的基础上,工作量)的基础上,用涉及产品用涉及产品、硬件硬件、人员人员、项目等方面的影响因素调整工作项目等方面的影响因素调整工作量估算量估算。详细详细COCOMO模型模型包括中间包括中间COCO MO模型的所有特性,但用上述各种影模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计软件工程过
71、程中每一步骤(分析、设计等)的影响。等)的影响。104基本基本COCOMO模型模型基本基本COCOMO模型的工作量和进度公式模型的工作量和进度公式105中间中间COCOMO模型模型进一步考虑进一步考虑15种影响软件工作量的因素种影响软件工作量的因素,通过通过定下乘法因子定下乘法因子,修正修正COCO MO工工作量公式和进度公式作量公式和进度公式,可以更合理地估,可以更合理地估算软件(各阶段)的工作量和进度。算软件(各阶段)的工作量和进度。中间中间COCOMO模型的名义工作量与进模型的名义工作量与进度公式如下所示。度公式如下所示。106中间中间COCOMO模型模型名义工作量与进度公式名义工作量与
72、进度公式10715种影响软件工作量的因素种影响软件工作量的因素 fi产品因素:产品因素:软件可靠性、数据库规模、软件可靠性、数据库规模、产品复杂性产品复杂性硬件因素:硬件因素:执行时间限制、存储限制、执行时间限制、存储限制、虚拟机易变性、环境周转时间虚拟机易变性、环境周转时间人的因素:人的因素:分析员能力、应用领域实际分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、经验、程序员能力、虚拟机使用经验、程序语言使用经验程序语言使用经验项目因素:项目因素:现代程序设计技术、软件工现代程序设计技术、软件工具的使用、开发进度限制具的使用、开发进度限制108工作量因素工作量因素 fi很低很低低低
73、正常正常高高很高很高 超高超高产品因素产品因素软件可靠性软件可靠性0.750.88 1.001.151.40数据库规模数据库规模0.94 1.001.081.16产品复杂性产品复杂性0.700.85 1.001.151.301.65计算机因素计算机因素执行时间限制执行时间限制1.001.111.301.66存储限制存储限制1.001.061.211.56虚拟机易变性虚拟机易变性0.87 1.001.151.30环境周转时间环境周转时间0.87 1.001.071.15虚拟机是指为完成某一软件任务所使用硬、软件的结合。虚拟机是指为完成某一软件任务所使用硬、软件的结合。109工作量因素工作量因素
74、fi很低很低低低正常正常高高很高很高 超高超高人员因素人员因素分析员能力分析员能力1.46 1.000.860.71应用领域经验应用领域经验1.291.13 1.000.910.82程序员能力程序员能力1.421.17 1.000.860.70虚拟机使用经验虚拟机使用经验 1.211.10 1.000.90程序语言经验程序语言经验1.411.07 1.000.95项目因素项目因素先进编程技术先进编程技术1.241.10 1.000.910.82使用软件工具使用软件工具1.241.10 1.000.910.83开发进度限制开发进度限制1.231.08 1.001.041.10110此时,工作量计
75、算公式改成此时,工作量计算公式改成例例1. 一个一个 32KDSI 的声音输入系统是一个的声音输入系统是一个输入原型,或是一个可行性表演模型。所输入原型,或是一个可行性表演模型。所需可靠性非常低。把此模型看做半独立型需可靠性非常低。把此模型看做半独立型软件。则有软件。则有 MM 3.0(32)1.12 146又查表知又查表知 f10.75,其它其它 fi1.00,则最则最终有终有MM 1460.75 110.111例例14. 一个规模为一个规模为10KDSI的商用微机远程的商用微机远程通信的通信的嵌入型软件嵌入型软件,使用中间使用中间COCOMO模型模型进行成本估算。进行成本估算。程序名义工作
76、量程序名义工作量 MM 2.8 (10)1.20 44.38(MM)程序实际工作量程序实际工作量 MM 44.38 44.381.17 51.5(MM)112113开发所用时间开发所用时间 TDEV 2.5 (51.5)0.32 8.9 (月月)如果分析员与程序员的工资都按每月如果分析员与程序员的工资都按每月6,000美元计算,则该项目的开发人员的美元计算,则该项目的开发人员的工资总额为工资总额为 51.56,000 309,000 (美元美元)做为对比,现在用做为对比,现在用IBM模型模型计算计算: PM 5.2 (10)0.91 42.27 (人月)人月) D 4.1 (10)0.38 1
77、.84 (月)月) S 0.54 (42.27)0.60 5.1 (人人)114详细详细COCOMO模型模型详细详细COCOMO模型的名义工作量公式模型的名义工作量公式和进度公式与中间和进度公式与中间COCOMO模型相同模型相同。工作量因素分级表分层、分阶段给出。工作量因素分级表分层、分阶段给出。针对每一个影响因素,按针对每一个影响因素,按模块层模块层、子系子系统层统层、系统层系统层,有三张工作量因素分级,有三张工作量因素分级表,供不同层次的估算使用。表,供不同层次的估算使用。每一张表每一张表中工作量因素又按开发各个不同阶段给中工作量因素又按开发各个不同阶段给出出。115例如,关于软件可靠性(
78、例如,关于软件可靠性(RELY)要求要求的工作量因素分级表(子系统层),如的工作量因素分级表(子系统层),如表所示。表所示。使用这些表格,可以比使用这些表格,可以比中间中间COCO MO模型模型更方便、更准确地估算软件开发工更方便、更准确地估算软件开发工作量。作量。116软件可靠性工作量因素分级表软件可靠性工作量因素分级表( (子系统层子系统层) ) 阶段阶段级别级别需求和需求和产品设计产品设计详细详细设计设计编程和编程和单元测试单元测试集成集成及测试及测试综合综合非常低非常低0.800.800.800.600.75低低0.900.900.900.800.88正常正常1.001.001.001
79、.001.00高高1.101.101.101.301.15非常高非常高1.301.301.301.701.401174. COCOMO- -2模型模型COCOMO模型适用于专用的定制的软模型适用于专用的定制的软件项目。件项目。1997年年Boehm等人提出来的等人提出来的COCOMO- -2模型则模型则适用于广泛汇集各种适用于广泛汇集各种技术的软件项目技术的软件项目,如商用软件、面向对,如商用软件、面向对象软件、通过螺旋型或演化型开发模型象软件、通过螺旋型或演化型开发模型制作的软件。制作的软件。COCOMO- -2模型有三种:模型有三种:应用组合模型应用组合模型(用于早期原型)、更详细的(用于
80、早期原型)、更详细的早期设计早期设计模型模型和后续的和后续的后架构模型后架构模型。118应用组合模型应用组合模型该模型用于该模型用于估算原型制作的工作量估算原型制作的工作量。适用场合如:用户界面的原型开发,软适用场合如:用户界面的原型开发,软件和系统交互考虑,性能评估和技术成件和系统交互考虑,性能评估和技术成熟度评价等。熟度评价等。模型使用模型使用“对象点对象点”,而不用,而不用“源代码源代码行行”进行估算。进行估算。对象点与功能点一样,是一种软件间接对象点与功能点一样,是一种软件间接度量。根据度量。根据(用户界面用户界面)屏幕数屏幕数、报表数报表数、建造应用可能需要的构件数建造应用可能需要的
81、构件数来计数。来计数。119数数 据据 表表 的的 数数 量量 和和 来来 源源包含的视图数包含的视图数 总数总数 4 总数总数 8 总数总数 8 0,即软件交付即软件交付前不可能排除所有的错误。随着前不可能排除所有的错误。随着 E 值的值的增加,增加,DFE 会接近。会接近。在软件工程过程中也可以用在软件工程过程中也可以用 DFE 度量。度量。 DFEi = Ei / ( Ei + Ei+1 )其中,其中,Ei 是是活动活动i中发现的缺陷数,中发现的缺陷数,Ei+1 是活动是活动i+1中新发现的缺陷数。应尽可中新发现的缺陷数。应尽可能使能使DFEi 接近接近1,让缺陷在传播到下一,让缺陷在传
82、播到下一个活动之前被排除掉。个活动之前被排除掉。233挣值分析挣值分析 (Earned Value Analysis)挣值分析是一种项目绩效测量技术,它挣值分析是一种项目绩效测量技术,它综合了项目范围、时间和成本数据。综合了项目范围、时间和成本数据。简单地说,挣值是项目进展的测量,它简单地说,挣值是项目进展的测量,它使得我们能够使用定量的分析,而不是使得我们能够使用定量的分析,而不是凭感觉,来评估凭感觉,来评估“完成的百分比完成的百分比”。Fleming和和Koppleman认为挣值分析认为挣值分析“早早在项目进展的前在项目进展的前15%就提供了精确的可就提供了精确的可靠的项目执行状况指示靠的
83、项目执行状况指示”。挣值分析的步骤如下:挣值分析的步骤如下:2341.对对每一个在项目进度表上标明的工作每一个在项目进度表上标明的工作任务确定预定工作的预算成本任务确定预定工作的预算成本BCWS (Budgeted Cost of Work Scheduled)。BCWSi 是是第第 i 个工作任务个工作任务计划的工计划的工作量作量,用人日或人时来计划。,用人日或人时来计划。为确定沿项目进度表的某给定点的为确定沿项目进度表的某给定点的进展情况,进展情况,BCWS是项目进度表中该是项目进度表中该时间点应当完成的所有工作任务时间点应当完成的所有工作任务BCWSi 值值的累加和。的累加和。2352.
84、所有工作任务的所有工作任务的 BCWS 值累加,计算值累加,计算出完成时的预算出完成时的预算BAC (Budget At Comletion):3. BAC = (BCWSk), 对所有任务对所有任务k3.计算已完成工作的预算成本计算已完成工作的预算成本 BCWP (Budgeted Cost of Work Performed),它等于在项目进度表中该时间点已它等于在项目进度表中该时间点已经实际完成的所有工作任务的经实际完成的所有工作任务的 BCWPk的总和。的总和。2364.计算项目的进展指标:计算项目的进展指标:进度绩效指示进度绩效指示(Schedule Performance inde
85、x): SPI = BCWP / BCWS进度偏差进度偏差(Schedule Variance): SV = BCWP - - BCWS预定完成百分比(预定完成百分比(Percent Schedule for Completion): PSC = BCWS / BAC237在给定时间点在给定时间点t 工作完成的百分比工作完成的百分比(Schedule Complete): PC = BCWP / BAC在给定时间点在给定时间点t工作执行的实际成本工作执行的实际成本(Actual Cost of Work Performaed): ACWP = 在该在该时间点时间点t已完成工作已完成工作所花费成本的总和所花费成本的总和成本执行指示成本执行指示(Cost Performance Index): CPI = BCWP / ACWP238成本偏差成本偏差(Cost Variance): CV = BCWP - - ACWP如果如果CPI接近接近1,表明项目在其预定的,表明项目在其预定的预算范围内成本花费比较理想。预算范围内成本花费比较理想。CV则表明在特定项目阶段成本花费的则表明在特定项目阶段成本花费的节省或短缺(相对于计划成本)。节省或短缺(相对于计划成本)。239pwd: yrk_15ds240