功能点计算的前两步没什么可说的,我们直接从第三步开始:如何计算数据复杂度!
否现得确定那些数据文件才能行。FPA中把文件分成两种:
ILF【内部逻辑文件】:是用户认可的,在应用程序内部维护的、逻辑上相关的数据快或者控制信息
。ILF的主要意图是通过应用程序的几个或者多个基本处理来保存数据。
用户认可:就是经过用户和开发人员共同认证的。不存在任何异议的数据;比如,金融系统中的支票帐户就是一个ILF
逻辑相关:就是数据块中间要有逻辑关系,时逻辑相关的。比如:学生的姓名和年龄相关。 学生信息与银行支票号信息就不想关
一个ILF不能依赖于其他的ILF。如果发生依赖关系,就需要把两个ILF合并。一个ILF可以被多个应用程序当作ILF来计算
但是在同一个应用中,一个ILF只能被计算一次
EIF【外部输入文件】:由其他的应用程序维护的。被本应用程序引用的文件。一个EIF可以被多个应用当作EIF引入,但是同一个
应用中只能应用一次。
知道了有什么文件我们现在就要知道如何计算文件的复杂度。文件拿什么来量化呢?这里又是两个概念:DET,RET
DET【数据元素类型】:简单说就是类的属性。比如:学生类的年龄,姓名等。一个RET中的每个字段都可以被看成DET。
需要注意的是:一些因为技术实现的原因而引入的字段和一些重复的字段不计在内。比如ID字段
RET【记录元素类型】:就是类了。可以把一个ILF或者EIF的子集【比如:一个文件的必填字段】作为一个RET。如果没有子集,那么
一个ILF或者EIF可以被看作一个RET。如果一个RET还存在父子关系的RET,那么父RET就不计在内。
通俗的说就是: 人 是一个抽象对象, 教师和学生是实例对象。 在这里人的属性有:编号,姓名,年龄;教师的属性有:姓名,
年龄,教龄;学生的属性有:姓名,年龄,入学日期。
注意:上面的例子只是为了更好的项了解OOAD的人来说明问题的。事实上,由于人这个概念并不是用户识别的,也就是说用户需求中
不会出现人这个概念。所以他不能作为一个ILF。
在这里认得DET有:姓名,教龄,年龄,入学日期4个DET,因为人有教师和学生两个子对象。所以人不能计为RET。
RET有 教师,学生 两个
现在我们考虑文件的复杂性了,起始很简单,只要确定了ILF、EIF的DET 、RET然后查表就行了
下面就是表:
-> DET
1~19 20~50 >=51
|| 1 低 低 平均
// 2~5 低 平均 高
RET >5 平均 高 高
确定了复杂性,后面再查另一个表就可以确定功能点了。注意这里功能点时未调整的
复杂级别
低 平均 高
ILF 7 10 15
EIF 5 7 10
EI 3 4 6
EO 4 5 7
EQ 3 4 6