热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UML的定义和组成详细介绍

目录1、UML1.1概述1.2UML是一种建模语言1.3UML语言包含三方面2、UML支持软件体系结构建模2.1逻辑视图2.2实现(开发)视图2.3部署视图2.4过程视图2.5用例

目录
  • 1、UML
    • 1.1概述
    • 1.2 UML是一种建模语言
    • 1.3 UML语言包含三方面
  • 2、UML支持软件体系结构建模
    • 2.1 逻辑视图
    • 2.2 实现(开发)视图
    • 2.3 部署视图
    • 2.4 过程视图
    • 2.5 用例视图
  • 3、UML基本组成
    • 3.1 UML成员
      • 3.1.1 UML 基本模型元素
      • 3.1.2 关系
      • 3.1.3 模型图
    • 3.2 UML建模规则


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模型是必须是完备的, 但是当模型在不同的视图中出现时, 出于不同的交流侧重点, 其表达可以是不完备的 。



推荐阅读
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
author-avatar
诠释的无耐_999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有