《《软件工程管理》.ppt》由会员分享,可在线阅读,更多相关《《软件工程管理》.ppt(211页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程软件工程第十一章第十一章 软件工程管理软件工程管理 11.1 11.1 项目管理过程项目管理过程11.2 11.2 项目启动项目启动11.3 11.3 软件生产率和质量的度量软件生产率和质量的度量11.4 11.4 软件成本和工作量估算软件成本和工作量估算11.5 11.5 成本效益分析成本效益分析11.6 11.6 软件项目组织与计划软件项目组织与计划11.7 11.7 进度安排与跟踪进度安排与跟踪1 1软件工程管理软件工程管理11.1 11.1 项目管理过程项目管理过程n软件项目管理的对象是软件工程项目。涉及的范软件项目管理的对象是软件工程项目。涉及的范围覆盖了整个软件工程过程。围
2、覆盖了整个软件工程过程。n为使软件项目开发获得成功,关键问题是必须对为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、软件项目的工作范围、可能风险、需要资源(人、硬件软件)、要实现的任务、经历的里程碑、硬件软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。花费工作量(成本)、进度安排等做到心中有数。n软件项目管理可以提供这些信息。软件项目管理可以提供这些信息。2 2软件工程管理软件工程管理1.1.什么是项目管理什么是项目管理?n项目管理是指项目管理是指“在项目活动中运用专门的在项目活动中运用专门的知识知识、技能技能、工具工具和和
3、方法方法,使项目能够实现或超过项目,使项目能够实现或超过项目干系人的需要和期限。干系人的需要和期限。”n项目干系人是指参与项目和受项目影响的人,包项目干系人是指参与项目和受项目影响的人,包括项目发起人、项目组、支持人员、客户、最终括项目发起人、项目组、支持人员、客户、最终用户、供应商,项目对手。用户、供应商,项目对手。n项目的核心知识是项目的核心知识是范围范围、时间时间、成本成本和和质量质量。辅。辅助知识是助知识是人力资源管理人力资源管理、风险管理风险管理和和采购管理采购管理。3 3软件工程管理软件工程管理n经过多年的发展,项目管理已经成为一个较为成经过多年的发展,项目管理已经成为一个较为成熟
4、的领域。熟的领域。n美国项目管理协会为此建立了一套美国项目管理协会为此建立了一套项目管理知项目管理知识体系指南识体系指南,作为了解和学习项目管理的知识,作为了解和学习项目管理的知识框架和起点。它包括项目管理引论、框架和起点。它包括项目管理引论、9 大项目管大项目管理知识领域的简要描述以及相关术语。理知识领域的简要描述以及相关术语。n本章将结合软件开发项目的特点,在软件项目管本章将结合软件开发项目的特点,在软件项目管理中全面应用项目管理的理中全面应用项目管理的 9 大块知识领域以及全大块知识领域以及全部的部的 5 个过程组个过程组启动、计划、执行、控制和收启动、计划、执行、控制和收尾。尾。4 4
5、软件工程管理软件工程管理项目管理框架项目管理框架范围范围管理管理时间时间管理管理成本成本管理管理质量质量管理管理人力人力资源资源管理管理沟通沟通管理管理风险风险管理管理采购采购管理管理项目整体管理项目整体管理9大知识领域的核心功能大知识领域的核心功能促成功能促成功能工具和工具和技术技术项目项目成功成功项目项目干系干系人的人的需要需要和期和期望望5 5软件工程管理软件工程管理2.2.项目过程与项目知识领域的关系项目过程与项目知识领域的关系通常项目过程和项目的知识领域的关系如下:通常项目过程和项目的知识领域的关系如下:知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过
6、程执行过程 控制过程控制过程 收尾过程收尾过程项目整体项目整体管理管理项目计划项目计划制定制定项目计划项目计划执行执行整体变更整体变更控制控制范围管理范围管理 起始起始范围计划范围计划范围定义范围定义范围验证范围验证范围变更范围变更控制控制6 6软件工程管理软件工程管理知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过程执行过程 控制过程控制过程 收尾过程收尾过程时间管理时间管理活动定义活动定义活动顺序活动顺序活动历时活动历时估计估计进度安排进度安排进度控制进度控制成本管理成本管理资源计划资源计划成本估算成本估算成本预算成本预算成本控制成本控制质量管理质量管理质量
7、计划质量计划 质量保证质量保证 质量控制质量控制人力资源人力资源管理管理组织计划组织计划成员物色成员物色团队建立团队建立7 7软件工程管理软件工程管理知识领域知识领域 项项目目 过过 程程起始过程起始过程 计划过程计划过程 执行过程执行过程 控制过程控制过程 收尾过程收尾过程沟通管理沟通管理沟通计划沟通计划 信息发布信息发布 绩效报告绩效报告 管理终止管理终止风险管理风险管理风险管理风险管理计划计划风险识别风险识别风险定性风险定性分析分析风险定量风险定量分析分析风险应对风险应对计划计划风险监督风险监督与控制与控制采购管理采购管理采购计划采购计划揽货计划揽货计划揽货揽货货源选择货源选择合同结束合
8、同结束8 8软件工程管理软件工程管理3.3.在系统开发生命周期(在系统开发生命周期(SDLCSDLC)过程)过程中应用项目管理知识领域中应用项目管理知识领域n与与SDLC各阶段相关的知识领域的任务:各阶段相关的知识领域的任务:知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段范围管理范围管理识别目标识别目标;标识业务标识业务要求要求;标识主要标识主要功能功能;定义详细定义详细需求需求;核实需求核实需求;确定范确定范围围;计划实现计划实现途径途径;控制范围控制范围蔓延蔓延;监控请求监控请求日志日志;评估变更评估变更请求请求;控制范围控制范围蔓延蔓
9、延;监控请求监控请求日志日志;评估变更评估变更请求请求;9 9软件工程管理软件工程管理知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段时间管理时间管理建立建立WBS;建立进度建立进度表表;标识里程标识里程碑碑;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;调整调整/优优化进度表化进度表;监视实际监视实际进展进展;成本管理成本管理执行成本执行成本/效益分析效益分析;建立预算建立预算(资金流资金流);监视正在监视正在发生的各发生的各种成本种成本;更新成本更新成本/效益效益;监视
10、正在监视正在发生的各发生的各种成本种成本;评审预算评审预算/资金流资金流;监视正在监视正在发生的各发生的各种成本种成本;评审预算评审预算/资金流资金流;1010软件工程管理软件工程管理知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段质量管理质量管理标识质量标识质量的度量的度量;标识项目标识项目成功度量成功度量;建立质量建立质量控制过程控制过程;用过程和用过程和评审来控评审来控制质量制质量;用评审来用评审来控制质量控制质量;控制和监控制和监视测试视测试;监视测试监视测试错误日志错误日志;确保最终确保最终系统质量系统质量;人力资源人力资源管理管理
11、标识项目标识项目经理经理;制定人员制定人员计划计划;招募人员招募人员;组织团队组织团队;引导团队引导团队大厦大厦;标识标识/增增加人员;加人员;提供团队提供团队培训培训;标识标识/增增加资源加资源;引导绩效引导绩效评审;评审;提供培训提供培训;引导绩效引导绩效评审评审;11 11软件工程管理软件工程管理知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段沟通管理沟通管理标识项目标识项目相关人员相关人员;制定沟通制定沟通计划计划;建立沟通建立沟通机制机制;引导状态引导状态评审评审;报告状态报告状态;监视内部监视内部沟通沟通;引导状态引导状态评审评审
12、;报告状态报告状态;监视沟通监视沟通;引导状态引导状态评审评审;报告状态报告状态;监视沟通监视沟通;风险管理风险管理分析可行分析可行性和风险性和风险;制定可供制定可供选择的计选择的计划划;评价风险评价风险;监视风险监视风险区域区域;评价风险评价风险;监视风险监视风险区域区域;评价风险评价风险;监视风险监视风险区域区域;1212软件工程管理软件工程管理知识领域知识领域计划阶段计划阶段(项目启动项目启动)分析阶段分析阶段设计阶段设计阶段实现阶段实现阶段采购管理采购管理标识购买标识购买选择选择;标识潜在标识潜在的供应商的供应商;制定标书制定标书申请申请RFP;收取投标收取投标书书;选择供应选择供应商
13、商;制定合同制定合同;监视可交监视可交付物付物;监视可交监视可交付物付物;1313软件工程管理软件工程管理11.2 11.2 项目启动项目启动接受项目的第一步工作就是界定项目。接受项目的第一步工作就是界定项目。如果界定工作做得不够恰当,会使得项目彻底如果界定工作做得不够恰当,会使得项目彻底偏离轨道。许多人习惯于接到项目就召集会议偏离轨道。许多人习惯于接到项目就召集会议制定计划。然而,没有明确和肯定总的目标和制定计划。然而,没有明确和肯定总的目标和成果,所有计划付出的努力都会白费。成果,所有计划付出的努力都会白费。项目启动应做如下工作:项目启动应做如下工作:1)设定目标设定目标:收集事实、信息、
14、意见、需求;:收集事实、信息、意见、需求;探讨假设情况;确定应包括的内容和应排除探讨假设情况;确定应包括的内容和应排除的东西。的东西。1414软件工程管理软件工程管理2)SWOT分析分析:S(优势)(优势)W(劣势)(劣势)O(机会)(机会)T(威胁)(威胁)3)确定需要进行的主要工作及需要的技能和资确定需要进行的主要工作及需要的技能和资源,即明确项目的资源和范围。源,即明确项目的资源和范围。4)考虑可能的解决方案,标明技术上和管理上考虑可能的解决方案,标明技术上和管理上的限制。的限制。n根据这些信息,可确定合理精确的根据这些信息,可确定合理精确的成本估算成本估算,实,实际可行的际可行的任务分
15、解任务分解以及可管理的以及可管理的进度安排进度安排。1515软件工程管理软件工程管理目标目标标明了软件项目的目的但不涉及如何去达到标明了软件项目的目的但不涉及如何去达到这些目的。这些目的。范围范围标明了软件要实现的基本功能,并尽量以定标明了软件要实现的基本功能,并尽量以定量的方式界定这些功能。量的方式界定这些功能。当明确了软件项目的目标和范围后,就应考虑当明确了软件项目的目标和范围后,就应考虑候候选的解决方案选的解决方案。有了方案,管理人员和技术人员就能够据此选择有了方案,管理人员和技术人员就能够据此选择一种一种“好的好的”方法方法,给出诸如交付期限、预算、给出诸如交付期限、预算、个人能力、技
16、术界面及其它许多因素所构成的限个人能力、技术界面及其它许多因素所构成的限制。制。1616软件工程管理软件工程管理11.2.1 11.2.1 制定计划工作:度量制定计划工作:度量n什么是度量什么是度量?IEEE 定义度量是定义度量是“对一个系统、对一个系统、构件或过程具有的某个给定属性的一个定量测构件或过程具有的某个给定属性的一个定量测量量”。n进行度量工作,是为了了解产品开发的技术过进行度量工作,是为了了解产品开发的技术过程和产品本身。程和产品本身。a)度量开发过程的目的是为了改进过程度量开发过程的目的是为了改进过程;b)度量产品的目的是为了提高产品质量。度量产品的目的是为了提高产品质量。n度
17、量的作用是为有效地定量地进行管理度量的作用是为有效地定量地进行管理。1717软件工程管理软件工程管理n为有效地度量,对于过程和产品,常常需要考为有效地度量,对于过程和产品,常常需要考虑:虑:合适的度量是什么?合适的度量是什么?所收集的数据如何使用?所收集的数据如何使用?用于比较个人、过程或产品的度量是否合理用于比较个人、过程或产品的度量是否合理?n管理人员和技术人员可利用这些度量来了解软管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况和它所生产的产品质量件工程过程的实际情况和它所生产的产品质量。1818软件工程管理软件工程管理11.2.2 11.2.2 制定计划工作:估算制定计划工
18、作:估算n在软件项目管理过程中关键的活动就是制定项目在软件项目管理过程中关键的活动就是制定项目计划。计划。n在做计划时必须就需要的人力(以人月为单位)、在做计划时必须就需要的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本项目持续时间(以年份或月份为单位)、成本(以元为单位)做出估算。(以元为单位)做出估算。n这种估算大多是这种估算大多是利用以前的花费做为参考利用以前的花费做为参考而做出而做出的。如果新项目与以前的一个项目在大小上和功的。如果新项目与以前的一个项目在大小上和功能上十分类似,则新项目需要工作量、开发持续能上十分类似,则新项目需要工作量、开发持续时间、成本大致与那个老
19、项目相同。时间、成本大致与那个老项目相同。1919软件工程管理软件工程管理n假使项目背景完全生疏,只凭过去的经验做出假使项目背景完全生疏,只凭过去的经验做出估算可能就不够了。估算可能就不够了。n现在已有了许多用于软件开发的估算技术。其现在已有了许多用于软件开发的估算技术。其共同特点是:共同特点是:a)事先建立软件范围事先建立软件范围b)以软件度量(以往的度量)为基础,以做出以软件度量(以往的度量)为基础,以做出估算估算c)项目被分解为可单独进行估算的小块项目被分解为可单独进行估算的小块n管理人员大多使用不止一种估算技术,并用一管理人员大多使用不止一种估算技术,并用一种估算技术做为另一种估算技术
20、的交叉检查。种估算技术做为另一种估算技术的交叉检查。2020软件工程管理软件工程管理11.2.3 11.2.3 制定计划工作:风险分析制定计划工作:风险分析n在创建一个新程序时,总存在某些不确定性。在创建一个新程序时,总存在某些不确定性。用户要求是否能确切地被理解?用户要求是否能确切地被理解?在项目最后结束之前要求实现的功能能否建在项目最后结束之前要求实现的功能能否建立?立?是否存在目前仍未发现的技术难题?是否存在目前仍未发现的技术难题?在项目出现严重误期时是否会发生一些变更在项目出现严重误期时是否会发生一些变更?等等。等等。n风险分析对于软件项目管理是决定性的,然而现风险分析对于软件项目管理
21、是决定性的,然而现在还有许多项目不考虑风险就着手进行。在还有许多项目不考虑风险就着手进行。2121软件工程管理软件工程管理n所谓所谓风险分析风险分析实际上就是一系列风险管理步骤,实际上就是一系列风险管理步骤,其中包括风险识别、风险估计、风险管理策略、其中包括风险识别、风险估计、风险管理策略、风险解决和风险监督。这些步骤贯穿在软件工程风险解决和风险监督。这些步骤贯穿在软件工程过程中。过程中。n每个软件项目都要求制定一个每个软件项目都要求制定一个进度安排进度安排,但不是,但不是所有进度都得一样安排。所有进度都得一样安排。n对于进度安排,需要考虑的是:对于进度安排,需要考虑的是:预先对进度如何计划?
22、预先对进度如何计划?11.2.4 11.2.4 制定计划工作:进度安排制定计划工作:进度安排2222软件工程管理软件工程管理工作怎样就位?工作怎样就位?如何识别定义好的任务?如何识别定义好的任务?管理人员对结束时间如何掌握管理人员对结束时间如何掌握?如何识别和监控关键路径以确保结束?如何识别和监控关键路径以确保结束?对进展如何度量?对进展如何度量?如何建立分隔任务的里程碑。如何建立分隔任务的里程碑。n软件项目的进度安排与任一个工程项目的进度软件项目的进度安排与任一个工程项目的进度安排基本相同。安排基本相同。识别一组项目任务识别一组项目任务建立任务之间的相互关联建立任务之间的相互关联2323软件
23、工程管理软件工程管理估算各个任务的工作量估算各个任务的工作量分配人力和其它资源分配人力和其它资源制定进度时序制定进度时序n一旦建立了一旦建立了开发进度安排开发进度安排,就可以开始着手,就可以开始着手追踪追踪和控制活动和控制活动。n由由项目管理人员负责追踪在进度安排中项目管理人员负责追踪在进度安排中标明的每标明的每一个任务。一个任务。n如果任务实际完成日期滞后于进度安排,则管如果任务实际完成日期滞后于进度安排,则管11.2.5 11.2.5 追踪和控制追踪和控制2424软件工程管理软件工程管理理人员可以使用一种自动的项目进度安排工具理人员可以使用一种自动的项目进度安排工具来确定在项目的中间里程碑
24、上进度误期所造成来确定在项目的中间里程碑上进度误期所造成的影响。的影响。可可对资源重新定向对资源重新定向对对任务重新安排任务重新安排n(做为最坏的结果做为最坏的结果)可以修改交付日期以调整可以修改交付日期以调整已经暴露的问题已经暴露的问题。用这种方式可以较好地控制。用这种方式可以较好地控制软件的开发。软件的开发。2525软件工程管理软件工程管理11.3 11.3 软件生产率和质量的度量软件生产率和质量的度量n生产率与质量的度量是以投入工作量为依据的生产率与质量的度量是以投入工作量为依据的软件开发过程的度量和软件产品质量的度量。软件开发过程的度量和软件产品质量的度量。面向规模的度量面向规模的度量
25、面向功能的度量面向功能的度量软件质量的度量软件质量的度量n软件度量分为两类:直接度量与间接度量。软件度量分为两类:直接度量与间接度量。n软件过程的直接度量包括所投入的成本和工作软件过程的直接度量包括所投入的成本和工作量。量。2626软件工程管理软件工程管理n软件产品的软件产品的直接度量直接度量包括产生的代码行数包括产生的代码行数(LOC)、)、执行速度、存储量大小、在某种时间执行速度、存储量大小、在某种时间周期中报告的差错数。软件产品的周期中报告的差错数。软件产品的间接度量间接度量包括包括功能性、复杂性、效率、可靠性、可维护性和许功能性、复杂性、效率、可靠性、可维护性和许多其他质量特性。多其他
26、质量特性。n软件软件生产率度量生产率度量的焦点集中在软件工程过程的输的焦点集中在软件工程过程的输出;软件出;软件质量度量质量度量则指明了软件适应明确和不明则指明了软件适应明确和不明确的用户要求到什么程度;确的用户要求到什么程度;技术度量技术度量的焦点则集的焦点则集中在软件的某些特性(如逻辑复杂性、模块化程中在软件的某些特性(如逻辑复杂性、模块化程度)上而不是软件开发的全过程。度)上而不是软件开发的全过程。2727软件工程管理软件工程管理软件度量领域的分类软件度量领域的分类面向人的度量面向人的度量面向功能的度量面向功能的度量面向规模的度量面向规模的度量生产率度量生产率度量质量度量质量度量技术度量
27、技术度量2828软件工程管理软件工程管理11.3.1 11.3.1 面向规模的度量面向规模的度量n面向规模的度量是对软件和软件开发过程的直接面向规模的度量是对软件和软件开发过程的直接度量。度量。n可以建立一个面向规模的数据表格来记录项目的可以建立一个面向规模的数据表格来记录项目的某些信息。该表格列出了在过去几年完成的每一某些信息。该表格列出了在过去几年完成的每一个软件开发项目和关于这些项目的相应面向规模个软件开发项目和关于这些项目的相应面向规模的数据。的数据。n需要注意的是,需要注意的是,在表格中记载的工作量和成本是在表格中记载的工作量和成本是整个软件工程的活动整个软件工程的活动(分析、设计、
28、编码和测试)(分析、设计、编码和测试),而不仅仅是编码活动而不仅仅是编码活动。2929软件工程管理软件工程管理面向规模的数据表格面向规模的数据表格项目项目工作量工作量元元KLOC 文档页数文档页数错误数错误数人数人数aaa-012416812.1365293ccc-046244027.21224865fff-034331420.21050646.n对于每一个项目,可以根据表格中列出的基本数对于每一个项目,可以根据表格中列出的基本数据计算简单的面向规模的生产率和质量的度量。据计算简单的面向规模的生产率和质量的度量。3030软件工程管理软件工程管理生产率生产率 KLOCPM(人月)人月)质量质量
29、错误数错误数KLOC成本成本 元元LOC文档文档 文档页数文档页数KLOCn面向功能的软件度量是对软件和软件开发过程面向功能的软件度量是对软件和软件开发过程的间接度量,主要考虑程序的的间接度量,主要考虑程序的“功能性功能性”和和“实用性实用性”,而不是对,而不是对 LOC计数。计数。n该度量是一种叫做功能点方法的生产率度量,该度量是一种叫做功能点方法的生产率度量,利用软件信息域中的一些计数和软件复杂性估利用软件信息域中的一些计数和软件复杂性估11.3.2 11.3.2 面向功能的度量面向功能的度量3131软件工程管理软件工程管理计的经验关系式而导出功能点计的经验关系式而导出功能点 FP。n为此
30、需要根据五种信息域的特征进行计数,并为此需要根据五种信息域的特征进行计数,并记入在表格中相应位置。记入在表格中相应位置。1)用户输入数用户输入数:用户的各种输入数据个数。:用户的各种输入数据个数。2)用户输出数用户输出数:用户的各种输出数据个数,包:用户的各种输出数据个数,包括报告,屏幕信息,错误信息等。括报告,屏幕信息,错误信息等。在报告中在报告中的各个数据项不应再分别计数的各个数据项不应再分别计数。3)用户查询数用户查询数:在线询问:在线询问/响应次数响应次数。4)文件数文件数:逻辑文件个数:逻辑文件个数。5)外部接口数外部接口数:与系统中其他设备通过外部接:与系统中其他设备通过外部接口读
31、写信息次数。口读写信息次数。3232软件工程管理软件工程管理面向功能的数据表格面向功能的数据表格信息域参数信息域参数用户输入数用户输入数 3 4 6 =用户输出数用户输出数 4 5 7 =用户查询数用户查询数 3 4 6 =文文 件件 数数 7 10 15 =外部接口数外部接口数 5 7 10 =总总 计计 数数计数计数 加加 权权 因因 数数简单简单 中间中间 复杂复杂 加权计数加权计数3333软件工程管理软件工程管理n一旦收集到上述数据,就可以计算出与每一个一旦收集到上述数据,就可以计算出与每一个计数相关的复杂性值。计数相关的复杂性值。n一个信息域是一个信息域是简单的简单的、平均的平均的还
32、是还是复杂的复杂的,由,由使用功能点方法的机构自行确定,从而计算出使用功能点方法的机构自行确定,从而计算出加权计数。加权计数。n计算功能点,使用如下的关系式:计算功能点,使用如下的关系式:FP 总计数总计数(0.650.01SUM(Fi)总计数是所有加权计数项的和。总计数是所有加权计数项的和。SUM(Fi)是求是求和函数和函数:Fi(i1.14)是复杂性校正值,应通)是复杂性校正值,应通过逐一回答如下提问来确定。过逐一回答如下提问来确定。1)F1 系统是否需要可靠的备份和恢复?系统是否需要可靠的备份和恢复?3434软件工程管理软件工程管理2)F2 是否需要数据通信?是否需要数据通信?3)F3
33、是否有分布式处理的功能?是否有分布式处理的功能?4)F4 是否性能成为关键?是否性能成为关键?5)F5 系统是否运行在现有的高度实用化的系统是否运行在现有的高度实用化的 操作环境中?操作环境中?6)F6 系统是否需要联机数据项?系统是否需要联机数据项?7)F7 联机数据项是否需要建立多重窗口显示联机数据项是否需要建立多重窗口显示 和操作,以处理输入处理。和操作,以处理输入处理。8)F8 主文件是否联机更新?主文件是否联机更新?9)F9 输入、输出、文件、查询是否复杂?输入、输出、文件、查询是否复杂?3535软件工程管理软件工程管理10)F10 内部处理过程是否复杂?内部处理过程是否复杂?11)
34、F11 程序代码是否可复用?程序代码是否可复用?12)F12 设计中是否包括了转移和安装?设计中是否包括了转移和安装?13)F13 系统是否设计成可以重复安装在不同系统是否设计成可以重复安装在不同 机构中机构中?14)F14 系统是否设计成易修改和易使用?系统是否设计成易修改和易使用?复杂性校正值复杂性校正值 Fi 的取值的取值 0.5:=0 没有影响没有影响 =1 偶然的偶然的 =2 适中的适中的 =3 普通的普通的 =4 重要的重要的 =5 极重要的极重要的3636软件工程管理软件工程管理一旦计算出功能点,就可仿照一旦计算出功能点,就可仿照LOC的方式度量软的方式度量软件的生产率、质量和其
35、它属性:件的生产率、质量和其它属性:生产率生产率 FPPM(人月)人月)质量质量 错误数错误数FP 成本成本 元元FP 文档文档 文档页数文档页数FP功能点度量是为信息系统应用而设计的。功能点度量是为信息系统应用而设计的。特征点度量特征点度量(Feature Points)可以用于系统和工)可以用于系统和工程软件应用。特征点度量适合于算法复杂性高的程软件应用。特征点度量适合于算法复杂性高的应用,如实时处理、过程控制、嵌入式软件。应用,如实时处理、过程控制、嵌入式软件。3737软件工程管理软件工程管理为了计算特征点,可以象功能点计算那样对信息为了计算特征点,可以象功能点计算那样对信息域值进行计数
36、和加权。但特征点度量还要对一个域值进行计数和加权。但特征点度量还要对一个新的软件特征新的软件特征“算法算法”进行计数。进行计数。算法定义为算法定义为“特定计算机程序中所包含的一个界特定计算机程序中所包含的一个界定的计算问题。定的计算问题。”如转置矩阵、处理中断都是如转置矩阵、处理中断都是算法问题。算法问题。计算特征点可使用一个计算表格。对于每一个度计算特征点可使用一个计算表格。对于每一个度量参数只使用一个权值,并且使用量参数只使用一个权值,并且使用 FP总计数总计数(0.650.01SUM(Fi)来计算总的特征点值。来计算总的特征点值。3838软件工程管理软件工程管理特征点度量计算表格特征点度
37、量计算表格度量参数度量参数 计数计数 权值权值 加权计数加权计数用户输入数用户输入数 4 =用户输出数用户输出数 5 =用户查询数用户查询数 4 =文文 件件 数数 7 =外部接口数外部接口数 7 =算算 法法 3 =总总 计计 数数3939软件工程管理软件工程管理11.3.3 11.3.3 功能点与代码行数的转换功能点与代码行数的转换n代码行数和功能点之间的关系依赖于用来实现软代码行数和功能点之间的关系依赖于用来实现软件的程序设计语言和设计质量。件的程序设计语言和设计质量。n下面给出使用各种程序设计语言建立一个功能点下面给出使用各种程序设计语言建立一个功能点所需要的平均代码行数的粗略估算。所
38、需要的平均代码行数的粗略估算。程序设计语言程序设计语言LOC/FP(平均值)平均值)汇编语言汇编语言320C128COBOL106FORTRAN1064040软件工程管理软件工程管理程序设计语言程序设计语言LOC/FP(平均值)平均值)Pascal90C+64Ada9553Vasual Basic32Smalltalk22PowerBuilder16SQL12续表续表4141软件工程管理软件工程管理11.3.4 11.3.4 软件质量的度量软件质量的度量质量度量贯穿于软件工程的全过程中以及软件交质量度量贯穿于软件工程的全过程中以及软件交付用户使用之后。付用户使用之后。在软件交付之前得到的度量可
39、作为判断设计和测在软件交付之前得到的度量可作为判断设计和测试质量好坏的依据。这一类度量包括程序复杂性、试质量好坏的依据。这一类度量包括程序复杂性、有效的模块性和总的程序规模。有效的模块性和总的程序规模。在软件交付之后的度量则把注意力集中于还未发在软件交付之后的度量则把注意力集中于还未发现的差错数和系统的可维护性方面。现的差错数和系统的可维护性方面。使用得最广泛软件质量的事后度量包括使用得最广泛软件质量的事后度量包括正确性正确性、可维护性可维护性、完整性完整性和和可使用性可使用性。4242软件工程管理软件工程管理1)正确性正确性:一个程序必须正确地运行,并为它的:一个程序必须正确地运行,并为它的
40、用户提供某些输出。正确性要求软件执行所要用户提供某些输出。正确性要求软件执行所要求的功能。正确性的度量是求的功能。正确性的度量是每千代码行每千代码行(KLOC)的差错数的差错数,其中将差错定义为已被证实是不符,其中将差错定义为已被证实是不符合需求的缺陷。合需求的缺陷。2)可维护性可维护性:软件维护比其它的软件工程活动需:软件维护比其它的软件工程活动需要更多的工作量。还没有一种方法可以直接度要更多的工作量。还没有一种方法可以直接度量可维护性,必须采取间接度量。量可维护性,必须采取间接度量。一种简单的面向时间的度量一种简单的面向时间的度量:平均变更等待时平均变更等待时间间MTTC。这个时间包括这个
41、时间包括分析变更要求分析变更要求、设计设计适当修改适当修改、实现变更并测试实现变更并测试、把变更发送给所把变更发送给所4343软件工程管理软件工程管理有用户有用户。一个可维护的程序与不可维护的程序。一个可维护的程序与不可维护的程序相比,应有较低的相比,应有较低的MTTC。3)完完整性:整性:完整性度量一个系统抗拒对它的安全完整性度量一个系统抗拒对它的安全性攻击(事故的和人为的)的能力。程序、数性攻击(事故的和人为的)的能力。程序、数据和文档都会遭到攻击。据和文档都会遭到攻击。度量完整性,需要定义两个附加的属度量完整性,需要定义两个附加的属 性:危险性:危险性和安全性。危险性是特定类型的攻击将在
42、一性和安全性。危险性是特定类型的攻击将在一给定时间内发生的概率,安全性是排除特定类给定时间内发生的概率,安全性是排除特定类型攻击的概率。型攻击的概率。一个系统的完整性可定义为一个系统的完整性可定义为 完整性完整性(1危险性危险性(1安全性安全性)4444软件工程管理软件工程管理4)可使用性:可使用性:如果程序不具有用户友好性,即使如果程序不具有用户友好性,即使它所执行的功能很有价值也常常会失败。用户它所执行的功能很有价值也常常会失败。用户友好性可依据以下四个特征进行度量:友好性可依据以下四个特征进行度量:学习所需的体力上的和智力上的技能;学习所需的体力上的和智力上的技能;为达到适度有效使用系统
43、所需时间;为达到适度有效使用系统所需时间;软件使用时在生产率方面的净增值;软件使用时在生产率方面的净增值;用户角度对系统的主观评价。用户角度对系统的主观评价。4545软件工程管理软件工程管理11.3.5 11.3.5 面向对象软件的度量面向对象软件的度量面向对象分析阶段关于产品的度量:面向对象分析阶段关于产品的度量:输出输出期望测量期望测量产品度量产品度量对象模型对象模型模型复杂性模型复杂性 类的数量类的数量 操作的数量操作的数量 关联的数量关联的数量动态模型动态模型模型复杂性模型复杂性迁移复杂性迁移复杂性 场景的数量场景的数量 状态的数量状态的数量 迁移的数量迁移的数量功能模型功能模型模型复
44、杂性模型复杂性 原子加工的数量原子加工的数量 数据流的数量数据流的数量4646软件工程管理软件工程管理系统设计阶段关于产品的度量:系统设计阶段关于产品的度量:系统设计阶段关于产品的度量:系统设计阶段关于产品的度量:对象设计阶段关于产品的度量:对象设计阶段关于产品的度量:对象设计阶段关于产品的度量:对象设计阶段关于产品的度量:输出输出期望测量期望测量产品度量产品度量基本体系结构基本体系结构体系结构复杂性体系结构复杂性 类的数量类的数量 子系统的数量子系统的数量输出输出期望测量期望测量产品度量产品度量对象模型对象模型动态模型动态模型功能模型功能模型构造复杂性构造复杂性 类的数量类的数量 每个类平均
45、协作的数量每个类平均协作的数量 操作的数量操作的数量4747软件工程管理软件工程管理测试阶段关于产品的度量:测试阶段关于产品的度量:测试阶段关于产品的度量:测试阶段关于产品的度量:与面向对象软件开发过程有关的度量可用于定义与面向对象软件开发过程有关的度量可用于定义与面向对象软件开发过程有关的度量可用于定义与面向对象软件开发过程有关的度量可用于定义工作过程,检查工作过程的进展情况以决定如何工作过程,检查工作过程的进展情况以决定如何工作过程,检查工作过程的进展情况以决定如何工作过程,检查工作过程的进展情况以决定如何改进工作过程。改进工作过程。改进工作过程。改进工作过程。一般来讲,分析和设计所花的时
46、间是程序编码时一般来讲,分析和设计所花的时间是程序编码时一般来讲,分析和设计所花的时间是程序编码时一般来讲,分析和设计所花的时间是程序编码时间的两倍,而测试所花的时间也是如此。间的两倍,而测试所花的时间也是如此。间的两倍,而测试所花的时间也是如此。间的两倍,而测试所花的时间也是如此。输出输出期望测量期望测量产品度量产品度量场景的数量场景的数量测试复杂性测试复杂性正常场景的数量正常场景的数量加上异常处理的场景的数量加上异常处理的场景的数量4848软件工程管理软件工程管理关于过程的度量:关于过程的度量:度量度量分分 析析系统设计系统设计对象设计对象设计程序编码程序编码测测 试试时间时间 分析阶段分
47、析阶段子系统设子系统设计计对象设计对象设计阶段阶段编码阶段编码阶段测试正测试正常场景常场景时间时间 正常场景开发正常场景开发详细对象详细对象模型开发模型开发测试异测试异常场景常场景时间时间 非非正常场景开正常场景开发发详细动态详细动态模型开发模型开发时间时间 对象模型开发对象模型开发详细功能详细功能模型开发模型开发时间时间 动态模型开发动态模型开发时间时间 功能模型开发功能模型开发4949软件工程管理软件工程管理11.3.6 11.3.6 在软件工程过程中使用度量在软件工程过程中使用度量n建立基线建立基线1)为了将为了将LOC和和FP用于软件估算技术中,必须用于软件估算技术中,必须建立历史数据
48、基线。建立历史数据基线。2)根据历史经验,在软件工程过程的衔接处划根据历史经验,在软件工程过程的衔接处划出一条基线,在此基线上附有一些用于度量出一条基线,在此基线上附有一些用于度量的经验目标信息,作为工程过程评估的依据,的经验目标信息,作为工程过程评估的依据,判断工程过程的完成是否达到预想的要求。判断工程过程的完成是否达到预想的要求。3)质量度量数据一旦收集到,软件开发组织质量度量数据一旦收集到,软件开发组织就就5050软件工程管理软件工程管理根据它们来调整其软件工程项目,以消除那些根据它们来调整其软件工程项目,以消除那些对软件开发有重大影响的差错产生的根源。对软件开发有重大影响的差错产生的根
49、源。n大多数软件开发人员都希望了解:大多数软件开发人员都希望了解:哪些用户需求可能会变更?哪些用户需求可能会变更?系统中哪些模块容易出错?系统中哪些模块容易出错?对每一个模块要做多少测试?对每一个模块要做多少测试?在测试时能够预计多少错误?在测试时能够预计多少错误?n如果能收集到相关的度量数据,就能确定这些如果能收集到相关的度量数据,就能确定这些问题的答案。问题的答案。n为了帮助计划、成本和工作量估算,基线的数为了帮助计划、成本和工作量估算,基线的数5151软件工程管理软件工程管理11.4 11.4 软件成本和工作量估算软件成本和工作量估算n软件成本与工作量估算在两个方面使用了软件成本与工作量
50、估算在两个方面使用了LOC 和和 FP 数据:数据:把把LOC和和FP数据当做一个估算变量,用于量数据当做一个估算变量,用于量度软件每一个元素的规模。度软件每一个元素的规模。LOC和和FP数据作为从过去项目中收集到的基数据作为从过去项目中收集到的基线数据,与其它估算变量联合使用线数据,与其它估算变量联合使用,进行成进行成本和工作量的估算。本和工作量的估算。5353软件工程管理软件工程管理11.4.1 11.4.1 分解技术分解技术n用用 LOC 做为估算变量时,必须进行功能分解做为估算变量时,必须进行功能分解,且需要达到很详细的程度。而估算且需要达到很详细的程度。而估算 FP 时需要的时需要的