软件度量的方法体系 软件度量
关键字:项目度量
项目度量
项目度量是针对软件开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。
规模度量
软件开发项目规模度量(size measurement)是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软件项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软件规模度量是成功项目的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。规模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。
软件规模度量有助于软件开发团队准确把握开发时间、费用分布以及缺陷密度等等。软件规模的估算方法有很多种,如:功能点分析(FPA:function points analysis)、代码行(LOC:lines of code)、德尔菲法(Delphi technique)、COCOMO模型、特征点(feature point)、对象点(object point)、3-D功能点(3-D function points)、Bang度量(DeMarco’s bang metric)、模糊逻辑(fuzzy logic)、标准构件法(standard component)等,这些方法不断细化为更多具体的方法。
1. 功能点分析法
(1) 功能点分析法概述
功能点分析法(FPA:function point analysis)是在需求分析阶段基于系统功能的一种规模估算方法,是基于应用软件的外部、内部特性以及软件性能的一种间接的规模测量。FPA法由IBM的工程师艾伦·艾尔布策(Allan Albrech)于20世纪70年代提出,随后被国际功能点用户协会(IFPUG:The International Function Point Users’ Group)提出的IFPUG方法继承,从系统的复杂性和系统的特性这两个角度来度量系统的规模,其特征是:“在外部式样确定的情况下可以度量系统的规模”,“可以对从用户角度把握的系统规模进行度量”。功能点可以用于“需求文档”、“设计文档”、“源代码”、“测试用例”度量,根据具体方法和编程语言的不同,功能点可以转换为代码行。经由ISO组织已经有多种功能点估算方法成为国际标准,如:①加拿大人艾伦·艾布恩(Alain Abran)等人提出的全面功能点法(full function points);②英国软件度量协会(UKSMA:United Kingdom Software Metrics Association)提出的IFPUG 功能点法(IFPUG function points);③英国软件度量协会提出的Mark II FPA功能点法(Mark II function points);④荷兰功能点用户协会(NEFPUG:Netherlands Function Point Users Group)提出的NESMA 功能点法,以及软件度量共同协会(COSMIC:the COmmon Software Metrics Consortium)提出的COSMIC-FFP方法,这些方法都属于艾尔布策功能点方法的发展和细化。
(2) 功能点分析法的基本计数
功能点分析的基本计数就是依据标准计算出的系统(或模块)中所含每一种元素的数目:①外部输入数(EI:external input):计算每个用户输入,它们向软件提供面向应用的数据。输入应该与查询区分开来,分别计算。②外部输出数(EO:external output):计算每个用户输出,它们向软件提供面向应用的信息。这里,输出是指报表、屏幕、出错信息,等等。一个报表中的单个数据项不单独计算。③外部查询数(EQ:external query):一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应。每一个不同的查询都要计算。④内部逻辑文件(ILF:internal logical file):计算每个逻辑的主文件,如数据的一个逻辑组合,它可能是某个大型数据库的一部分或是一个独立的文件。⑤外部接口文件(EIF:external interface file):计算所有机器可读的接口,如磁带或磁盘上的数据文件,利用这些接口可以将信息从一个系统传送到另一个系统。
(3) 功能点分析的主要步骤
功能点分析可以按照如图5-6所示步骤进行:
图5-6 功能点分析的主要步骤