UML的9种常用图与建模工具详解

UML即Unified Model Language,是一种建模语言,也是标准建模语言。在软件开发中,当系统规模比较复杂时,需要用图形抽象地来表达复杂的概念,让整个软件设计更具有可读性,可理解性,以便尽早发现软件设计时存在的潜在问题,从而降低开发风险。同时,也极大地方便了业务人员与开发人员之间的交流。

UML常用建模图

UML标准建模语言中5种主要的类型图:UML的9种常用图与建模工具详解-mikechen的互联网架构 1、用例图

指的是从用户角度来描述系统功能,并且指明各功能操作者。

2、静态图

包含的是类图和对象图。类图是一种静态模型类型,是用来表示类之间的联系、类的属性以及操作,在系统的整个生命周期都是有效的。对象图则是类图的一个实例,使用的标识几乎与类图一致,但是其生命周期有限,只能在系统中某一时间段内存在。

3、交互图

包含的是时序图和协作图,是用来描述对象之间的交互关系。时序图强调的是对象之间的消息发送顺序,是对象之间动态合作关系。协作图则是用来描述对象之间的协作关系,既显示对象间的动态合作关系,又显示对象以及它们之间的关系。时序图用来强调时间和顺序,协作图则用来强强调上下级的关系。

4、行为图

包含的是活动图和状态图,是用来描述系统的动态模型于组成对象之间的交互关系。活动图描述的是为了满足用例要求所进行的活动以及活动间的约束关系,方便识别并进行活动。状态图是类的补充,是用来描述类的对象所有可能的状态以及事件发生时状态的转移条件。

5、实现图

包含的是部署图和组件图。部署图是用来表示建模系统的物理部署。组件图则用来表示建模软件的组织以及其相互之间的关系。

UML建模时常见的9种图

UML的9种常用图与建模工具详解-mikechen的互联网架构

1、用例图

用例图是需求分析的产物,主要是用来描述用户是如何使用一个系统的,是用户所能观察和使用到的系统功能的模型图。

2、类图

UML类图,是用来描述系统中的类以及各个类之间的关系。系统中可以有多个类图,单个类图则只是表达了系统的一个方面。类图可以帮助我们在正确编写代码之前对系统有个很全面的认识,是建模中最常见的一种类型图。

3、对象图

对象图描述的是一组对象之间的关系,而不是类之间的关系。它是类图的变体,但是又与之不同,对象显示的类的多个对象而不是实际的类。

4、活动图

UML活动图,顾名思义就是UML的动态模型的一种图形,对于系统的功能建模特别重要。它用来描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。简单来讲,就是表示在处理某个活动时,两个或者更多类对象之间的过程控制流。

5、状态图

UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。

6、时序图

UML时序图,又叫序列图或者顺序图,是一种用来描述对象之间传送消息的时间顺序,是用来表示用例中的行为顺序。

7、协作图

UML协作图(又叫通信图)是一种作用于显示对象之间如何进行交互以执行特点用例或用例中特点部分行为的交互图,它强调的是发送和接收消息的对象之间的组织结构。

8、组件图

UML组件图(又叫构件图),是用来描述在软件系统中遵从并实现一组接口的物力的、可替换的软件模块。它所表现的是一种系统静态实现的结构,能够帮助开发人员对系统组成达成一致的认识。

9、部署图

UML 部署图是一个用来描述系统的硬件配置和部署以及软件的构件和模块在不同节点上分布的模型图。它能够帮助系统相关人员了解系统中各个构件部署在什么硬件上以及硬件之间的交互关系。

UML中的各种图之间的区别:

1、各有其侧重点:比如说用例图侧重于描述用户的需求,而类图则侧重于描述系统的具体实现。

2、所描述的方面各不相同:比如类图是用来描述系统结构的,序列图则是用来描述系统行为的。

3、抽象的层次也不尽相同:比如头见图是用来描述系统的模块结构,抽象层次比较高,而对象图则用来描述具体的模块实现,抽象层次就比较低。

UML工具

UML的9种常用图与建模工具详解-mikechen的互联网架构1.Enterprise Architect(EA)Enterprise Architect是一个全功能的、基于UML的visual CASE工具,主要用于设计、编写、构建并管理以目标为导向的软件系统。它支持用户案例、商务流程模式以及动态的图表、分类、界面、协作、结构以及物理模型。EA是个人推荐使用。

2.Umlet

开源的免费UML工具,这个软件实际上是用JAVA写的,还有有一套简化的语言,提供用编码的方式画时序图等各种图,也可以用code的方式自定义页面元素。

3.Rational Rose

ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建模的支持,但是在现在的版本中已经加入数据库建模的功能。ROSE主要是在开发过程中的各种语义、模块、对象以及流程,状态等描述比较好,主要体现在能够从各个方面和角度来分析和设计,使软件的开发蓝图更清晰,内部结构更加明朗(但是它的结构仅仅对那些对掌握UML的开发人员,也就是说对客户了解系统的功能和流程等并不一定很有效),对系统的代码框架生成有很好的支持。但对数据库的开发管理和数据库端的迭代不是很好。

4.PowerDesign

PowerDesigner原来是对数据库建模而发展起来的一种数据库建模工具。直到7.0版才开始对面向对象的开发的支持,后来又引入了对UML的支持。但是由于PowerDesigner侧重不一样,所以它对数据库建模的支持很好,支持了能够看到的90%左右的数据库,对UML的建模使用到的各种图的支持比较滞后。但是在最近得到加强。

5.Visio 

Visio 原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到VISIO2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具。

 

下面我就从项目流程管理的角度进行展开介绍:

一、项目流程管理

比方说官网改版这个项目,我们将整个项目流程划分为【需求收集】-【原型设计】-【UI设计】-【WEB研发】-【网站上线】,并将项目拆解为多个任务,每个任务分配给对应的人,并经历多种任务状态的流转。

二、里程碑管理

里程碑,是指完成阶段性工作的标志,不同项目的里程碑不同。拿上面官网改版的项目来说,需求列表、产品原型图、UI设计图等就是里程碑,里程碑划分的颗粒度可大可小,具体看项目组的人员分工情况。

Worktile中,里程碑可以对应为多种任务状态。

三、时间跟踪

前面讲到项目拆分成了多个任务,但每个任务的完成时间需要严格把控,才能保证整体项目不会延期。在Worktile中,可以给每个任务设置截止时间,并可查看任务的更新时间。

​四、项目甘特图

用甘特图把控整体项目进度,如有任务完成不理想,可及时找到相关负责人。

五、文件管理

项目相关的文件,可以上传到项目文件或任务附件中, 沉淀项目资料。Worktile支持企业网盘、项目文件、任务附件多种方式的文件管理。

六、用户管理

应该是说项目成员管理,用Worktile可以给每个项目成员添加不同的角色,而每种角色对应不同的权限。比较通用的角色模式如管理员、普通成员、只读成员,这些都可以在后台自由设置。

就暂时介绍到这,如果大家有疑问,欢迎在评论区交流。

 

UML类图学习笔记

类图结构
类封装了数据和行为,它是具有相同属性、操作和关系的对象集合的总称。
在系统分析与设计阶段,类通常分为三种:

实体类:实体类是系统需求中的实体,实体类通常保存在永久记忆体中,一般使用数据库表或文件来记录,实体类既包括存储数据的类、传递数据的类和操作数据的类。实体类通常来源于需求说明中的名词(例如:用户、产品)。
控制类:控制类体现了应用的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类通常有动词+名词来命名(例如:UserRegister)。
边界类:边界类用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类(例如:对话框、窗口、菜单)。
类的组成
- 类名:类的名字
- 属性:类的成员变量
- 操作:类的成员方法

属性的表示方式如下所示:
可见性 名称:类型[=缺省值]

可见性:public、private和protected,在类图中分别用+、-和#表示。
名称:属性的名称。
类型:属性的数据类型,可以是基本数据类型,也可以是用户自定义的类型。
缺省值:可选项,表示属性的初始值。
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

一. 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
【箭头指向】:带三角箭头的实线,箭头指向父类

 

 


二. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口

 

 

 

三. 关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者

 

 

 

上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:

 

 

四. 聚合(Aggregation)
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体

 

 

五. 组合(Composition)
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体

 

 

六. 依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者

 

 

七、总结
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

下面这张UML图,比较形象地展示了各种类图关系:

 

 

 

 

posted @ 2022-02-07 22:44  hanease  阅读(7436)  评论(0编辑  收藏  举报