在软件造价评估和成本度量的过程中,逻辑文件是一个至关重要的概念。为了深入理解软件项目的规模和费用,我们首先需要明确逻辑文件的定义及其在软件造价评估中的作用。
逻辑文件并不是传统意义上的物理文件,也不是简单的数据集合。它是指一组用户可识别的、逻辑上相互关联的数据或控制信息组。这些逻辑文件代表了应用程序中对于用户和业务有意义的数据实体,例如“顾客信息”或“订单详情”。逻辑文件是根据数据的逻辑相关性而非存储方式来定义的,它们代表了业务流程中用到的数据实体。在软件造价中常用到的方法是功能点估算法,是一种软件规模估算技术,它关注的是逻辑文件的数量和复杂性,而不是物理文件。在功能点分析中,逻辑文件代表了对用户业务有意义的数据集合。它们是根据业务流程中的数据实体来定义的,而与这些数据如何在技术上存储无关。知道了什么是逻辑文件以后,那如何才能识别逻辑文件呢?识别逻辑文件首先需要执行以下活动,这些活动就是识别逻辑文件的规则。2、识别计数范围内所有逻辑相关且用户可识别的数据或控制信息7、去掉包含非用户要求的附加属性的关联实体以及仅包含外键的关联实体,把外键属性分组给主实体。根据逻辑文件的定义,应该只考虑用户可识别的、对用户有意义的实体、这些实体被度量应用或其他应用维护。如果实体不被任何应用维护、以及索引文件等不包含用户需求的实体都应被排除在外。识别逻辑文件之后,会进一步判断这些逻辑文件是被度量应用在其边界内维护的ILF,还是引用的被度量边界外的其他应用的EIF。这一判断过程有助于对逻辑文件进行分类,从而更准确地评估软件的规模和复杂度。具体来说,分类的逻辑如下。
内部逻辑文件(ILF):如果逻辑文件是被度量应用在其边界内维护的,那么它就被视为ILF。ILF是应用内部存储数据的地方,通常与应用的业务逻辑和数据模型紧密相关。外部接口文件(EIF):如果逻辑文件是被度量应用引用的,但位于应用边界之外,且属于其他应用或系统,那么它就被视为EIF。EIF是应用与外部系统交互时使用的数据接口,通常用于数据交换和集成。在功能点估算过程中,对逻辑文件的分类是确定事务功能(如外部输入、外部输出和外部查询)所引用的文件类型的基础。不同类型的文件对事务功能的复杂度和所需的处理量有不同的影响,因此,正确的分类对于准确评估软件规模至关重要。因为逻辑文件的规模是由其复杂性决定的,逻辑文件的复杂性是由逻辑文件包含的数据元素类型(DET)和记录元素类型(RET)决定的。把每一个通过基本过程在逻辑文件中维护或者从逻辑文件中提取的,用户可以识别的、非重复的属性当作一个DET。比如员工信息的员工姓名、电话、性别、家庭住址,这就是4个DET。RET是一个逻辑文件中用户可识别的数据元素类型的子集,就是识别DET的子集,每个逻辑文件默认包含一个DET子集,即每个逻辑文件默认包含一个RET,但是有没有可能一个逻辑文件中不止一个RET呢?答案是完全存在这种情况的,只要有一个DET子集就算一个RET。还是用员工信息来举个例子,现在给员工再增加一个属性:员工家属,员工家属又包含:家属姓名、家属电话、家属性别、家属年龄等基本信息。一个员工可以有多个家属。员工家属这个也是一个实体,但是他也是员工的一个属性,不能单独存在,所以员工家属也是属性实体,用户可以选择使用或者不使用属性实体所以这种叫做可选属性实体,在使用可选属性实体时,员工家属作为一个可选属性实体,也算一个DET子集也就是说算一个RET。既然有可选属性实体那一定有强制属性实体啦。就是主实体必须使用的属性实体。这种就不是一个RET,再举个例子,产品这个实体里有产品价格这个属性,产品价格这个属性又包含以前价格、当前价格、价格过期日期等信息,所以产品价格也是一个属性实体。但是产品一定是有价格的,价格是必须存在的一种属性。所以产品价格就是一种强制属性实体。产品价格脱离产品后毫无意义,他和产品是逻辑相关一起组成的一个逻辑文件,所以产品价格不是一个RET。判断出DET和RET数目后就根据数据功能复杂性判定表来判断逻辑文件的复杂性,逻辑文件的复杂性一般分为三个等级,低、平均、高,每个等级对应的DET和RET数量不同。下表展示了不同的DET和RET数对应的不同的复杂性。
进行软件度量的目的是确定软件规模大小,其中之一就要确定逻辑文件的功能规模,逻辑文件的功能规模是根据功能的类型和复杂性决定的逻辑文件有两种功能类型即ILF和EIF,结合类型和复杂性可以确定数据功能的规模。
从数据功能复杂性转换表可以看出一个低复杂性的ILF可以转换成7个功能点,即其功能规模为7FP,而一个低复杂性的EIF有5个功能点,即其功能规模为5FP。相同的复杂性多的ILF和EIF对应的功能规模不一样,ILF对整个功能规模的贡献更大。逻辑文件是软件造价评估中的重要概念,它代表了应用程序中对于用户和业务有意义的数据实体。了解逻辑文件的定义及其在功能点分析和软件造价评估中的作用,有助于我们更准确地估算软件项目的规模和费用,为项目的成功实施提供有力支持。