`
kuyuyingzi
  • 浏览: 53476 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

软件设计之UML—UML的构成[上]

 
阅读更多

UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模。UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得到了工业界的支持。

本章将按视图、模型元素、图以及公共机制依次介绍UML的构造和基本元素,以使得读者对UML有一个总体了解,其具体细节将在后续章节中详细描述。

画图工具:eDraw、jude

imageimage

欢迎大家继续支持和关注我的博客:

http://hoojo.cnblogs.com

http://blog.csdn.net/IBM_hoojo

也欢迎大家和我交流、探讨IT方面的知识。

email:hoojo_@126.com

1. UML的组成

UML由视图(View)、图(Diagram)、模型元素(Model Element)和通用机制(General Mechanism)等几个部分组成。

a) 视图(View): 是表达系统的某一方面的特征的UML建模元素的子集,由多个图构成,是在某一个抽象层上,对系统的抽象表示。

b) 图(Diagram): 是模型元素集的图形表示,通常是由弧(关系)和顶点(其他模型元素)相互连接构成的。

c) 模型元素(Model Element):代表面向对象中的类、对象、消息和关系等概念,是构成图的最基本的常用概念。

d) 通用机制(General Mechanism):用于表示其他信息,比如注释、模型元素的语义等。另外,UML还提供扩展机制,使UML语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户。

uml 构成

2. UML视图的分类

UML是用来描述模型的,用模型来描述系统的机构或静态特征,以及行为或动态特征。从不同的视角为系统构架建模,形成系统的不同视图。

image

(1) 用例视图(Use Case View),强调从用户的角度看到的或需要的系统功能,是被称为参与者的外部用户所能观察到的系统功能的模型图。

(2) 逻辑视图(Logical View),展现系统的静态或结构组成及特征,也称为结构模型视图(Structural Model View)或静态视图(Static View)。

(3) 并发视图(Concurrent View),体现了系统的动态或行为特征,也称为行为模型视图(Behavioral Model View)或动态视图(Dynamic View)。

(4) 组件视图(Component View),体现了系统实现的结构和行为特征,也称为实现模型视图(Implementation Model View)。

(5) 配置视图(Deployment View),体现了系统实现环境的结构和行为特征,也称为环境模型视图(Environment Model View)或物理视图(Physical View)。

视图是由图组成的,UML提供9种不同的图:

image

(1) 用例图(Use Case Diagram),描述系统功能;

(2) 类图(Class Diagram),描述系统的静态结构;

(3) 对象图(Object Diagram),描述系统在某个时刻的静态结构;

(4) 组件图(Component Diagram),描述了实现系统的元素的组织;

(5) 配置图(Deployment Diagram),描述了环境元素的配置,并把实现系统的元素映射到配置上;

(6) 状态图(State Diagram),描述了系统元素的状态条件和响应;

(7) 时序图(Sequence Diagram),按时间顺序描述系统元素间的交互;

(8) 协作图(Collaboration Diagram),按照时间和空间顺序描述系统元素间的交互和它们之间的关系;

(9) 活动图(Activity Diagram),描述了系统元素的活动;

建模方法由建模语言和建模过程两部分构成。其中建模语言是用来表述设计方法的表示法,建模过程是对设计中所应采取的步骤的描述。UML是一种建模语言,它在很大程度上独立于建模过程。在实际建模中,建模人员最好把UML用于以用案驱动的、以体系机构为中心的、迭代的和渐增式的开发过程中。

一般而言,软件系统的体系结构给出了软件系统的组织、组成系统的构造元素及其接口的选择、系统的行为和体系结构风格等信息。也就是说,它不仅关心系统的结构和行为等功能性需求,而且也涉及系统的性能、易理解性、易复用性等非功能性需求。如下图所示,UML利用用户模型视图、结构模型视图、行为模型视图、实现模型视图和环境模型视图来描述软件系统的体系结构。

根据它们在不同架构视图的应用,可以把9种图分成:

image

(1) 用户模型视图:用例图;

(2) 结构模型视图:类图和对象;

(3) 行为模型视图:状态图、时序图、协作图和活动图(动态图);

(4) 实现模型视图:组件图;

(5) 环境模型视图:配置图。

用户模型视图由专门描述最终用户、分析人员和测试人员看到的系统行为的用案组成,它实际上是从用户角度来描述系统应该具有的功能。用户模型视图所描述的系统功能依靠外部用户或者另外一个系统来激活,为用户或者另一系统提供服务,从而实现用户或另一系统与系统的交互。系统实现的最终目标是提供用户模型视图中所描述的功能。在UML中,用户模型视图是由用案图组成

结构模型视图描述组成系统的类、对象以及它们之间的关系等静态结构,用来支持系统的功能需求,即描述系统内部功能是如何设计的。结构模型视图由类图和对象图构成,主要供设计人员和开发人员使用

行为模型视图主要用来描述形成系统并发与同步机制的线程和进程,其关注的重点是系统的性能、易伸缩性和系统的吞吐量等非功能性需求。行为模型视图利用并发来描述资源的高效使用、并行执行和处理异步事件。除了讲系统划分为并发执行的控制线程之外,行为模型还必须处理通信和这些线程及进程之间的同步问题。行为模型视图主要供系统开发人员和系统集成人员使用,它由序列图、协作图、状态图和活动图组成。

实现模型视图用来描述系统的实现模块它们之间的依赖关系以及资源分配情况。这种视图主要用于系统的配置管理,它是由一些独立的构件组成的。实现模型视图由构件图组成。其中构件是代码模块,不同类型的代码模块形成不同的构件。实现模型视图主要供开发人员使用。

环境模型视图用来描述物理系统的硬件拓扑结构。例如,系统中的计算机和设备的分布情况以及它们之间的连接方式,其中计算机和设备统称为节点。在UML中环境模型视图是由部署图来表示的。系统部署图描述了系统构件在节点上的分布情况,即用来描述软件构件到物理节点的映射。部署图主要供开发人员、系统集成人员和测试人员使用。

上面每一种视图反映了系统的一个特定方面,不同人员可以单独的使用其中每一种视图,从而可以关注特定的体系结构问题。但在通常情况下,由于系统的最终目标是提供用户模型视图中描述的功能以及其它一些非功能性需求,因此,用户模型视图是其它视图的核心基础,其它视图的构造都依赖与用户模型视图中所描述的类容。

细心的读者已经发现,每一种UML图都是由多个图组成的,每一种图都是体系结构某个侧面的表示,各种图实际上是一致的,所有的图在一起组成了系统的完整视图。如下图所示,UML中总共提供了用案图、类图、对象图、序列图、协作图、状态图、活动图、构建图和部署图9种图。根据它们描述的是系统的静态结构还是动态行为,可以将它们分为静态图和动态图两类。再进一步介绍这9中UML图时,先了解下什么是模型元素:

image

3. UML的建模机制

UML有两套建模机制:静态建模机制和动态建模机制。静态建模机制包括用例图、类图、对象图、包、组件图和配置图。动态建模机制包括状态图、时序图、协作图、活动图。

(1) 用例图:用例的可视化工具,它提供计算机系统的高层次的用户视图,表示以外部活动者的角度来看系统将是怎样使用的。

用例图(用案图)是用于描述一组用案,参与者以及它们之间的连接关系。一个用案图描述了一组动作序列,每一个序列表示系统的外部设施(系统的参与者)与系统本身的交互。从一个特定参与者的角度看,一个用案完成对其有价值的工作。如图2.5所示,用案图仅仅是从参与者使用系统的角度来描述系统中的信息,即站在系统外部查看系统应该具有什么功能,而并不描述该功能在软件内部是如何实现的。用案可以应用于整个系统,也可以应用于系统的一个部分,包括子系统、单个的类或者接口。通常,用案不仅代表这些元素所期望的行为,而且还可以把这些元素用作开发过程中测试用案的基础。

用例图包括以下3方面内容:

(a) 用例(Use Case)

(b) 参与者(Actor)

(c) 依赖、泛化和关联关系

用例图示例:

clip_image012

(2) 类图:描述类、接口、协作以及它们之间关系的图。

类图是用于描述一组类、接口、协作以及它们之间的静态关系。在面向对象系统的建模中,类图是最为常用的图,它用来阐明系统的静态结构。事实上类是对一组具有相同属性、操作、关系和语义的对象的描述,其中对类的属性和操作进行描述时的一个最重要的细节就是它的可见性。

类可以以多种形式连接,例如关联、泛化、依赖和实现等。一个典型的系统中通常有若干个类图。一个类图不一定要包含系统中所有的类,一个类可以加到几个类图中。

类图示例:

clip_image014

(3) 对象图:表示在某一时间上一组对象以及它们之间的关系的图。对象图可以被看做是类图在系统某一时刻的实例。

对象图是类图的实例,用来描述特定运行时刻一组对象之间的关系。也就是说,对象用于描述交互的静态部分,它由参与协作的有关对象组成。但不包括在对象之间传递的任何消息。

在创建对象图时,建模人员并不需要用单个的对象图来描述系统中的每一个对象。事实上,绝大多数系统中都会包含成百上千的对象。用对象来描述系统的所有对象以及它们之间的关系一般是不太现实的。因此,建模人员可以选择所感兴趣的对象极其之间的关系来描述。

对象图中所使用的符号和类图中使用的符号几乎完全相同,区别仅在于对象图的对象名带有下划线,而且类与类之间关系的所有的实例都要画出来。

clip_image016

(4) 组件图:描述软件组件以及组件之间的关系,组件本身是代码的物理模块,组件图则显示了代码的结构。

组件图(构件图)是用于描述一组构件之间的组织和依赖关系,用于建模系统的静态实现视图。构件可以是可执行程序集、库、表、文件和文档等,它包含了逻辑类或者逻辑类的实现信息,因此结构模型视图和实现模型视图之间存在映射关系。

构建图中也可以包括包或子系统,它们都是用于将模型元素组成较大的组块。

组件图例图:

OrderComponent

(5) 配置图:描述系统硬件的物理拓扑结构以及在此结构上执行的软件。配置图可以显示计算节点的拓扑结构和通信路径、结点上运行的软件组件、软件组件包含的逻辑单元(对象、类)等。配置图常常用于帮助理解分布式系统。

配置图(部署图)用来描述系统运行是进行处理的节点以及在节点上活动的构件的配置。部署图用来对系统的环境模型视图进行建模。在大多数情况下,部署图用来描述系统硬件的扩普结构。

在UML中,建模人员可以用类图来描述系统的静态结构,可以用序列图、协作图、状态图、活动图来描述系统的动态行为,而用部署图来描述软件所执行所需的处理器和设备的拓扑结构。

部署图配置图

(6) 状态图:通过类对象的生命周期建立模型来描述对象随时间变化的动态行为。

状态图实际上是一种由状态、变迁、事件和活动组成的状态机。状态图描述从状态到状态的控制流,常用于系统的动态特性建模。在大多数情况下,它用来对反应型对象的行为建模。

在UML中,状态图可以用来对一个对象按事件排序的行为建模。一个状态图是强调从状态到状态的控制流的状态机的简单表示。一般而言,状态图是对类所描述的设施的补充说明,它描述了类的所有对象可能具有的状态以及引起状态变化的事件。

OrderState

(7) 时序图:交互图描述了一个交互,它由一组对象和它们之间的关系组成,并且还包括在对象间传递的信息。交互图表达对象之间的交互,是描述一组对象如何协作完成某个行为的模型化工具。

序列图和协作图统称为交互图。其中,序列图用来描述对象之间消息发送的先后次序,阐明对象之间的交互过程以及在系统执行过程中的某一具体时刻将会发生什么事件。序列图是一种强调时间顺序的交互图,其中对象沿横轴方向排列,消息沿纵轴方向排列。

Product-seq[6]

序列图中的对象生命线是一条垂直的虚线,它表示一个对象在一段时间内存在。由于序列图中大多数对象都存在于整个交互过程中,因此这些对象全部排列在图的顶部,它们的生命线从图的顶部画到图的底部。每个对象的下方有一个矩形条,它与对象的生命线重叠,它表示该对象的控制焦点。序列图中的消息可以有序号,但由于这种图上的消息已经从纵轴上按时间顺序排序,因此消息序号通常予以省略。

(8) 协作图:包含类元角色和关联角色,而不仅仅是类元和关联。协作图强调参加交互的各对象的组织。协作图只对相互间有交互作用的对象和这些对象间的关系建模,而忽略了其他对象和关联。协作图也是一种交互图,它强调收发消息的对象的组织结构。

协作图和序列图是协作的,它们可以互相转换。在多数情况下,协作图主要对单调的、顺序的控制流建模,但它也可以用来对包括迭代和分支在内的复杂控制流进行建模。

一般而言,建模人员可以创建多个协作图,其中一些是主要的,另外一些是可选择的路径或者异常条件。建模人员可以用包来组织这些协作图,并给每个图起一个合适的名字,以便与其它图区别开。

clip_image026

(9) 活动图:用于展现参与行为的类的活动或动作。

活动图是状态图的一种特殊情况,其中几乎所有或大多数状态都处于活动状态,而且几乎所有或者大多数变迁都是由源状态中活动的完成触发的。活动图本质上是一种流程图,它描述了从活动到活动的控制流。

可以把活动图看作是新样的交互图,但交互图观察的是传递消息的对象,而活动图观察到的是对象之间传送的消息。尽管两者在语义上的区别很细微,但它们使用不同的方式来看系统的。

GoShopping


原文链接:http://blog.csdn.net/ibm_hoojo/article/details/10617681

分享到:
评论

相关推荐

    UML软件建模之UML的构成

    UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模。UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得到了工业界...

    全国软件设计师强化培训教程 UML部分.pdf

    全国软件设计师强化培训教程-UML部分,资料对UML1.5各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的。

    軟件建模技術與與UML說明

    1.1 模型 1.2 软件模型 1.3 软件建模方法 1.4 面向对象方法基础 2.1 关于UML 2.2 UML的构成 3.1 用例 3.2 参与者 3.3 用例之间的关系 3.4 用例图 3.5 发现用例 ...8.3软件分析和设计与UML图 8.4 建模十原则

    《UML参考手册(第二版)》(The Unified Modeling Language Reference Manual(2nd Edition))

    无论您是在捕获需求、开发软件架构、设计实现还是在试图理解现有系统,在《UML参考手册》中您都将找到满意的答案。   《UML参考手册》第2版基于UML2.0规范,对1999年出版的第1版进行了全面的修改。《UML参考手册》...

    UML基础资料

    UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表示法两个部分。  (1) ...

    UML基础教程

    UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表示法两个部分。  (1) ...

    UML 基础教程(面向对象软件设计)

    本资料对UML1.5各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的。本资料不涉及模型图作成的要点等相关知识。

    UML 的九种模型图与"4+1" 视图模型对应关系

    UML模型视图由哪几种具体的视图构成?各自的作用是什么? UML模型视图可以通过4+1视图模型的软件体系结构来了解 1代表Use Case View 定义了系统的外部行为,从用户角度描述的系统的功能。 4分别代表 Design View...

    标准建模语言UML教程

    然后详细介绍UML的用例图、类图、对象图、交互图(顺序图和合作图)、状态图、活动图、构件图和配置图等九种模型的构成要素、符号表示、语法和语义,并介绍基于UML的软件开发过程,最后给出用UML进行程序设计的示例...

    软件设计师重点考点

    1.8 计算机的安全、可靠性评价 *<软件设计师> 24 1.9 数学基础知识 28 1.9.1命题逻辑的基础知识 28 1.9.2 谓词逻辑、形式逻辑基础知识 31 1.9.3排列组合、概率论应用、应用统计 34 1.9.4线性规划 37 专题二:程序...

    UML标准建模语言UML教程

    介绍UML的用例图、类图、对象图、交互图(顺序图和合作图)、状态图、活动图、构件图和配置图等九种模型的构成要素、符号表示、语法和语义,并介绍基于UML的软件开发过程,最后给出用UML进行程序设计的示例。

    UML动态分析-活动图

    活动是某件事情正在进行的状态。...也可以是软件系统中正在运行的某个类对象的一个操作。 活动具体表现为由一系列动作组成的执行过程。 将各种活动以及不同活动之间的转换用图形进行表示,就构成了活动图。

    graphvizuml:使用 Graphviz 绘画 UML 图

    % 使用 Graphviz 绘画 UML 图% Milo Yip 19/10/28简介本文为开放文档,可在 提交 issue/PR。本文的 PDF 版本可在 。 是 AT&T 实验室开发的一个...不过,我们在软件设计中,经常以类图表示系统中某个部分,并且按需展示

    《软件工程——理论与实践》书本课后答案全

    、选择题 1 软件的主要特性是(A B C)。 A) 无形B) 高成本 ...A) 软件需求 B) 软件设计 C) 风险分析 D) 软件实现 5 下列属于面向对象开发方法的是(A B C D)。 A) Booch B) UML C) Coad D) OMT

    线程状态图

    线程的几种状态以及状态调用图,就是我自己要用,

    基于java的简单即时通讯工具系统设计与实现毕业设计(源代码+说明报告)

    Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了...

    计算机毕业设计 - java一个简单的即时通讯工具的设计与开发(源代码+论文),保证可靠运行,提供论文范本,可供参考!

    Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了...

Global site tag (gtag.js) - Google Analytics