COSMIC方法的度量分为三个阶段:
1 度量策略阶段
2 映射阶段
3 度量阶段
在度量策略阶段,主要包括四个活动:
1)确定度量目的:为什么执行本次度量。
比如你要度量一个房子的面积,是为了卖房子?是要装修?还是为了装中央空调?目的不同,度量的范围不同,度量的结果也不同。卖房子是要包含建筑面积与分摊面积的,装修房子要考虑套内面积与晾台面积,而装中央空调时只考虑套内面积,目的不同,度量的范围不同,度量出的结果也是不同的。
2)确定度量范围:究竟是度量哪些软件的规模。
COSMIC方法是度量软件的规模不是硬件的规模,所以首先要把软件与其周围的硬件区分开来,尤其是对嵌入式系统的度量;
COSMIC方法度量的是功能需求的规模,如果非功能性需求不能转化为功能需求,则不能度量规模,并非所有的非功能性需求都可以转化为功能性需求;
COSMIC方法可以度量整个软件包的规模,也可以度量某个软件、某个模块、某个具体功能、某个功能的某个技术分层的规模;
因此,需要根据度量目的,确定度量范围,度量目的决定了度量范围。
3)确定功能用户:是给谁用的功能或站在哪些用户的角度度量软件的规模。
功能用户就是与被度量软件打交道的人、设备或软件系统。功能用户不同,看到的软件功能不同,度量的范围,度量出来的规模也不同。比如手机软件,如果站在消费者的角度看到的是一个功能集合,如果站在电信运营商的角度看到的则是另外一个功能集合,软件为不同的用户提供了不同的功能。确定功能用户也是为了更精确的确定度量范围。
4)确定需求描述的详细程度。
需求描述的粗略则采用快速的、近似的方法度量规模,需求描述的详细则采用标准的方法进行度量。COSMIC方法支持项目早期的快速度量与需求明确以后的准确度量。
在映射阶段,主要包括四个活动:
1)识别功能处理。
功能处理是最小的、独立的、基本功能部件。每个软件的功能需求都可以拆分为功能处理。比如:增加一个人员、删除一个订单、查找一个部门、修改一个合同等等。
2)识别兴趣对象与数据组。
兴趣对象是软件处理的数据对象,需要软件输入、输出、读或写它,它可以是现实中的一个具体事物,也可以是一个概念。比如订单、人员、部门、合同等等。
数据组是兴趣对象的属性的子集。比如在某个系统中,人员是系统要处理的一个兴趣对象,人员有姓名、性别、年龄、出生地等属性,这些属性的任意一个组合就是一个数据组。
3)识别数据属性。
数据属性是兴趣对象的属性,描述了兴趣对象的一个特征。比如人的性别、年龄、出生地、所在部门等。
识别数据属性并非是必须的,如果不对标准的度量方法进行本地化扩展,可以不用识别数据属性。
4)识别数据移动。
任何一个功能处理都是由输入、输出、读、写构成的,输入、输出、读、写就是数据移动。在每个数据移动中都包含了加减乘除、and、or等数据运算,COSMIC方法不单独计算这些数据运算的规模。
度量阶段,主要包括四个活动:
1)新增需求计数
累加所有的功能处理中的输入、输出、读、写的个数得到功能处理的规模;
累加所有功能处理的规模得到被度量软件模块的规模;
在累加时注意剔除被度量范围内不同软件模块交互的功能点个数;
2)需求变更计数
某个功能处理新增的功能点数+变更的功能点数+删除的功能点数=本次需求变更的规模;
所谓的变更包括两种情况:
移动的数据组变化了:增加了属性、变更了属性;
数据移动附带的处理逻辑变化了;
3)本地化规则计数
一般情况下是不需要对标准的功能点估算方法做本地化的;
如果做了本地化,可以按本地化的规则进行计数;
可能的本地化规则如:
移动的数据组,如果属性个数差异比较大,则统计数据属性的个数,定义本地化规则;
移动数据组时,如果逻辑复杂度差比较大,则统计逻辑的复杂度,定义本地化规则;
4)生成度量报告
记录度量的结果,包括:
识别的功能处理,功能用户,触发事件,数据组,数据移动的类型与个数,作出的需求假设,最终的结果等;
在上述的四个阶段中,度量策略阶段在每个公司中通常都有固定的模式,所以花费的事件通常很短,主要的度量投入是在第二个阶段。完整的过程是3个阶段12个活动,但是实际上如果有固定的度量模式,如果不需要本地化规则可以简化到6-7个活动即可。