一、COSMIC概述通用App模型 图1展示了什么是通用App模型,其展示了App与功能用户、App与持久性存储介质之间的相互作用:
图 1通用App模型的四种数据移动类型
任何App可能包含: 4类数据移动类型: - 数据组由功能用户输入到功能过程
- 数据组由功能过程输出到功能用户
- 数据组由功能过程写入到持久性存储介质中
- 数据组由持久性存储介质读出到功能过程中
持久性存储介质: COSMIC功能点- COSMIC功能点(CFP)被定义为:
- 任何类型App功能规模的衡量标准
- 代表了App的一个数据移动
- 4类数据移动类型之一(输入(E)、输出(X)、读(R)、写(W))
- 可用于测量最大和最小的App功能
- 可用于比较过去已开发的、当前正在开发的和未来将要开发的App的App规模
- 可用于比较以任何形式开发的App制品
COSMIC度量原理:App制品的功能规模等于其数据移动数量 计算App规模使用“COSMIC功能点”作为单位进行度量,缩写为“CFP” 1CFP通常被定义为单个数据组的单次数据移动。 功能过程的规模等于他的CFP中数据移动类型的数量 App规模等于其功能过程中CFP大小之和 例1:当某App包含4种数据移动类型的单个数据移动时,功能规模大小为: 1E+1X+1R+1W=4CFP 例2:当某App包含4种数据移动类型的两个数据移动时,功能规模大小为: 2E+2X+2R+2W=8CFP 如何发现一个App制品中所有的数据移动?功能需求文档中描述了App所实行的功能过程。图2展示了App中功能过程的通用定义:
图 2功能性用户需求、功能过程和功能子过程的关系
以下元素有助于确保测量者能够以一致的方式识别所有功能过程和数据移动——详见图3。 - 功能用户通过发送与事件相关的数据来通知App该事件已经发生。由于功能用户对事件处理结果的关注,App必须实行一些对应的操作(例:功能过程)。
- 触发事件使功能用户生成一个数据组(可能是以消息的形式),这个数据组由“触发输入”移动至它的功能过程中,功能过程由此启动。
- 功能过程可能同时包含数据移动和数据处理,其关系和限制如下:
- 作为测量目的的近似值,数据处理子过程不是单独计算的;同时假定所有的数据处理功能都由相关的数据移动来替换。
- 另一个近似的范例:“输入”操作可类别为,一个数据组的所有数据进入到功能处理中。同样的类比可用于“输出”、“读”和“写”操作。
- 每个功能过程可能包含多个“输入”,每个“输入”移动的数据描述了不同的对象,这些“输入”可作为多个数据移动计量。对于任何数据输入,如果他们只描述了一个对象,则作为一个“输入”识别。此说明可类比到“输出”、“读”和“写”操作。
- 一个功能过程的数据移动数量没有上限。
注1:一个功能过程至少包含一个“输入”数据移动和一个“输出”或“写”数据移动,即一个功能过程至少包含两个数据移动。 注2:当功能过程写入一些数据至持久存储之后,“持久数据”可被其他需要此数据的功能过程访问,也可被其他要写入他的功能过程访问。
图 3触发事件、功能用户和功能过程之间的关系
App功能变化规模现有App需求变更规模使用以下方式进行计算: - 对于单个数据移动的需求变更(例:增加、修改或删除),通常计1CFP。
- “变更”可以是与数据移动相关联的数据运算的修改,也可以是数据组属性的修改
- 功能过程修改规模的最小值为1CFP
- App修改规模的大小等于该App内所有功能处理增加、修改和删除的数据移动的数量。
COSMIC可以度量任何层、任何App架构的规模COSMIC功能点(CFP)可以用于度量App架构中任何层中任何等级的App规模(如图4)。在COSMIC度量手册中对COSMICApp度量规则进行了更详细的讲解,以便保证COSMIC度量的一致性
图 4 COSMIC可用于任何层App的评估
二、COSMIC案例电饭煲研究案例功能需求1——收到启动信号后,App实行以下步骤 - 发送“开启”信号给烹饪指示灯
- 发送“开启”信号给加热器
本功能需求使用COSMIC进行度量结果如下 功能需求2——收到30秒信号,从t=0开始,每隔30秒,App实行以下步骤 收到30秒信号 - 收到已经过去了的时间的信号
- 从持久性数据库中读取烹饪模式
- 通过在持久数据库中读取烹饪模式与时间、温度的关系为当前烹饪模式选择一个目标温度,其关系为:时间=[当前已进过的时间+30秒],见图1。
- 把新的目标温度存入数据库,该温度将会在下一个30秒信号到来时变为当前目标温度。
使用COSMIC度量此功能需求如下: 课程注册案例功能性用户需求1 – 询问教授得到详细反馈信息 - 当一位书记官想要询问一位教授的详细信息时,他必须先选择子选项“询问教授”,同时他必须输入教授的身份ID
- App通过身份ID查询教授的名称、地址等详细信息信息并展示。
- 当通过该身份ID无法查询到教授信息时,App会提示错误信息:“教授信息未找到”,书记官能够选择输入另一个身份ID或者取消操作。
上述功能性用户需求通过COSMIC计算如下表:
|