UML系列文章(7)---图

建模时为了更好地理解正在开发的系统,要对现实世界进行简化。使用UML,用类,接口、协作、构件、节点、依赖、泛化和关联等基本结构块构造模型。

  1. 入门

建筑师设计时从三件事情入手:1)需求列表;2)关键特征的草图;3)一些关于风格的想法;建筑师需要把不完整、不断变化而且可能是矛盾的需求转换成设计。

在软件方面,有5种互补视图对于软件体系结构的可视化、详述、构造和文档化是最重要的,分别是:用况图、设计图、交互图、实现图和部署图。每一种视图都包含结构建模(静态)和行为建模(动态)。这些不同的视图一起捕获了系统的最重要的决策。每个视图都分别注重于系统的一个方面,从而更清楚的思考设计决策。

UML用图来组织感兴趣的元素。例如,系统实现视图的静态方面可以用类图来可视化,用交互图来可视化同一个实现视图的动态方面。

详述可用于构造执行系统的模型(正向)和从可执行系统的部件重新构造模型(逆向工程)。无论哪种方式,都用增量与迭代地来创建图。

2. 术语与概念

系统是为完成一定目的而组织起来的,并由一组模型可能从不同观点来描述的子系统的集合。子系统是一组元素的组合,有些是行为的规范。模型(Model)是系统的语义闭合的抽象,表示对现实完整而又自我一致的简化,是为更好的理解系统而建立的。在体系结构的语境中,视图(View)是对系统模型的组织和结构的投影,注重于系统的一个方面。图(diagram)是一组元素的图形表示,通常表示成顶点(事物)和弧(关系)组成的连通图。

换句话说,系统表示了正在开发的事物,通过不同的模型从不同的角度对系统进行观察,并以图的形式来表示这些视图。图只是对组成系统的元素的图形投影。以人力资源系统的设计为例,可能有几百个类。绝不可能从一张包含所有的类和它们之间所有关系的大图,来对系统的结构和行为进行可视化。相反要创建几张图,每张图注重于一个方面。可能有一张类图包含有Person,Department,Office等类,这些类共同构成了数据库模式;可能在另一张图中看到这些类中的某些类和另外的一些类表示客户应用系统使用的API;也可能在交互图中看到一些同样的类,描述把一个Person重新分配给一个Department的事务的语义。

    系统中的同一个事物(如类Person)可以在同一个图或不同的图中出现多次。在每种情况下,它都是同一个事物,每个图对组成系统的元素提供了一个视图。

通常用下列几种图之一来观察系统的静态部分:

  • 类图
  • 构件图
  • 组合结构图
  • 对象图
  • 部署图
  • 制品图

另外用5种图观察系统的动态部分,有:

  • 用况图
  • 顺序图
  • 通信图
  • 状态图
  • 活动图

创建的每个图都很可能是这11种图之一,每个图都必须有一个在其语境中唯一的名称。除了非常微小的系统外,都要把图组织成包。

1)类图(class diagram)展示了一组类、接口、协作以及它们之间的关系。在面向对象系统建模中类图是最常用的图。用类图说明系统的静态设计视图。包含主动类的类图用于表达系统的静态交互视图。

2) 构件图(component diagram)展示了实现构件内部构件、连接件和端口。当实例化构件时,也实例化了其内部部件的副本。

3)组合结构图(comosite structure diagram)展示了类或协作的内部结构。构件和组合结构差别很小,可以都看作构件图

4)对象图(object diagram)展示了一组对象以及它们之间的关系。用对象图说明在类图中所发现的事物的实例的数据结构和静态快照。对象图也像类图那样表达系统的静态设计视图或静态交互视图,但它是从现实或原型方面来观察的。

5)制品图(artifact diagram)展示了一组制品以及它们与其他制品、与它们所实现的类之间的关系。可以用制品图来展示系统的物理实现单元。

6)部署图(deployment diagram)展示了一组结点以及它们之间的关系。用部署图说明体系结构的静态部署视图。部署图与构件图的相关之处是,一个结点通常包含一个或多个构件。

UML的行为图大致是围绕对系统的动态部分进行建模的几种主要方式来组织的。

1)用况图 组织系统的行为

用况图(use case diagram)描述了一组用况和参与者以及它们之间的关系。可以用用况图描述系统的静态用况视图。交互图是顺序图和通信图的总称。所有的顺序图和通信图都是交互图;交互图要不是顺序图,要不是通信图。

2)顺序图 注重消息的时间次序

顺序图(sequence diagram)是强调消息的时间次序的交互图。顺序图展示了一组角色和由扮演这些角色的实例发送和接收的消息。顺序图用于说明系统动态视图。

3)通信图 注重收发消息的对象的结构组织

通信图(communication diagram)是强调收发消息的对象的结构组织的交互图。通信图展示了一组角色、这些角色间的链接件已经由这些角色的实例所收发的消息。通信图用于说明系统的动态视图。

4)状态图 注重事件驱动的系统状态变化

状态图(state diagram)展示了一个由状态、转换、事件和活动组成的状态机。用状态图说明系统的动态视图。状态图对接口、类或协作的行为建模时非常重要的。状态图强调一个对象按事件次序发生的行为,这对于反应型系统的建模特别有用。

5)活动图 注重从活动到活动的控制流

活动图(activity diagram)展示了计算中的一步步的活动流。活动图展示了一组动作,从动作到动作的顺序的流或分支的流,以及由动作产生或消耗的值。活动图用于说明系统的动态视图。活动图对于系统的功能建模非常重要。活动图强调行为执行中的控制流。

3. 常用建模技术

  • 对系统的不同视图建模
  • 对不同的抽象层次建模

较高抽象层次建模

较低抽象层次

 

 

  • 对复杂视图建模

4. 提示与技巧

当创建图时,要遵循如下的策略:

  • UML图的目的时为了进行可视化、详述、构造和文档化。图始终是一种部署可执行系统的手段。
  • 不是所有的图都需要保存。通过对模型中的元素提出问题,考虑绘制一些草图,并用这些草图去思考正在构造的系统。
  • 避免无关的或冗余的图
  • 在每个图中只显示足以表达特定问题的细节
  • 不要使图过于简化,除非确实需要在很高的抽象层次上表达某些事物
  • 在系统的机构图与行为图之间保持平衡。很少有哪个系统是完全静态的或完全动态的
  • 图的大小合适,不能太大也不能太小
  • 每个图都有清楚表达意图的名称
  • 要对图进行组织。根据视图把它们组织到包中。

一个结构良好的图,应该满足如下要求:

  • 注重表达视图的一个方面
  • 仅包含对于理解这个方面必须的元素
  • 提供的细节与它的抽象层次一致
  • 不过分简化,以免误解重要的语义

当绘制图时,要遵循如下的策略:

  • 给图一个表达其目的的名称
  • 安排图的元素,尽量减少线段的交叉
  • 在空间上组织图的元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值