1、第5章 软件项目成本估算 第5章 软件项目成本估算 5.1 软件项目估算概述软件项目估算概述 5.2 软件项目规模估算软件项目规模估算 5.3 软件项目成本估算方法软件项目成本估算方法 5.4 软件项目成本估算模型软件项目成本估算模型5.5 小结小结 第5章 软件项目成本估算 5.1 软件项目估算概述软件项目估算概述5.1.1 软件项目估算的概念软件项目估算的概念估算是建立在客观事实上对未来可能发生的事情的一种合理性预测。估算本身的不确定性决定了估算不可能是百分之百准确无误的,但是依据某种方法进行合理估计显然比主观猜测要好得多。软件项目估算是指预测构造软件项目所需要的工作量以及任务经历过程的时
2、间。主要包括规模估算、工作量估算、进度估算和成本估算四个主要任务。第5章 软件项目成本估算 规模估算是指根据清晰、有界限的用户需求,估算项目所包含的软件工程任务及其规模。主要估算软件程序的规模,即最后交付的程序和文档的规模,在此基础上考虑软件质量控制、软件测试和项目管理等非程序规模因素,将其增加一定比例作为软件项目规模,从而为工作量估算提供依据。工作量估算是指根据软件规模估算结果,结合用户提出的进度要求和项目的其他因素估算软件开发所需要的工作时间。通常以人月、人年、人天、人时等作为衡量单位。对软件项目工作量估算时需要充分考虑程序的规模、复杂度、难度、项目团队的规模、素质,以及项目管理水平等因素
3、。第5章 软件项目成本估算 进度估算是指根据软件工作量估算结果以及用户提出的进度要求,估算实施一系列软件工程任务的持续时间,即软件项目历时估计。进度估算涉及人、财、物等项目资源的分配,形成项目进度计划,用来跟踪和沟通项目进展状态,也可跟踪变更对项目的影响。成本估算是根据软件规模及其工作量估算结果,估算完成该项目要付出的经济代价。软件项目的成本主要体现在人力资源成本上,但也不能忽视资源配置、软件培训、人员变动、进度压缩和进度延期等因素产生的其他成本。工作量估算结果和进度估算结果对于组建项目团队具有重要作用。第5章 软件项目成本估算 图5.1 客户的需要(除非你很清楚地知道客户想要什么,否则你很难
4、知道能否在期望的时间段内建造客户想要的产品)第5章 软件项目成本估算 5.1.2 软件项目估算的意义软件项目估算的意义软件项目估算是有效的软件项目管理必不可少的,没有比较准确的估算,软件项目将不可避免地造成产品性能的损失、软件成本大幅度增长、项目的超支、软件开发工作处于失控状态和进度拖期等问题。从上述的案例也可以发现这里列出的一些问题。软件项目估算是制定项目计划的基础和依据,目的就是为某个软件项目的实施制定一个较准确的经费预算和进度估计,从而支撑整个项目在可控的状态下按计划执行,并且能够实现预期目标。除此之外,还能够为后续的软件度量提供依据,以便发现项目实施中存在的问题,并总结项目管理和实施的
5、经验与教训,继而提升软件开发企业的软件生产能力和软件项目管理人员的管理水平。第5章 软件项目成本估算 值得注意的是:由于软件自身的抽象性、软件项目的复杂性、以往经验数据的可重复性、估算工具的缺乏以及人为主观经验的影响,将会导致软件项目估算与实际情况有较大差异。在项目实施之初,估算有着非常重要的意义,但这一阶段的估算有较大的误差,随着项目计划的逐步落实,估算结果会越来越准确,但是后期的估算将逐渐失去意义,如图5.2所示。第5章 软件项目成本估算 图5.2 软件项目估算的意义和精度(估算的意义随项目的进展逐渐减弱,估算的精度则正好相反)第5章 软件项目成本估算 因此,软件项目估算具有以下几个特点。
6、(1)估算是有误差的。实践证明,大多数项目超过估算25%到100%,但也有少数的估算准确到10%以内。(2)经验(历史)数据非常重要,这种估算大多是利用以前的代价和经验作为参考而做出的。(3)估算可以借助估算工具和数学模型进行,旨在减少人为误差,但不要过分迷信数学模型。(4)软件开发是逐步细化的过程,估算也是随项目的进行逐步求精的过程,因此项目估算要考虑合适的时间节点。第5章 软件项目成本估算 5.1.3 软件项目估算的时机软件项目估算的时机基于软件项目估算的特点,可以将估算工作与软件产品的生命周期结合起来,使其既有意义,又有较高的精度。软件产品的生命周期可以划分为问题定义、可行性研究、需求分
7、析、构架设计、详细设计、编码与测试和运行与维护等八个阶段。这些阶段反映了软件开发实质是一个逐步细化的过程,在不同阶段对项目进行估算,存在着不同程度的误差(如图5.3所示),这种误差随着项目的推进具有收敛特性,并对项目实施能否成功有着重要的影响。第5章 软件项目成本估算 图5.3 软件项目估算的时机和收敛曲线(软件项目估算的时间越早,误差越大,意义也越大)第5章 软件项目成本估算 图5.3表明,软件项目估算要把握6个不同的时机:粗略估算期ET1:在问题定义阶段,对软件产品的认识存在着诸多的不确定性,因此成本和进度估算的偏差很大,分别达到4倍和1.6倍,此时的估算只能作为粗略估算,很难成为项目成本
8、和进度管理的依据。初级精度估算期ET2:在可行性分析阶段,通过研究问题确定是否存在可行的办法,使得项目的不确定性降低了很多,成本和进度估算的偏差分别降至2倍和1.25倍,启动或取消项目也能随之定夺下来。第5章 软件项目成本估算 一级精度估算期ET3:在需求分析阶段,进一步明确了系统的功能目标,通过项目实施完成需求说明书中描述的功能及其规格,便会有比较明确的成本和进度,此时的成本和进度估算偏差分别降至1.5倍和1.15倍,开发方可再次权衡产品实现的可行性,进而决定项目是否继续执行。二级精度估算期ET4:在构架设计和详细设计阶段,确定了系统实现的最佳方案及其详细计划、体系结构、功能模块及其算法和数
9、据结构,成本和进度估算更多考虑的是如何将系统开发完成、后期各阶段资源的分配以及相关的其他细节,不确定性因素更少,此时的成本和进度估算具有较高的精度,其偏差分别降至1.25倍和1.1倍以下,开发方一般不会作出终止项目的决定,他们会将主要精力投入到更好的管理和实施项目上来。第5章 软件项目成本估算 估算调整期ET5:在编码调试阶段,人、财、物等资源随着系统实现工作的推进,投入量更加清楚明了,为确保后期工作的顺利实施,需要总结前面各阶段的实际量,对成本和进度估算进行调整。估算评价期ET6:产品完工、系统投入运行之后,前面各阶段存在的不确定性都已成为已知量,此时可以将各阶段的估算值与实际量进行比较评价
10、,从中获得项目估算的经验教训,有助于提高开发方管理和实施软件项目的能力和水平。5.1.4 软件项目估算的方法软件项目估算的方法软件项目估算根据不同任务采用不同的估算方法,如表5-1所示。第5章 软件项目成本估算 表表5-1 软件项目估算方法软件项目估算方法第5章 软件项目成本估算 5.1.5 软件项目估算的步骤软件项目估算的步骤软件项目的范围、时间和成本是互相制约的,导致规模估算、工作量估算、进度估算和成本估算之间是密切相关的,因此软件项目估算首先要确定项目范围,其估算步骤如图5.4所示。图5.4 软件项目估算的步骤(软件项目估算涉及规模、工作量、进度、成本等方面,它们是密切相关的,软件规模的
11、估算是基础)第5章 软件项目成本估算 图5.4表明,软件项目估算包括以下四个步骤。1.确定软件项目范围确定软件项目范围通过问题定义、可行性研究和需求分析,确定软件的功能、性能、约束条件、接口和可靠性,并得到软件用户的认可。(1)功能包括:系统将做什么?系统将在何时做?有几种操作方式?系统能在何时、怎样被改变或增强?(2)性能包括:对执行速度、响应时间等有无限制?(3)约束条件包括:系统可占用多少物理空间,有几种类型的用户,每种类型用户的技术水平怎样。第5章 软件项目成本估算(4)接口包括:转入(导入)来自一个或多个别的系统?转出(导出)至一个或多个别的系统?有用于格式化数据的规定的方式吗?(5
12、)可靠性包括:系统必须检测并隔离故障,失败间隔的平均时间规定为多少,对一次失败后重启系统的最大时间。第5章 软件项目成本估算 2.确定项目的资源需求确定项目的资源需求如何配置人力资源和环境资源对软件项目的进度和成本估算有着非常重要的影响。项目团队的规模和素质关系到开发方能否以最高的效率和最小的成本完成既定任务和目标,不同水平和责任心的项目组成员完成同一任务所需的时间和质量有着明显的差异,所以确定项目可用的人力资源时,需要考虑软件系统的复杂性、技术的难易度、用户对进度的要求和项目经费的支撑能力等因素。第5章 软件项目成本估算 软件项目的实施离不开软硬件的支撑,例如操作系统、计算机/服务器、数据库
13、系统和开发工具等,也需要舒适的办公环境和人性化的管理制度,因此合理规划软件开发所需的环境资源,有利于保障项目在有限经费的支撑下高效推进。3.估算规模和工作量估算规模和工作量采用WBS,确定和说明项目包含的工作(任务),然后借助软件生产率将其转化为工作量,为下一步估算进度和成本提供依据。软件生产率是指软件规模与软件工作量的比值。一般用代码行/人月、功能点/人月来表示。第5章 软件项目成本估算 4.估算进度和成本估算进度和成本以工作量估算结果为主要输入,综合考虑软件用户的要求和开发方的软件生产能力等其他因素,估算项目的进度和成本。完成某一工作量的时间越短,成本将越是大幅度增加,所以进度和成本估算要
14、密切结合起来进行,充分考虑二者之间相互制约、相互影响的一些关键因素。第5章 软件项目成本估算 5.2 软件项目规模估算软件项目规模估算5.2.1 软件生产率软件生产率软件生产率是指人均每月能生产的有效源代码行数。软件生产率的计算通常比较困难,不仅要考虑编码阶段,还应该包括软件生存期的各个阶段,同时要考虑人、问题、过程和环境等因素的影响。1.人的因素影响人的因素影响开发机构的规模和经验关乎软件项目以何种组织形式开展工作,以及组织内成员之间交流沟通的方式和路径数量。而且通信路径的多少对软件生产率的影响不容忽视。第5章 软件项目成本估算 假设机构内缺乏经验多、技术好、能力强的主程序员,项目的组织形式
15、恐怕要采用民主制小组的形式,当开发小组有n个人时,总的通信路径需要n(n1)/2条,且联接每个人的通信路径都是n1条。假设一个程序员正常情况下独立开发软件的生产率为L代码行/人月,当n个人组成一个小组共同开发且耗费在每条通信路径上的工作量相当于每人月编写LC行源代码时,组内每个成员的软件生产率就会降低为:Ln(n1)/2LC第5章 软件项目成本估算 假定L为500行/人月、LC为25行/人月,在以下几种情况下,观察软件生产率的变化幅度:若一个人单独开发(即n=1),则每个成员的软件生产率为500行/人月;若二个人共同开发(即n=2),则每个成员的软件生产率降为475行/人月;若三个人共同开发(
16、即n=3),则每个成员的软件生产率降为425行/人月;若四个人共同开发(即n=4),则每个成员的软件生产率降为350行/人月;若五个人共同开发(即n=5),则每个成员的软件生产率降为250行/人月;第5章 软件项目成本估算 由此可见,采用民主制小组的组织形式开发软件,由一个人单独开发的生产率最高;通过多人共同开发必然降低每个人的软件生产率,而且人数越多、总的通信路径越多,个体的软件生产率就会越低。所以拥有丰富开发经验的、成熟的开发机构必然有较高的生产率。历史经验证明,开发机构中最优秀的开发人员和新入职的人员相比,其生产率比值接近10 1;最优秀的开发人员和平均水平的人员相比,比例接近2.5 1
17、;可见,要提高开发机构的软件生产率,聘用和培养优秀人才是一个永恒的主题。第5章 软件项目成本估算 2.问题因素影响问题因素影响软件系统试图解决的问题常常涉及不可避免的复杂性,其功能需求已经很难理解,再加上一些隐含的非功能需求,使得用户很难用开发者能够理解的形式对自己的需求给出准确的描述,具备不同领域知识背景的用户和开发者之间关于问题的沟通变得很困难。另外,随着软件开发过程的推进,用户和开发者对问题的理解比项目初期更加清晰、准确,但系统演化本身改变了问题的规则,导致需求变更频繁发生,相当一部分资源被迫用在了应对需求变化和修复以前的错误上。第5章 软件项目成本估算 3.过程因素影响过程因素影响使用
18、结构化方法和面向对象(OO)方法进行软件分析和设计时,选择不同的程序设计语言以及评审的过程会对软件开发的效率有较大的差异。通常面向对象方法开发软件的生产率明显高于结构化方法。面向对象的分析与设计方法有利于开发人员和用户之间的交流,有助于使有关开发人员与用户从一开始就考虑程序的易理解性、易维护性及软件质量等因素,便于快速开发大型软件系统,也便于开发小组人员之间的合作,避免重复工作。第5章 软件项目成本估算 4.环境因素影响环境因素影响软件开发工具是软件开发过程中必不可少的部分,是用于辅助软件生命周期过程的基于计算机系统的工具,用来支持特定的软件工程方法,协助开发人员开展需求、分析、设计、测试、维
19、护、模拟、移植或管理等工作。软件开发工具对设计模式、对象结构以及管理的支撑情况不同,在减少人工负担、提高软件生产率和软件质量方面的能力就会存在较大差异。一个软件开发机构根据历史数据获取近期的软件生产率,才能弄清自己的软件开发能力,继而对新项目做出尽可能客观、合理的估算。第5章 软件项目成本估算 建议按照以下步骤获取软件生产率的估算值:从规模、程序设计语言、应用领域、开发经验等方面对比分析新项目和已完成的项目,选择与新项目相似度较高的最近完成的一些项目;提取选中项目的规模数据和人员数据;针对每个选中项目分别计算其软件生产率;计算所有选中项目的平均生产率,并作为新项目软件生产率的估算值。第5章 软
20、件项目成本估算 5.2.2 LOC估算法估算法LOC(Lines of Code,代码行)估算法是一种衡量软件项目规模的最常用方法。LOC是指所有的可执行的源代码行数,包括可交付的工作控制语言语句、数据定义、数据类型声明、等价声明和输入/输出格式声明等。LOC是从程序员的角度、通过测量软件产品源代码的行数来估算软件规模的方法,因此在早期的系统开发中较为广泛使用。第5章 软件项目成本估算 如果把代码行分为两类,即NCLOC(Non-Commented Source Lines Of Code,无注释的源代码行)和CLOC(Commented Source Lines Of Code,注释的源代码
21、行),那么源代码行数如下:(5-1)式中:LC表示软件代码行数,单位:千行源代码(KLOC);LNCLOC表示无注释的源代码行数,单位:千行源代码(KLOC);LCLOC表示注释的源代码行数,单位:千行源代码(KLOC)。CLOCNCLOCCLLL第5章 软件项目成本估算 通常用KLOC(thousands Lines Of Code,千行源代码)作为代码行估算结果的单位,也有用SLOC(Single of Lines Of Code,行源代码)表示的。用代码行数不仅能度量软件的规模,而且可以度量软件开发的工作量。如果开发团队根据相关历史项目的经验数据获知该组织的软件生产率,就可以在估算出软件
22、规模之后,进一步估算软件开发的工作量,其计算公式如下:(5-2)式中:E表示软件开发工作量,单位:人月(PM);LC表示软件代码行数,单位:千行源代码(KLOC);PS表示软件生产率,单位:千行源代码/人月(KLOC/PM)。SCP/LE 第5章 软件项目成本估算 开发团队可以根据对历史项目的审计来核算开发团队的软件生产率、单行代码的平均成本和千行代码出错率等。人月均代码行数和每行代码的平均成本可以体现一个软件开发团队的生产能力。由公式5-2可得软件生产率估算公式如下:(5-3)式中:PS表示软件生产率,单位:千行源代码/人月(KLOC/PM);LC表示软件代码行数,单位:千行源代码(KLOC
23、);E表示软件开发工作量,单位:人月(PM)。E/LPCS第5章 软件项目成本估算 单行代码的平均成本(行均成本)估算公式如下:(5-4)式中:CL表示单行代码的平均成本,单位:元/行源代码(元/SLOC)或(美元/SLOC);CT表示软件的总成本,单位:元或美元;LC表示软件代码行数,单位:行源代码(SLOC)。软件总成本可用如下公式估算:(5-5)式中:CT表示软件的总成本,单位:元或美元;CPM表示每人月的成本,单位:元或美元;E表示软件开发工作量,单位:人月(PM)。CTLL/CC ECCPMT第5章 软件项目成本估算 千行源代码的文档页数(文档代码比)计算公式如下:(5-6)式中:D
24、KL表示千行源代码的文档页数,单位:页/千行源代码(页/KLOC);ND表示软件文档的规模,单位:页;LC表示软件代码行数,单位:千行源代码(KLOC)。CDKLL/ND第5章 软件项目成本估算 千行源代码的平均错误数(软件程序的错误率)计算公式如下:(5-7)式中:QKL表示千行源代码的平均错误数,单位:个/千行源代码(个/KLOC);NE表示软件中出现的错误数量,单位:个;LC表示软件代码行数,单位:千行源代码(KLOC)。根据公式(5-1)公式(5-7),得到基于LOC估算的相关指标,表5-2是sp001、sp002、sp003三个项目的运行结果。CEKLL/NQ第5章 软件项目成本估算
25、 表表5-2 LOC估算的各种指标估算的各种指标第5章 软件项目成本估算 由表5-2可以看出,软件开发工作量、总成本和文档规模通常与代码行数成正比,但行均成本、文档代码比和错误率不一定遵循这个规律,尤其是文档代码比和错误率表现最为明显。Sp002的文档代码比和错误率都比sp003的小正好说明了这一点。由此可见:LOC估算法的缺点在于代码行数的含糊不清,不能正确反映一项工作的难易程度以及代码的效率,难以正确反映软件的最终质量;另外在开发初期估算代码行比较困难,适用于过程式程序设计语言。但是,LOC估算法具有计算方便、估算软件的规模相对简单、容易监控和能反映程序员的思维能力等优点,因此业界一直广泛
26、使用。第5章 软件项目成本估算 5.2.3 FP估算法估算法FP(Function Points,功能点)估算法是一种相对抽象的方法,是一种人为设计的估算方式。FP估算法从系统的复杂性和系统的特性来估算系统的规模,关注程序的“功能性”和“实用性”,并从用户的角度来估算软件规模,与开发语言无关,是对软件和软件开发过程的间接估算。FP最初是由IBM的工程师艾伦艾尔布策(Allan Albrech)于20世纪70年代提出的,随后被国际功能点用户组(The International Function Point Users Group)提出的IFPUG方法继承,是目前国际上常见的软件规模估算方法。功
27、能点估算法的核心是利用软件信息域中的一些计数估算和软件复杂性估计的经验关系式而导出功能点FP。第5章 软件项目成本估算 使用FP方法估算软件的功能点数一般要经过以下步骤:(1)识别功能点的类型;(2)识别待估算应用程序的边界和范围;(3)计算数据类型功能点所提供的未调整的功能点数;(4)计算人机交互功能所提供的未调整的功能点数;(5)确定调整因子;(6)计算调整后的功能点数。1.功能点估算法的基本要素功能点估算法的基本要素FP将软件的功能分为5个基本要素,其含义及特征如表5-3所示。第5章 软件项目成本估算 表表5-3 FP的的5个基本要素个基本要素第5章 软件项目成本估算 1)EI的计算规则
28、 从应用边界之外收到数据。如果进入系统边界内的数据不是一个改变系统行为的控制信息,那么至少一个ILF应该被改变。对于已识别的处理过程,至少满足下面三个条件之一:该基本处理过程(Elementary Process)的逻辑与本应用系统中其它基本处理过程的逻辑不同。该基本处理过程应该具有唯一性。例如不能存在两个完全一模一样的存盘操作。在应用程序边界内,该基本处理过程所使用的这组数据应该与其他基本处理过程所使用的数据不同。在应用程序边界内,基本处理过程所引用的ILF或EIF是不同于其它基本处理过程所引用的ILF或EIF的。第5章 软件项目成本估算 2)EO和EQ通用计算规则必须全部满足以下内容才能被
29、视为一个EO或EQ:从外部发送数据或控制信息到应用程序边界内。为了识别这个过程,以下三点必须满足一个:该基本处理过程逻辑上必须是唯一的,该唯一性是指其在应用程序中与其他EO或EQ的逻辑性上保持唯一。该基本处理过程所使用的数据应该是唯一的,该唯一性是指其在应用程序中与其他EO或EQ所使用的数据不同。该基本处理过程所引用的ILF或EIF文件应该是唯一的,该唯一性是指其在应用程序中与其他EO或EQ所引用的ILF或EIF文件不同。第5章 软件项目成本估算 3)EO补充的计算规则除了要满足上面的通用规则外,还要满足下面其中一条:在基本操作过程中至少包含一个数学公式或计算方法;在基本操作过程中要产生派生数
30、据;在基本操作过程中至少要维护一个ILF;在基本操作过程中要改变系统的行为。4)EQ补充的计算规则除了要满足上面的通用规则外,还要满足下面其中一条:基本操作过程从ILF或EIF中获取数据;基本操作过程不能包含数学公式或计算方法;基本操作过程不能生成派生数据;基本操作过程不能维护任何一个ILF;基本操作过程不能改变系统的行为。第5章 软件项目成本估算 5)EIF遵循的规则 从用户角度出发识别的一组逻辑数据;这组数据是在应用程序外部,并被应用程序引用的;计算功能点的这个应用程序并不维护该EIF;这组数据是作为另一个应用程序中的ILF被维护的。6)EI、EO和EQ的区别和联系EO和EQ有着相同的主要
31、目的,即是通过基本操作过程展现数据给用户看。表示人机交互事务类型的三类功能点EI、EO和EQ的主要目的对比如表5-4所示,它们的主要行为对比如表5-5所示。第5章 软件项目成本估算 表表5-4 EI、EO和和EQ的主要目的对比的主要目的对比第5章 软件项目成本估算 表表5-5 EI、EO和和EQ的主要行为对比的主要行为对比第5章 软件项目成本估算 2.功能点估算法的计算方法功能点估算法的计算方法项目的功能点数是几个测量参数(用户输入数、用户输出数、用户查询数、文件数和外部接口数)的功能点之和。用户输入数:计算每个用户输入,它们向软件提供面向应用的数据。输入应该与查询区分开来分别计算。用户输出数
32、:计算每个用户输出,它们向软件提供面向应用的信息。这里输出是指报表、屏幕和出错信息等,一个报表中的单个数据项不单独计算。用户查询数:一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应。每个不同的查询都要计算。第5章 软件项目成本估算 内部逻辑文件数:计算每个逻辑的主文件(如数据的一个逻辑组合,可能是某个大型数据库的一部分或是一个独立的文件)。外部接口数:计算所有机器可读的接口(如磁带或磁盘上的数据文件),利用这些接口可以将信息从一个系统传送到另一个系统。归纳起来,FP方法的计算公式如下:(5-8)式中:UFC表示未调整的功能点数(Unadjusted Function Po
33、int Count);TCF表示技术复杂度因子(Technical Complexity Factor)。TCFUFCFP第5章 软件项目成本估算 1)UFC的计算估算每类功能项的数量FPij之后,根据待开发软件的特点评估各类功能的复杂性,通常分为简单、一般和复杂三个等级,并且用复杂度权重Wij来量化(如表5-6所示),将二者相乘,最后把每类功能项的加权结果逐一累加起来,便可得到项目未调整的功能点数,UFC的估算公式如下:(5-9)W(FPUFC5131ijijij第5章 软件项目成本估算 表表5-6 功能点的复杂度权重功能点的复杂度权重第5章 软件项目成本估算 需要说明的是,表5-6给出的功
34、能点复杂度权重是通过使用者自行拟定一些准则来确定的一个系数,带有一定的主观性。假设估算人员对项目X进行分析研究之后识别的功能数如表5-7所示。表表5-7 X项目中识别的功能数项目中识别的功能数第5章 软件项目成本估算 那么X项目的未调整功能点数可用公式5-9计算如下:UFC=(53)+(24)+(26)+(64)+(65)+(07)+(03)+(24)+(46)+(47)+(210)+(215)+(85)+(07)+(210)=257个如果不考虑功能项的复杂度,那么表5-7中识别的功能数是45(即5+2+2+6+6+0+0+2+4+4+2+2+8+0+2)个,与考虑了复杂度后估算出来的257个
35、相比,存在很大的差距。过于简单的方法使得估算可能很容易,但是给项目实施埋下的隐患将不可低估,例如由此导致的进度估算远远不够、人力资源调配不合理、项目经费根本难以支撑到成功的那一刻,最第5章 软件项目成本估算 坏的情况是项目最终以失败而告终。所以依据功能点估算时,不仅要识别各类功能项的数量,更要对各功能项的复杂度做出尽可能正确的判断。EIF和ILF的复杂度判断EIF和ILF的复杂性取决于记录单元类型(Record Element Type,RET)和数据单元类型(Data Element Type,DET)的数量。RET是指一个EIF/ILF中用户可以识别的DET的集合。如果把DET简单理解为字
36、段的话,那RET就可以简单理解为数据库中的表。RET在ILF/EIF中分为两种类型:可选的(Optional)和必选的(Mandatory)。第5章 软件项目成本估算 DET是一个以用户角度识别的、非重复的、有业务逻辑意义的字段。RET计算的规则:在一个ILF/EIF中每个可选或必选的集合都被计算为一个RET;如果一个ILF/EIF没有子集,则ILF/EIF被计算为一个RET。第5章 软件项目成本估算 DET计算的规则:通过一个基本处理过程的执行,对ILF进行维护或从ILF/EIF中返回一个特定的、用户可识别的、非重复的字段,那么每个这样的字段算一个DET;当两个应用程序维护和/或引用相同的I
37、LF/EIF,但是每个应用程序分别维护/引用它们相应的DET时,这些DET在这两个应用程序的维护或引用中将单独计算。ILF/EIF复杂度的判定矩阵如表5-8所示。第5章 软件项目成本估算 表表5-8 ILF/EIF复杂度的判定矩阵复杂度的判定矩阵第5章 软件项目成本估算 EI、EO和EQ的复杂度判断EI、EO、EQ的复杂性取决于文件引用类型(File Type Referenced,FTR)和DET的数量。FTR是被一个事务操作读取或维护的一个ILF,或是被一个事务操作读取的一个EIF。EI中识别FTR的规则:每个ILF应该算做一个FTR;通过EI读取操作的每个ILF或EIF都应该被计算为一个
38、FTR;既被EI维护又被读取的ILF仅计算一个FTR。第5章 软件项目成本估算 EI中识别DET的规则:在EI的过程中,以用户角度识别的、通过应用系统边界输入系统内部非重复的字段,那么该字段应算一个DET;如果在EI过程中,只要没有通过系统边界输入,就算它存在于系统内的一个ILF中,也不能算为一个DET;在应用程序的EI操作时,系统提示的错误信息或完成操作的信息,应该被分别计算为一个DET。在EI操作中如果遇到主外键的字段,应该算作一个DET。EI复杂度的判定矩阵如表5-9所示。第5章 软件项目成本估算 表表5-9 EI复杂度的判定矩阵复杂度的判定矩阵第5章 软件项目成本估算 EO和EQ计算F
39、TR的通用规则:每个在EO/EQ处理过程中读取的ILF和EIF算一个FTR。EO额外的FTR计算规则:在EO处理过程中每个被维护的ILF算一个FTR;在EO处理过程中即被读取又被维护的ILF算一个FTR。EO和EQ计算DET的通用规则:用户可识别的非重复的字段,进入应用边界并且指明处理什么,何时处理或处理方式,并且由EO/EQ返回或产生,那么这样的每个字段算一个DET;在应用边界内以用户角度识别的非重复字段算一个DET;第5章 软件项目成本估算 在EO或者EQ操作中如果对系统进行输入或读取操作时,相同的字段只计算一个DET;在应用程序的EO或EQ操作时,系统提示的错误信息或完成操作的信息,应该
40、被计算为DET;在EO或EQ操作中如果遇到主外键的字段,应该算作一个DET;如果在EO或EQ过程中,只要没有通过系统边界输入,就算它存在于系统内的一个ILF中,也不能算为一个DET;页面的标题等类似的信息不计算DET;系统字段生成的记号不能被算作一个DET。EO、EQ复杂度的判定矩阵如表5-10所示。第5章 软件项目成本估算 表表5-10 EO、EQ复杂度的判定矩阵复杂度的判定矩阵第5章 软件项目成本估算 采用FP方法估算软件规模时,除了识别功能点数量和判定其复杂性,还需要根据项目具体情况,分析其运行环境,关注系统特性及其影响程度,进一步通过技术复杂度因子TCF对估算出来的UCF进行调整。2)
41、用TCF调整UFC技术复杂度包括性能复杂度、配置项目复杂度、数据通信复杂度、分布式处理复杂度和在线升级复杂度等因素,具体表现为14个系统常规特性,并将它们对系统的影响程度分为5个等级:0表示没有影响,1表示偶然影响,2表示适度影响,3表示一般影响,4表示重要影响,5表示强烈影响。技术复杂度因子的组成如表5-11所示。第5章 软件项目成本估算 表表5-11 技术复杂度因子的组成技术复杂度因子的组成第5章 软件项目成本估算 F1F14是复杂性校正值,它们应通过逐一回答相应的提问来确定。F1数据通信指的是应用程序直接与处理器通信的程度,通常都是通过某种通信手段来实现在一个应用中所使用的数据或控制信息
42、的。连接到本地控制器上的终端被认为是使用通信设施,而协议指的是两个系统或两个设备之间进行通信时所使用的一种约定。所有的数据通信链接都需要某种协议。数据通信因子取值参考如表5-12所示。第5章 软件项目成本估算 表表5-12 问题:系统是否需要数据通信?问题:系统是否需要数据通信?第5章 软件项目成本估算 F2分布式数据处理是应用在内部组件之间传递信息的程度。这个特性是在应用边界内体现的。分布式数据处理因子取值如表5-13所示。表表5-13 问题:系统是否需要分布式处理功能?问题:系统是否需要分布式处理功能?第5章 软件项目成本估算 F3性能指的是吞吐量、处理时间等指标对开发的影响。用户所提出的
43、性能要求将直接影响到系统的设计、实施、安装和支持。性能因子取值如表5-14所示。表表5-14 问题:系统性能是否很关键?问题:系统性能是否很关键?第5章 软件项目成本估算 F4大业务量配置指的是计算机的资源对应用开发的影响程度。大业务量的运行配置对设计有特殊要求,是必须考虑的一个系统特性。大业务量配置因子取值如表5-15所示。表表5-15 问题:系统是否需要高强度配置?问题:系统是否需要高强度配置?第5章 软件项目成本估算 F5联机数据输入是指数据通过交互方式输入系统的程度。系统中包括联机数据输入和控制信息功能。联机数据输入因子取值如表5-16所示。表表5-16 问题:数据通过交互方式输入系统
44、的程度如何?问题:数据通过交互方式输入系统的程度如何?第5章 软件项目成本估算 F6易操作性指的是应用对运行的影响程度,如对有效启动、备份和恢复规程的影响。易操作性是应用提供的一种特性,最小化了手工操作的要求。易操作性因子取值如表5-17所示。表表5-17 问题:系统是否在一个已有的、很实用的操作环境中运行?问题:系统是否在一个已有的、很实用的操作环境中运行?第5章 软件项目成本估算 F7在线升级是指内部逻辑文件ILF被在线更新的程度。应用系统提供在线更新内部逻辑文件的功能。在线升级因子取值如表5-18所示。表表5-18 问题:是否需要联机更新主文件?问题:是否需要联机更新主文件?第5章 软件
45、项目成本估算 F8复杂处理描述了逻辑处理对应用开发的影响程度,包含以下要素:敏感控制(例如特殊的审核过程)和/或程序特定的安全处理;大量的逻辑处理;大量的数学处理;因为例外处理造成需要重新处理的情况(例如,由TP中断、数据值缺少和验证失败导致的ATM事务);多种可能的输入/输出造成的复杂处理。复杂处理因子取值如表5-19所示。第5章 软件项目成本估算 表表5-19 问题:内部处理是否复杂?问题:内部处理是否复杂?第5章 软件项目成本估算 F9事务处理率是业务交易处理速度的要求对系统的设计、实施、安装和支持等的影响。事务处理率因子取值如表5-20所示。表表5-20 问题:对事务处理效率有何要求?
46、问题:对事务处理效率有何要求?第5章 软件项目成本估算 F10界面复杂性是指对应用的人文因素以及使用的便捷方面的考虑程度。针对最终用户效率的功能设计,主要包括以下因素:页面导航;菜单;在线帮助或文档;光标自动跳转;可以滚动;在线远程打印;预定义的功能键;在线做批量提交任务;光标可以选取界面上的数据;第5章 软件项目成本估算 用户使用大量反白显示、重点显示、下划线或其他的标识;在线copy用户文档;鼠标拖动功能;弹出窗体;使用最少的界面完成某种商业功能;双语言支持(如果选择了这个就算4项);多语言支持(如果选择了这个就算6项)。界面复杂性因子取值如表5-21所示。第5章 软件项目成本估算 表表5
47、-21 问题:针对最终用户效率的功能设计主要包括哪些因素?问题:针对最终用户效率的功能设计主要包括哪些因素?第5章 软件项目成本估算 F11重用性指的是应用系统中的应用和代码经过特殊设计、开发和支持,可以在其他应用系统中复用。重用性因子取值如表5-22所示。表表5-22 问题:代码是否需要设计成可复用的?问题:代码是否需要设计成可复用的?第5章 软件项目成本估算 F12易安装性指应用系统的转换和安装容易度对开发的影响程度。系统测试阶段提供了转换和安装计划和/或转换工具。易安装性因子取值如表5-23所示。表表5-23 问题:设计中是否需要包括转换及安装?问题:设计中是否需要包括转换及安装?第5章
48、 软件项目成本估算 F13多重站点指应用系统经特殊设计、开发可以在多个组织、多个地点应用的程度。多重站点因子取值如表5-24所示。表表5-24 问题:系统的设计是否支持不同组织的多次安装?问题:系统的设计是否支持不同组织的多次安装?第5章 软件项目成本估算 F14支持变更指的是应用在设计上考虑支持处理逻辑和数据结构变化的程度。可以具有如下的特性:提供可以处理简单要求的弹性查询和报告功能,如对一个ILF进行与(或)逻辑;提供可以处理一般复杂度要求的弹性查询和报告功能,如对多于一个的ILF进行的与(或)逻辑(当作两项计算);提供可以处理复杂要求的弹性查询和报告功能,如对一个或多个ILF进行的与(或
49、)逻辑的组合(当作三项计算);业务控制数据被保存到用户通过在线交互进程维护的表中,但变更只会在第二个工作日生效;业务控制数据被保存到用户通过在线交互进程维护的表中,且变更即时生效。第5章 软件项目成本估算 支持变更因子取值如表5-25所示。表表5-25 问题:对变更的支持情况如何?问题:对变更的支持情况如何?第5章 软件项目成本估算 通过分析判定获得上述技术复杂度因子的值后,可以用公式(5-10)估算TCF的值。(5-10)由公式(5-10)可以看出,TCF的取值范围是0.651.35。141iiF01.065.0TCF第5章 软件项目成本估算 案例:案例:FP估算实例W公司为X学校开发一个教
50、职工管理系统,主要功能涉及职工信息、部门信息和工资信息的管理,要求系统能够对职工信息、部门信息进行增加、删除、修改和查询,以及职工工资统计等操作。假设系统涉及的信息如表5-26所示。表表5-26 X学校教职工管理系统中的基本信息学校教职工管理系统中的基本信息第5章 软件项目成本估算 由上述信息,可以识别ILF和EIF的功能点数,如表5-27所示。表表5-27 X学校教职工管理系统中学校教职工管理系统中ILF和和EIF的功能点数的功能点数第5章 软件项目成本估算 EI功能点数如表5-28所示。表表5-28 X学校教职工管理系统中学校教职工管理系统中EI的功能点数的功能点数第5章 软件项目成本估算
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。