UML.docx

上传人:b****3 文档编号:4865585 上传时间:2022-12-11 格式:DOCX 页数:22 大小:314.19KB
下载 相关 举报
UML.docx_第1页
第1页 / 共22页
UML.docx_第2页
第2页 / 共22页
UML.docx_第3页
第3页 / 共22页
UML.docx_第4页
第4页 / 共22页
UML.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

UML.docx

《UML.docx》由会员分享,可在线阅读,更多相关《UML.docx(22页珍藏版)》请在冰豆网上搜索。

UML.docx

UML

一、如何绘制UML活动图

要创建一个UML活动图,您需要反复执行下列步骤。

  第一步,定义活动图的范围首先应该定义您要对什么建模。

单个用户案例力?

一个用户案例的一部分?

一个包含多个用户案例的商务流程?

一个类的单个方法?

一旦您定义了您所作图的范围,您应该在其顶部,用一个标注添加标签,指明该图的标题和唯一的标示符。

您有可能也想要包括该图的时间甚至作者名。

  第二步,添加起始和结束点每个活动图有一个起始点和结束点,因此您也要马上添加它们。

在《UML精粹》(UMLDistilled)(参见参考资料),Fowler和Scott认为结束点是可选的。

有时候一个活动只是一个简单的结束,如果是这种情况,指明其唯一的转变是到一个结束点也是无害的。

这样,当其他人阅读您的图时,他或她知道您已经考虑了如何退出这些活动。

  第三步,添加活动如果您正对一个用户案例建模,对每个角色(actor)所发出的主要步骤引入一个活动(该活动可能包括起始步骤,加上对起始步骤系统响应的任何步骤)。

如果您正对一个高层的商务流程建模,对每个主要流程引入一个活动,通常为一个用户案例或用户案例包。

最后,如果您正对一个方法建模,那么对此引入一个活动是很常见的。

  第四步,添加活动间的转变我的风格总是应该退出一个活动,即使它是转变到一个结束点。

一旦一个活动有多个转变时,您必需对每个转变加以相应标示。

  第五步,添加决策点有时候,您所建模的逻辑需要做出一个决策。

有可能是需要检查某些事务或比较某些事务。

要注意的是,使用决策点是可选的。

例如,在图1中,我可以只是简单地将“接受”和“拒绝”两个转变直接接到“在大学报名(EnrollinUniversity)”活动。

  第六步,找出可并行活动之处当两个活动间没有直接的联系,而且它们都必需在第三个活动开始前结束,那它们是可以并行运行的。

在图1中,您看到是有可能“参加简要介绍(attendoverview)”和“报名研讨班(enrollinseminars)”可以按任意次序进行,但是它们都得在您结束整个流程前完成。

图1.一个在学校首次报名的UML活动图

二、标准建模语言UML的动态建模机制

1.消息

  在面向对象技术中,对象间的交互是通过对象间消息的传递来完成的。

在UML的四个动态模型中均用到消息这个概念。

通常,当一个对象调用另一个对象中的操作时,即完成了一次消息传递。

当操作执行后,控制便返回到调用者。

对象通过相互间的通信(消息传递)进行合作,并在其生命周期中根据通信的结果不断改变自身的状态。

  在UML中,消息的图形表示是用带有箭头的线段将消息的发送者和接收者联系起来,箭头的类型表示消息的类型,如图2所示。

  UML定义的消息类型有三种:

  简单消息(SimpleMessage)表示简单的控制流。

用于描述控制如何在对象间进行传递,而不考虑通信的细节。

  同步消息(SynchronousMessage)表示嵌套的控制流。

操作的调用是一种典型的同步消息。

调用者发出消息后必须等待消息返回,只有当处理消息的操作执行完毕后,调用者才可继续执行自己的操作。

  异步消息(AsynchronousMessage)表示异步控制流。

当调用者发出消息后不用等待消息的返回即可继续执行自己的操作。

异步消息主要用于描述实时系统中的并发行为。

2.状态图

  状态图(StateDiagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。

大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。

一个状态图包括一系列的状态以及状态之间的转移。

  

(1)状态 所有对象都具有状态,状态是对象执行了一系列活动的结果。

当某个事件发生后,对象的状态将发生变化。

状态图中定义的状态有:

初态、终态、中间状态、复合状态。

其中,初态是状态图的起始点,而终态则是状态图的终点。

一个状态图只能有一个初态,而终态则可以有多个。

  中间状态包括两个区域:

名字域和内部转移域,如图3所示。

图中内部转移域是可选的,其中所列的动作将在对象处于该状态时执行,且该动作的执行并不改变对象的状态。

  

一个状态可以进一步地细化为多个子状态,我们将可以进一步细化的状态称作复合状态。

子状态之间有"或关系"和"与关系"两种关系。

或关系(如图4)说明在某一时刻仅可到达一个子状态。

例如,一个处于行驶状态的汽车,在"行驶"这个复合状态中有向前和向后两个不同的子状态,在某一时刻汽车要么向前,要么向后。

与关系(如图5)说明复合状态中在某一时刻可同时到达多个子状态(称为并发子状态)。

具有并发子状态的状态图称为并发状态图。

  

(2)转移 状态图中状态之间带箭头的连线被称为转移。

状态的变迁通常是由事件触发的,此时应在转移上标出触发转移的事件表达式。

如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。

3.顺序图

  顺序图(SequenceDiagram)用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。

顺序图存在两个轴:

水平轴表示不同的对象,垂直轴表示时间。

顺序图中的对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。

垂直虚线是对象的生命线,用于表示在某段时间内对象是存在的。

对象间的通信通过在对象的生命线间画消息来表示。

消息的箭头指明消息的类型。

  顺序图中的消息可以是信号(Signal)、操作调用或类似于C++中的RPC(RemoteProcedureCalls)和Java中的RMI(RemoteMethodInvocation)。

当收到消息时,接收对象立即开始执行活动,即对象被激活了。

通过在对象生命线上显示一个细长矩形框来表示激活。

  消息可以用消息名及参数来标识。

消息也可带有顺序号,但较少使用。

消息还可带有条件表达式,表示分支或决定是否发送消息。

如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。

  在顺序图的左边可以有说明信息,用于说明消息发送的时刻、描述动作的执行情况以及约束信息等。

一个典型的例子就是用于说明一个消息是重复发送的。

另外,可以定义两个消息间的时间限制。

  一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对象用"X"标识。

  另外,在很多算法中,递归是一种很重要的技术。

当一个操作直接或间接调用自身时,即发生了递归。

产生递归的消息总是同步消息,返回消息应是一个简单消息。

4.合作图

  合作图(CollaborationDiagram)用于描述相互合作的对象间的交互关系和链接关系。

虽然顺序图和合作图都用来描述对象间的交互关系,但侧重点不一样。

顺序图着重体现交互的时间顺序,合作图则着重体现交互对象间的静态链接关系。

  合作图中对象的外观与顺序图中的一样。

如果一个对象在消息的交互中被创建,则可在对象名称之后标以{new}。

类似地,如果一个对象在交互期间被删除,则可在对象名称之后标以{destroy}。

对象间的链接关系类似于类图中的联系(但无多重性标志)。

通过在对象间的链接上标志带有消息串的消息(简单、异步或同步消息)来表达对象间的消息传递。

  

(1)链接 链接用于表示对象间的各种关系,包括组成关系的链接(CompositionLink)、聚集关系的链接(AggregationLink)、限定关系的链接(QualifiedLink)以及导航链接(NavigationLink)。

各种链接关系与类图中的定义相同,在链接的端点位置可以显示对象的角色名和模板信息。

  

(2)消息流 在合作图的链接线上,可以用带有消息串的消息来描述对象间的交互。

消息的箭头指明消息的流动方向。

消息串说明要发送的消息、消息的参数、消息的返回值以及消息的序列号等信息。

5.活动图(ActivityDiagram)

  活动图的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程。

活动图是由状态图变化而来的,它们各自用于不同的目的。

活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。

活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。

图1给出了一个活动图的例子。

活动和转移

  一项操作可以描述为一系列相关的活动。

活动仅有一个起始点,但可以有多个结束点。

活动间的转移允许带有guard-condition、send-clause和action-expression,其语法与状态图中定义的相同。

一个活动可以顺序地跟在另一个活动之后,这是简单的顺序关系。

如果在活动图中使用一个菱形的判断标志,则可以表达条件关系(见图1),判断标志可以有多个输入和输出转移,但在活动的运作中仅触发其中的一个输出转移。

  活动图对表示并发行为也很有用。

在活动图中,使用一个称为同步条的水平粗线可以将一条转移分为多个并发执行的分支,或将多个转移合为一条转移。

此时,只有输入的转移全部有效,同步条才会触发转移,进而执行后面的活动,如图2所示。

泳道

  活动图告诉你发生了什么,但没有告诉你该项活动由谁来完成。

在程序设计中,这意味着活动图没有描述出各个活动由哪个类来完成。

泳道解决了这一问题。

它将活动图的逻辑描述与顺序图、合作图的责任描述结合起来。

如图2所示,泳道用矩形框来表示,属于某个泳道的活动放在该矩形框内,将对象名放在矩形框的顶部,表示泳道中的活动由该对象负责。

对象

  在活动图中可以出现对象。

对象可以作为活动的输入或输出,对象与活动间的输入/输出关系由虚线箭头来表示。

如果仅表示对象受到某一活动的影响,则可用不带箭头的虚线来连接对象与活动,如图2所示。

信号

  如图3所示,在活动图中可以表示信号的发送与接收,分别用发送和接收标志来表示。

发送和接收标志也可与对象相连,用于表示消息的发送者和接收者。

6.四种图的运用

  上面对UML中用于描述系统动态行为的四个图(状态图、顺序图、合作图和活动图)做了简单地介绍。

这四个图均可用于系统的动态建模,但它们各自的侧重点不同,分别用于不同的目的。

下面对如何正确使用这几个图做一简单的总结,在实际的建模过程中要根据具体情况灵活运用这些建议。

  首先,不要对系统中的每个类都画状态图。

尽管这样做很完美,但太浪费精力,其实你可能只关心某些类的行为。

正确的做法是:

为帮助理解类而画它的状态图。

状态图描述跨越多个用例的单个对象的行为,而不适合描述多个对象间的行为合作。

为此,常将状态图与其它技术(如顺序图、合作图和活动图)组合使用。

  顺序图和合作图适合描述单个用例中几个对象的行为。

其中顺序图突出对象间交互的顺序,而合作图的布局方法能更清楚地表示出对象之间静态的连接关系。

当行为较为简单时,顺序图和合作图是最好的选择。

但当行为比变复杂时,这两个图将失去其清晰度。

因此,如果想显示跨越多用例或多线程的复杂行为,可考虑使用活动图。

另外,顺序图和合作图仅适合描述对象之间的合作关系,而不适合对行为进行精确定义,如果想描述跨越多个用例的单个对象的行为,应当使用状态图

三、系统分析员备考之UML篇

一、概述

  统一建模语言(UnifiedModelingLanguage,UML)是一种可视化的建模语言,它能让系统构造者用标准的、易于理解的方式建立起能够表达他们想象力的系统蓝图,并且提供了便于不同人之间有效地共享和交流设计结果的机制。

UML作为通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。

它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。

UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,UML是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。

UML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。

它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。

UML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。

它是为支持大部分现存的面向对象开发过程而设计的。

    UML描述了一个系统的静态结构和动态行为。

UML将系统描述为一些离散的相互作用的对象并最终为外部用户提供一定的功能的模型结构。

静态结构定义了系统中的重要对象的属性和操作以及这些对象之间的相互关系。

动态行为定义了对象的时间特性和对象为完成目标而相互进行通信的机制。

从不同但相互联系的角度对系统建立的模型可用于不同的目的。

  UML还包括可将模型分解成包的结构组件,以便于软件小组将大的系统分解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环境中管理模型单元。

它还包括用于显示系统实现和组织运行的组件。

  面向对象的分析与设计(OOA&D)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。

它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。

  面向对象技术和UML的发展过程可用下图来表示,标准建模语言的出现是其重要成果。

在美国,截止1996年10月,UML获得了工业界、科技界和应用界的广泛支持,已有700多个公司表示支持采用UML作为建模语言。

1996年底,UML已稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。

1997年11月17日,OMG采纳UML1.1作为基于面向对象技术的标准建模语言。

UML代表了面向对象方法的软件开发技术的发展方向,具有巨大的市场前景,也具有重大的经济价值和国防价值。

二、UML的构成

  UML包括了一些可以相互组合图表的图形元素。

由于UML是一种语言,所以UML也具有组合这些元素的法规。

UML提供这些图的目的是用多个视图来展示一个系统,这组视图被称为一个模型(Model)。

一个系统的UML模型有点像一个建筑物按照比例缩小的并经艺术家装饰后的建筑模型。

但是,UML模型只描述了一个系统要做什么,并没有指明如何去实施这个系统。

1、类图

  类图中的类和我们经常提到的面向对象软件设计与开发中的类是同一个概念,用来表示这么一个类的图我们就称之为类图。

它主要是展示了系统或者领域中的实体以及实体之间的关联,类的UML图是一个矩形框。

类图对系统分析有很大的帮助,它可以让系统分析员使用客户所采用的术语和客户交流,这样就可以促使客户说出所要解决的问题的重要细节。

图1

2、对象图

  同类一样,对象在这里的概念与面向对象编程思想中的对象一样,它是类的实例。

,是具有具体属性值和行为的一个具体事物。

  面向对象技术已经席卷了整个世界,事实也去确实如此。

作为一种程序设计方法,它的建立具有很多优点。

基于构件的软件开发方法就是面向对象技术孕育出来的。

采用这种方法建立一个系统时,首先建立一组类,然后通过增加已有构件的功能或者添加新的构件来逐步扩充系统,最后在建立一个新系统时,还可以重用已经建好的类。

这样做可以大大削减系统开发时间。

  使用UML可以建立起易于使用和易于理解的对象模型,以使程序员能够创建出这些模型所对应的软件。

所以,UML对基于类开发的全过程都有益处。

  对象图也是一个举行,和类一样,但是对象名下面要带下划线。

图2

3、用例图

  用例是用来描述潜在的用户所看到的系统的UML组件。

它是一个被称为参与者(可以是一个人、一个硬件设备、一段时间的流逝或者另一个系统)的实体所发起的场景的集合。

用例的执行必须对发起改用例的参与者或者其他参与者产生影响。

用例可以被重用。

与用户会谈是导出用例的最好技术,当导出一个用例时,要注意到发起用例的牵制条件和产生影响的后置条件。

  用例是一个强有力的工具,当使用UML可视化地表达出这些概念后用例甚至会变得更加强大。

可视化允许你向用户现实用例,他们能像你提供更多的信息。

系统分析过程的一个目标是产生一组用例。

此想法是要对用例进行分类整理,以便于引用。

用例代表着用户的观点。

当系统要进行升级时,用例目录可以作为进一步收集升级需求的基础。

  用例是由参与者发起的,参与者(也许是发起者,但不是必须的)能够从用例的执行中获得有价值的事物。

用例分析的一个好处是它能展现系统和外部世界的边界。

参与者是典型的外部实体,而用例是典型的系统内部。

参与者、用例和互连线共同组成了用例模型。

如图3示。

在用例模型中,直立人形图标代表参与者,椭圆代表用例,参与者和用例之间的关联线代表两者之间的通信关系。

图3

4、状态图

  在计算机系统中,当系统和用户(也可能是其他系统)交互的时候,组成系统的对象为了适应交互要经历必要的变化。

一种表征系统变化的方法可以说是对想改变了自己的状态以相应事件和时间的流逝。

UML状态图就是展示这种变化的工具,它描述了一个对象所处的可能状态及状态间的转移,并给出了状态变化序列的起点和终点。

要注意,状态图与以上提到的类图、对象图和用例图有着本质的不同。

前3种图能够对一个系统或至少一组类、对象或用例建立模型,而状态图只是对单个对象建立模型。

  状态图描述一段时间内对象所处的状态和状态的变化。

状态的UML图标是一个圆角矩形,状态转移用状态之间的有向连线表示。

  UML状态图提供了多种表示法符号,并且包括了很多建模思想——如和对单个系统对象所经历的变化建模。

或许对于很简单的问题建模时,这种类型的图可能很快就会变得很复杂,但是,事实上确实很需要状态图,因为它能帮助系统分析员、设计员和开发人员理解系统中对象的行为。

类图和对应的对象图只展示了系统的静态方面,他们展示的是系统的静态层次和关联,并能够告诉你系统的行为是什么,但它们不能说明这些行为的动态细节。

图4

5、顺序图

  状态图的焦点是对象的状态,这只是图偏的一小部分。

UML顺序图更进一步显示出随着时间的变化对象之间是如何通信的。

UML顺序图在对象交互的表示中加入了时间维。

在顺序图中,对象位于图的顶部,从上到下表示时间的流逝,每个对象都有一个垂直向下的对象生命线,对象生命线上的窄矩形条代表激活——改对象某个操作的执行。

可以沿着对象的生命线表示出对象的状态。

  消息,有简单的、同步的或异步的三种,没别表示为如图5示的用连接对象生命线的带箭头的连线代表。

消息在垂直方向上的位置表示了该消息在交互序列中发生的时间,越靠近图顶部的消息发生的越早,越靠近底部的发生的越晚。

图5

  用例图可以只说明用例的一个实例(场景),或者可以表示一般的或者一个用例的所有场景。

一般顺序图中通常提供了表示“if”条件语句和“while”循环语句的机会,每个“if”条件语句要用方括号([])括起来,“while”循环语句也要用方括号([])括起来,并在左括号前面加一个星号。

同时,一般来说,对象可能会有一个调用自身的操作,即递归或自身调用。

自身调用的表示是从一个激活框中引出消息线又重新回到这个激活框,并在该激活框中附加上一个小的矩形框,其表示方法如图6示。

图6顺序图中自身调用的表示法

图7顺序图

6、活动图

  UML活动图是状态图的一种扩展形式,它展示出对象执行某种行为时或者在业务过程中所要精力的步骤和判定点。

每个步骤(活动)用一个圆角矩形(比状态图更扁更圆)表示,菱形图标代表判定点。

它很像程序设计课中学到的流程图。

UML活动图可用于表达一个对象的操作和一个业务过程。

活动图与状态图的主要区别是,状态图图出显示的是状态,而活动图突出显示的是活动。

  当一个活动路径分成两个或多个路径时,可以用一个与路径垂直的粗实心线来代表路径的分支,两个并发路径的合并可以用相同的方式表达。

如图8。

图8并发活动表示法

  活动图中可以显示出信号:

发送信号的图符是一个凸无边形,接收信号的是一个凹无边形。

在活动图中还可以表示出执行每个活动的角色,即通过将活动图划分为泳道——代表每个角色的平行段。

还可以在活动图中出现其他图的图符并绘制混合图。

一个活动图的大概情况可以表示为如图9示。

图9活动图

7、协作图

  对象图展示出对象和对象之间的静态关系,协作图是对象图的扩展。

协作图可视化地表示了对象之间随时间发生的交互,它除了展示对象之间的关联,还显示出对象之间的消息传递。

  与顺序图一样,协作图也展示对象之间的交互关系,实际上,顺序图和协作图两者是语义等价的。

也就是说,这两种图表达的是同一种信息,并可以将顺序图转化为协作图,反之亦然。

但是,顺序图强调的是交互的时间顺序,而协作图强调的是交互的语境和参与交互的对象的整体组织。

还可以从另一种角度来看两种图的定义,以区分这两种图:

顺序图按照时间顺序布图,而协作图按照空间组织布图。

  协作图中可以表示出一个对象按照指定的次序(或无次序)地向一组对象发送消息。

还可以表示拥有消息控制流的主动对象,以及消息之间的同步。

协作图示例如图10。

对象图标可以布置在图中的任何位置。

对象间的连线代表了对象之间的关联和消息传递。

每个消息箭头都带有一个消息序号,这些序号说明了该消息在交互序列中的序号。

图10协作图

8、构件图

  软件构件是软件系统的一个物理单元,它驻留在计算机中而不是只存在系统分析员的脑海里。

像数据表、数据文件、可执行文件、动态链接库、文档等都可以称为构件。

至于构件和类的区别可以这样理解:

构件是类的软件实施。

类是代表一组属性和操作的抽象实体。

类和构件的一个重要关系是:

一个构件可以是多个类的实施。

  既然构件是驻留在计算机系统中的工作单元,对它建模是不是多此一举呢?

我们说不是。

因为对构件和构件的关系建模具有如下意义:

使客户能够看到最终系统的结构;让开发者有一个目标;让编写技术文档和帮助文件的技术人员能够理解所写的文档是关于哪方面内容的;利于重用等。

  构件的一个重要方面是它具有潜在的重用性。

在当今高节奏的商业竞技场中,你建造的系统发挥功能越快,在竞争中获得的利益就越多。

如果在一个系统中所构造的构件在开发另一个系统时被重用,那么就越有利于获得这种竞争利益。

在建立构件的工作上花费一些时间和精力有助于今后的重用。

  在对软件实体进行建模的过程中,你可能会遇到三种类型的构件:

  ①、部署构件(DeploymentComponent),它形成了可执行系统的基础。

例如动态链接库、二进制可执行体、ActiveX控件等。

  ②、工作产品构件(WorkProductComponent),它是部署构件的来源,如数据文件和程序源代码。

  ③、执行构件(ExecutionComponent),是可运行系统产生的结果。

  构件图中包括构件、接口和关系。

当然前面介绍的其他类型的图标也可以加入到构件图中。

构件图的图标是一个左侧附有两个小矩形的大矩形框,如图11示。

构件的名字位于构件图标的中央。

如果构件是一个包的成员,那么构件名之前要加上包的名字,还可增加一些表达构件的细节信息。

图11构件图

  可以通过构件的接口来访问一个构件,构件的接口使一组操作集合。

构件和接口之间的关系叫做实现关系。

一个构件可以访问另一个构件提供的服务。

当这样做的时候,它要使用导入接口,而实现服务接口的构件对访问它的服务的构件提供服务接口。

9、部署图

  在大多数系统中,硬件也是一个重要方面。

现在的计算机领域,一个系统可能要包括无数种的操作平台,并且要有可能还要跨越很长的物理距离。

一个坚实的系统硬件部署图对系统设计来说是必不可少的。

从一开始的类的概念到上面的驻留在计算机中的软件构件,这里我们来看真是世界中的计算机硬件。

  将UML部署图与整个系统集成到一起后将看到完整的物理结构图。

系统是由节点组成的,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1