快速学习COSMIC方法之十四:嵌入式软件功能点识别案例

  前面的几讲,我们讲完了如何计算功能点的方法,接下来我们看一个完整的案例。这是COSMIC官方网站上曾经发布的一个嵌入式软件的案例,有多个版本,我们改编自其中一个版本来讨论一下。

  需求描述如下:

  1.     电饭煲可以有3种模式煮饭:快,正常,慢。可以由人来手动设置,设置后直接记录在RAM中,不需要通过软件来存储。

  2.     当按下START按钮后,启动定时器,开始煮饭。

  3.     如果按下了START按钮,而没有选择煮饭模式,电饭煲自动选择正常模式。

  4.     当电饭煲完成煮饭后,无论是哪种煮饭模式,电饭煲自动进入保温状态。

  5.      指示灯会指示出当前是煮饭状态还是保温状态。

  6.      加热器是受控的。软件必须能够按照一定的温控曲线(见图2),为给定的煮饭模式在给定的时间内确定目标温度。

  7.      定时器能提供3种类型信号:流逝的时间,5秒和30秒的循环时间信号。

  8.      每隔30秒要重新设定目标温度。

  9.      每5秒钟,通过用目标温度减去实际温度的值以切换加热器的ON或OFF。

扫描二维码关注公众号,回复: 3710805 查看本文章

  10.     根据选定的煮饭模式和流逝的时间,每30秒修改煮饭/保温指示灯的状态。

  11.     如果按下了STOP按钮则切断电源。

  电饭煲的面板如图一所示。

图一:电饭煲的面板

图二:电饭煲内存储的温控曲线

根据上述的功能需求描述,可以画出被度量软件的环境图:

图三:被度量软件的环境图

 

  1 识别功能用户

  根据需求,我们可以识别出的功能用户有:

  定时器,温度传感器,加热器,指示灯(煮饭/保温)

  持久存储介质有:

  RAM:存储了煮饭模式

  ROM:存储了温控曲线

  需要注意的是:我们没有识别人作为功能用户。人按启动按钮,是启动了定时器,是定时器触发了软件工作。在第5讲中我们讲过了如何识别功能用户,大家可以去回顾一下。

 

  2 识别触发事件

  两个触发事件:5秒的时钟信号和30秒的时钟信号。

  Ø  选择煮饭模式是否是触发事件呢?

  我们假定选择煮饭模式是硬件直接写入RAM中,不需要软件参与,不是软件的责任,这样就不在度量范围内,不识别为功能处理。在需求中明确提到了这一点。

  Ø  按下Start按钮是否是触发事件呢?

  不是,因为这是加电启动软件的动作,不需要软件做什么工作。

 

  3 识别功能处理

  功能处理1: 控制加热器, 触发事件:5s时钟信号

  功能处理2:设定目标温度, 触发事件:30s时钟信号

  功能处理3:控制指示灯,  触发事件:30s时钟信号

  注意:30s的时钟信号对应了2个功能处理。这2个功能处理是同时发生的,目的不同,并且目的独立,不是同一个功能处理的不同分支,所以是不同的功能处理。

 

  4 识别功能点

  功能处理1: 控制加热器:

    E 5s触发

    R 目标温度

    E 实际温度(功能用户是温度传感器)

    X 切换加热器状态

  功能处理2: 设定目标温度:

    E 30s触发事件,流逝的时间

    R 煮饭模式(RAM)

    R 温控曲线(ROM)

    W 目标温度

  功能处理3:控制指示灯:

    E 30s触发,流逝的时间

    R 煮饭模式

    R 温控曲线(ROM)

    X 切换指示灯

   所以合计下来,本需求共计为:12个CFP。

  注意:本案例是基于上述的需求描述来识别的功能点。有些功能是通过硬件来实现的,没有通过软件,所以没有识别在度量范围内。如果需求不是这样来描述的,识别的功能处理可能是有差别的。

猜你喜欢

转载自blog.csdn.net/dylanren/article/details/79667004