1、UML

1.1概述

UML(Unified Modeling Language 统一建模语言) 是为软件系统的制品进行描述(specifying)可视化(visualizing)构造(constructing)文档化(documenting) 的一种语言。

UML规范用来描述建模的概念有: 类、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。

1.2 UML是一种建模语言

  • 建模方法 = 建模语言 + 建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。
  • 标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。
  • 建模能力:建模方法 + 领域知识 + 实践

1.3 UML语言包含三方面

  1. UML基本图素:它是构成UML模型图的基本元素。例如类、对象、包、接口、组件等。
  2. UML模型图:它由UML基本图素按照UML建模规则构成。例如用例图、类图、对象图、…等。
  3. UML建模规则:UML模型图必须按特定的规则有机地组合而成,从而构成一个有机的、完整的UML模型图(well-formed UML diagram)。

2、UML支持软件体系结构建模

为了表达不同的软件开发相关人员在软件开发周期的不同时期看待软件产品的不同侧重面, 需要对模型进行分层。

UML根据软件产品的体系结构(architecture)对软件进行分层。

软件的体系结构分解为五个不同的侧面,称为4+1视图(view)。分别是:

  • 用例视图(Use case view,Scenarios)—场景视角
  • 逻辑视图(Logical view) — 逻辑视角
  • 进程(过程)视图(Process view) — 过程视角
  • 实现(开发)视图(Implementation view) —开发视角
  • 部署(物理、配置)视图(Deployment view) —物理视角

  • 每个视图分别关注软件开发的某一侧面
  • 视图由一种或多种模型图(diagram)构成
  • 模型图描述了构成相应视图的基本模型元素(element)及它们之间的相互关系。

2.1 逻辑视图

逻辑视图定义系统的实现逻辑, 描述为实现用例图描述的功能,在对软件系统进行设计时, 所产生的设计概念,设计概念又称为软件系统的设计词汇 (vocabulary)。

逻辑视图定义了:

  • 设计词汇的逻辑结构
  • 存在于它们之间的语义联系
  • 设计词汇包括系统的类/协同/接口及其关系

对逻辑视图的描述在原则上与软件系统的实现平台无关。 它相当于电子产品生产中的电原理图。逻辑视图包含的模型图有:

  • 类图(class diagrams)
  • 对象图(object diagrams)
  • 交互图(interaction diagrams)
  • 状态图(state-chart diagrams)
  • 活动图(activity diagrams)

2.2 实现(开发)视图

实现视图描述组成一个软件系统的各个物理部件,这些部件以各种方式组合起来,(如: 不同的源代码经过编译,构成一个可执行系统; 或者不同的软件组件配置成为一个可执行系统;以及不同的网页文件,以特定的目录结构,组成一个网站,等等) 构成了一个可实际运行的系统。

当系统的逻辑结构在逻辑视图里被定义之后, 需要定义逻辑结构的物理实现。这包括:

  • 设计元素对应的源代码文件
  • 各物理文件之间的关系、存放路径,等等

实现视图就是定义这些内容的地方,它当于电子产品的印刷电路板的布线图。


实现视图包含的模型图有:

  • 部件图(Component diagram)
  • 交互图(Interaction Diagram)
  • 状态图(state-chart diagram)
  • 活动图(activity diagram)

2.3 部署视图

软件产品将运行在计算机硬件系统上, 如果软件产品是面向网络的应用系统,则有可能同时运行在多个计算机上。

部署视图用来描述软件产品在计算机硬件系统和网络上的安装、分发(delivery)、分布(distribution)。


在部署视图中,系统的静态特性用分布图(deployment diagram)描述。

动态特性的描述用

  • 交互图(interaction diagram)
  • 状态图(state-chart diagram)
  • 活动图(activity diagram)

2.4 过程视图

过程架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与过程结构相配合在一起 —— 即在哪个控制线程上,对象的操作被实际执行。

2.5 用例视图

用例(场景)视图用来支持软件系统的需求分析,它定义系统的边界,关注的是系统的外部功能的描述。

它从系统的使用者的角度,描述系统的外部的

  • 静态的功能
  • 动态行为

系统的动态功能由UML以下模型图描述:

  • 交互图(interaction diagram),包括顺序图和协作图。
  • 状态图(state-chart diagram)
  • 活动图(activity diagram)

3、UML基本组成

\(UML = UML成员 + UML建模规则\)

UML建模规则:相当于建模语言的语法

UML成员(building blocks of the UML):它是UML的基本组成部分


\(UML成员 = UML 基本模型元素+ 关系+ 模型图\)

UML成员可进一步划分为

  • UML 基本模型元素(things in UML)
  • 关系(relationship)
  • 模型图(diagram)

3.1 UML成员

3.1.1 UML 基本模型元素

UML基本模型元素,类似于电子产品电原理图里的集成电路符号,是模型图上包含的基本符号

\(UML基本模型元素 = 结构模型元素+行为模型元素+成组元素+注解元素\)

基本模型元素可分为四类, 它们是:

  • 结构模型元素(structural things)
  • 行为模型元素(behavioral things)
  • 分组模型元素(grouping things)
  • 注解元素(annotational things)

详情点击这里

3.1.2 关系

结构模型元素是UML模型的静态组成部分,静态组成部分不是孤立存在的,它们被组合在一起互相协作以完成某项任务。因此,结构模型元素之间存在着某种语义上的联系。

在UML中,这种联系是关系(relationship)

UML中共有4种关系,它们是:

  • 关联关系(association)

  • 依赖关系(dependency)

  • 泛化关系(generalization)

  • 实现关系(realization)



    详情点击这里

3.1.3 模型图

UML基本模型元素及其关系必须通过某种载体表示,这种载体就是模型图(diagram)

在UML中,模型图是一组UML基本模型元素的图形表示,它通常由一组节点(UML基本模型元素), 及节点之间的连线(关系)组成

软件系统体系结构的5个视图的内容, 就是用模型图来表达的

一般地说,一个UML基本模型元素既可以出现在所有的模型图中,又可以出现在某些模型图中,甚至可以不在任何一个模型图上出现


9种UML模型图。它们是:

  • 类图
  • 对象图
  • 用例图
  • 序列图
  • 协同图
  • 状态图
  • 活动图
  • 组件图
  • 分布图

3.2 UML建模规则

UML建模规则包括:

  • 名字:任何一个UML成员都必须包含一个名字
  • 作用域:UML成员所定义的内容起作用的上下文环境
  • 可见性:UML成员能被其它成员引用的方式
  • 完整性:UML成员之间互相联接的合法性和一致性。
  • 运行属性(execution):UML成员在运行时的特性。

完备的UML模型必须对以上的内容给出完整的解释, 当用于软件系统的建造时,UML模型是必须是完备的, 但是当模型在不同的视图中出现时, 出于不同的交流侧重点, 其表达可以是不完备的 。

UML的定义和组成详细介绍的更多相关文章

  1. uml中定义的关系详细详解

    uml定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依 ...

  2. java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列

    1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...

  3. Unity3d 发动机原理详细介绍

    Unity3d 发动机原理详细介绍 www.MyException.Cn   发布于:2013-10-08 16:32:36   浏览:46次 0     Unity3d 引擎原理详细介绍 体系结构 ...

  4. kvm详细介绍

    KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...

  5. [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍

    绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...

  6. _MSC_VER详细介绍

    _MSC_VER详细介绍 转自:http://www.cnblogs.com/braver/articles/2064817.html _MSC_VER是微软的预编译控制. _MSC_VER可以分解为 ...

  7. Linux截屏工具scrot用法详细介绍

    Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用.   在Linux中安装Scrot ...

  8. 【转载】硬盘MBR详细介绍

    原文地址:http://blog.chinaunix.net/uid-15007890-id-106892.html 硬盘MBR详细介绍      硬盘是现在计算机上最常用的存储器之一.我们都知道,计 ...

  9. Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

    概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...

随机推荐

  1. 写一个简单的AIDL

    1.首先创建一个AIDL文件,并添加上两个接口.IMyAidlInterface.aidlpackage com.example.broadcastdemo;// Declare any non-de ...

  2. GO 总章

    GO 学习资源 go 代理 GO 语言结构 GO 数字运算 GO 时间处理 GO 定时器 GO 异常处理 go recover让崩溃的程序继续执行 GO Exit Fatal panic GO 通过进 ...

  3. Linux系统分区及挂载点

    一.关于Linux的分区情况 虽然硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extended partition ...

  4. clickhouse输入输出格式 TSKV CSV

    TSKVTSKV格式不适合有大量小列的输出.TSKV的效率并不比JSONEachRow差.TSKV数据查询和数据导入.不需要保证列的顺序. 支持忽略某些值,这些列使用默认值,例如0和空白行.复杂类型的 ...

  5. 【Linux】【Shell】【Basic】Bash

    命令历史:shell进程会在其会话中保存此前用户提交执行过的命令: ------------------------------------------------------------------ ...

  6. liunx 安装ActiveMQ 及 spring boot 初步整合 activemq

    源码地址:  https://gitee.com/kevin9401/microservice.git 一.安装 ActiveMQ: 1. 下载 ActiveMQ wget  https://arch ...

  7. List如何一边遍历,一边删除?

    1.新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void main(String[] args) { List<String& ...

  8. KrakenD url匹配通配符 url_pattern wildcard

    KrakenD是一个高性能Api网关,  api转发的推荐做法是每个api一个配置项,也就是一个endpoint,其开发者认为api网关和纯粹的L7路由不一样(文章链接). 因此社区版并没有提供通配符 ...

  9. pipeline 共享库

    目录 一.简介 二.共享库扩展 共享库使用 共享库结构 pipeline模板 一些小问题 三.共享库例子 使用公共变量 使用共享库的src方法 使用共享库的vars方法 四.插件实现pipeline ...

  10. JS 中常用的去重

    第一种:indexOf (获取字符串值在字符串中首次出现的位置,若没有这个值,则返回-1) let arr = [15,45,88,45,78,15,55,88]; let arr1 = []; // ...