当前位置:
文档之家› 基于改进FPA的软件规模估算方法
基于改进FPA的软件规模估算方法
终端用户 输入 查询/应答 输出 待估算的软件系统 外部输入处理 外部查询处理 外部输出处理 内部逻 辑文件 外部对象 系统 外部参 照文件
原始功能点数 UFP 不能表现出系统的全部基本特征, 通 常还需要使用 14 个基本特征对软件的功能点进行调整: F1 可 靠的备份和恢复; F2 分布式函数; F3 大量使用的配置; F4 操作简 便性; F5 复杂界面; F6 重用性; F7 多重站点; F8 数据通信; F9 性 能; F10 联机数据输入; F11 在线升级; F12 复杂数据处理; F13 安装 简易性; F14 易于修改性。 FPA 将这些系统特性对软件项目的影响程度分为 6 个级 别: 无影响、 影响很小、 有一定影响、 重要、 比较重要、 很重要, 并相应地赋予数值 0、 1、 2、 3、 4、 5。 调整因子 VAF 根据下式计算:
UFP = å å Zij × Wij
i=1 j=1 5 3
(1)
Zij 表示软件的功能要素; Wij 表示复杂性权值。表 4 给 式中,
1.2
功能点估算的功能要素
FPA 认为任何一个软件都是由外部输入处理、 外部输出处
出了复杂度等级 “低” 、 “中” 、 “高” 对应的功能点数[8]。
表 4 功能点数量与复杂度转换
22
2011, 47 (1)
Computer Engineering and Applications 计算机工程与应用
基于改进 FPA 的软件规模估算方法
付雅芳, 刘晓东, 李延杰 FU Yafang, LIU Xiaodong, LI Yanjie
空军工程大学 工程学院, 西安 710038 Engineering College, Air Force Engineering University, Xi’ an 710038, China FU Yafang, LIU Xiaodong, LI Yanjie.Software size estimation method based on improved puter Engineering and Applications, 2011, 47 (1) : 22-25. Abstract: Software size estimation is the key of entire software program project, and the exact estimation immediately relates to the success of the project.Traditional Function Point Analysis (FPA) has the deficiency of complexity grade analysis. In order to deal with the problem, an improved method for computing complexity weight is proposed.The method analyzes the complexity weight of function component by the fuzzy theory.Firstly, fuzzy logic system for analyzing weight is established.The inputs of fuzzy system are Data Element Types (DET) and Record Element Types (RET) , and the output is the component’ s complexity weight.Then, according to the relationship between complexity and function point, the fuzzy rules are set.By using these fuzzy rules, the complexity weight can be computed.The results of research show that the method can eliminate discontinuity among the different grades and enhance the accuracy of function point estimation. Key words:function point analysis; software size estimation; fuzzy rules; complexity weight 摘 要: 规模度量是软件项目管理的关键, 其度量的准确性直接关系到软件项目的成败。针对传统 FPA 方法中复杂度等级划分
基金项目: 航空科学基金资助课题 (No.20085196011) 。
没法掌握; COCOMOII 模型测算得比较准, 但是参数的取值比 较困难, 因而也不适合客户评价 [5]; FPA 是一种使用功能点为 单位对软件规模进行度量的方法, 其特征是在项目开发初期 就可以利用需求分析模型进行功能点的估算, 不依赖于开发 语言和内部技术实施 [6-7]。但在传统 FPA 方法中, 功能要素复 杂度等级的划分存在一定缺陷, 容易导致估算的结果与实际 情况之间存在较大差异。 针对上述问题, 提出一种改进的 FPA 方法, 该方法利用模 糊理论分析功能要素的复杂性权值, 以此来消除不同复杂度 之间划分不连续的现象, 从而使得功能点的估算结果更加贴 近实际。
1 FPA 估算方法 1.1 功能点方法描述
FPA 是在 20 世纪 70 年代, 为解决 LOC 度量所产生的问题
作者简介: 付雅芳 (1982—) , 女, 博士研究生, 主要研究方向为装备发展战略与管理决策、 装备软件费用分析; 刘晓东 (1965—) , 男, 博士生导师, 主要研 究方向为装备发展战略与管理决策、 装备采办与项目管理; 李延杰 (1985—) , 男, 博士研究生, 主要研究方向为武器装备论证与规划。 收稿日期: 2010-08-16 修回日期: 2010-11-26
不连续性的问题, 提出一种改进的复杂度权值计算方法。该方法利用模糊理论分析功能要素的复杂度, 首先以 DET 和 RET 作为 输入变量, 以复杂度权值作为输出变量, 建立模糊推理系统; 然后根据 FPA 中复杂度和功能点数量的转换关系, 设置模糊推理规 则, 并利用该规则确定复杂度权值。研究结果表明, 这种模糊推理的方法可以消除不同复杂度等级之间的断层, 从而使软件功能 点的估算结果更加准确。 关键词: 功能点分析; 软件规模估算; 模糊规则; 复杂性权值 DOI: 10.3778/j.issn.1002-8331.2011.01.007 文章编号: 1002-8331 (2011) 01-0022-04 文献标识码: A 中图分类号: TP311
2011, 47 (1)
23
种文件, 可以是 ILF 或 EIF。 对软件项目来说, 复杂程度与文件数和项目数成正比。 各功能要素的复杂度矩阵见表 1~3 所示。
1.4
功能点计算
功能点估算方法的关键是准确估计应用程序的功能点 数。程序中的功能点数目可以通过分析功能对象的数量和复 杂度得到。软件的原始功能点为[8]:
规模估算是软件工程的关键, 准确的估算不仅可以促进 开发资源合理的分配, 而且直接关系到整个软件项目开发的 成败 [1-2]。对于软件来说, 它是无形的、 不可见的、 难处理的。 要对其规模进行估算, 存在着一定困难。一方面, 软件本身在 编写过程中会根据功能需求的内容而不断发生变化; 另一方 面, 软件项目规模容易受到诸多因素的影响, 例如人员、 技术、 环境、 策略等。这些原因导致了在软件开发早期阶段, 很难进 行准确的软件规模估算。然而没有合理、 准确的规模估算, 就 无法很好地进行软件项目管理。 为了能在项目开发的早期阶段对整个软件规模有一个总 体的把握和了解, 学术界和工业界提出了许多规模估算方法, 目前常用的有[3-4]: 专家法、 代码行 (LOC) 、 COCOMOII 模型、 功 能点分析 (FPA) 等。这些方法各有优缺点: 专家法最简单易 行, 但误差最大, 不适合开发商使用; 代码行由于与开发语言 有关, 且误差也较大, 对有经验的开发商有利, 但对客户来说
付雅芳, 刘晓东, 李延杰: 基于改进 FPA 的软件规模估算方法 和局限性而研究发布的, 随后被国际功能点用户协会 (the International Function Point Users ’ Group, IFPUG) 提出的 IFPUG 方法所继承, 在国际软件行业范围内得到广泛推崇和 一致接受, 并从单纯的规模度量发展到倾向于软件工程整个 生命周期中的应用。 功能点方法是一种理想的软件规模度量方法, 它主要根 据系统的复杂性和系统的特性来度量系统的规模。由于不依 赖于项目开发的语言, 度量出来的结果可以在不同的开发过 程间进行比较, 因而适用于确定软件开发项目或已安装软件 的规模[7]。目前该方法主要用于早期的软件规模估算。
VAF = 0.65 + 0.01å Fi , VAF Î[0.65 1.35]
i=1 14
(2)
图1
FPA 方法的功能要素
1.3
功能要素的复杂度
各功能要素的复杂度分为: 低 (low) 、 平均 (average) 和高
(high) 三种, 它们根据记录单元类型 RET、 文件引用类型 FTR 和数据单元类型 DET 来确定[9]。 DET 是指用户可识别的无递归、 不重复的信息单元, 可以 认为是一个数据元素、 一个变量或一个字段。DET 是动态的, 而非静态的, 可以读自于文件, 或由 FTR 的数据单元创建。 RET 是指在 ILF 或 EIF 中, 用户可识别的数据集的子集, 可以 通过检查数据中的各种逻辑分组来识别它们。它们通常表现 为一种父子关系。FTR 是指在一个事务过程中所引用到的各
功能要素 EI EO EQ ILF ELF 低复杂度 3 4 3 7 5 中复杂度 4 5 4 10 7 高复杂度 6 7 6 15 1] 成[6, 。各功能要素之间的关系如图 1 所示。