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. Linux系统根目录下各文件夹介绍

    参考自:[1]Linux 系统根目录下各个文件夹的作用 https://www.cnblogs.com/jiangfeilong/p/10538795.html[2]了解Linux根目录"/ ...

  2. 【Linux】【Commands】trouble shooting命令详解目录

    1. 简介 1.1. 最近看到阿里的运维招聘需要熟练掌握以下的命令,我就针对这几个命令做一下总结,有些命令我觉得别人总结的挺好了,我就不赘述了 1.2. 还有一些其他我觉得用得到的命令的用法会在第三部 ...

  3. RunLoop基础知识以及GCD

    - 1.1 字面意思   a 运行循环   b 跑圈   - 1.2 基本作用(作用重大)   a 保持程序的持续运行(ios程序因而能一直活着不会死)    b 处理app中的各种事件(比如触摸事件 ...

  4. spring-boot aop 增删改操作日志 实现

    1.注解接口:import com.github.wxiaoqi.security.common.constant.Constants; import java.lang.annotation.*; ...

  5. 【Linux】【Services】【Project】Cobbler自动化装机

    1. 概念 1.1. Cobbler 1.2. PXE 1.3. 2. 版本信息 2.1. OS:Red Hat Enterprise Linux Server release 7.3 (Maipo) ...

  6. 通过Jedis操作Redis

    package com.yh; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis ...

  7. Go语言核心36讲(Go语言实战与应用二十四)--学习笔记

    46 | 访问网络服务 前导内容:socket 与 IPC 人们常常会使用 Go 语言去编写网络程序(当然了,这方面也是 Go 语言最为擅长的事情).说到网络编程,我们就不得不提及 socket. s ...

  8. 使用MyBatis框架时发现的一些小bug

    在大配置MyBatis.xml中:  不能有空节点属性 ,否则启动服务器后点击登录没有反应. 异常问题: ause: java.sql.SQLException: Value '0000-00-00 ...

  9. Tableau如何使用 度量值和度量名称

    一.把子类别拖拽至列 二.度量值拖拽至行 三.度量名称拖拽至筛选器,右键-编辑筛选器-选择销售额和利润 四.度量名称拖拽是标记选择颜色-其它细节调整-最终结果如下所示

  10. 解放双手,自动生成“x.set(y.get)”,搞定vo2dto转换

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 给你机会,你也不中用啊 这些年从事编程开发以来,我好像发现了大部分研发那些不愿意干的 ...