软件是一种固化思维→真正的软件度量单位必然是思维的单位→思维自身并无统一的直接度量单位→软件只能间接度量→间接的度量单位,要尽可能可以进行横向比较。
一个工程师手中的尺子每天长短都不一样,他该怎么修建几十层的高楼?
如果体育比赛的秒表计时标准随时都在更改,则运动员如何能够比较在不同场地进行比赛的成绩?
一个商人在卖东西时,如果称重的千克标准每天都在缩水,就好像不断地调换秤砣,哪个买家愿意从他这买东西?
宋鸿兵先生事实上指出的是货币自身价值的不确定性,他认为眼下无法找到精确的度量衡来度量时间轴上货币的价值。这和我们讨论的估算道理上讲毫无关联,但事实却是两者间惊人的相似。
软件诞生数十年来,度量单位这一根本问题,从来没得到过解决。这虽然根源于软件是固化的思维这一根本特质,但却直接导致了一旦谈及数据时,说的人所说的和听的人所听到的就可能完全不同。
对于软件而言,倒不是没有单位,而是有着太多的单位,如:
●特性(Feature)。
●用户故事(User story)。
●功能点(Function Point)。
●代码行。
当我们运作项目时,通常需要选择一种单位对软件进行度量。对单位进行选择时,一个根本关键点是要尽可能使类似项目间的数据可以互相比较。(www.xing528.com)
基于此,可以把各种单位分为3类。
一类是不适合作为多个项目间共享数据的单位,如特性(Feature)和用户故事(User Story)。这些单位是不适合推广应用的,因为很难比较多个不同项目的特性(Feature)和用户故事(User Story),这会导致历史数据无法累积。
一类是可以在多个项目间共享数据,但会导致较大误差的,如代码行。代码行本身可以在多个项目间比较,但代码行是固化后的思维,其中包含了实现过程中来自各个维度的种种干扰,如程序员的能力和偏好,时间压力的大小,重用代码的有无等。
一类是比较适合在多个项目间共享数据的单位,如功能点。功能点的计算不与实现相关联,直接基于实现前的规格,相对而言更加客观。
选择单位时,要尽可能选择后两种,尽管他们也有着各自的缺陷。
什么是功能点
功能点这个名字容易让人以为这是和特性或者用户故事等一样的东西,但实际上不是的。
功能点有着严密的定义和计算标准,其标准由IFPUG(International Function Point Users Group)负责维护,可以在www.ifpug.org找到标准的相关信息。
功能点方法的基本思路是定义软件自身的边界,接下来依据输入、输出来计算软件内含的复杂程度。而输入、输出被进一步分解为:外部输入(External Input),外部输出(External Output),外部查询(External Query),内部逻辑文件(internal Logical File),外部接口文件(External Interface File)。通过计算这些项目,依据具体的表格就可以算出功能点的数目。
图5-1是对上述几个概念的形象解释,他描述了在人力资源管理程序中什么是EI等。摘自:IFPUG的《Function Point Counting Practices Manual 4.3.1》
图5-1 功能点的基本定义
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。