软件功能点估算
新增需求:实现一个订单的录入,更新,删除、查询、打印、导出功能,其中用户界面如下。订单明细包含了订购的具体产品及数量的情况,明细记录数原则不限。导出、打印、更新、删除订单记录应先从图2的查询界面查出记录,再鼠标双击某记录进入图1的增、删、改界面,也可以选择修改或删除菜单后输入订单号进入图1的增、删、改界面,新增时订单编号自动产生,更新时订单编号不能修改。订单的明细记录在增、删、改界面可进行删除或添加处理,要添加时通过鼠标定位在编辑区按右键选择添加功能,然有会弹出一个产品列表来供操作者选择,材料代码和材料名称及单价是通过选择后自动添加的,不能人工修改,操作者只能修改订单数量,要删除时也通过鼠标定位在编辑区的某产品上按右键选择删除功能即可。打印版面通过打印模板定制并打印到打印机、导出版面也通过excel模板定制并输出到excel文件。 其他说明: 1、用户表和产品数据表本次不变,订单功能开发仅仅是引用这些数据。 2、暂不考虑其它特殊业务逻辑和权限,如:不写日志、功能按钮不根据权限加以屏蔽。 功能界面情况如下:
图1:增、删、改界面
图2:查询界面 功能点分析: 1、首先我们来确定本功能涉及到哪些用户数据(ILF,EIF) 因为新增需求是订单管理,故订单信息属于一个,另外在需求中提到用户表和产品数据表本次不变,订单功能开发仅仅是引用这些数据,所以用户信息和产品信息也是系统的ILF或EIF,只不过本次新增需求时不计算它的ILF或EIF功能点,因为它没有改变,相信引用它的方式与以前一样,但在EI、EO、EQ中引用需要考虑其FTR复杂度。另外,需求又要求打印和导出需要使用版面模板,故应该有三个模本文件。订单类型没有提及需要动态从系统内部获取,根据一般经验应该是一个在程序中做死的下拉选择列表,到此这个新增需求涉及的ILF,EIF应为如下内容:
2、然后我们再来确定本功能涉及到哪些用户事务(EI、EO、EQ) 通过需求描述和界面我们不难发现,它们有新增、查询、修改、删除、打印和导出功能,只不过导出又分查询结果导出和订单导出,因为它们的内容和版面都不同,而查询结果没有提及需要打印输出,故无查询结果打印功能,查询又分批量查询和根据订单号查询。再分析我们又会发现客户名称是通过下拉列表选择的,而需求明确提到有一客户信息供引用,故界面中出现的客户名称选择应是一个EQ,尽管在两个界面都出现,但它们的输入、输出和处理都一样故只算一个。另外,产品添加时也是通过弹出一个产品列表来选择的,故产品列表提取也是一个EQ。订购时间、订单类型不是从系统内部动态获取的过只能算DET。 到此这个新增需求涉及的EI、EO、EQ应为如下内容:
3、分析完五大估算要素(EIF、ILF、EI、EO、EQ)后,下面我们就来分析ILF的复杂度,即它的DET和RET。 订单信息: 从需求文字和界面中只能分析出订单编号、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码、订购数量八个属性,其中材料代码、订购数量属于可重复的属性,故属于一个RET,因此本信息有2个RET,8个DET。 查询结果导出excel模板: 从需求文字和界面中只能分析出订单编号、订单名称、订单类型、客户名称、发送地址、订购时间六个属性,并且无子逻辑,因此本信息只有1个RET,6个DET。 订单导出excel模板 从需求文字和界面中只能分析出订单编号、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码、材料名称、单价、订购数量十个属性,其中材料代码、材料名称、单价、订购数量属于可重复的属性,故属于一个RET,因此本信息有2个RET,10个DET。 订单打印模板 从需求文字和界面中只能分析出订单编号、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码、材料名称、单价、订购数量十个属性,其中材料代码、材料名称、单价、订购数量属于可重复的属性,故属于一个RET,因此本信息有2个RET,10个DET。
EIF、ILF的复杂度分析 4、分析完ILF的复杂度后,接着分析EI、EO、EQ的复杂度,即它的DET和FTR。 订单添加: 从需求文字和界面中可分析出订单编号、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码+材料名称+单价、订购数量、保存按钮九个DET,其中材料代码+材料名称+单价、订购数量属于重复项,只计算一次,材料代码+材料名称+单价是通过执行查询产品(EQ)信息后填入的,查询产品信息已独立算作一个EQ,故其结果不算从内到外穿越边界,而其材料代码在保存时需写入订单中,故只算一个DET。客户名称也是通过查询客户信息后填入的,故本功能实际只涉及9个DET和订单信息一个ILF。所以本功能是:9个DET,1个FTR。 订单修改: 从需求文字和界面中可分析出订单编号(代表订单查询结果的DET)、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码+材料名称+单价、订购数量、保存按钮九个DET,其中材料代码+材料名称+单价、订购数量属于重复项,只计算一次,材料代码+材料名称+单价是通过查询产品信息后填入的,查询产品信息已独立算作一个EQ,故其结果只算一个DET。客户名称也是通过查询客户信息后填入的,故本功能实际只涉及订单信息一个ILF。所以本功能是:9个DET,1个FTR。 订单删除: 从需求文字和界面中可分析出订单编号(代表订单查询结果的DET)、删除按钮2个DET,其中其他属性都是订单查询的结果,只计一个DET,并且穿越外部到内部的数据也只要是订单编号即可。修改的ILF也只是订单信息。所以本功能是:2个DET,1个FTR。 订单打印: 从需求文字和界面中可分析出订单打印模板中的10个DET(穿越外部到内部)、打印按钮11个DET。访问的ILF只有订单打印模板,所以本功能是:11个DET,1个FTR。 订单导出: 从需求文字和界面中可分析出订单导出模板中的10个DET(穿越外部到内部)、导出按钮11个DET。访问的ILF只有订单导出模板。所以本功能是:11个DET,1个FTR。 根据订单号查询: 根据订单号查询有两个地方调用,一个是从菜单中选择修改或删除后会提示输入订单号时调用,还有一个是在批量查询界面中鼠标双击某记录中调用,因为它们的DET、FTR以及处理逻辑都相同,故只算一个EQ。从需求文字和界面中可分析出订订单编号、订单名称、订单类型、客户名称、发送地址、订购时间、材料代码、材料名称、单价、订购数量、确定/鼠标双击按钮11个DET,其中材料代码、材料名称、单价、订购数量属于重复项,只计算一次。访问的ILF有订单信息、产品信息(因客户名称直接写入订单中,故这里不在考虑访问客户信息ILF)。所以本功能是:11个DET,2个FTR。 订单批量查询: 从需求文字和界面中可分析出订单号、订单名称、客户名称、订单类型、订购时间、发运地址、查询按钮7个DET。访问的ILF只有订单信息(因控制信息中的客户名称另算为一个EQ,故算一个DET,不算访问FTR,另外,过滤条件中的订单编号、订单名称、订单类型、客户名称、订购时间始、订购时间终属于重复字段)。所以本功能是:7个DET,1个FTR。 批量查询结果导出: 从需求文字和界面中可分析出查询结果导出excel模板中的6个DET(穿越外部到内部)、导出按钮7个DET。访问的ILF只有查询结果导出excel模板。所以本功能是:7个DET,1个FTR。 客户查询: 从需求文字和界面中可分析出客户名称、选中键2个DET。访问的ILF只有客户信息。所以本功能是:2个DET,1个FTR。 产品查询: 从需求文字和界面中可分析出材料编号、材料名称、单价、选中键4个DET。访问的ILF只有产品信息。所以本功能是:4个DET,1个FTR。
EI、EO、EQ的复杂度分析 思考: 从以上分析发现,找全和找对软件功能点估算的EIF、ILF、EI、EO和EQ五类要素最关键,一般它们的复杂度都为简单。而分析DET和RET或FTR的过程工作量大效果差,所以在时间紧任务重的情况下,我们只要分析出EIF、ILF、EI、EO和EQ五类要素后采用快速估算法即可。快速估算法就是把所有要素都定为简单或一般。 |