免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7060 | 回复: 6
打印 上一主题 下一主题

电梯系统的的UML 文档(转载自UMLCHINA,有谁愿意讨论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-03 13:00 |只看该作者 |倒序浏览
电梯系统的的UML 文档
Lu Luo 著,王君译
1 简介
这是一份Carnegie Mellon 大学博士课程(分布式嵌入系统)项目报告。整个课程完成了一个分布式实时系
统的设计、搭建和模拟。设计时用到了OOA 和OOD,特别是UML。
系统的大多数类省略了很多细节。现在看到的这份电梯系统的UML 文档和真实的电梯系统有很大的不同。因
此不是很清楚UML 是否能真正地完成电梯系统的设计。这份报告基于当前的系统设计给出了一个教学项目严谨UML
文档包。
分布式实时系统中如何使用UML,报告从不同的视图给出了三组UML 图。这些图分别从对象结构、软件结构
和系统结构三个角度着眼,不同主要集中在各自的类图上。
接下来的第二节和第三节分别是UML 和分布式系统的简介。第四节是从静态结构的角度来描述我们的电梯系
统的设计,例如从用例图和类图来描述和分析。第五节的用例图和状态图主要描述系统的动态方面,而第六节是
结论。
2 UML 简介
统一建模语言(UML)是描述、形象化、构建及文档化软件系统和其他非软件系统构件的工业建模语言。它简
化了软件设计的复杂过程,为构造建立了“蓝图”。并且,现在是软件构造的标准符号语言。
UML 提供了系统的结构图和行为图。一组包含不同图形元素的图表是UML 最具表现力的核心部分。UML 包括
9 种图。为了把握电梯系统设计最典型的部分,在本文中只用UML 图表来分析:
用例图描述一组用例和角色(一种特殊的类)以及它们的关系。用例图用在一个系统的静态用例视图中,这
些图在一个系统行为的组织和建模中是重要的。
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 31
X-Programmer
非程序员
18
类图描述了一组类、接口、协作以及它们的关系。它在面向对象系统建模中是最常用的图。类图用于系统的
静态设计视图。
顺序图是一种交互图。交互图用于系统的动态视图。在UML 中,除了顺序图,协作图也是交互图。顺序图着
重于系统中对象间消息传递的时间顺序,而协作图着重于发送和接受消息的对象的结构组织。它们是异形同构的,
可以从一个转换为另一个。虽然它们都是对我们系统同样的扩展理解,但顺序图给出了时间,这是实时系统的要
素,所以本报告中只给出顺序图。
状态图由状态、转换、事件和活动组成,它表明了状态机制。状态图用于一个系统的动态视图。状态图在接
口、类或协作的建模时特别重要。它突出了一个对象的事件顺序行为,这在交互式系统建模中非常有用。
其他的四种UML 图是:对象图-描述一组对象和它们的关系;活动图-一种特殊的状态图,描述一个系统中从
一个活动到另一个的流程;组件图-描述一组组件的组织和依赖关系;而实施图描述运行时处理点的结构和依附于
它们的组件。

论坛徽章:
0
2 [报告]
发表于 2003-08-03 13:01 |只看该作者

电梯系统的的UML 文档(转载自UMLCHINA,有谁愿意讨论

3 实时分布嵌入式系统总览
在讨论用UML 设计我们的电梯系统的细节问题之前,必须先对实时分布式嵌入系统的定义做一个界定。简述
用UML 进行完全面向对象的设计和分析时,它和一般的软件不同。接下来,本文将对在实时分布式嵌入系统的设
计中使用UML 的优缺点作大量的讨论。
Kopetz 说过实时计算机系统行为的正确性不仅和计算的逻辑结果而且和结果产生的物理及时性有关[1]。谚
云:“过时的正确结果是无效的”。在实时系统中性能要求和功能要求同样重要,我们不仅要完成正确的功能,还
要有必须完成这些功能的清晰系统边界。嵌入式计算机系统用一台计算机作为组件,但是它的主要功能不是一台
计算机。
作为一种面向对象技术,UML 用于实时系统的开发基本上是适合的。UML 中的方法自然地适合于描述和设计
实时系统。用例图描述的是人及外部设备和系统的相互作用。对象的顺序图描述的是包含时间的用例、引起相互
作用的事件和系统回应的细节。
类图帮助我们将系统的组件相互分开并定义它们之间的接口。这些技术足够用于捕获处理场景和识别可靠的
时间问题。
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 32
X-Programmer
非程序员
18
现在我们来回答用UML 设计电梯系统的实践中遇到的问题:“UML 是一种适合于实时系统的建模语言吗?”我
们发现基于上段提到的特征,UML 是适合的但有不足。用UML 设计实时系统有以下问题:
.特定硬件及它们特征的定义。
.在对象、任务和硬件层次描述时间约束。
.网络建模。
在接下来的章节,我们将指出如何较好地用UML 描述电梯系统。下面的实践建议可能是标准UML 有益的补充。

论坛徽章:
0
3 [报告]
发表于 2003-08-03 13:01 |只看该作者

电梯系统的的UML 文档(转载自UMLCHINA,有谁愿意讨论

4 系统静态建模
4.1 电梯控制系统快照
作为我们的教学项目,电梯系统的设计与“真实”的系统相比省去了很多技术上的细节。我们的电梯系统有
所有的电梯系统都有的基本功能,如上升和下降、开门和关门当然还有载客。电梯假设被用在一幢大楼的第一层
到第MaxFloor 层,第一层是大厅。电梯里有每一层对应的呼叫按钮。除了第一层和顶层,每一层都有两个按钮,
乘客可以呼叫上楼或下楼。顶楼只有一个下楼按钮,而大厅只有一个上楼按钮。当电梯停在某一层,电梯开门,
电梯指示灯亮标明当前运行的方向,这样乘客就知道了当前电梯运行的方向。电梯在两个楼层之间快速移动,但
它应该能提前减速停在目的层。为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯
被强制停止。
4.2 用例图
所有系统和人或为了某种目的使用系统的自动化角色交互。人和角色都希望系统的行为是可预知的。在UML
中,一个用例对一个系统行为或系统的一部分建模,是对一组行为序列的描述,系统对一个角色产生的可见的结
果[2]。
用例图对系统的动态设计视图建模。它是一个系统行为、一个子系统或一个类建模的中心。用例图描述一组
用例、角色和它们的关系。用例图的主要内容是:
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 33
X-Programmer
非程序员
18
·用例
·角色
·依赖、泛化和关联关系
按照我们课程的需求文档,电梯系统的用例图如图1 所示:
图1:电梯系统的用例图
共有七个用例基于我们课程的需求文档,如图1 所示:
· 处理电梯呼叫:这个用例包括几个场景,本文接下来的部分兼作详细描述。这些场景有电梯接受乘客的呼
叫、电梯呼叫按钮的亮灭、系统控制部分电梯呼叫按钮信息的更新等等。
·处理楼层呼叫:和处理电梯呼叫类似,这个用例包括电梯接受乘客的楼层选择、楼层按钮的亮灭和系统控
制部分楼层按钮信息的更新等等。
·电梯的动/停:这是一台电梯的主要功能,详细的动作包括驱动速度的改变,停止的判定,电梯的运动方
向驱动。
·标识运行方向:电梯应该有这种机制,即让乘客知道电梯目前的运动方向,决定是否进电梯。
·标识电梯位置:类似的,电梯应该让乘客知道他/她的目的层是否到达,决定是否离开电梯。
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 34
X-Programmer
非程序员
18
·开/关门:乘客进出电梯,电梯应该开关门。这个用例应该包括当电梯正关闭时乘客想进入,乘客可以使电
梯门反转。
·触发紧急制动器:电梯有安全机制确定一个不安全的状态不是瞬时产生的。
电梯系统的唯一角色就是乘客,乘客和系统交互完成任务。乘客通过呼叫电梯和楼层与电梯系统交互。
乘客通过观察电梯移动方向和电梯位置指示器决定是否进/出电梯。因此用例图表明角色和处理电梯呼叫、处
理楼层呼叫、标识运行方向和标识电梯位置四个用例有关。

论坛徽章:
0
4 [报告]
发表于 2003-08-03 13:03 |只看该作者

电梯系统的的UML 文档(转载自UMLCHINA,有谁愿意讨论

5.2.7 Dispatcher 的状态图
图25: Dispatcher 的状态图
5.3 填补从需求到状态图鸿沟的实用方法
状态图能对类的行为,一个用例,或系统整体建模。在本文中,状态图被用于每个对象的行为建模。在系统
后面的阶段,如实施阶段和测试阶段,每个对象的状态机都将用到。
UML 中没有提供详细的方法,即该如何从需求文档或UML 图表如类图画出状态图。我尝试在这里从课程上的
项目经验总结一些从需求文档画出状态图实用的方法,如下:
第1 步:
如果你想画出每个对象的状态图,应该完成对象结构和系统架构的分析。在我们的课程项目中,这部份工作
在我们开始自己的项目之前由老师完成了。
第2 步:
仔细读系统中每一个类或对象的需求。
状态图的大部分需要的信息都可以通过这个方法找到,提供好的充足的需求文档就可以了。我不确定需求文
档有没有任何格式标准。
举一个我们课堂中的例子来说用,我们的电梯系统需求文档中有一些方面应给于不同的关注。
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 55
X-Programmer
非程序员
18
· 回答: 这个部份简述主要功能和特殊对象的存在条件。画状态图的时候这个部份用处不大,但是当状态图
完成时可以用来检查功能实现了没有。
·初始化:初始状态由给出的信息决定。以HallButtonControl 为例,初始状态是" 所有的HallCalls 初值
是false " 和" 所有的HallLights 初值是关"。从这些描述中我们至少能得出结论:初始状态是"门厅呼叫是
False " 或" 门厅Light is off 灯是False ",但这还不完全,让我们继续。
· 输入介面: 这个对象将会从其他的对象中取得的输入信息。
输入变量将触发状态变化,例如状态图中的过渡。
在HallButtonControl 例子中,DesiredFloor 和HallCall 的数值变化,建立一组事件,触发我们未来状
态图中所有的状态变化。
· 输出介面:这些信息帮助建立状态图中的状态。在我们的例子中,
HallLight 是这个对象的处理的单一输出。我们可以想象一下HallLight 可以处于多少个状态。凭直觉门厅
灯能打开和关闭,因此它在状态图中可能有两个状态:
开和关。
让我们看看还有没有别的东西需要加入。
· 状态: 这里的状态和状态图无关,在这些项中一些记号用来速记描述行为。
· 约束和行为:都将用来检查这个对象的状态机是否实现了系统的功能需求而不打破约束。我们从行为描述
知道状态机的变化如何被触发,这很重要。
第3 步:
现在我们有来自需求的一些想法。现在可以产生最初的状态机。
对于HallButtonControl,我们有二个状态:
"门厅灯开" 和" 门厅灯关"。
从给出的初始信息,初始的状态应该是"门厅灯关"。行为定义: " 当HallCall[f,d]是真,则指令
HallLight[f,d] 为On ",这是第一个状态变化从on 到off;同样地,"如果DesiredFloor.d 是Stop,则命令
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 56
X-Programmer
非程序员
18
两个HallLight 切换到off",改变状态从on 到off。在此,状态机停下来等一个新的门厅呼叫。
第4 步:
我们决定增加每个状态机的前置条件、后置条件、行动、入口码和退出码,这些状态机是从约束和行为相关
的需求文档得到。
第5 步:
检查事件的组合是否覆盖所有状态。
第6 步:
检查是否有死状态,没有( 组合) 事件可以使状态机从该状态变换到其他状态。
第7 步:
一项项地按照行为运行状态机,确定所有的需求条件被覆盖,而且状态机改变状态,采取行动,正确地修改
变量。确定没有遗漏和冗余。
第8 步:
正确地画出每一个对象的状态图、标示状态、守卫条件、进出码和过渡,记录用于跟踪的相应需求。
6 结论
在这份报告中,给出了一个模拟电梯控制系统详细的UML 文档。这个文档中用到的UML 图包括用例图、类
图表、顺序图和状态图。在课程项目设计过程中,实时系统中如何使用UML 图得到了大量的关注,我们项目的成
功对这个问题给出了一个很好的答案。由于当前UML 版本的流行和广泛的符号化,OO 技术可以在实时系统开发中
得到适度的发展。
目前面向对象分析和设计方法重心只是在系统的软件。对于实时系统不是完全合适,实时系统需要对系统开
发作出整体苛刻的要求而不仅仅是软件。
实时系统的一些方面:
·硬件元件的定义和他们的特性
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 57
X-Programmer
非程序员
18
·任务的定义和任务的通信
·时间限制
·网络的建模。
如果适当地注意系统的实时特征和不同点的组合,对实时系统的设计和分析有很大的帮助。
为了描述硬件元素和对网络建模,我们用三种不同的视图对系统结构建模。对象构造和软件结构都将重点放
在系统的软件结构上,而从系统结构角度给出了一个系统硬件的略图和系统组件间的通信方法。为了描述时间约
束给出了顺序图和协作图,通过消息和对象的名称标识时间约束标识系统的实时特征。每个图表仅仅是系统的一
些方面的一个图形表示。没有单个图表可以覆盖一个系统设计的所有东西。图表结合起来表达实时系统的完全描
述。系统类图的三个不同的视图有助于了解系统的结构。
本文给出的一些我的项目经验实用方法,可能有助于填补需求和设计之间的间隙。当建立系统的图表的时,
已经存在一些组件,如系统结构和状态图。不清楚上面总结的方法在一般系统的分析和设计过程中是否仍会有效。
举例来说,系统架构-类图是以Phil Koopman的电梯架构为基础的(这个报告的附件),它使用非标准的UML语言。
这里的问题是:UML语言有没有好到,在没有架构图时仍然可以设计系统架构?
本文中电梯系统的功能描述仍然限制在课程项目。而在真实世界中更可能需要一些其他特征,例如一个火警
按钮、或一个风扇锁。然而,给出了系统的框架,这些附加的功能可以被毫不费力的增加到系统的静态和动态的
描述中。
7 参考文献
[1] Hermann Kopetz. Real- , Time Systems Design Principles for Distributed Embedded Applications.
, [2] Grady Booch James Rumbaugh and Ivar Jacobson. The Unified Modeling Language User Guide.
[3] Perdita Stevens and Rob Pooley. , Using UML Software Engineering with Objects and Components.
[4] Martin Fowler and Kendall Scott. , UML Distilled A Brief Guide to the Standard Object Modeling Language.
[5] Bruce Powel Douglass. Doing Hard Time: Developing Real- , , , time Ssystems with UML Objects Frameworks and Patterns.
[6] Desmond F. D’Souza and Ala n Cameron Wills. , , Objects Components and Frameworks with UML.
[7] Alan Moore and Niall Cooling. Developing Real- , Time Systems using Object Technology A white paper from Artisan Software Tools.
[方法]
电梯系统的UML 文档
软件以用为本http://www.umlchina.com 58

论坛徽章:
0
5 [报告]
发表于 2008-05-08 09:36 |只看该作者
你好,能把完整版给我一份吗?想看看图,谢谢
fuxiaoting@tseg.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP