M.W.Richardson 著,liuweiw 译
论文描述了如何运用 UML(统一建模语言)设计一个简单的家用报警器,并实现到 VxWorks 操作系统上。本文分两个部分,第一部分描述了如何用 UML 设计和验证家用报警器的模型,以使其独立于特定的硬件和操作系统。第二部分则细节地描述如何将此模型实现于运行VxWorks 操作系统的 486 硬件平台上。模型的设计、开发和验证使用了 I-Logix 公司的可视化编程环境“Rhapsody”。
第一部分:设计一个独立于操作系统的家用报警器
一个好的面向对象设计力图将不变的东西与变化的东西相互分开。在家用报警器的设计中,一个可能的变化是实际的硬件平台。本文描述了如何用 UML 设计这个模型,以使它可以容易地应用到不同的硬件结构中去。文中也表现了如何通过“Rhapsody”工具,可以由模型产生全部代码,并通过“设计级调试”进行验证。设计级调试使我们可以运用描述模型中用到的相同图示来进行调试,基本上可以让状态图和消息序列图活动起来。这样就可以使我们快速地验证所设计的模型。
需求
我们要设计的家用报警器有如下需求:
可以通过遥控器或者简单的小键盘进入戒备/取消戒备状态。当用小键盘设置戒备时,一个四位数字密码必须输入随着要按下 ON 键。如要取消戒备时,一个四位数字密码必须输入随着要按下 OFF 键。密码应该可以改变。当在警戒时检测到情况,马上会发声报警。设置警戒时,将有一个延时供户主离开。警戒状态时开门,会有一个入门延时,这时户主可以取消警戒,如果不能消除警戒警报就要响了。
报警器要有两个 LED,一个为绿色,另一个为红色。红色的 LED 表示报警器处于激活状态,在报警器激活时或者报警器已激活且门打开时闪烁。绿色的 LED 显示报警器启动并且在密码成功修改后闪动四次。
一个未来的需求是家用报警系统应可以通过开关电灯模拟房间被闯入。
设计 UML 模型
用例图
第一步是根据需求建立用例图。下面的用例图表明了两件事:一个显示了主要用处(或用例)即试图给“家用报警器(home alarm)”建模。另一个表示谁使用家用报警器;有两个主要的角色或者用户,即户主(homeowner)和闯入者(intruder)。用例是系统功能反映给角色的可观察的结果但并不揭示系统的内部构造。