【背景】
UML视频看的差不多了,但是看完视频之后发现没有什么痕迹,视频中讲到的理论比较多,只听不记是远远不够的,知识需要不断地积累和总结,整理的过程就是思考的过程,下面就来把UML中涉及到的知识来梳理一下,对UML有一个大致的了解。
【UML】
概念:
(unified modeling language): 统一建模语言或标准建模语言,用来设计软件蓝图的可视化建模语言。
特点:
支持面向对象系统的分析、设计、实现和交付等各个环节,可以用于系统的理解、设计、浏览、维护和信息控制。 是一种可视化的面向对象建模语言,描述了一个系统的静态结构和动态行为,用图形方式表现典型的面向对象系统的整个结构,从不同的角度为系统建模,并形成系统的不同视图。
组成:
事物、关系、图
事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。事物通过关系结合成了图
应用:
采用面向对象技术设计软件系统时,使用用例图来描述用户需求;使用类图(主要使用)、对象图、包图、构件图、部署图这5种静态图来描述系统的静态结构;使用顺序图、合作图、活动图和状态图来描述系统动态行为。
【UML图—“五类十图(9+1)”】
五类→ 1.用例图(Use case Diagram )
概念:用例图是用来描述用户需求,由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图。用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
特点:用来描述用户需求,以用户的角度去分析功能,系统的执行者
组成:用例(Use Case),角色(Actor),关系
图符:
作用:重在应用,重在交流,重在事件流的描述。
2.静态图 (Static Diagram)
2.1 类图(Class Diagram)
概念:由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
特点:用来描述系统的静态部分,十种图中最核心、最重要
组成:类(Classes)、接口(Interfaces)、协作(Collaborations)、关系(依赖Dependency、泛化Generalization、 关联Association)包(Packages)或子系统(Subsystems)等
表示:
可见性(访问限制):
应用: ① 给定一个软件系统,根据软件系统特征抽象得到类
② 抽象得到每个类的属性和方法
③ 正确表达出类与类之间的关系,不能只用依赖关系,能用组合就不用聚合,能用聚合就不用一般关联,能用一般关联就不要用依赖,该用 接口的 时候就用接口实现,需要继承就用继承,最准确的关系来描述最准确地一一对应。
2.2 包图(Package Diagram)
概念:包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组。 包被描述成文件夹,可以应用在任何一种UML图上。当你的系统中用到的类、用例以及它们之间的关系过于庞大时,这时候就需要用包图将它们部分地集合起来,在构建的包的基础上进行操作或设计,可以把包比作一个存放模型元素的容器。
特点:展现有模型本身分解而成的组织单元(包)以及它们的依赖关系,相对集成
组成:类(Classes)、接口(Interfaces)、构件((Component)、用例(Use Case)、其他包(Other Packages)等;
若包被撤销,则其中的元素也被撤销了。
表示:
包与包之间的关系: 泛化(继承)、细化、依赖(常用);
如果两个包中的任意两个类之间有依赖关系,则这两个包之间有依赖关系
作用:逻辑上把一个复杂的图模块化,组织源代码,结构清晰、代码易读
2.3 对象图(Object Diagram)
概念:描述一个系统在某个具体时刻的静态结构,对象图可以看作是类图在系统某一时刻的实例。
特点:对象图是类图的实例,几乎使用与类图完全相同的标识;由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
组成:对象(Object)、连接(Link)
表示:
应用:对象图作为系统在某一时刻的快照,是类图中的各个类在某一个时间点上的实例及其关系的静态写照。
3.行为图(Behavioral Diagrams)
3.1活动图(activity Diagram)
概念:系统动态建模的图形工具之一,用于展现参与行为的类所进行的各种活动的顺序关系。
特点:特别适合于描述动作流和并发处理行为。
组成:活动状态(Action states)、活动状态之间的转移(transitions)、判断(decisions)、保证条件(guard conditions)、同步条(synchronization bar)、起点和终点。
图符:起始状态(Start state)—— 状态迁移(State Transition)—— 同步条(Synchronization Bar)——
终止状态(End State) —— 决策点(Decision)—— 泳道(Swimlane)——
作用:①描述一个操作的执行过程中所完成的工作或者动作。
②描述对象内部的工作。
③现实如何执行一组相关的动作,以及这些动作如何影响周围对象
④描述用例的执行
⑤处理多线程应用
3.2 状态图(Statechart Diagram)
概念:描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移,用来建模对象是如何改变其状态以响应事件和展示对象从创建到删除的生命周期。
特点:描述状态的变迁,侧重从行为的结果来描述,适用于描述跨越多个用例的多个对象的行为,而不适合描述多个对象之间的行为协作。
组成:名称(Name)、进入/退出动作(entry/exit action)、内部转换(internal transition)、子状态(substate)、延迟事件(defefrred event)
图符:
作用:①用来描述一个对象在其生命周期中所表现出来的状态和行为。
②当在系统建模过程中需要描述某个事物或对象的不同状态,以及状态之间转移的事件和动作是,用状态图。
③状态图不是每一个对象都需要的。
4.交互图(Interaction Diagram)
4.1 序列图/时序图/顺序图(Sequence Diagram)
概念:对对象之间传送消息的时间顺序的可视化表示。
特点: 描述系统中各个对象按照时间的顺序的交互过程,将交互关系表现为一个二维图,强调消息的时间顺序
组成:对象(Object)、消息(Messages)、生命线(LifeLine)
表示:
作用:序列图在记录一个未来系统的行为应该如何表现中,非常有用,在设计阶段,架构师和开发者能使用图,挖掘出系统对象间的交互,这样充实整个系统设计。
4.2 协作图/合作图/通信图(Collaboration Diagram)
概念:动态视图的另一种表现形式,描述相互作用对象间的交互关系。
特点:只对相互间有交互作用的对象和这些对象间的关系建模,强调交互对象的组织,合作关系。
组成:对象(Object)、链(Link)、消息(Message)
表示:
作用:①通过描绘对象之间的消息的传递情况来反映具体的适用语境的逻辑表达
② 显示对象及其交互关系的空间组织结构
③ 表现一个类操作的实现
5.实现图(Implementation Diagram)
5.1构件图/组件图(Component Diagram)
概念:用来显示一组构件之间的组织与依赖关系
特点:构件图从软件架构的角度来描述一个系统的主要功能,最重要的是复用。
组成:构件(Component)、接口(Interface)、依赖关系(Dependency)和 实现关系(realization)
表示:
应用:①对源码建模,便于版本变更
② 对执行体建模,正确发布软件系统
③对构建和接口之间的关系建模
④对可视性的系统建模
5.2 部署图/配置图/实施图(Deployment Diagram)
概念:用来描述软件系统中硬件和软件的物理结构,实施时的映射关系。
特点:一般一个系统仅有一个部署图
组成:节点(node)、构件(Component)、关系(Relationship)
表示:
应用:①对嵌入式系统进行建模的时候
②对C/S架构(客户/服务器系统)进行建模
③ 对分布式系统建模时
【总结】
UML利用类图和构件图来推断软件的结构,顺序图、协作图、状态图、活动图来描述软件的行为,实施图来讨论软件运行的处理器和设备的拓扑结构。UML中涉及的各种图都很重要,贯穿于系统开发的各个阶段, 需求阶段:采用用例图来描述需求(角色、功能、外部交互);分析阶段:明确解决问题的细节,采用类图(简单粗糙)来描述静态结构、采用顺序图、合作图、活动图、状态图来描述动态行为;设计阶段:给出解决的方案,采用类图(详细完善)、包,对类的接口进行设计;实现阶段:将类用某面向对象语言实现; 集成与交付阶段:构件图、包、部署图;测试阶段:单元测试使用类图和类的规格说明书,集成测试使用类图、包、构件图和合作图,系统测试使用用例图来测试系统功能…我要学习的还有很多很多…
不足之处望大家多多指导,小编不胜感激~~