软考必考题型之UML图形

概念

统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

  • 在UML系统开发中有三个主要的模型:
    1. 功能模型:从用户的角度展示系统的功能,包括用例图。
    2. 对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
    3. 动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
  • UML图,包括用例图、协作图、活动图、序列图、部署图、组件图、类图状态图,是模型中信息的图形表达方式,但是UML模型独立于UML图存在。

软考中UML图相关的题目历年卷面占的分值比重很高,下面分别列举常考的图形。

用例图

用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。它以图形化的方式将系统描述成用例、参与者及其之间的关系。用例图在高层交流了系统必须处理的业务事件的范围,是描述系统与其他外部系统以及用户之间交互的图形。发起或触发用例的外部用户称为参与者。为了完成某些业务任务,参与者发起系统活动,即用例。在构建用例图时,常用的方式是先识别参与者,然后确定用例以及用例之间的关系。

简单模拟ATM服务构建的用例图如下
ATM用例图
上图表示有三个用户管理员、用户、银行和九个用例,
用例的连接关系表示如下图
用例图连接关系

关联管理: 表示用户与用例之间的通信
泛化关系: 可以理解为继承,子用例将继承父用例的所有结构、行为和关系。
包含关系: 用来把一个较复杂用例所表示的功能分解成较小的步骤。
扩展关系: 扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能

协作图

协作图强调参加交互的对象的组织。产生一张协作图,首先要将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送或接收的消息来修饰这些链。这就提供了协作对象的结构组织语境中观察控制流的一个清晰的可视化轨迹。简单说就是,对象和对象之间的调用关系,体现的是一种组织关系。

  1. 下面以借书业务,简单构建一张协作图:
    借书协作图
    图中逻辑如下

用户输入图书id,发起借书请求
根据图书目录中的id确认该书可以借阅,计算归还时间,生存借阅记录。
若用户不能借阅,告知用户拒绝原因。

  1. 协作图的消息有以下几种
    协作图消息
活动图

UML活动图用于构建系统的活动。建模用例执行过程中对象如何通过消息相交互,将系统作为一个整体或者几个子系统进行考虑。对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发控制流进行建模,UML中引入同步对概念,用同步棒————黑色粗线条表示并发分支与合并。

活动图的考点在于并发数量,如下

  1. (2013年下半年例题)在如下所示的UML活动图中,能同时运行的最大线程数量为?
    活动图
    同步棒中的活动是并发执行的,所以这道题的答案是2。
序列图

UML序列图以二维图的形式显示对象之间的交互,纵轴自上而下表示事件,横轴表示要交互的对象,主要体现对象间消息传递的时间顺序,强调参与交互的对象及其消息交互的时序。序列图中包括的建模元素主要有:活动者、对象、生命线、控制焦点和消息。其中对象名称标有下划线;生命线表示为虚线,竖直向下延伸;消息表示为箭头;控制焦点有薄矩形表示。

构建一个简单的序列图
序列图
再来看看微信支付的序列图
微信支付时序图
序列图中的消息是从一个对象的生命线到另一个对象生命线的箭头,用从上而下的时间顺序来安排。一般分为同步消息、异步消息和返回消息。在图中的表示如下
消息图例

部署图

部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。

部署图在近些年考试中并没有出现过,这里只简单画图示例,不做说明了
部署图

组件图

组件图是用来反映代码的物理结构。从组件图中,您可以了解各软件组件(如源代码文件或动态链接库)之间的编译器和运行时依赖关系。使用组件图可以将系统划分为内聚组件并显示代码自身的结构。

组件图的考点是只要能认出图形是组件图就必定拿分,记住下图矩形右上角的小图形就可以。
组件图

类图

类图是类的结构及类之间关系的一种表现形式。

下面以一个装饰模式的简单类图示例:

  1. 在UML类图中,类使用包含类名、属性和方法且带有分割线的矩形来表示。如下图表示Decorator类,包含invoice属性,包含两个方法Decorator和printInvoice。
    Decorator

方法前的+ 表示 public,- 表示 private,# 表示 protected。
属性的完整表达方式为: 可见性 名称 :类型 [ = 缺省值]
方法的完整表达方式为: 可见性 名称(参数列表) [ : 返回类型]
表达式中括号里的内容是可选的。

  1. 类图也能表示类之间的关系,如下图表示Invoice有一个子类Decorator,Decorator有两个子类HeadDecorator和FootDecorator。
    装饰
    关系间的连接表示如下图
    关系表示
    类图的考点往往在于设计模式,本章节只对类图的基本特征做以描述,在下一个章节【软考重点题型之设计模式 】中会列举常用设计模式类图。
状态图

状态图主要用于描述对象、子系统、系统的生命周期。通过状态图可以了解到一个对象所能达到的所有状态及对象收到的事件对对象状态对影响等。针对具有可标记的状态和复杂的行为的对象构建状态图。状态有可能有嵌套的子状态,其子状态可以是一个状态图。

状态图以实心圆表示起点,圆形内嵌圆点表示终点,圆角矩形表示状态,连接线表示事件。

状态图的考点一般是根据题意补全状态或事件名称和状态的迁移,也是比较简单的,下面举出两个例子。

  1. (2013年下半年例题) 某航空公司将乘客分为以下四种:
    • 非会员: 不累计航程,办理会员卡后即可升级为普通会员
    • 普通会员: 每年累计里程达到25000但不满50000,自动升级为银卡会员;累计里程达到50000以上,自动升级为金卡会员。
    • 银卡会员:每年累计里程不足25000,自动降为普通会员;累计里程达到50000以上,自动升级为金卡会员。
    • 金卡会员:每年累计里程不足25000,自动降为普通会员;累计里程达到25000不足50000,自动降为银卡会员。

根据题目描述构建的状态图如下
会员积分状态图
2. (2016年下半年例题)如下图示状态B内嵌了B1、B2、B3和B4。当激活状态是B且内嵌为状态B2时,如果发生e2事件,则转移到C3状态;如果当前激活状态B的子状态不是B2,事件e2发生后不会激发状态转换。B中内嵌的两个结束状态均达到时,会离开状态B。
嵌套状态图示例

先写到这里,以后有更多理解时再回来修改。文中如有不当之处,欢迎指正。

  • 25
    点赞
  • 191
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值