现在我们来回答用UML 设计电梯系统的实践中遇到的问题:“UML 是一种适合于实时系统的建模语言吗?”我们发现基于上段提到的特征,UML 是适合的但有不足。用UML 设计实时系统有以下问题:
•特定硬件及它们特征的定义。
•在对象、任务和硬件层次描述时间约束。
•网络建模。
在接下来的章节,我们将指出如何较好地用UML 描述电梯系统。下面的实践建议可能是标准UML 有益的补充。
4 系统静态建模
4.1 电梯控制系统快照
作为我们的教学项目,电梯系统的设计与“真实”的系统相比省去了很多技术上的细节。我们的电梯系统有所有的电梯系统都有的基本功能,如上升和下降、开门和关门当然还有载客。电梯假设被用在一幢大楼的第一层到第MaxFloor 层,第一层是大厅。电梯里有每一层对应的呼叫按钮。除了第一层和顶层,每一层都有两个按钮,乘客可以呼叫上楼或下楼。顶楼只有一个下楼按钮,而大厅只有一个上楼按钮。当电梯停在某一层,电梯开门,电梯指示灯亮标明当前运行的方向,这样乘客就知道了当前电梯运行的方向。电梯在两个楼层之间快速移动,但它应该能提前减速停在目的层。为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯被强制停止。
4.2 用例图
所有系统和人或为了某种目的使用系统的自动化角色交互。人和角色都希望系统的行为是可预知的。在UML中,一个用例对一个系统行为或系统的一部分建模,是对一组行为序列的描述,系统对一个角色产生的可见的结果[2]。
用例图对系统的动态设计视图建模。它是一个系统行为、一个子系统或一个类建模的中心。用例图描述一组用例、角色和它们的关系。用例图的主要内容是:
·用例
·角色
·依赖、泛化和关联关系
按照我们课程的需求文档,电梯系统的用例图如图1 所示:
图1:电梯系统的用例图
共有七个用例基于我们课程的需求文档,如图1 所示:
· 处理电梯呼叫:这个用例包括几个场景,本文接下来的部分兼作详细描述。这些场景有电梯接受乘客的呼叫、电梯呼叫按钮的亮灭、系统控制部分电梯呼叫按钮信息的更新等等。
·处理楼层呼叫:和处理电梯呼叫类似,这个用例包括电梯接受乘客的楼层选择、楼层按钮的亮灭和系统控制部分楼层按钮信息的更新等等。
·电梯的动/停:这是一台电梯的主要功能,详细的动作包括驱动速度的改变,停止的判定,电梯的运动方向驱动。
·标识运行方向:电梯应该有这种机制,即让乘客知道电梯目前的运动方向,决定是否进电梯。
·标识电梯位置:类似的,电梯应该让乘客知道他/她的目的层是否到达,决定是否离开电梯。