UML建模学习1:UML统一建模语言简单介绍
一什么是UML?
Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通
用的、可视化建模语言标准。能够用来描写叙述(specify)、可视化(visualize)、构造(construct)和记载(document)软件密集
型系统的各种工件(artifacts,又译为制品)。
UML是一个支持模型化和软件系统开发的图形化语言,为软件开发的全部阶段提供模型化和可视化支持,包含由
需求分析到规格,到构造和配置。
UML是面向对象软件的标准化建模语言。UML因其简单、统一的特点,并且能表达软件设计中的动态和静态信
息,眼下已成为可视化建模语言的工业标准。在软件无线电系统的开发过程中,统一建模语言能够在整个设计周期中
使用,帮助设计者缩短设计时间,降低改进的成本,使软硬件切割最优。
UML是用来设计软件蓝图的可视化建模语言。它支持面向对象系统的分析、设计、实现和交付等各个环节。能够
用于系统的理解、设计、浏览、维护和信息控制。
UML不是一个程序设计语言,更不是一个形式化语言。
UML是一种可视化的面向对象建模语言。描写叙述了一个系统的静态结构和动态行为,用图形方式表现典型的面向对
象系统的整个结构。从不同的角度为系统建模,并形成系统的不同视图。这些图包含:类图(它以继承结构、关联、组
成和聚集为特色)、时序图、协作图和状态图等。
UML是一种建模语言,在实际团队项目中,要和详细的软件开发过程结合起来才干更好的发挥作用。
二UML有哪些特点?
UML的“通用性”主要是指不只能够用它来描写叙述软件,并且还能够用它来描写叙述一般企业或组织的业务流程以及由
软、硬件共同组成、以软件为主的复杂系统(即所谓的软件密集型系统),甚至还包含非软件系统。
UML的“可视性”是指能够通过UML一系列的图形符号。组成多种视图(view)来直观、清晰地表达系统分析设计中
方方面面的、很多复杂的概念。UML主要是为了人的阅读和使用而设计的,所以它採用了半形式化的。易于人们理
解、交流的形。
UML是一种分析设计专用的建模语言,它本身不是编程(programming)语言,不能直接用来生成可运行的软件。
UML是一种抽象层次比C、C++、Java、VB、Delphi等文本高级语言更高的图形语言,通过它我们能够抽象地表示用
高级编程语言编写的文本程序的逻辑结构和行为。相比传统的高级编程语言。UML可以更加高效、准确地反映软件设
计的方案和思路,是真正用来“设计程序”(design programs)的语言。
从这个意义上看,最好还是称UML为“甚高级”程序设
计语言。
UML基本上不能算作全新的发明。它并不是学者教授、科研机构的研究成果。而是直接来自于产业界、project界的实
践总结,是在归纳基础上进行理论升华的产物,其核心内容反映了30多年来全球软件工业的领导者在软件设计构造领
域的最佳实践和成功经验,因而具有非常高的有用价值。
实践证明,OO分析设计(OOAD)方法比传统方法能更加准确、全面地描写叙述现实世界。UML是用来表述OO概念的
一种语言工具,而非常奇异,它本身作为一件产品相同也是用OO方法来设计的,这使得UML具有传统建模语言所不具
备的非常强的语义表达能力和非常灵活的可扩展性。
三UML有什么用?
UML的用途很广泛,能够概括为“描写叙述、可视化、构造、记载”4种基本功能,在业务建模、需求分析、系统设
计、实现和測试、数据建模、项目管理等阶段任务中均可依据须要採用。
UML建模是建立软件开发文档的一个有效手段,通过UML可视化地描写叙述系统需求,记载软件构成,可以显著地提
高文档的质量和可读性,降低编写文档的工作量。
UML实质上是一种系统分析设计专用语言,通过可视化的图形符号结合文字说明或标记能够帮助业务/系统分析
员、软件架构师/设计师、程序猿等各种建模者有效地描写叙述复杂软件(或业务)的静态结构和动态行为,包含工作流(数据
流和控制流)、功能需求、结构元素及关系、架构组成、设计模式、对象协作、事件响应和状态变化等等。
四UML的目标是什么?
1)为用户提供一种易用的、具有可视化建模能力的语言。以便于用户可以用该语言进行系统开发,并进行有意义
的模型互换。
2)对面向对象建模语言的核心概念提供可扩展性和规约机制。
3)提供规范的支持,该规范独立于随意一种编程语言和开发过程。
4)为理解该建模语言提供形式化的基础。
5)鼓舞对象工具市场的生长和繁荣。
6)支持高级开发概念。如构件、协作、框架和模式等。
7)集成已有的优秀实践成果和经验。
五UML不能做什么?
UML不是高度形式化的语言。一般不能用于定理证明。
UML是基于OO方法的通用建模语言,不适合用户图形界面设计、超大规模集成电路(VLSI)设计、基于规则的人
工智能等专业领域。
UML是一种离散型建模语言,适合对由软件、固件或数字逻辑构成的离散系统建模,不适合对project和物理学领域
中的连续系统建模。
本身作为语言。UML不过一种表达形式,不是建模方法。在实际的软件项目开发中只掌握一套标准的图形符
号是远远不够的。
用好UML首先须要掌握OOAD的基本原则和方法,并在一定的软件开发过程(如UP/RUP、XP等)的
指导下进行有取舍的运用。
六为什么要学习和掌握UML?
首先,UML对于当前大多数希望进一步改进质量的软件开发团队来说是不可缺少或必须的。
为什么这样说呢?因
为。C++、Java等源代码并不能直观、方便地反映复杂程序的设计:如内部逻辑结构、各种隐含的依赖关系、执行时的
状态改变和特殊行为等等。写好的代码不过一种实现方式,非常难反映出现象背后的真实本质——设计,因此对于
大多数稍稍复杂点的项目来说,仅有代码是不够的。
可视化建模历来是一种成功的project实践做法,并不是软件行业所特有。软件的设计方案在用C++、Java实现之前通
常隐藏在人们的头脑其中,而设计正确与否是决定软件质量好坏的要害,一个前提是必须用适当的方式把它表达出
来。通过程序代码来表达、讨论、评估和选择复杂软件的设计往往是非常笨拙的。这一表达方式的空欠唯有通过类似
UML的建模语言来填补。
其次,OO方法是当代主流的软件开发技术。世界先进的软件团队和个人早已摆脱了对怎样使用详细的平台API、
个别编程语言特性的纠缠,而把很多其它的精力放在了需求、架构、设计机制和模式等对软件质量有重大影响的核心要素
——分析与设计上。UML作为OO建模语言的其实标准和基本的表达媒介,在这些场合能发挥关键的作用。所以。
熟练地掌握并运用好UML是当今系统分析员、架构师/设计师以及程序猿等软件project师所必备的一项基本技能。
七UML由哪些元素构成?
UML由3个要素构成:UML的基本构造块、支配这些构造块怎样放置在一起的规则和运用于整个语言的公用机
制。
1)UML基本构造块
UML有3种主要的构造块:事物、关系和图。
(1)事物
构成模型图的一些基本图示符号,它们表示一些面向对象的基本概念。
事物是对模型中最具有代表性的成分的抽象,包含结构事物、行为事物、分组事物和凝视事物。
结构事物:如类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(ActiveClass)、组件
(Component)和节点(Node);
行为事物:如交互(Interaction)、态机(Statemachine)。
分组事物:包(Package);
凝视事物:注解(Note)。
(2)关系
表示基本图示符号之间的关系。
关系用来把事物结合在一起,包含依赖、关联、泛化和实现关系。
(3)图
图聚集了相关的事物及其关系的组合,是软件系统在不同角度的投影。
图由代表事物的顶点和代表关系的连通图
表示。
特定的视角对系统所作的抽象描写叙述。
UML从考虑系统的不同角度出发。定义了用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、
部署图等9种图。这些图从不同的側面对系统进行描写叙述。系统模型将这些不同的側面综合成一致的总体。便于系统的
分析和构造。虽然UML和其他开发工具还会设计出很多派生的视图,但上述这些图和其他辅助性的文档是软件开发中
所见的最主要的构造。
2)UML规则
不能简单地把UML的构造块按随机的方放在一起。像不论什么语言一样,UML有一套规则,这些规则描写叙述了一个结构
良好的模型看起来应该像什么。
UML实用于描写叙述例如以下事物的语义规则:
(1)naming - 命名:命名为事物、关系和图起名。
(2)scope- 范围:范围给一个名称以特定含义的语境。
(3)visibility- 可见性:可见性如何让其它人使用或看见名称。
(4) integrity-完整性:完整性事物怎样正确、一致地相互联系。
(5) excuse-运行:运行运行或模拟动态模型的含义是什么。
3)UML公共机制
UML中有4种贯穿整个语言且一致应用的公共机制。
(1)specification -规格说明
UML不仅仅是一种图形语言。事实上,在它的图形表示法的每部分背后都有一个规格说明。这个规格说明提供了对构
造块的语法和语义的文字描写叙述。
也就是说。UML的图用来对系统进行可视化。而UML的规格说明用来描写叙述系统的细节。
UML的规格说明提供了一个语义底板。它包括了一个系统的各模型的全部部分,而且各部分相互联系,并保持一
致。因此,UML图仅仅只是是对底板的简单视觉投影。每个图展现了系统的一个特定的方面。
(2)adornment - 修饰
UML表示法中的每个元素都有一个基本符号。能够把各种修饰细节加到这个符号上。比如:+代表public、-代
表private、#代表protect等。
样例:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
(3) general division-通用划分
A类/对象二分法
类是一个抽象:对象是这种抽象的一个详细形式。UML的每个构造块差点儿都存在像类/对象这种二分法。
例如:用例和用例实例(场景),构件和构件实例。节点和节点实例等。
B接口/实现二分法
接口声明可一个契约,而实现则表示了对该契约的详细实施,它负责如实地实现接口的完整语义。差点儿每个
UML的构造块都有像接口/实现这种二分法。
比如:用例和实现他们的协作,操作和实现它们的方法。
(4)extension mechanism-扩展机制
对UML图示符号的扩展。包含:构造型、标注值和约束。
样例:
UML建模学习1:UML统一建模语言简单介绍的更多相关文章
- 【转载】JMeter学习(一)工具简单介绍
JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...
- 一步一步学习SignalR进行实时通信_1_简单介绍
一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...
- SQL 数据库 学习 007 通过一个示例简单介绍什么是字段、属性、列、元组、记录、表、主键、外键 (上)
SQL 数据库 学习 007 通过一个示例简单介绍什么是字段.属性.列.元组.记录.表.主键.外键 (上) 我们来介绍一下:数据库是如何存储数据的. 数据库是如何存储数据的 来看一个小例子 scott ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- 【UML 建模】在线UML建模工具 ProcessOn 使用详解
总结 : -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发 ...
- 【UML 建模】在线UML建模工具 ProcessOn 使用具体解释
总结 : -- 推荐理由 : 近期从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款能够在线使用的 UML 工具, 用起来发 ...
- JMeter学习笔记2-图形界面简单介绍
废话少说直接干活的给: 一.打开和运行JMeter,出现UI界面.如图下所示: 工具栏:常见操作的图标集合,有New(新建), Template(模板) ,Save(保存),Start(开始) ,St ...
- iOS开发RunLoop学习:一:RunLoop简单介绍
一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementatio ...
- UML建模学习3:UML基本构造块之关系
今天我们来看UML基本构造块的还有一个要素--关系. UML中有表示基本图示符号之间的关系,它们是:依赖(dependency).泛化(generalization,也有的称继承).实 现(reali ...
随机推荐
- luoguP4503 [CTSC2014]企鹅QQ hash
既然只有一位的不同,那么我们可以枚举这一位.... 我们只需要快速地计算去掉某一位的$hash$值.... 由于$hash(S) = \sum s[i] * seed^i$,因此去掉第$i$位的权值只 ...
- Python开发_python的安装
Python几乎可以在任何平台下运行,如我们所熟悉的:Windows/Unix/Linux/Macintosh. 在这里我们说一下,在Windows操作系统中安装python. 我的操作系统为:Win ...
- Introducing .NET Core
At connect(), we announced that .NET Core will be entirely released as open source software. I also ...
- Matlab的linprog解决简单线性规划问题
一个简单的线性规划问题,使用Matlab的linprog解决 假定有n种煤,各种煤的配比为x1,x2,x3,……首先需要满足下列两个约束条件,即 x1+x2+x3……+xn=1 x1≥0, x2≥0, ...
- java线程的一些基础小知识
--------------------------------------------------------------------------------------------------线程 ...
- 【MySQL案例】mysql-libs-5.1.73-3.el6_5.x86_64 conflicts with file from package Percona-Server-server
假设遇到mysql-libs-5.1.73-3.el6_5.x86_64 conflicts with file from package Percona-Server-server报错,有两种情况导 ...
- SVN环境
SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...
- Selenium2+python自动化33-文件上传(send_keys)
前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...
- 引用jar版本错误
[INFO] Scanning for projects... [ERROR] The build could not read 1 project -> [Help 1] [ERROR] ...
- 第二章 ActionScript 3.0学习之画星星(鼠标及键盘事件)
今天觉得学到的比较有趣,所以记录之......~~~ 下面这段就是画出星星的代码:StarShape.as package { import flash.display.Shape; import f ...