当前位置: 首页 > news >正文

初识 统一建模语言(UML)

UML;统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。

最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。
   用例图;用例图描述了系统提供的一个功能单元。用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。用例图通常用于表达系统或者系统范畴的高级功能。用例;用例,或译使用案例、用况(Use Case)是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。
  类图;类图表示不同的实体(人、事物和数据)如何彼此相关。类在类图上使用包含三个部分的矩形来描述,如图2所示。最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的操作(或者说"方法")。
使用带有顶点指向父类的箭头的线段来绘制继承关系1,并且箭头应该是一个完全的三角形。如果两个类都彼此知道对方,则应该使用实线来表示关联关系;如果只有其中一个类知道该关联关系,则使用开箭头表示。

  序列图;序列图显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。

序列图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。

  状态图;状态图表示某个类所处的不同状态和该类的状态转换信息。状态图的符号集包括5个基本元素:初始起点,它使用实心圆来绘制;状态之间的转换,它使用具有开箭头的线段来绘制;状态,它使用圆角矩形来绘制;判断点,它使用空心圆来绘制;以及一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。

  活动图;活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。活动图的符号集与状态图中使用的符号集类似。像状态图一样,活动图也从一个连接到初始活动的实心圆开始。活动是通过一个圆角矩形(活动的名称包含在其内)来表示的。活动可以通过转换线段连接到其他活动,或者连接到判断点,这些判断点连接到由判断点的条件所保护的不同活动。结束过程的活动连接到一个终止点(就像在状态图中一样)。作为一种选择,活动可以分组为泳道(swimlane),泳道用于表示实际执行活动的对象
  组件图
组件图提供系统的物理视图。它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次2上显示。
部署图
部署图表示该软件系统如何部署到硬件环境中。它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。因为部署图是对物理运行情况进行建模,系统的生产人员就可以很好地利用这种图。

部署图中的符号包括组件图中所使用的符号元素,另外还增加了几个符号,包括节点的概念。一个节点可以代表一台物理机器,或代表一个虚拟机器节点(例如,一个大型机节点)。要对节点进行建模,只需绘制一个三维立方体,节点的名称位于立方体的顶部。所使用的命名约定与序列图中相同

转载于:https://www.cnblogs.com/doubleyan/archive/2011/01/09/1931467.html

相关文章:

  • OllyDBG 1.10汉化第二版
  • Eclipse Android配置
  • asp.net与Discuz-UCenter整合(3):UCenter与应用同步
  • css中的相对定位和绝对定位
  • cvs svnmanager
  • TMS3705 射频识别技术软硬件系统研制 - 安防,免费资源,弱电技术,安防技术,智能化,金辉,金辉安防同盟,安全防范,电子技术,监控技术,摄像机...
  • vs2010 aspx页面创建控件时出错 未将对象引用设置到对象的实例 解决方法
  • IBM超级电脑Watson人机大赛首轮领先
  • 创意空间
  • Python的print 格式化输出
  • Linux netstat 命令详解
  • 《人月神话》读书心得
  • 注意! JavaScript中的陷阱--转载
  • 表达式树程序
  • sql server日期时间转字符串
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • ➹使用webpack配置多页面应用(MPA)
  • 10个最佳ES6特性 ES7与ES8的特性
  • CEF与代理
  • Docker入门(二) - Dockerfile
  • JavaScript服务器推送技术之 WebSocket
  • java小心机(3)| 浅析finalize()
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • overflow: hidden IE7无效
  • php中curl和soap方式请求服务超时问题
  • Python十分钟制作属于你自己的个性logo
  • rc-form之最单纯情况
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vim Clutch | 面向脚踏板编程……
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 新书推荐|Windows黑客编程技术详解
  • 一个项目push到多个远程Git仓库
  • 一起参Ember.js讨论、问答社区。
  • 用jQuery怎么做到前后端分离
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 交换综合实验一
  • ​​​​​​​​​​​​​​Γ函数
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #1015 : KMP算法
  • (1)SpringCloud 整合Python
  • (26)4.7 字符函数和字符串函数
  • (二开)Flink 修改源码拓展 SQL 语法
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)求1到1亿间的质数或素数
  • (一)为什么要选择C++
  • (转)Scala的“=”符号简介
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net CF下精确的计时器
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别