UML 之 各种视图简介
统一建模语言(Unified Modeling Language,UML)中各种视图并没有明显的概念区别。
在最上一层,视图被划分为三个视图域:结构,动态行为,模型管理。
结构主要描述了系统中的结构成员及其相互关系。结构元素包括类,用例,构件和节点。结构元素为研究系统的动态行为奠定了基础。结构视图包括静态视图,用例视图和实现视图。
动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取出来的系统的瞬间值变化来描述。动态行为视图包括状态机视图,活动视图和交互视图。
模型管理说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统的开发和配置组织这些视图。
UML还有多种具有扩展能力的组件,这些扩展能力有限但很有用。这些组件包括约束,构造型和标记值,适用所有的视图元素。
UML的视图表,如下:
| 主要域 | 视图 | 图 | 主要概念 |
| 结构 | 静态视图 | 类图 | 类、关联、泛化、依赖关系、实现、接口 |
| 用例视图 | 用例图 | 用例、参与者、关联、扩展、包括、用例泛化 | |
| 实现视图 | 构件图 | 构件、接口、依赖关系、实现 | |
| 部署视图 | 部署图 | 节点、构件、依赖关系、位置 | |
| 动态 | 状态机视图 | 状态机图 | 状态、事件、转换、动作 |
| 活动视图 | 活动图 | 状态、活动、完成转换、分叉、结合 | |
| 交互图 | 顺序图 | 交互、对象、消息、激活 | |
| 协作图 | 协作、交互、协作角色、消息 | ||
| 模型管理 | 模型管理视图 | 类图 | 包、子系统、模型 |
| 可扩展性 | 所有 | 所有 | 约束、构造型、标记值 |
一、静态视图
它对应用领域中的概念和系统实现有关的内部概念建模。它因为不描述与时间有关的系统行为被称作静态视图。静态视图主要由类以及类之间的相互关系组成,这些关系包括:关联,泛化和各种依赖关系,如何使用和实现关系。类是应用领域或应用解决方案中概念的描述。类图是以类为中心组织的,类图中的其他元素或属于某个类或与类相关联。静态视图用类图来实现,正因为他以类为中心,所以称其为类图。下面是个类图的例子:
私下里觉得这张图很复杂,尤其是不知道这张图是用来干什么的时候!
二:用例视图
用例视图被称为参与者的外部用户所能观察到的系统功能模型图。用例是系统中的一个功能单元,可以描述为参与者与系统之间的一次交互。用例模型的用途是列出系统的用例和参与者,并显示了哪个参与者参与了哪个用例的执行。下面是个用例视图的例子:
个人观点,这个图很傻,不过还是很有意思的,最起码能够显示正常开发中各个参与者的活动情况。
三:交互视图
交互视图描述了执行系统功能的各个角色之间相互传递信息的顺序关系。交互视图显示跨越了多个对象的系统控制流程。交互视图可用两种视图来表示:顺序图和协作图,它们各有不同的侧重点。
1:顺序图
顺序图描述的是一个事务的流程,这个流程和面向过程编程中的顺序结构是一样的,从上到下。下面是一个图例:
这个图让我想起很久很久以前没有ajax时候的网络服务,就是一直用同步的方式操作,不堪回首!
2:协作图
协作图是对在一次交互中有意义的对象和对象间的链建模,对象和关系只有在交互的语境中才有意义。协作图用几何排列来表示交互作用中的各角色。附在类元角色上的箭头表示消息,消息的发生顺序用编号数字表示。下面是一个协作图图例:
这个图有个特点,与顺序图不一样,它展示了参数,方法名称,不是基于时间序列,是基于逻辑序列。
四:状态机视图
状态机视图是一个类对象可能经历的的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命周期中满足某种条件的一段时间段建模。当一个事件发生时触发状态的转换,从一个状态转化为另一个状态。下面是一个图例:
这个状态机我认为最好参考一下设计模式里面的状态模式,状态模式的实现就是这个状态图的代码描述。
五:活动视图
活动视图是状态机的一种变体,用来描述执行算法的工作流程中涉及到的活动。活动状态代表了一个活动:一个工作流执行步骤或一个操作的执行。活动图描述了一组顺序的或并发的活动。活动视图用活动来体现。下面是一个图例:
这个与状态机还是有很大的变化的,它是一个线性的执行步骤,状态机是一种环形触发的情况。状态机是每种情况很复杂,有一定触发状态存在于其中。活动图可能没有这些,但是符合现实的工作流程。
六:物理视图
物理视图对应自身的结构实现建模,图中的类将会映射称为物理结构中的节点。物理视图分为实现视图和部署视图。实现视图为系统中的构件建模,以及构件之间的依赖关系,通过对依赖关系修改评估对系统可能带来的影响。下面是一个实现视图的图例:
这个图很有意思吧,刚开始我还以为是电路板之类的图呢。接下来是一个部署图,仔细找找区别:
六:模型管理视图
它是对模型自身组织的建模。模型是从某一观点以一定精确度对系统所进行的完整性描述。下面是一个图例:
这样的系统图看着非常的不错,很容易理解和接受。
七:扩展组件
组件作为一种提供特定功能的模型存在,包含约束,构造型和标记值。约束是用某种形式化的语言或者自然语言表达的语义关系的文字说明。构造型是指建模者设计的新的模型元素,但是它要在已有的UML模型基础上。标记值是附加到任何模型元素上的命名的信息块。下面是例图:
八:各种视图之间的关系
九:个人学习经验分享
有些东西是很简单的,关键是没有了去学习的动力,没有了自己前进的方向。我一直觉得能够只需要背诵下来的东西是最简单,需要理解并推陈出新的是最难的。每一次推陈出新都是自己能力进步的体现,要不进步也太平凡了,不值得自己去欢呼雀跃了。学习,哪怕是仅仅只是源于对一句话的感悟,也是进步。
UML 之 各种视图简介的更多相关文章
- MySQL视图简介与操作
1.准备工作 在MySQL数据库中创建两张表balance(余额表)和customer(客户表)并插入数据. create table customer( id int(10) primary key ...
- Uml学习-类图简介
类图(Class Diagram)简介 类图是面向对象分析(OOA,Object-Oriented Analysis)和面向对象设计(OOP,Object-Oriented Deisgn)思想的重要 ...
- UML基础——统一建模语言简介
到了21世纪——准确地说是2003年,UML已经获得了业界的认同.在我所见过的专业人员的简历中,75%都声称具备UML的知识.然而,在同绝大多数求职人员面谈之后,可以明显地看出他们并不真正了解UML. ...
- Laravel 5 基础(二)- 路由、控制器和视图简介
查看 app/Http/routes.php Route::get('/', 'WelcomeController@index'); @是一个界定符,前面是控制器,后面是动作,表示当用户请求url / ...
- SQLServer之视图简介
视图定义 视图是一个虚拟表,其内容由查询定义. 同表一样,视图包含一系列带有名称的列和行数据. 视图在数据库中并不是以数据值存储集形式存在,除非是索引视图. 行和列数据来自由定义视图的查询所引用的表, ...
- UML——用例视图
用例视图中交互功能部分被称为用例. 参与者 作为外部用户与系统发生交互作用,这是参与者的特征. 在系统的实际运作中,一个实际用户可能对应系统的多个参与者.不同的用户也可以只对应于一个参与者,从 ...
- UML常用建模工具简介,安装方法和各自的优点
这学期学习了统一建模语言,自己初学时对各种建模工具十分陌生,各种名词都不懂,软件也都不了解,开始很是不知所措.为了防止其他初学者陷入我的困境,自己对各种工具进行了总结: Visio:介绍:Visio是 ...
- MySQL 视图简介
概述 数据库中关于数据的查询有时非常复杂,例如表连接.子查询等,这种查询编写难度大,很容易出错.另外,在具体操作表时,有时候要求只能操作部分字段. 为了提高复杂 SQL 语句的复用性和表的操作的安全性 ...
- UML和UP简介(转载)
UML(统一建模语言,Unified Modeling Language)是用于系统的可视化建模语言. UP(统一过程,Unified Process)是通用的软件开发过程. 很多人或书籍过大的夸大 ...
随机推荐
- django1.77+mod_wsgi+python2.79+apache2.24 在阿里云centos部署攻略
心平气和的记录一下今天 踩的坑以防万一 以后还踩 首先我今天的平台是在 阿里云上的一台纯净版的 centos6.5 64位主机上进行的 首先装python2.7 去官网下载python2.7安装包 然 ...
- 关于在II7里面出现:当前信任级别设置不支持调试 的解决方法
问题得到解决,把查到的方案贴出来: 在windows server 2008里面做网站,遇到当前信任级别设置不支持调试. 这个问题,在网上找了不少,但是没有关于IIS7 的. 突然想起来IIS7里面A ...
- 关于Ext.NET Demo程序在IIS7.5部署出现"Ext未定义"的解决方案
有以下三点 1.应用程序池请用ASP.NET4.0经典模式 2.安装ASP.NET 控制面板-->程序和功能-->打开或关闭WIndows功能-->Internet信息服务--& ...
- Oracle数据库编程:在JDBC中应用Oracle
9.在JDBC中应用Oracle: JDBC访问数据库基本步骤: 1.加载驱动 2.获取链接对象 3.创建SQL语句 4.提交S ...
- tableviewcell 系统工具删除:左滑删除,选中多个删除
在编辑tableview的时候,我们有时候会需要编辑对一些cell进行删除(增加),在这个时候,我们最好用系统的方法来进行增删的操作 // // text1Controller.m // text / ...
- spring+jpg环境下,spring实现文件上传
jsp: <form method="post" action="excel.do?method=inputExcel" enctype="mu ...
- mongo常用命令
1.由于mongo没有关系型数据库常用,一些基础的命令容易忘记 db.table.update( { "_id" : xxx } , { $set : { "field1 ...
- 如何选择PDA的操作系统? Android OR WINCE?
PDA(Personal Digital Assistant),又称为掌上电脑,可以帮助我们完成在移动中工作,学习,娱乐等.按使用来分类,分为工业级PDA和消费品PDA.当我们需要购买PDA的时候, ...
- 应用程序如何找到DLL文件?
使用LoadLibrary显式链接,那么在函数的参数中可以指定DLL文件的完整路径: 如果不指定路径,或者进行隐式链接,Windows将遵循下面的搜索顺序来定位DLL: (1)包含EXE文件的目录(2 ...
- linux的webserver配置与管理——创建用户个人主页
本实验用的是RedHat linux9.0,在虚拟机上进行操作,它已具有相当完好的可视化界面,这样用户会更加easy接受和理解. 首先呢就是虚拟机的相关配置,这个就不说了,当我们安装完系统后,打开终端 ...