软件度量方法体系和流程
下面是小编为大家整理的软件度量方法体系和流程,供大家参考。
软件度量的方法体系和流程
项目度量
项目度量是针对软件开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。
规模度量
软件开发项目规模度量 (size measurement) 是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软件项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软件规模度量是成功项目的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。规 模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的 “ 交期逆推法 ” 。
软件规模度量有助于软件开发团队准确把握开发时间、费用分布以及缺陷密度等等。软件规模的估算方法有很多种,如:功能点分析 (FPA :
function points analysis) 、代码行 (LOC :
lines of code) 、德尔菲法 (Delphi technique) 、O COCOMO 模型、特征点 (feature point) 、对象点 (object point) 、3 3- -D D 功能点(3- - D funct ion points) 、g Bang 度量 (DeMarco"s bang metric) 、模糊逻辑 (fuzzy logic) 、标准构件法 (standard ponent) 等,这些方法不断细化为更多具体的方法。
1. 功能点分析法
(1 1 )功能点分析法概述
功能点分析法 (FPA :function point analysis) 是在需求分析阶段基于系统功能的一种规模估算方法,是基于应用软件的外部、内部特性以及软件性能的一种间接的规模测量。A FPA 法由 M IBM 的工程师艾伦 · 艾尔布策 (Allan Albrech)于 于 0 20 世纪 0 70 年代提出,随后被国际功能点用户协会 (IFPUG :
The International Function Point Users" Group) 提出的 G IFPUG 方法继承,从系统的复杂性和系统的特性这两个角度来度量系统的规模,其特征是:
“ 在外部式样确定的情况下可以度量系统的规
模 ” , “ 可以对从用户角度把握的系统规模进行度量 ” 。功能点可以用于 “ 需求文档 ” 、 “ 设计文档 ” 、 “ 源代码 ” 、“ 测试用例 ” 度量,根据具体方法和编程语言的不同,功能点可以转换为代码行。经由 O 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 2 )功能点分析法的基本计数
功能点分析的基本计数就是依据标准计算出的系统( ( 或模块) ) 中所含每一种元素的数目:
① 外部输入数 (EI :
external input) :计算每个用户输入,它们向软件提供面向应用的数据。输入应该与查询区分开来,分别计算。
② 外部输出数 (EO :
external output) :计算每个用户输出,它们向软件提供面向应用的信息。这里,输出是指报表、屏幕、出错信息,等等。一个报表中的单个数据项不单独计算。
③ 外部查询数 (EQ :external query) :一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应。每一个不同的查询都要计算。
④ 内部逻辑文件 (ILF :
internal logical file) :计算每个逻辑的主文件,如数据的一个逻辑组合,它可能是某个大型数据库的一部分或是一个独立的文件。
⑤ 外部接口文件 (EIF :
external interface file) :计算所有机器可读的接口,如磁带或磁盘上的数据文件,利用这些接口可以将信息从一个系统传送到另一个系统。
(3 3 )功能
点分析的主要步骤
功能点分析可以按照如图 5 5- -6 6 所示步骤进行:
图 图 5 5- - 6 功能点分析的主要步骤
(4 4 )案例:K CSK 株式会社的功能点分析案例
【K CSK 株式会社的 的 A CSFPA 概述】
在实施 A CSFPA 之前,K CSK 以 以 p Step 数方法来估算开发规模。但是在利用 VB 、 C++ 、 Java 、L SQL 等语言的项目开发中,用 p Step 数方法进行规模估算比较困难。为了以 定量化手段降低甚至消除估算错误,K CSK 在IFPUG(International Function Point Users Group)的 的 FP法的基础上加以改良开发出自身的 CSFPA(CSK Simplified Function Point Analysis) 法,并在企业内加以实施。K CSK 于5 1995 年加入 G IFPUG 组织,并于 8 1998 年开始正式开展活动。
A CSFPA 改良的两点是:增加了度量要件定义等上游工程的简易测量功能;避免使用人为因素太强的调整系数。A CSFPA 法适用体制在项目估算时的 P FP 度量、项目完成 时的 P FP 度量、实际数据的收集、统计分析、工数模型化、质量指标化等方面具有 有 K CSK 特有的方式,K CSK 在该方法的教育与培训、模型构筑、估算 · 质量计划的适用、结果评价 · 差异分析等方面取得了良好的绩效。
【A CSFPA 法的估算步骤】
A CSFPA 法与 G IFPUG 法的估算步骤有所不同,二者的相似点以及不同点请参照图 5 5- -7 7 。
图 图 5 5- -A 7 CSFPA 功能点估算步骤
【A CSFPA 法的推广运用】
为了普及和适用 CSFPA ,K CSK 在企业内设立由多名专任人员组成的事务局,推进方法的定义以及维护、管理、员工教育、度量支援、数据收集 、统计分析、数据利用等。下面对 A CSFPA 的适用体制加以介绍。
项目估算时的 P FP 度量。在估算时度量软件规模,通过适用相应的工数模型测算预计工数,以此作为制定日程的根据。
A CSFPA 的工数模型以开发的全过程为对象,按照项目的开发范围进行估算,将式样、品质、技术的对应要件作为变动要素对此加以调整。
项目完成时的 P FP 度量。在项目完成阶段对 P FP 数、使用环境、技术、工数以及质量信息等几十个项目加以记录,比较估算时的 P FP 数并进行差异分析,以提升度量精度和模型有效性。
实际数据的收集。将度量的实际数据剃除异常点后 纳入数据库,并加以分析,然后向全企业公开。这种标本数据已经超过 0 400 件。由于 P FP 度量过程中由于度量者的不同可能导致较大的误差,事务局还面向经验甚浅的度量者提供现场支持,验证度量结果的妥当性,提高度量的精度。另外,还与其他企业所提供的数据进行比较验证,持续收集数据。
统计分析。对于收集起来的数据,还需要考虑到项目特性的差异并加以分析。作为分析的界限,K CSK 建立了包括约 0 50 种类型( ( 可视化工具类开发、b Web 类开发、维护的主框架开发等) ) 的数据库,并对各自包括工数在内的 0 10 种以上的项目和 P FP 值实施相关分析。
工数模型化。K CSK 将 将 P FP 数和工数的关系称之为 “ 工数模型 ” ,现在已经拥有可适用的 6 6 种工数模型。这些模型与实际数据的收集相配合,实施差异分析,持续提升估算精度。
质量指标化。与工数模型一样,K CSK 将 将 P FP 数和质量数据( ( 缺陷、问题等) )之间的相关关系作为质量模型加以提供。通过定义经由质量模型获得的指标,并与现存的指标相结合,构筑综合性的质量指标。
【K CSK 推进 P FP 法的经验总结】
度量方法的教育与渗透 ——
启蒙。要使用 P FP 法进行度量,当然需要了解度量规则。K CSK 在其 “ 项目管理研修 ” 这一体制中,对企业员工实施教育 ,讲解 P FP 法的定位、概要、使用方法,进行度量演习,让企业员工掌握 P FP 法。
模型构筑 ——
提升估算精度的路径。要使用各种模型提升估算的精度,需要度量项目特性以及仔细检查数据。K CSK 通过现场调研和支援活动,积累起专业知识和技能,并对技术、式样、质量方面的特性信息加以整理,构筑适合 K CSK 的估算模型,提高估算精度。
估算 · 质量计划的适用 ——
制定适当而正确的计划。构筑起来的模型在实际提案的时候作为估算的根据或者在产品的质量计划制定过程中适用。在模型不断适用的情况下,这些模型的适用实例也就逐渐丰富起来。
结果评价 · 差异分析——
取得反馈信息至更高水平的运用。项目开发过程中,变更点管理以及计划与实绩的差异分析非常重要。在这个过程中,需要获得适当的反馈信息,在把握复杂的项目状况的同时需要灵活应对这些变更和反馈。K CSK 在这方面也在积极运作并在整个企业内展开。
【K CSK 功能点法今后的展开】
将P FP 作为商务活动中的共通尺度是 K CSK 导入 P FP 法的主要目的之一。为了提高 K CSK 与顾客之间将之作为共通尺度的认知度,K CSK 认为需要实施如下事项:一是提高方法本身的认知度和信赖性;二是客观地验证度量数据的精度。P FP 是度量软件规模的手段,在软件开发的商务活动、项目管理、资产管理等诸多场合中都是切实把握规模的依据,是以适当的价格提供高质量软件的基础,也是客观性表示 K CSK 的生产性的重要因素。K CSK 在通信、控制、嵌入式开发中正在试用 COSMIC- -FFP 。
2. 代码行
代码行 (line of code) 指所有的可执行的源代码行数,包括可交付的工作控制语言 (JCL :
job control language) 语句、数据定义、数据类型声明、等价声明、输入/ / 输出格式声明等。一代码行 (1LOC) 的价值和人月均代码行数可以体现一个软件组织的生产能 力。组织可以根据对历史项目的审计来核算组织的单行代码价值。代码行 LOC常用于源代码的规模估算,常使用的单位有:
SLOC(single line of code) 、 KLOC(thousand lines of code) 、LLOC(logical line of code) 、 PLOC(physical line of code) 、 NCLOC (non- - mented line of code) 、 DSI(delivered source instruction) 。
3. 德尔菲法
德尔菲法 (Delphi te chnique) 是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来、新技术与特定程序之间的差别,但专家 “ 专 ” 的程度及对项目的理解程度是工
作中的难点,尽管德尔菲技术可以减轻这种偏差,在评定一个新软件实际成本时通常用得不多,但是,这种方式对决定其他模型的输入时特别有用。德尔菲法鼓励参加者就问题相互讨论。德尔菲法的步骤是:
(1) 协调人向各专家提供项目规格和估算表格; (2) 协调人召集小组会和各专家讨论与规模相关的因素; (3) 各专家匿名填写迭代表格; (4) 协调人整理出一个估算总结,以迭代表的 形式返回给专家; (5) 协调人召集小组会,讨论较大的估算差异; (6) 专家复查估算总结并在迭代表上提交另一个匿名估算; (7) 重复 4 4 ~6 6 ,直到最低估算和最高估算一致。
4. 构造性成本模型
构造性成本模型(COCOMO :
constructive cost model) 是一种精确、易于使用的基于模型的成本估算方法,最早由勃姆 (Boehm)于 于 1 1981 年提出。该模型按其详细程度分为 3 3 级:基本 O COCOMO 模型、中间 间 O COCOMO 模型和详细 O COCOMO 模型。基本 O COCOMO 模型是一个静态单变量模型,它用一个以已估算出来的 源代码行数 (LOC)为自变量的函数来计算软件开发工作量。中间 O COCOMO 模型则在用 C LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细 O COCOMO 模型包括中间 O COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。
COCOMO模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个:
(1)DSI( 源指令条数) ) ,定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句 ,则算做一条指令。
(2)MM( 度量单位为人月) ) 表示开发工作量。(3)TDEV( 度量单位为月) ) 表示开发进度,由工作量决定。O (4)COCOMO 模型重点考虑 5 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。
成本度量
软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法如下:
类比估算法。类比估算法是通过比较已完成的类似项目系统来估算成本,适合评
估一些与历史项目在应用领域、环境和复杂度方面相似的项目。其约束条件在于必须存在类似的具有可比性的软件开发系统,估算结 果的精确度依赖于历史项目数据的完整性、准确度以及现行项目与历史项目的近似程度。
细分估算法。细分估算法是将整个项目系统分解成若干个小系统,逐个估算成本,然后合计起来作为整个项目的估算成本。细分估算法通过逐渐细化的方式对每个小系统进行详细的估算,可能获得贴近实际的估算成本。其难点在于,难以把握各小系统整合为大系统的整合成本。
周期估算法。周期估算法是按软件开发周期进行划分,估算各个阶段的成本,然后进行汇总合计。周期估算法基于软件工程理论对软件开发的各个阶段进行估算,很适合瀑布型软件开发方法,但是需要估 算者对软件工程各个阶段的作业量和相互间的比例具有相当的了解。
顾客满意度度量
顾客满意是...