在软件开发项目中,功能点计数法是评估软件规模、工作量和开发费用的重要手段,需求规格说明书、业务规则说明书、数据模型、原型图、用例文档等均为功能点识别的关键依据。然而在实际度量过程中,常因客户提交的需求文档资料混乱、功能描述简略、颗粒度粗糙,且未从用户视角展开对应的功能描述,导致评估人员难以精准度量软件规模和开发费用。
值得注意的是,不同功能点计数方法对需求文档的内容深度要求存在显著差异。例如,估算功能点多用于项目前中期,仅度量数据功能与事务功能,不考虑各功能的复杂程度,将各类功能赋值为 10/7/4/5/4 或 7/5/4/5/4(详细原因参见《软件造价之 Nesma 方法的取值冲突分析》),因此需求文档只需清晰描述系统所有操作功能即可;而详细功能点多用于项目后期,需测算每个功能的复杂程度,通过 DET(数据元素类型)、RET(记录元素类型)、FTR(文件类型引用)判断具体取值,这就要求需求文档精确说明功能的业务规则、数据元素、数据流程及交互细节。这些差异化要求,直接影响着功能点计数的准确性与有效性,进而对软件开发费用的测算产生影响。下文将详细解析两种功能点对需求文档的具体要求。
一、估算功能点对需求文档的要求
1、明确逻辑文件结构及关系的数据
需求文档需要呈现出系统中逻辑文件的基本结构,以及它们之间的关系,是判断功能计数项的基础。比如电商系统的下单功能,需关联商品(库存、价格)、用户(地址、账号)文件,明确结构关系才能初步估算该功能涉及的数据交互规模,为整体规模估算提供数据维度依据。
2、说明逻辑文件的区分和维护方式
计数边界决定功能点归属。若逻辑文件(如 ERP系统中的库存文件)在边界内维护,其数据更新是由本模块内的操作(入库、出库操作)完成,那么他是内部逻辑文件(ILF);若由外部系统(供应链系统)对库存信息进行维护,那么他是外部接口文件(EIF)。清晰边界可避免逻辑文件的识别错误,保证估算结果与实际开发范围匹配。
3、明确系统功能及输入、输出信息流模型
功能点核心是 “功能”,需通过系统功能(如在线考试系统的登录、答题功能)及输入输出内容的详细描述(如登录的账号密码输入、答题结果输出等),以明确各功能处理的基本过程。每个基本过程都是估算功能点总数的直接依据,确保从功能交互视角量化软件规模。
4、阐述应用程序功能与外部系统之间的信息流
现在的软件多与外部系统集成(如支付应用对接银行系统 )。明确与外部系统的信息流(支付请求、结果返回),才能判断交互功能的复杂度,区分本系统功能点(支付流程处理)与外部系统边界,避免误判功能归属,让估算更贴合实际开发涉及的交互工作量。
二、详细功能点对需求文档的要求
1、明确所有逻辑文件结构和关系的数据模型
与估算功能点相比,详细功能点要求需求文档更加全面地呈现逻辑文件结构。例如,在一个医院管理系统中,除了识别患者信息文件、医生排班文件等基本逻辑文件,还需要详细说明患者信息文件中包含的子结构,如患者基本信息(姓名、年龄、性别等)、就诊记录信息(就诊时间、科室、诊断结果等),以及这些子结构之间的关系。深入的结构与关系,才能精准判断功能对数据的操作复杂度,让每个功能点的计算基于完整、细致的数据交互场景,提升规模度量的准确性。
2、说明逻辑文件的区分和维护方式
详细功能点对逻辑文件维护方式的说明要求更细致。以客户关系管理(CRM)系统为例,对于客户信息文件的维护,不仅要明确是在计数边界内还是边界外维护,更要详细阐述维护操作的具体流程:若在边界内维护,需说明新增、修改、删除客户信息等操作的实现方式及涉及的业务逻辑(如新增客户需校验哪些字段、触发哪些关联更新)。通过拆解这些细节,可精准判断功能复杂度(高、中、低),使功能点计算能真实反映开发工作量。
3、说明系统功能、输入输出信息流模型及关联逻辑文件
详细功能点的需求文档不仅要说明系统功能和输入输出信息流,还需明确每个功能涉及的逻辑文件及支持功能。以订餐系统的订单查询功能为例,需描述输入信息流(用户输入的订单编号或查询条件)、输出信息流(订单详情),同时明确该功能涉及的订单信息文件、用户信息文件,以及可能的帮助功能(如查询操作指南)。这些详细描述能确保规模度量与实际开发范围、用户需求完全对齐,适配深度需求分析与精准项目管控。
综上所述,估算功能点和详细功能点对需求文档的要求在深度和广度上有所不同。需求文档撰写时应根据具体的计数方法要求,准确、全面地提供相关信息,以便更准确地进行功能点计数,为软件开发项目的规划、预算和进度管理提供可靠依据