首页
关于
友链
其它
统计
壁纸
Search
1
修改Linux Kernel defconfig的标准方法
4,786 阅读
2
Android系统之VINTF(1)manifests&compatibility matrices
4,455 阅读
3
cgroup--(4)cgroup v1和cgroup v2的详细介绍
4,113 阅读
4
c语言的__attribute__
2,812 阅读
5
Android系统之VINTF(3)Matching Rules
2,220 阅读
默认分类
文章收集
学习总结
每天一刷
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
工具
软件工具
Bug
登录
Search
标签搜索
shell
Linux
c
uboot
Vim
vintf
Linux驱动
Android
device_tree
git
DEBUG
链表
数据结构
IDR
内核
ELF
gcc
网址
内存管理
进程管理
adtxl
累计撰写
332
篇文章
累计收到
8
条评论
首页
栏目
默认分类
文章收集
学习总结
每天一刷
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
工具
软件工具
Bug
页面
关于
友链
其它
统计
壁纸
搜索到
2
篇与
工具
的结果
2021-02-24
[转载]浅谈UML中常用的几种图
转载自https://blog.csdn.net/qq_35495763/article/details/807649141. UML简介统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。‘UML感兴趣的可以阅读UML 1规 范,包含了UML 的所有知识内容。注:OMG, Object Management Group 对象管理组织2. UML常见图分类UML从考虑系统的不同角度出发,定义了用况图、类图、对象图、包图、状态图、活动图、序列图、通信图、构件图、部署图等10种图。分类:面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。“序列图”与“协作图”表述的是相似的消息,“活动图”是“状态图”的一种。静态结构图Static Structure Diagram类图Class Diagram对象图Object Diagram用况图Use Case Diagram交互图Interaction Diagram顺序图Sequence Diagram协作图Collaboration Diagram状态图State chart Diagrams活动图Activity Diagrams实现图Implementation Diagrams构件图Component Diagram部署图Deployment Diagram3. (用况图)用例用例图,展现了一组用例、参与者(actor)以及它们之间的关系。用例图从用户角度描述系统的静态使用情况,用于建立需求模型。(用于需求分析)参与者(Actor)在系统外部与系统直接交互的人或事物。需要注意以下两点:1)参与者是角色而不是具体的人(可以是外部系统),它代表了参与者在与系统打交道的过程中所扮演的角色。所以在系统的实际运作中,一个实际用户可能对应系统的多个参与者。不同的用户也可以只对应于一个参与者,从而代表同一参与者的不同实例。2)参与者作为外部用户(而不是内部)与系统发生交互作用,是它的主要特征。在UML中,参与者使用如图所示的一个小人表示:在UML中,参与者使用如图所示的一个小人表示:用例(Use Case)系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。用椭圆表示,椭圆中的文字简述系统的功能:子系统(Subsystem)用来展示系统的一部分功能,这部分功能联系紧密。关系(Relationship)常见关系类型有关联、泛化、包含和扩展。以上各关系在UML图中的表示方式,如下表所示:关联(Association)表示参与者与用例之间的通信,任何一方都可发送或接受消息。【箭头指向】:指向消息接收方泛化(Inheritance)就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。【箭头指向】:指向父用例包含(Include)包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。【箭头指向】:指向分解出来的功能用例扩展(Extend)扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。【箭头指向】:指向基础用例包含(include)、扩展(extend)、泛化(Inheritance) 的区别:条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。对extend(扩展)而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。对Inheritance(泛化)而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;4. 类图在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。【箭头指向】:带三角箭头的实线,箭头指向父类实现类的继承关系实现(Realization)【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.【箭头指向】:带三角箭头的虚线,箭头指向接口注意可以理解类的继承的关系的另外一种表现形式。关联(Association)【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。【代码体现】:成员变量【箭头及指向】:带普通箭头的实心线,指向被拥有者上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。下图为自身关联:聚合(Aggregation)【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。【代码体现】:成员变量【箭头及指向】:带空心菱形的实心线,菱形指向整体组合(Composition)【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。【代码体现】:成员变量【箭头及指向】:带实心菱形的实线,菱形指向整体依赖(Dependency)【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.【代码表现】:局部变量、方法的参数或者对静态方法的调用【箭头及指向】:带箭头的虚线,指向被使用者各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖下面这张UML图,比较形象地展示了各种类图关系:图片转自:http://blog.csdn.net/tianhai110/article/details/6339565注意这里的雁群和大雁的关系画反了。简单类图使用 举例根据下面的陈述画出类图1)学生包括本科生、研究生两种。2)研究生的一部分利用课余时间担任助教。3)教师包括讲师和教授两种。4)一名助教可以为一位讲师或一位教授助课,一位讲师只能有一名助教,一位教授可以有5名助教。按如下描述画出一个自治机器人的类图。这张图的焦点是聚集在那些让机器人在路上行走的机制所对应的类上。你可以发现一个虚类Motor和两个从它派生出来的类: SteeringMotor和MainMotor。这两个类都从它的父亲Motor继承了五个方法:move()、stop()、resetCounter()、statues()、distance()。这两个类又是另一个类Driver的一部分。类PathAgent 和Driver有一个1对1的关系,和CollisionSensor有1对n的关系。【问题:】综上所述请你用UML来绘制分析类图。参考答案:5. 其他辅助用途时序图时序图别称为顺序图、序列图,在我的大致印象中时序图是以时间为主线,有生命线的动态视图,主要描述的对象是对象。是交互图的一种。主要的作用是表达设计者心中对于未来程序在运作时的对象协作建模,验证软件领域模型的正确性,为程序员提供编码的蓝图。(一)概念定义:时序图是以时间为序的表示方法,主要用来描述对象之间的时间顺序。将交互关系表示为二维图的。纵轴为时间,横轴为在协作中各个独立的对象。对象存在时用一条虚线表示,当对象的过程处于激活状态是,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。如下图:四个元素(对象,生命线,消息,激活)(1)对象对象的概念就不多说了,就是类的实例化,在系统中随便都可以找到一个对象,因为我们使用的是基于OO编程的VB。(2)生命线表示对象的存在存在多久的时间(3)消息对象之间的单路通信,人有人的语言,机器有机器的语言,人和机器都是靠消息传递信息和指令的。消息的类型大致有:同步与异步,返回、阻止和超时。(4)激活表示这个时间,对象实现操作。时序图是将交互关系表示为二维图的。纵轴为时间,横轴为在协作中各个独立的对象。对象存在时用一条虚线表示,当对象的过程处于激活状态,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。(二)建模主要是按时间顺序对控制流建模(三)实例首先要分析用例的正常流,学生刷卡上机,系统记录学生上机时间,同时显示学生的基本信息,此时的学生信息时系统更新,系统根据学生上机时长和类别计算上机费用,系统保存学上上机信息。,学生下机,系统记录时间,跟新数据库,数据库更新,反馈学生信息,系统根据学生上机和下机时间、类别计算上机费用,系统保存学生上机费用然后开始画图:)创建时序图)添加对象并设置对象属性,持续性)添加消息(消息的编号,显示或取消激活显示)如图:(图片有错,不提供参考)版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tsj11514oo/article/details/38179121协作图(Collaboration Diagram/communication Diagram)/通信图协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。使用协作图来说明系统的动态情况。下面这张图介绍协作图的基本内容:下面一张图是一个协作图的实例,创建课程的协作图:由于协作图和时序图在语意上是相通的,所以可以互相转换,下面是利用ROSE把上面的协作图转换成的时序图的实例,可以直接使用功能进行转换:由于协作图和时序图在作用上可以替代的,在使用中,一般有了时序图就没有必要使用协作图。状态图1.概述:状态图(Statechart Diagram)主要用于描述一个特定的对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转换。2.构成要素:状态图由状态、转移和事件组成。联合使用状态和转移可以更好地建模它们,有时需要包含决策点和同步条来显示更高层次的细节信息。2.1状态(States):在对象的生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件或状况。所有的对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。状态图中可以包含多个开始状态,也可以包含多个结束状态。模型不必同时具有开始和结束状态,因为模型可以总是运行,从不停止。2.2转移(Transitions):两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作并在某个特定事件发生或某个特定条件满足时进入第二个状态。2.3事件:使状态发生变化的某时刻发生的动作或活动,用来指示是什么触发了转移从而导致状态发生了改变。事件通常在从一个状态到另一个状态的转移路径上直接指定。2.4判断:判断点通过对事件判断分组转移到各自方向,提高了状态图的可视性。2.4同步:使用同步和活动图一样是为了说明并发工作流的分叉与联合。3.机房实例(注册部分):总结:状态图重点在与描述对象的状态及其状态之间的转移,与活动图区别在于状态图注重的是行为的结果,活动图更注重是行为的动作。活动图(Activity Diagram)“活动图”可通过一系列操作将业务流程或软件进程以工作流的形式显示出来。这些操作可以由人、软件组件或计算机来执行。使用活动图可以描述多种类型的流程,如下:1、用户和您的系统之间的业务流程或工作流。2、某一用例中执行的步骤。3、软件协议,即允许在组件间进行的交互序列。4、软件算法。下面用一张图来介绍活动图的基本内容下面是用rose 和 onenote结合画的一张活动图的实例,基本囊括了活动图的重要元素。组件图(ComponentDiagram)、配置图(Deployment Diagram)组件(构件图)和配置图(部署图)是面向对象系统的物理建模时使用的两种图。组件图:描述软件组件以及组件之间的关系。组件图元素:组件、接口、依赖关系组件:是定义良好接口的物理实现单元,遵从同一组接口,提供实现物理的可替换的部分。接口:一个类提供另一个类的一组操作。依赖关系:一种使用关系(这里不做详解)构件与结构之间关系:构件与构件之间关系:依赖构件与其对应接口之间关系:实现导出接口:组件实现的接口,由提供操作的组件提供导入接口:访问服务的组件使用导入接口机房收费系统构件图:机房收费系统引用控件与报表生成器,导出EXcel,打印报表,通过代码与数据库连接实时更新数据。配置图:描述系统硬件的物理结构以及如何将软件部署在硬件上。用于对系统的实现视图建模,主要是为了描述系统各个物理组成部分的分布、提交、安装过程。组成元素:节点、关系机房收费系统部署图:补充:UML是不断修订的 在UML 中,主要是使用了9 张图,到了UML 2 中有新增了几张图;概览
2021年02月24日
1,165 阅读
0 评论
0 点赞
2021-02-24
画图技能之--时序图
转载自程序员必备画图技能之——时序图[TOC]什么是时序图时序图(Sequence Diagram),又名序列图、循序图,是一种 UML 交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。使用场景时序图的使用场景非常广泛,几乎各行各业都可以使用。当然,作为一个软件工作者,我这边主要列举和软件开发有关的场景。1. 梳理业务流程一般的软件开发都是为了支撑某个具体的业务。有时候业务的流程会比较复杂,涉及到多种角色,这时就可以使用时序图来梳理这个业务逻辑。这样会使业务看起来非常清晰,代码写起来也是水到渠成的事情了。一般的软件开发都是为了支撑某个具体的业务。有时候业务的流程会比较复杂,涉及到多种角色,这时就可以使用时序图来梳理这个业务逻辑。这样会使业务看起来非常清晰,代码写起来也是水到渠成的事情了。2. 梳理开源软件作为一个合格的程序员,阅读源代码的能力一定要过关。一般成熟框架的源代码调用深度都比较深,类之间的调用关系也比较复杂。我喜欢用时序图来梳理框架中这些对象之间的关系。比如再看 Tomcat 启动流程的过程中,我就时序图梳理了各个组件之间的关系,看起来层次非常清楚,也便于记忆。3. 时序图的角色我们在画时序图时会涉及下面7种元素:角色(Actor)对象(Object)生命线(LifeLine)控制焦点(Activation)消息(Message)自关联消息组合片段。其中前6种是比较常用和重要的元素,最后的组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,再单独介绍组合片段元素。1. 角色(Actor)系统角色,可以是人或者其他系统和子系统。以一个小人图标表示。2. 对象(Object)对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService;只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。3. 生命线(LifeLine)时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表示。4. 控制焦点(Activation)控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。5. 消息(Message)表示对象之间发送的信息。消息分为三种类型同步消息(Synchronous Message)消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线和实心箭头表示。异步消息(Asynchronous Message)消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线和大于号表示。返回消息(Return Message)返回消息表示从过程调用返回。以小于号和虚线表示。6. 自关联消息表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。下面举例一个时序图的列子,看下上面几种元素具体的使用方式。ps:这个图上的返回消息画的不太对,应该是空心箭头7. 组合片段组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:组合名称组合含义ref引用其他地方定义的组合片段alt在一组行为中根据特定的条件选择某个交互opt表示一个可选的行为break提供了和编程语言中的break类拟的机制par支持交互片段的并发执行seq强迫交互按照特定的顺序执行strict明确定义了一组交互片段的执行顺序neg用来标志不应该发生的交互region标志在组合片段中先于其他交互片断发生的交互ignore明确定义了交互片段不应该响应的消息consider明确标志了应该被处理的消息assert标志了在交互片段中作为事件唯一的合法继续者的操作数loop说明交互片段会被重复执行组合片段的功能平时用的不是很多,具体使用时可以参考本文最后关于组合片段的文章,这边不做深入介绍了。参考:https://blog.csdn.net/fly_zxy/article/details/80911942http://baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pchttps://www.cnblogs.com/whylaughing/p/5794693.html
2021年02月24日
757 阅读
0 评论
0 点赞