🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 统一建模语言(Unified Modeling Language, UML) uml 是一种绘制软件蓝图的标准语言 可以对软件密集型的系统进行可视化、详述、构造和文档化 ## UML的模型概念 > @todo ### UML的构造块 #### 事物 ##### 结构事物 (类、接口、协作、用况、主动类、构件、制品、节点) ``通常是模型的 *静态部分*(不参与逻辑 只作为工具), 描述概念元素或物理元素`` 类: 具有相同属性、相同操作、相同关系、相同语义的对象的描述 接口:定义了一组操作规范(非操作实现) 描述了外部的可见行为。可定常量,不需要属性 协作:定义了一个交互。具有结构、行为、和维度。由一组共同工作提供协作行为的角色和其他元素构成的群体。一个类/对象可以参与几个协作 用况:用于构建模型中的行为事物,是一组动作序列都描述。通过协作实现。 主动类: 能够启动控制活动,对象元素行为和其他元素的行为并发 其余和类 一样 构件:系统设计的模块化部件,实现隐藏,对外只提供接口 制品: 系统中物理的可代替的部件;比如现成的动态库、源代码文件、脚本 节点:运行时存在的物理元素、表示计算机资源、有一些记忆/处理能力 ``以上是基本结构事物 还有变体 参与者、信号、使用程序(一种类)、进程和线程(两种主动类)、应用、文档、文件、库、页和表(一种制品)等`` ![类表示法](http://oosl511la.bkt.clouddn.com/1492833510%281%29.jpg "类表示:类名称、属性、操作") ![接口表示法](http://oosl511la.bkt.clouddn.com/1492836755%281%29.png "接口表示:Iwondow 是接口名称") ![接口、类关系表示法](http://oosl511la.bkt.clouddn.com/1492836954%281%29.png "接口 类关系表示法:圆=接口、方块=该类、半圆=其他类;该类向其他类请求") ![协作表示法](http://oosl511la.bkt.clouddn.com/1492837438%281%29.jpg "协作表示法:虚线的椭圆形。英文 责任链") ![用况表示法](http://oosl511la.bkt.clouddn.com/1492838383%281%29.png "用况表示法:椭圆形。英文 订购;下订单") ![主动类表示法](http://oosl511la.bkt.clouddn.com/1492839663%281%29.jpg "主动类表示法,左右边框双线 其余同 《类》") ![构件表示法](http://oosl511la.bkt.clouddn.com/1492839863.png "构件表示法:很像类 右上角有个图标") ![制品表示法](http://oosl511la.bkt.clouddn.com/1492840033%281%29.png "制品表示法:关键字 <artifact>") ![节点表示法](http://oosl511la.bkt.clouddn.com/1492840139%281%29.jpg "节点表示法:通常只写名称") ##### 行为事物 (交互、状态机、活动、) ``UML模型中的动态部分 代表了跨越时间和空间的行为`` 交互(interaction):共同完成一定任务的一组对象/角色之间交换的信息组成。 一个对象的群体/单个操作可以用一个交互来描述。交互设计其他元素 包括消息、动作、连接件(对象之间的链接)。 状态机(state machine):描述一个对象/交互在生命期内响应事件所经历的状态序列以及对事件的响应。 活动(activity):计算过程执行的步骤序列。 ``交互注重一系列相互起作用的对象、状态机注重一定之间内一个对象的生命周期、活动注重的是步骤之间的流而不关心那个对象执行那个步骤`` ![交互表示法](http://oosl511la.bkt.clouddn.com/1492841265%281%29.png "交互表示法:直线+箭头+操作名") ![状态机表示法](http://oosl511la.bkt.clouddn.com/1492841701.png "状态机表示法:状态名字及子状态(若有)") ![活动表示](http://oosl511la.bkt.clouddn.com/1492841944%281%29.jpg "活动表示:和状态机表示相同 只能通过语境区分 英语:处理流程/顺序") ##### 分组事物 (包) ![包表示](http://oosl511la.bkt.clouddn.com/1492842255%281%29.jpg "包表示:仅有包名 或有其内容 英文:业务规则") ##### 注释事物 () ![注释表示](http://oosl511la.bkt.clouddn.com/1492842584%281%29.jpg "文字/图形解释") ##### 关系 (依赖、关联、泛化、实现 ) ``关系构造块可以写出结构良好的模型`` 依赖:其中一个元素(独立元素)发生变化 影响另一个元素(依赖元素) 关联:类之间的结构关系。描述了一组链(是实例对象之间的连接) 《聚合》是一种特殊类型的关联 描述了整体与部分件的结构关系 泛化:一种特殊/一般的关系。特殊元素(子元素)基于一般元素(父元素)而建立 子继承了父的结构和行为 实现:类目之间的语义关系。一个类目指向由另一个类目保证执行的合约。 两种情景: 接口和实现它们的类/构件之间; 用况和实现 它们的协作之间 ``以上是基本关系事物 可能有变体 精华、跟踪、包含、扩展`` ![依赖](http://oosl511la.bkt.clouddn.com/1492845114%281%29.png "偶尔其上带标记") ![关联](http://oosl511la.bkt.clouddn.com/1492845264%281%29.png "偶尔其上带标记经常含有多重性/端名修饰 英文:雇主 雇员") ![泛化](http://oosl511la.bkt.clouddn.com/1492845501%281%29.png "指向父元素") ![实现](http://oosl511la.bkt.clouddn.com/1492845590%281%29.png "泛化和依赖关系两种图形的结合") #### 图 ``一组元素的图形表现 一般吧图化成定点(代表事物)和弧(代表关系的连通图)`` *类图*、*对象图*、*构件图*、*组合结构图*、*用况图*、*顺序图*、*通信图*、*状态图*、*活动图*、*部署图*、*包图*、*定时图*、*交互概览图* 类图:展示了一组类、接口、协作和他们之间的关系 对象图:展示了一组对象以及他们之间的关系 构造图:展示了一个封装的类和他的接口、端口、以及又内嵌的构件和连接件构成的内部结构 用况图 : 展示了一组用况、参与者(一种特殊的类)以及他们之间的关系 顺序图/通信图:都是交互图 展示了一种交互,有一组对象或角色以及他们之间可能发送的消息构成 。 交互图专注于系统的动态视图。顺序图强调消息的时间次序;通信图强调收发消息的对象或角色的结构组织 状态图: 由状态、转义、时间和活动组成。展示了一个状态机(对象的动态视图) 活动图 : 将进程或其他计算结构展示为计算机内部一步步的控制流和数据流;系统的动态视图;强调对象间的控制流程 部署图: 展示了对运行时的处理节点以及在其中生成的构件的配署 (静态部署视图) 制品图: 计算机中的一个系统的物理结构 包图: 模块本身分解而成的组织单元以及它们的依赖关系 定时图: 一种交互图,消息跨越不同对象/角色的实际时间,而不仅仅关心消息的相对顺序 交互概览图: 活动图和顺序图都而混合物 ### UML规则 #### 语法和语义规则 * 命名 (为事物、关系、图起的名字 * 范围 (使名字具有特定含义的语境 * 可见性 (这些名字如何让其他成员看见和使用 * 完整性 (事物如何正确 一致的相互联系 * 执行 (运行或模拟动态模型的含义是什么 为了应对开发期间的变化 有时候也建造这样的模型 * 省略 ( 因此某些元素以简化视图 * 不完全 ( 可能遗漏了某些元素 * 不一致 ( 不保证模型的完整性 #### UML中的公共机制 * 详述 (提供了对构造块的语法和语义的文字叙述 * 修饰 (唯一和直接的图形表示符号 如 是否是抽象类 属性操作是否可见 +公共 # 受保护 -私有 * 通用划分(类和对象的划分 接口和实现的分离 类型和角色的分离。如 对象:名称有下划线 * 扩展机制( 衍型:扩展UML的词汇 用来构造新的构造块 标记值:扩展了UML衍型的特性 约束:扩展了UML构造块的语义 ## 体系结构 ``要求从多个角度去观察系统 最终 用户、分析人员、开发人员、测试人员。。。`` 软件结构是一组有关下属内容的总要决策: * 软件系统的组织 * 对组成系统的结构元素及其接口的选择 * 像元素间的协作锁描述的那样的行为 * 将这些结构元素和行为元素组合刀逐步增大的子系统中 * 知道这种组织的体系结构风格:静态、动态元素及其他们的接口 协作和组成 ``软件体系结构不仅关心结构和行为 还关心 用法 功能 性能 弹性 复用 可理解 。。。`` **最好用5个互联的视图来描述软件的密集型系统的体系结构 设计、实现、用况、交互、部署视图** 用况视图: 被最终用户 分析人员 测试人员看到的系统行为的用况组成。(业务逻辑?) 设计视图: 包含类 接口 协作 交互视图:系统的不同部分之间的控制流,包括并发/同步机制。主要针对性能 可伸缩性 系统吞吐量 实现视图: 装配和发布物理系统的制品 部署视图:包含了形成系统硬件拓扑结构的节点 ## 软件的开发周期 任务>业务模型>需求>分析和设计>实现>测试>部署