背景
众所周知,软件系统的复杂性是相当高的,以下几个场景是比较常见的:
1.作为软件公司,要研发一个新的产品,功能需求大概明确了,需要确定下研发成本、资源需求等。
2.作为企业,实施软件系统,需要与软件厂商商谈具体的工期与费用等。
3.作为软件公司或企业的管理方,需要对多个软件系统进行横向对比、衡量与评价等。
以上几个问题,实际都指向一个核心问题,即如何客观估算与衡量一个软件系统的规模。只有具备了软件规模的基本数据,与之相关的工作量(人天)、工期、报价、项目成本才能计算。
概述
目前评估软件规模的方法主要分为两种:基于技术视角和基于业务视角。
基于技术视角的方法是从开发者角度出发,如:基于软件源代码行、数据库表、函数数量等。
基于业务视角的方法是从用户角度出发,与软件开发技术无关,如:功能点、故事点、用例点、对象点等。
基于技术视角的评估方法更多地局限于软件开发团队内部,由经验丰富的技术人员估算,经常也被称之为专家估算法。这种估算法标准很难量化和达成一致,不同的人,估算出来的结果可能差异很大,局限性比较大。
如果要在业务部门与开发部门、企业与软件厂商等外部组织商定软件开发的工期或费用等关键项目目标,客观上需要从业务视角出发,对软件项目规模进行衡量、一致的评价与估算。而且,在系统初始阶段,用户功能需求是唯一真正可以得到的信息。
基于业务视角来评估软件规模,国际上有一套方法论,称之为功能点分析法。该方法论内容不少,本篇对该方法论做一下大概介绍,点到即止,如感兴趣建议自行深入了解。
简介
功能点分析法度量的是软件的规模,主要从逻辑设计的角度出发对提供给客户的功能进行量化。
功能点分析方法的主要目标是度量用户要求和能够接收到的功能,并提供一种与具体实施方法和技术无关的、对软件开发和维护进行度量的手段。
此外,功能点分析方法还是一种相对来说比较简单的对规模进行度量的手段;在不同的项目和组织之间能够保持一致的度量方法;基于数据流,使用行业标准数据,是比较客观的估算,容易得到认同。
功能点分析法,实际不只一种,用的比较多的是国际功能点用户组(IFPUG)的标准功能点分析法,这种方法相对复杂一些。荷兰软件度量协会(NESMA)提供了两种简化后的方法:快速功能点分析法和初步功能点分析法。这三种方法往往结合使用,用在不同的项目阶段。需求分析阶段,使用快速功能点分析法;系统设计阶段,使用初步功能点分析法;系统实施阶段,使用标准功能点分析法。
基本概念
功能点分析法将软件的功能分为五个基本要素:
内部逻辑文件(Internal Logical Files,简称内部文件ILF)
外部接口文件(External Int