软考系统架构设计师之UML统一建模语言
一、UML基本概念
UML(统一建模语言): 平台无关、语言无关。
组成:构造块、规则、公共机制
构造块又分为:事物、关系、图
事物分为:
结构事物: 最静态的部分,包括:类、接口、协作、用例、活动类、构件和节点。
行为事物: 代表时间和空间上的动作。包括:消息、动作次序、连接。
分组事物: 看成是个盒子,如:包、构件。
注释事物: UML模型的解释部分。描述、说明和标注模型的元素。
规则分为:
范围: 给一个名字以特定含义的语境
可见性: 怎样使用或看见名字
完整性: 事物如何正确、一致地相互联系
执行: 运行或模拟动态模型的含义是什么
公共机制分为:
规格说明: 事物语义的细节描述,它是模型真正的核心
修饰: 通过修饰来表达更多的信息
公共分类: 类与对象、接口与实现
扩展机制: 允许添加新的规则
二、UML图
UML图分为:静态图(结构图)、动态图(行为图)
静态图: 类图、对象图、构件图、部署图、制品图、包图、组合结构图
动态图: 用例图、顺序图、通信图、状态图、活动图、定时图、交互概览图
用例图:
用例图描述一组用例、参与者及它们之间的关系。
用户角度描述系统功能;
参与者是外部触发因素;
用例是功能单元。
【用例模型】建立流程
第一步:识别参与者【参与者:用户、组织、外部系统、时间】
第二步:合并需求获得用例
第三步:细化用例描述
第四步:调整用例模型(可选步骤)
【关系包括:包含关系、扩展关系、泛化关系】
细化用例描述:
包含关系【使用关系】:从多个用例中提取公共行为,提取出来的公共用例称为抽象用例,而把原始用例称为基本用例。
include
扩展关系: 一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例
extend
泛化关系: 当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。子用例继承了父用例所有的结构、行为和关系。
例子:
在某银行业务的用例模型中:
“取款”和”“存款”两个用例中都需要执行查询余额的功能
将查询余额提取成独立的用例,那么“取款”和“存款”用例与“查询余额”用例之间的关
系属于()。
A.扩展关系
B.包含关系
C.依赖关系
D.继承关系
采用UML分析用户需求时,用例UC1可以出现在用例UC2出现的任何位置,那么UC1和
UC2之间的关系是()。
A.include
B.extend
C.generalize
D.call
参考答案:B、C
三、类图与对象图
类图与对象图
类图(class diagram): 类图描述-组类、接口、协作和它们之间的关系。
对象图(object diagram): (对象图对象图描描述一组对象及它们之间的关系。述了在类图中所建立的事物实例的静态快照。
其中包含:
类名, 方法名,属性名
多重度
关系
类间的关系的语义强度由弱到强分为:
依赖关系: 一个事物发生变化影响另一个事物。
关联关系: 描述了一组链,链是对象之间的连接。
聚合关系: 整体与部分生命周期不同。比如电脑主机里面的部件和整台电脑的关系 ,显示器坏了,其他部件还可以用,可以拿到其他地方继续使用。
组合关系 整体与部分生命周期相同。比如部门和公司的关系,公司不存在了,那么部门也不存在了。
实现关系: 接口与类之间的关系。
泛化(继承)关系: 特殊/一般关系。
考察比较多的是:泛化、聚合、组合关系。
例子:
UML用关系把事物结合在一起,()描述一个事物发生变化会影响另一个
事物的语义;()描述特殊元素的对象可替换一般元素的对象。
A.聚合关系
B.关联关系
C.包含关系
D.依赖关系
A.实现关系
B.聚合关系
C.泛化关系
D.关联关系
参考答案:D、C
四、顺序图
顺序图(sequence diagram,序列图)。顺序图是一种交互图(interactiondiagram),它强调对象之间消息发送的顺序,同时显示对象之间的交互。
消息分为简单、同步、异步、返回、销毁消息等。
【顺序图的组合片段】
Loop【循环】:如果满足“循环条件”,则重复执行本框中的内容。对应for,while
Alt【条件分支】:满足条件1,则执行条件1对应的内容,满足条件2则执行条件2对应的内容。对应switch语句,或if…else if…else语句
0pt【可选分支】:如果条件满足,则执行框中内容,否则跳过不执行。对应if语句。
五、通信图(协作图)
通信图(communication diagram)。通信图也是一种交互图,它强调对象之间存在的消息收发关系而不专门突出这些消息发送的时间顺序。
六、状态图
状态图(state diagram)是对类描述的补充。用于展现此类对象所具有的可能状态,以及某些事件发生时其状态转移情况。
例子:
在订单处理的过程中,会员可以点击“取消订单”取消该订单。如果支付失败,该订单将被标记为挂起状态,可后续重新支付,如果挂起超时30分钟未支付,系统将自动取消该订单。订单支付成功后,系统判断订单类型:
(1)对于常规订单,标记为备货状态,订单信息发送到货运部,完成打包后交付快递发货:(2)对于定制订单,会自动进入定制状态,定制完成后交付快递发货。会员在系统中点击“收货”按钮变为收货状态,结束整个订单的处理流程。
七、活动图
活动图(activity diagram)是一种特殊的状态图。活动图描述一个操作中要进行的各项活动的执行流程。同时,也常被用来描述一个用例的处理流程或者某种交互流程。
活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。它强调对象间的控制流程。
活动图与程序流程图比较接近。
流程图是在结构化分析里面,活动图是面向对象分析里面的方法;活动图可以支持并行的处理方式。有一种叫泳道式的活动图,其实是按角色(对象)来划分各个角色(对象)来完成各自的任务。
例子:
某公司欲开发一个在线交易系统。为了能够精确表达用户与系统的复杂交互过程,应该用UML的()进行交互过程建模。
A.类图
B.顺序图
C.部署图
D.对象图
()适用于描述复杂算法的执行流程。
A.活动图
B.状态图
C.类图
D.用例图
参考答案:B、A
八、定时图 (在后续版本新增加的)
定时图也叫计时图,也是一种交互图,用于展示交互过程中的真实时间信息,具体描述对象状态变化的时间点以及维持特定状态的时间段。
九、构件图和包图
构件图(componentdiagram)。构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。
包图,包的图标像是一个带标签的文件夹,包的基本思想是把共同工作的元素放到一个文件夹中。例:多个类或构件组成了一个子系统,就可以将它们放到一个包中。
十、部署图
部署图(deployment diagram)。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。
简而言之,部署图可以直观展现软件部署在哪些服务器上面。
十一、SysML(系统建模语言)
MBSE(Model Based Systems Engineering,基于模型的系统工程)
【MBSE的三大支柱】
【建模语言】沟通标准化,MBSE的核心。典型代表:SySML,OPM。
【建模方法】类似于路线图,如:INCONSE面向对象系统工程法。
【建模工具】如:Agilian,Modelio。
【软件工程】
【建模语言】UML
【建模方法】面向对象开发
【建模工具】Visio、 Rose
系统工程建模-SySML【需求图】
SySML中的需求关系:包含、跟踪、继承需求、改善、满足、验证 和 复制。
包含(Include):需求可以且只能包含其他需求。
下面这些属于依赖关系:
跟踪(Trace):对提供方元素(位于箭头端)的修改可能会导致对客户端元素(位于尾端)修改的需要。
继承(deriveReqt):一个需求可以继承另一个需求的属性。
改善(refine):表示一个需求改进了另一个需求的满足程度。
满足(satisfy):一般是模块满足某种需求。
验证(verify):表示一个需求验证了另一个需求的正确性。
复制(Copy):表示一个需求复制了另一个需求的特性。