UML入门以及Plant UML工具介绍

article/2025/9/18 21:28:56

简介

UML,Unified Modeling Language,可视化的统一建模语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。而非程序设计语言,支持从需求分析开始的软件开发的全过程。

结构

UML的结构包括构造块、规则和公共机制三个部分:

  • 构造块。UML有三种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。事物是UML的重要组成部分,关系把事物紧密联系在一起,图是多个相互关联的事物的集合。
  • 公共机制。公共机制是指达到特定目标的公共UML方法。规格说明:事物语义的细节描述,它是模型真正的核心。修饰:通过修饰来表达更多的信息。公共分类:类与对象,接口与实现。扩展机制:允许添加新的规则。
  • 规则。规则是构造块如何放在一起的规定。范围:给一个名字以特定含义的语境。可见性:怎样使用或看见名字。完整性:事物如何正确,一致地相互联系。执行:运行或模拟动态模型的含义是什么

事务包含如下:

  • 结构事物:最静态的部分,包括:类、接口,协作、用例、活动类、构件和节点。
  • 行为事物:代表时间和空间上的动作。包括:消息、动作次序、连接。
  • 分组事物:看成是个盒子,如:包、构件。
  • 注释事物:UML模型的解释部分。描述、说明和标注模型的元素。

模型

  • 功能模型:从用户的角度展示系统的功能,包括:用例图
  • 对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括:类图、对象图
  • 动态模型:展现系统的内部行为。包括:序列图,活动图,状态图

需求建模

面向对象的需求建模分为:用例模型,分析模型。
用例模型对应UML的用例图,分析模型对应的UML的类图。

视图

五个视图,也就是4+1试图:

  • 逻辑视图:满足功能需求,关注类与对象,关注人员:系统分析人员、系统设计人员
  • 用例视图:系统与用户交互,关注需求分析模型,关注人员:最终用户
  • 构件视图:实现试图,实现问题,关注物理代码文件和组件,关注人员:系统开发人员
  • 进程视图:并发问题,关注线程、进程、并发,关注人员;系统集成人员
  • 部署视图:分布问题,关注软件到硬件的映射,关注人员;系统和网络工程师

UML制作工具

  • IBM Rational Rose
  • StarUML
  • EA
  • processon:在线协作绘图平台,为用户提供最强大、易用的作图工具,支持在线创作流程图、BPMN、UML图、UI界面原型设计、iOS界面原型设计、泳道图等。可共享方便团队协作,但有只能绘制9张图的限制,导出文件不可编辑
  • draw.io:功能超级强大,支持几十种绘图类型,免费可用
  • Plant UML:基于graphviz的一款强大的绘图工具
  • planttext:在线绘图,支持导出,可以自建一个服务器生成图片。好处是不用保存图片,可以直接应用生成的图片地址
  • gravizo:同样基于graphviz

UML 2.0

UML2.0 中共包括 14 种图:

  • 类图(class diagram):描述一组类、接口、协作和它们之间的关系。类图给出系统的静态设计视图,活动类的类图给出系统的静态进程视图
  • 对象图(objectdiagram):描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视。图或静态进程视图,但它们是从真实案例或原型案例的角度建立的
  • 构件图(component diagram):描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体
  • 组合结构图(composite structure diagram):组合结构图描述结构化类(例如, 构件或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容
  • 用例图(use case diagram):描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的
  • 顺序图(sequence diagram,也称序列图):是一种交互图(interaction diagram), 展现一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图
  • 通信图(communication diagram):也是一种交互图,强调收发消息的对象或参与者的结构组织。顺序图和通信图表达类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。在 UML LX 版本中,通信图称为协作图(collaboration diagram)
  • 定时图(timing diagram,计时图):定时图也是一种交互图,它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序
  • 状态图(state diagram):描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模
  • 活动图(activity diagram):活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程
  • 部署图(deploymentdiagram):部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出架构的静态部署视图,通常一个节点包含一个或多个部署图
  • 制品图(artifact diagram):制品图描述计算机中一个系统的物理结构。制品包括文件、数据库和类似的物理比特集合。制品图通常与部署图一起使用。制品也给出了 它们实现的类和构件
  • 包图(package diagram):包图描述由模型本身分解而成的组织单元,以及它们之间的依赖关系
  • 交互概览图(interaction overview diagram):交互概览图是活动图和顺序图的混合物。

静态和动态概念

  • 静态图
    构件图、包图、类图、对象图、部署图、制品图、组合结构图
  • 动态图
    用例图、顺序图、通信图(协作图)、状态图、活动图、交互概览图、定时图

类图

类图是UML的灵魂。想要画好类图,就要学会给类图分出不同的组,分成不同的包。分组的规则就是跟三层架构的层是一一对应的。纯三层——UI、BLL、DAL这三层再加上一个Entity(实体)层。

  • UI层
    用户界面对应的类。这些窗体类一般既没有方法也没有属性,它们只是通过事件(如单击事件等)来调用 BLL 层里面的方法。
  • Entity层
    实体层里面的类跟数据库里面的表是一一对应的,即一张表一个实体类,实体类同样没有方法,但是它有自己的属性。它的属性就是表里面每一列的每个字段。
  • DAL层
    用来跟数据库打交道,所以它跟实体层一样,也是与数据库中的表是一一对应的。而它所具有的方法就是对数据简单的增删改查。
  • BLL层
    Business Logic Layer:这一层就是上面三个层之间的一个桥梁,负责它们之间的数据交换,通常情况只有方法没有属性,其方法就是窗体所具有的功能(一个功能可能包含一个或多个方法)。

类图是软件工程的统一建模语言一种静态结构图,该图描述系统的类集合,类的属性和类之间的关系。是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

在UML类图中,类使用包含类名,属性,方法名及其参数并且用分割线分隔的长方形表示。通过Person的类图,可以看出类图有三部分组成,类名,属性和方法。若是抽象类,在类名右上角会有一个{abstract}表示。
在这里插入图片描述
UML中的属性名就是Java中的成员变量。Java类中成员变量的修饰符,类型和默认值都可以在UML类图中体现出来。通用表示方法如下:可见性 名称:类型 [ = 默认值 ]
Java中类的成员变量或方法的可见性有3种:private,public 和protected,类图中分别用符号-+#表示。
通用表示方法中名称就成员变量的名字,类型就是成员变量的类型,可以是自定义类型。而后面的默认值是可选参数,如果没有给成员变量设置初始值,UML类图中就不显示;

操作方法:可见性 名称(参数列表) [ : 返回类型]
类的操作方法通用表示方式如上,方法可见性和属性可见性是一致的,名称就是方法名,参数列表是可选项,若多个参数用英文逗号隔开,返回类型是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void);构造方法,则无返回类型。

类之间的关系

  • 泛化(Generalization)
  • 实现(Realization)
  • 依赖(Dependency)
  • 关联(Association)
  • 聚合(Aggregation)
  • 组合(Composition)

另有一说,类的关系有泛化、实现、依赖和关联,关联又分为一般关联关系和聚合关系、组合关系。

泛化

泛化(又叫继承),is-a的关系,表示一个对象是另外一个对象的意思,也就是Java中的继承。泛化是对象之间耦合度最大的一种关系,子类继承父类的所有细节。类和类,接口和接口都可以是继承关系,父类又称作基类或超类,子类又称作派生类,类继承父类后可以实现父类的所以功能,并能拥有父类没有的功能。用带空心三角形的直线来表示,箭头从子类指向父类。最终代码中,泛化关系表现为一个类继承一个非抽象类。如:Father <|-- Son

实现

实现,在java中就是一个接口和实现类之间的关系,接口中一般是没有成员变量,所有操作都是抽象的,只有声明没有具体的实现,具体实现需在实现该接口的类中。在UML中用与类的表示法类似的方式表示接口,区别可在UML中类图中看出。用虚线和带空心的三角形表示,箭头从实现类指向接口。示例:

abstract class AbstractList
interface List
List <|.. AbstractList

依赖

依赖,是类与类之间最弱的关系,依赖可以简单的理解一个类使用另一个类,这种使用关系具有临时性特征,但一个类又会由于另一个类的改变而受到影响。表现在代码层面,为类B作为参数被类A在某个method中使用,一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。用带箭头的虚线表示依赖,箭头从使用类指向被依赖的类。
如:Human ..> Cigarette

关联

关联,描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;一般用来定义对象之间静态的、天然的结构;是一种强关联的关系。这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联。表现在代码层面,为被关联类B以类属性(成员变量)的形式出现在关联类A中。表示一个类和另一类是一种包含关系。用带箭头的实线表示,箭头指向被包含类(箭头从使用类指向被关联的类)。分为:1..1 表示另一个类的一个对象只与该类的一个对象有关系,0..* 表示另一个类的一个对象与该类的零个或多个对象有关系,1..* 表示另一个类的一个对象与该类的一个或多个对象有关系,0..1 表示另一个类的一个对象没有或只与该类的一个对象有关系,* 任意多个对象关联。关联关系默认不强调方向,表示对象间相互知道。

class Water
class Human
Human --> Water

聚合

聚合,关联关系的一种特例,表示整体与部分、拥有的关系,即has-a(或is-part-of)的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期。但是部分可以脱离整体而存在。用带空心菱形的直线表示,菱形从局部指向整体。如:Company o-- Human

组合

组合,关联关系的一种特例,体现一种 contains-a(has-a) 关系,一种强烈的包含(拥有)关系,比聚合更强,也称为强聚合;同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。此时部分需在整体的构造方法中创建。组合关系是一种强依赖的特殊聚合关系。组合关系用带实心菱形的直线表示,菱形从局部指向整体。如:Human *-- Brain
注:多重性(Multiplicity) : 通常在关联、聚合、组合中使用。代表有多少个关联对象存在。使用数字..星号(或者数字)表示。详情见上面的关联关系。

总结

继承、实现这两种关系,体现的是一种类与类、或者类与接口间的纵向关系;其他四种关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;其中聚合和组合尤其难区分。
总的来说,后几种关系所表现的强弱程度依次为:组合 > 聚合 > 关联 > 依赖。
聚合和组合的区别
聚合是has-a关系,组合是contains-a关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除聚合对象不一定就删除代表部分事物的对象。组合关系中一旦删除组合对象,同时也就删除代表部分事物的对象。

组合和继承

封装、继承、多态是面向对象的三个特征;Java代码的复用有继承,组合以及代理三种具体的表现形式,继承可以实现类的复用。所以,很多开发人员在需要复用一些代码的时候会很自然的使用类的继承的方式。但是长期大量的使用继承会给代码带来很高的维护成本。

在继承结构中,父类的内部细节对于子类是可见的。所以通常也可以说通过继承的代码复用是一种白盒式代码复用。(如果基类的实现发生改变,那么派生类的实现也将随之改变。这样就导致子类行为的不可预知性;)
组合是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能。因为在对象之间,各自的内部细节是不可见的,所以也说这种方式的代码复用是黑盒式代码复用。(因为组合中一般都定义一个类型,所以在编译期根本不知道具体会调用哪个实现类的方法)
继承,在写代码的时候就要指名具体继承哪个类,所以,在编译期就确定关系。(从基类继承来的实现是无法在运行期动态改变的,因此降低应用的灵活性。)
组合,在写代码的时候可以采用面向接口编程。所以,类的组合关系一般在运行期确定。

对比

组合关系继承关系
优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性
优点:具有较好的可扩展性缺点:支持扩展,但是往往以增加系统结构的复杂度为代价
优点:支持动态组合。在运行时,整体对象可以选择不同类型的局部对象缺点:不支持动态继承。在运行时,子类无法选择不同的父类
优点:整体类可以对局部类进行包装,封装局部类的接口,提供新的接口缺点:子类不能改变父类的接口
缺点:整体类不能自动获得和局部类同样的接口优点:子类能自动继承父类的接口
缺点:创建整体类的对象时,需要创建所有局部类的对象优点:创建子类的对象时,无须创建父类的对象

如何选择
面向对象中有一个比较重要的原则『多用组合、少用继承』或者说『组合优于继承』。组合确实比继承更加灵活,也更有助于代码维护。
所以,建议在同样可行的情况下,优先使用组合而不是继承。因为组合更安全,更简单,更灵活,更高效。
并不是说继承就一点用都没有,前面说的是【在同样可行的情况下】。有一些场景还是需要使用继承的,或者是更适合使用继承。

继承要慎用,其使用场合仅限于你确信使用该技术有效的情况。一个判断方法是,问一问自己是否需要从新类向基类进行向上转型。如果是必须的,则继承是必要的。反之则应该好好考虑是否需要继承。《Java编程思想》

只有当子类真正是超类的子类型时,才适合用继承。换句话说,对于两个类A和B,只有当两者之间确实存在is-a关系的时候,类B才应该继续类A。《Effective Java》

序列图

序列图包括对象、生命线、消息(3个基本)、激活、角色5个构成元素,其中对象是系统的参与者或任何有效的系统对象,生命线是一个时间线,而消息是用来说明序列图中对象之间的通信。

时序图

通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,即对象之间的消息流动顺序。->表示消息传递,-->表示异步消息传递,note [left | right] 对消息进行说明。垂直的虚线叫做生命线,代表一个对象的存在时间。每个箭头都是一个调用,生命线上白色的条叫做激活条,代表这次调用持续的时间。

特点

  1. Sequence Diagram是强调消息时间
  2. 顺序的交互图
  3. 时序图描述类系统中对象和对象之间的交互
  4. 时序图是一个模型,用于描述对象组如何随着时间在某些行为方面交互

元素

  • 角色(Actor)
  • 对象(Object)
  • 生命线(Lifeline)
  • 消息(Message)
  • 自关联消息(Self-Message)

总结

  1. 时序图只描述理想的工作流程
  2. 时序图工具没有角色,可以在用例图中创建角色,然后再把项目中的角色拖入到时序图中

用户登陆实例:
在这里插入图片描述

用例图

概念:用例图描述一组用例、参与者及它们之间的关系。从用户角度描述系统功能。参与者是外部触发因素(包括用户、组织、外部系统,时间)。用例是功能单元。

参与者与用例的交互,主要作用是来收集系统需求,包括内部和外部的影响(例如此系统的用户分为n种角色,每一个角色所能干的事)。

用例图的2种元素

  • 参与者Actor
  • 用例use Case

用户的建模流程:

  • 识别参与者(必须)
  • 合并需求获得用例(必须)
  • 细化用例描述(必须)(有用例细化的模板,就是为了完善需求,尽量不产生歧义,让第三方也能看懂)
  • 调整用户模型(可选,通过下边的关系进行调整,包含,扩展,泛化)

4种关系

  • 关联关系association:参与者与用例之间进行通信,不同的参与者可以访问相同的用例,尽量避免关联线交叉
  • 包含关系include:客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。A-(include)–>B(老版本也叫使用关系,users)例如:上图中用户登录,登记外借信息,查询外借信息,都需要登录,不可能写两个用例,让上边两个用例都包含登录就可以,提取公共登录部分,让两个用例都包含它,这就叫包含关系
  • 拓展关系extend:
    如果一个用例明显地混合两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。A<--(Extern)--B,例如:ATM取款功能,分两步,取款,然后打印凭条,打印凭条就是扩展部分,可用可不用。
    1. 扩展用例被定义为基础用例的增量扩展并在一定条件下发生
    2. 基础用例提供扩展点以添加新的行为
    3. 扩展用例提供插入片段以插入到基础用例的扩展点上
  • 泛化关系generalization:描述多个参与者之间的公共行为。当多个用例共同拥有一种类似的结构和行为时,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承父用例所有的结构、行为和关系。子类可以替换父类,包含跟泛化关系的区别,就是有没有父子关系。

总结

  1. 外部可见的系统功能单元(用例图可分级别)
  2. 不是需求或功能的规格说明,只展示和体现其所描述需求本身的情况
  3. 用例图最好的方法就是从分析系统的参与者开始,考虑每个参与者是如何使用系统的
  4. 给用户看的,避免使用专业术语

活动图

当流程图来用,描述程序的处理过程。

组件图

表示组件是如何互相组织以构建更大的组件或是软件系统。

状态图

描述对象从开始到结束的状态改变。
实例:

[*] -> ready : start;
ready -> running : get cpu;
running -> ready : lost cpu;
running -down-> block : io, sleep, locked;
block -up-> ready : io return, sleep over, get lock;
running -> [*] : complete;

效果:
在这里插入图片描述

plant UML

简介

Plant UML是一门类似于HTML的标记性语言,采用graphviz来渲染PlantUML,可集成在markdown。故而可以像维护代码一样维护 UML 图的历史版本,编写脚本就会自动生成UML图。用于会议讨论、流程设计、需求编写等环节。支持的工具集tools 不要太多!同时提供在线版工具:online-plantuml。

PlantUML是一个快速创建UML图形的组件,其支持的图形有:

  • sequence diagram
  • use case diagram
  • class diagram
  • activity diagram
  • component diagram
  • state diagram
  • object diagram
  • wireframe graphical interface

安装

Plant UML 依赖 Graphviz:

  • Windows下载安装graphviz,选择 msi 安装包或 zip压缩包;
  • Mac 安装:brew install graphviz

无论是 sublime 还是 IDEA 想要借助Plant UML绘制 UML 图,都需要先安装 Graphviz。
PlantUML 提供 IDEA 插件:plantuml integration,安装好后重启IDEA。在 IDEA other setting 中更改配置即可。
在这里插入图片描述
sublime 安装 plantUML 参考我的博客:Sublime 入门使用教程

入门

新建一个文本文件,如demo.txt(后缀名随意):

@startuml' 单引号开头,注释内容/' 另一种形式的注释 '/' 实例展示类图访问权限控制:- # ~ + 分别表示 private、protected、package、public' 使用 skinparam classAttributeIconSize 0关掉icon的显示;' 使用{static}或者{abstract}来修饰字段或者方法,修饰符需要在行开头或者末尾;可以使用{classifier}代替{static}' 加粗:<></b> 换行:\n 该表字体 font 大小: <size:nn>' 使用 title 或者 title end title 表明标题title some silly example\n showing <b>Plant UML</b> titleclass SampleClass {{static} - private field1{abstract} # protected field2~ package method1()+ public method2() {classifier}}' 在类名后面添加冒号可以添加方法和方法的参数Object <|-- ArrayListObject : equals()ArrayList : Object[] elementDataArrayList : size()' 可以改变箭头方向, 也可以在箭头上使用left, right, up or down关键字,关键字可以使用开头的几个字符简写,如使用-d-代替-down-。@enduml

渲染效果图:
在这里插入图片描述
其他UML示例参考GitHub,也可以在 Chrome 中安装Plant UML 插件的形式来集成使用。

语法

参考PDF
绘图的内容需要包含在@startuml@enduml中。保存绘图文本的文件格式(即后缀名)不限,如 demo.txt 都行,然后可以使用命令行:java -jar /path/to/plantuml.jar -tsvg demo.txt,即可在当前路径生成同名 demo.svg 的图片,也可以生成PNG、LaTeX和二进制图片,修改选项-t即可。

参考

UML类图与类的关系详解
看懂UML类图和时序图
PlantUML类图
深入理解Java中的组合和继承


http://chatgpt.dhexx.cn/article/0aPX40s5.shtml

相关文章

UML工具 Astah Professional8.0下载

UML工具 Astah Professional8.0下载 开头功能特性使用方法 文件下载链接 开头 由于Astah目前社区版被取消了&#xff0c;在这提供Professional 8.0版本。 Astah官网&#xff1a;https://astah.net/ 功能特性 1、在一个工具中做所有事情 不要为每个工作阶段切换工具。 做UML设…

免费 UML 工具

选取了四款UML工具: astah 经常看到网上的黄色背景就是这个软件画的,最后一个免费的社区版本是:astah community 7.2 安装包大小50M 以下三个均为免费版本: Software Ideas Modeler 可以画序列图,安装包很小,只有十几兆,而且提供便携版下载 Modelio 这是一个大型的…

十二个开源UML工具

本文将为您介绍12个优秀的UML工具&#xff1a; 1. StarUML StarUML(简称SU)&#xff0c;是一种创建UML类图&#xff0c;是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj)。 2. Netbeans UML Plugin 目前支持&…

UML工具Visual Paradigm入门:业务流程建模 (BPM) 教程

Visual Paradigm是包含设计共享、线框图和数据库设计新特性的企业项目设计工具。现在你只需要这样单独的一款模型软件 Visual Paradigm就可以完成用UML设计软件&#xff0c;用BPMN去执行业务流程分析&#xff0c;用ERD企业设计数据库的任务。Visual Paradigm现已加入在线订购&a…

UML图及UML工具使用技巧

转自&#xff1a;UML图及UML工具使用技巧 Rational Rose 2003 之“Rational License key error”问题的解决方案 大家对UML这个可视化的建模语言应该不在陌生了。五种关系、九种图是UML的核心组成元素&#xff0c;而Rational Rose 是实现这些关系、图的重要工具。工具的重要性…

推荐Ubuntu使用UML工具-Drawio

最近在找一个免费的&#xff0c;漂亮的又能在ubuntu上使用的uml工具 先上一张图 网上搜索可以使用命令安装&#xff0c;个人没使用过 sudo snap install drawiosnap官网介绍&#xff1a;https://snapcraft.io/drawio 个人推荐直接在github直接下载最新版本的安装包 drawio的…

小瞥linux下UML工具

原文地址&#xff1a;https://blog.csdn.net/wangdingqiaoit/article/details/11991459 学习设计模式时&#xff0c;希望能好好练习类图&#xff0c;因此需要UML工具&#xff0c;linux下有很多uml工具&#xff0c;这里小瞥一眼&#xff0c;做个了解&#xff0c;并不打算并不全…

c++源码逆向UML工具踩坑

最近考虑走读一些源码&#xff0c;需要对源码类图结构关系首先有个大概了解&#xff0c;否则实在啃不下去&#xff0c;研究了几款逆向工具 个人MAC机&#xff0c;CSDN明确有几款&#xff0c;包括EA, starUML&#xff0c;Rational Rose &#xff0c;Visual Paradigm 试了下Cr…

UML工具(1)-Umbrello

1、UML是统一建模语言&#xff0c;是一种可视化的语言。 2、各类工具对比。 工具名称 优点 缺点 Rational Rose 功能全&#xff0c;可以正向和逆向工程 收费&#xff0…

Uml工具StarUML破解

1、下载安装包 地址&#xff1a;http://staruml.io/download 2、安装&#xff0c;很简单&#xff0c;双击下载的包就可以安装了 3、破解&#xff08;这里需要Nodejs的环境&#xff0c;如果你不是个程序员&#xff0c;没有环境&#xff0c;就先装个环境&#xff09; 3.1 安装…

免费的UML工具

今天我想介绍一个100%完全免费的UML工具, 请不要认为Visual Paradigm Community Edition是一个免费工具,你猜它不够好 事实上,它多次获得国际奖项 - 其一个中国际奖项甚至击败IBM和 Borland国际震动奖(Jolt Award) Download Here在这里下载 Visual Paradigm社区版 - 免费的 U…

免费且好用的UML工具推荐

免费且好用的UML工具推荐 1、引言 统一建模语言(Unified Modeling Language&#xff0c;UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言&#xff0c;是非专利的第三代建模和规约语言。UML使用面向对象设计的的建模工具&#xff0c;但独立于任何具体…

UML建模工具

1、不收费的 编号软件名称软件连接备注1draw.io2eclipse的3亿图4Papyrushttp://www.eclipse.org/papyrus1、 支持UML 2.5但是UML官方没有UML2.5只有2.5.1&#xff1b;2、绘制UML 用例图当前个人没找到系统边界5StartUML6jetumlhttps://www.jetuml.org/ 2、收费的&#xff08;…

用于敏捷开发的免费 UML 工具 2022

敏捷时代的UML&#xff1a;为什么它仍然有意义&#xff1f; 它取决于目标系统的大小和复杂性&#xff1a; 建造一个狗屋可以由一个人完成。它涉及一个简单的过程&#xff0c;使用诸如钉子、锤子、锯子、胶带等基本工具执行。在几个小时内&#xff0c;您就可以为狗建造一座房子…

UML工具

UML 工具 draw.io desktop (https://www.draw.io/) wiki中插件draw.ioprocessonplantuml idea插件(代码生成)graphvizyEd 架构图 定义&#xff1a;描述系统的业务/服务之间的逻辑关系 技巧&#xff1a;1. 虚线划分边界 2.颜色表示状态/角色 3.同一角色背景色相同 4.核心交互…

UML画图工具汇总

最近学习了UML&#xff0c;搜集了一把各类的画图工具以及它们的特点。最后选出我认为最好用的一款工具。 rose 《大象》书里面就是用的这款软件&#xff0c;但是这个貌似要钱&#xff0c;破解版版本很低&#xff0c;界面看起来也比较复古。不推荐。 star uml 挺有名的软件&…

UML建模工具最近更新汇总(-2022年7月)共16款:Visual State、UML Diagrammer……

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx 最近一段时间更新&#xff1a; 工具最新版本&#xff1a;GoJS 2.2.12 更新时间&#xff…

git删除本地分支和删除远程分支

切换到master分支 git checkout master 查看已有的本地及远程分支 git branch -a 删除远程分支 git push origin --delete dev 删除后&#xff0c;再次查看分支情况 git branch -a 删除本地分支 git branch -D dev 远程分支和本地分支删除完毕

git删除本地分支、删除远程分支

欢迎走过路过的各位大佬关注我的微信公众号ItBeeCoder https://blog.csdn.net/lihua5419/article/details/81706905 1、查看所有分支 git branch -a 2、查看当前所在分支 git branch 3、删除本地的bug_xzx分支 git branch -d bug_xzx 4、删除远程的bug_xzx分支 git push…

git删除远程分支和本地分支

问题描述&#xff1a; 当我们集体进行项目时&#xff0c;将自定义分支push到主分支master之后&#xff0c;如何删除远程的自定义分支呢 问题解决&#xff1a; &#xff08;1&#xff09;使用命令git branch -a 查看所有分支 注&#xff1a; 其中&#xff0c;remote/ori…