大家好,欢迎来到IT知识分享网。
目录
1. UML简介
UML(Unified Modeling Language,统一建模语言)是一种基于面向对象的可视化语言。
它采用一组形象化的图形(如类图)符号作为建模的语言。使用这些符号可以形象的描述系统的各个方面。UML是通过建立图形之间的各种关系(如类之间的关系)来描述模型。
UML图形一共有十种,分为静态模型图和动态模型图。其中静态模型图主要描述系统的静态结构,动态模型图主要描述系统行为的各个方面。
静态模型图:类图、对象图、包图、组件图、部署图。
动态模型图:用例图、时序图、协作图、状态图、活动图。
设计模式传授的是一种思想,是一种脱离语言的编程习惯。对于一个没有太多经验的程序员,如何写出 简洁优雅,可复用性高,可扩展性强,高内聚低耦合 的代码至关重要。学习别人的设计模式就是为了在没有经验的情况下写出一手不错的代码,只看不写并不能深刻体验到设计模式的巧妙之处。
2. 静态模型图
2.1 类图
类图是面向对象系统建模中最常用的,也是定义其他图的基础。它主要是用来显示系统中的类,接口及他们之间的关系。类图中包含的主要元素有类、接口、和关系。其中的关系有关联关系、泛化关系、依赖关系、实现关系。在类图中也可以包含注释和约束。
在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和email这3个属性,以及modifyInfo()方法。
· + :表示public
· – :表示private
· #:表示protected(friendly也归入这类)
因此,上图中的Employee类具有3个私有属性和一个公有方法。
属性的完整表示方式是这样的:可见性 名称 :类型 [ = 缺省值]
在 Java 或其它面向对象设计模式中,类与类之间主要有 6 种关系,他们分别为:依赖,关联,聚合,组合,继承,实现。他们的耦合度依次增强。
Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类。在UML类图中,依赖关系用一条带有箭头的虚线表示。
关联关系的定义为:对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
UML中聚合关系用带空心菱形和箭头的直线表示。聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能单独存在。
关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。
组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。
继承表示类与类 (或者接口与接口) 之间的父子关系。
实现表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作,例如Car类与Ship类都实现了Vehicle接口。
参考:五分钟读懂UML类图 – shindoyang – 博客园
2.2 对象图
对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。和类图一样,对象图对系统的静态设计或静态进程视图建模,对象图更注重现实或原型实例,这种视图主要支持系统的功能需求,对象图描述了静态的数据结构。对象图可以被看作是类图在某一时刻的实例。
对象图的目的
(1)正向和逆向工程
(2)一个系统的对象间的关系
(3)一个交互的静态视图
(4)了解对象的行为和他们的关系从实用的角度来看
参考:【UML】对象图(Object Diagram)_知世俗而不世俗-CSDN博客_uml对象图
2.3 组件图
2.4 包图
包图是从包的层级来对系统进行抽象描述。所谓包(package)是指一个命名空间(namespace),用于组织语义上相似的、可能会因为业务变动而一起变动的元素。因此相对于类图来说,包图是更高层次的抽象。 一些语言天然的拥有包的概念,比如 c++的 namespace,java 的 package 等。对于前端工程来说,我们可以定义一个文件夹为一个包。
包图的基本概念: 包图是用来描述模型中的包和所包含元素的组织方式的图,是维护和控制系统总体结构的重要内容。
包图能够组织许多UML中的元素,不过其最常用的用途是用来组织用例图和类图。
包图中包含包元素以及包之间的关系。与其他图类似,包图中可以创建注解和约束。
参考:UML之包图_dream_follower的博客-CSDN博客_uml2.0 包图
2.5 部署图
部署图(deploymentdiagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。
3. 动态模型图
3.1 用例图
用例图:也被称为用户模型图,是从软件的需求分析的到最终实现的第一步,它是从客户角度来描述系统功能的。它包含三个基本组件:参与者(使用系统的人或事物)、用例(代表系统的某项完整的功能,在图形中使用椭圆型表示)、关系(泛化关系、扩展关系、包含关系)。
扩展关系:如果一个功能在完成的时候,偶尔会执行另外一个功能,使用扩展关系表示。
泛化关系:表示同一个业务的不同技术实现。其实就是继承关系的一种。
包含关系:是指一个用例可以含有其他用例具有的行为。
详细参考:UML–用例图详解_吴声子夜歌的博客-CSDN博客_用例图
3.2 时序图
又名序列图。时序图用于描述对象之间的传递信息的时间顺序。即用例中的行为顺序。当执行一个用例时,时序图中的每一条消息对应了一个类中操作或者引起转换的触发事件。时序图是一个而微大关系图。
纵轴表示时间时间轴向下延伸。横轴代表协作中的各个独立对象。对象存在时。消息用从一个对象的生命线到另个对象的生命线的箭头表示。箭头以时间的顺序在图中上下排列。
时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。
参考:UML建模之时序图(Sequence Diagram) – 灵动生活 – 博客园
3.3 活动图
活动图是状态机的一个特殊例子,它强调计算过程中的顺序和并发步骤。它用于描述系统的活动,判定点和分支等。活动中的动作状态,原子的、不可已中断的动作。并在此动作完成后向另一个动作转变。
活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。
分支与合并。分支在软件系统中很常见:用于表示对象类具有的条件行为。用一个布尔型的表达式真假来判定动作的流向,合并有两个如转换一个出转换。分支有一个如转换两个出转换。
分叉与汇合:分叉又来描述并发线程。每个分叉可以有一个输入的转换和两个或多个输出转换。汇合代表两个或多个并发控制流的同步发生。当所有流都到达汇合点后,程序才能继续前进。
泳道:泳道将活动图中的活动划分为若干组。并将每一组指定给负责这组活动的业务组织。在活动图中,泳道使用垂直的实线绘制。
活动图与流程图的区别
⑴ 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系
活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
⑵ 活动图能够表示并发活动的情形,而流程图不能。
⑶ 活动图是面向对象的,而流程图是面向过程的。
活动图与状态图都是状态机的表现形式,但是两者还是有本质区别:
状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。
活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
3.4 状态图
状态图:状态图包括状态、转换、初始状态、终止状态。
状态机是一种记录下给定时刻状态的设备,它可以根据各种不同的输入对每个给定的变化改变其状态或引发一个动作。比如:计算机操作系统中的进程调度和缓冲区调度都是一个状态机。
一个状态图(Statechart Diagram)本质上就是一个状态机,或者是状态机的特殊情况,它基本上是一个状态机中元素的一个投影,这也就意味着状态图包括状态机的所有特征。
在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:
参考:UML–状态图的基本概念和作用_吴声子夜歌的博客-CSDN博客_状态图
3.5 协作图
强调的是发送和接收消息的对象之间的组织结构,一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
也叫“通信图”, “协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。
协作图的组成部分
协作图强调参与一个交互对象的组织,基本元素包括:活动者(Actor)、对象(Object)、连接(Link)和消息(Message)。
对象:用长方形框表示对象。
连接:使用实线标记两个对象之间的连接。
消息:由标记在连接上方的带有标记的箭头表示。
协作图与序列图的关系见参考内容。
4. 其他软件工程图
4.1 流程图
不论什么程序设计语言,程序设计都有3种基本结构:顺序结构、选择结构和循环结构。三种基本结构的特点: 一个入口,一个出口,不出现死循环和死语句。
4.2 数据流图
数据流图不是传统的流程图或框图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统.
数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
数据流程图包括:
a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体;
b.指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能;
c.指明几个处理和(或)数据媒体之间的数据流的流线符号;
d.便于读、写数据流程图的特殊符号。
→: 数据流。数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成.如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项 组成.由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名.
□: 数据源(终点).代表系统之外的实体,可以是人、物或其他软件系统
○: 对数据的加工(处理).加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出
〓: 数据存储.表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等
4.3 数据字典
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。
4.4 实体关系图
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是实体型、属性和联系。
4.5 层次方框图
层次方框图即层次模块机构图。层次模块结构图(或称结构图structure chart)是1974年由W.Steven等人从结构化设计(structured design)的角度提出的一种工具。它的基本做法是将系统划分为若干子系统,子系统下再划分为若干的模块,大模块内再分小模块,而模块是指具备有输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。
4.6 其他
Warnier图是表示数据层次结构的一种图形工具,它用树形结构来描绘数据结构。
甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。
参考:软件工程用的17种图_JxufeCarol的博客-CSDN博客_软件工程的图有几种
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22048.html