系统架构20 - 统一建模语言UML(上)

统一建模语言

在目前的软件开发方法中,面向对象的方法占据着主导地位。面向对象方法的主导地位也决定着软件开发过程模型化技术的发展,面向对象的建模技术方法也就成为主导的方法。
公认的面向对象建模语言出现于20世纪70年代中期。从1989年到1994年,其数量从不到10种增加到了50多种。
面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;其次,众多的建模语言实际上各有千秋,极大地妨碍了用户之间的交流。
因此,在客观上有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言工作,之后先后推出了 UML的多个版本。UML 的发展历史如下图
在这里插入图片描述
它的作用不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML 成为“标准”建模语言的原因之一在于与程序设计语言无关。而且, UML 符号集只是一种语言而不是一种方法学,不需要任何正式的工作产品。因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式

组成要素

UML 由三个要素构成: UML 的基本构造块(事物、关系)、(支配基本构造块如何放置在一起的规则)和运用于整个语言的公用机制

事物

UML 中有4种事物:结构事物、行为事物、分组事物和注释事物。
(1)结构事物。
结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类 (Class)、 接口 (Interface)、 协 作 (Collaboration)、 用 例 (UseCase)、 主动类 (Active Class)、 构件 (Component)、 制 品 (Artifact) 和结点 (Node)。
结构事物的图形表示
(2)行为事物。
行为事物是 UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。行为事物包括交互 (Interaction)、 状态机 (State Machine) 和活动 (Activity)。
行为事物的图形表示
状态机描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。
活动是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤。
交互、状态机和活动是可以包含在UML 模型中的基本行为事物。
(3)分组事物。
分组事物是UML模型的组织部分,是一些由模型分解成的“盒子”。在所有的分组事物中,最主要的分组事物是包 (Package)。 包是把元素组织成组的机制,这种机制具有多种用途。结构事物、行为事物甚至其他分组事物都可以放进包内。包与构件(仅在运行时存在)不同,它纯粹是概念上的,即它仅在开发时存在。包的图形化表示如图
在这里插入图片描述
(4)注释事物。
注释事物是 UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。注解 (Note) 是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上,对它进行约束或解释的简单符号。注解的图形化表示如图。
在这里插入图片描述

关系

UML中有4种关系:依赖、关联、泛化和实现。
(1)依赖。
依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线。
依赖
(2)关联。
关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚集是一种特殊类型的关联,它描述了整体和部分间的结构关系。在关联上可以标注重复度和角色。
(3)泛化。
泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素
(4)实现。
实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线

相关推荐

  1. UML统一语言

    2024-02-03 19:56:04       16 阅读
  2. 统一语言UML

    2024-02-03 19:56:04       13 阅读
  3. UML 统一语言简介

    2024-02-03 19:56:04       10 阅读
  4. UML统一语言在软件开发中作用

    2024-02-03 19:56:04       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 19:56:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 19:56:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 19:56:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 19:56:04       20 阅读

热门阅读

  1. C语言常见面试题:C语言中如何进行网络编程?

    2024-02-03 19:56:04       28 阅读
  2. SASS 官方文档速通

    2024-02-03 19:56:04       37 阅读
  3. ZZULIOJ 1003: 两个整数的四则运算

    2024-02-03 19:56:04       28 阅读
  4. 前端输入框简单实现检测@成员输入

    2024-02-03 19:56:04       35 阅读
  5. vscode连接ssh失败记录(20240202)

    2024-02-03 19:56:04       30 阅读
  6. Qt-互斥量-临界区-QMutex-QMutexLocker-QReadWriteLock

    2024-02-03 19:56:04       32 阅读
  7. 案例六:GPT磁盘丢失的恢复

    2024-02-03 19:56:04       27 阅读
  8. 乘船问题(c++题解)

    2024-02-03 19:56:04       29 阅读
  9. vue使用pdf.js实现在线查看pdf文件

    2024-02-03 19:56:04       29 阅读
  10. 类银河恶魔城学习记录1-7-DashState源代码 P34

    2024-02-03 19:56:04       27 阅读