基本概念

UML(Unified Modeling Language,统一建模语言)是一种面向对象的建模语言,一种用于构造的语言,一种可以用于文档化的语言。它的主要作用是帮助用户对软件系统进行面向对象的描述和建模,它可以描述这个软件开发过程从需求分析直到实现和测试的全过程。

如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。其中红字标注的视图是作为一名产品人员所应该掌握的。

1.用例图

【概念】描述用户需求,从用户的角度描述系统的功能

【描述方式】椭圆表示某个用例;人形符号表示角色

【目的】帮助开发团队以一种可视化的方式理解系统的功能需求

【用例图】

2.类图

【概念】显示系统的静态结构,表示不同的实体是如何相关联的。

【描述方式】三个矩形,类名、特性、操作。

【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体。

【类图】

3.对象图

【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系。

【对象图】

4.时序图(顺序图、序列图)

【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序

【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开。

【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。

【时序图】

沿着生命线从上到下就是对象间交互发生的顺序,生命线上的长条方框就表示交互的时间,这个时间只是估计的时间,不需要过分纠结长短。

从图中可以看出请假所需的步骤:

  1. 员工提交请假申请。
  2. 保存请假申请。
  3. 提醒领导审批。
  4. 领导审批批准/拒绝。
  5. 修改请假状态。
  6. 提醒员工审批完成。

相比上边这段文字,时序图的表达更直接。

5.协作图

【概念】描述对象之间的合作关系,侧重对象之间的消息传递。

6.状态图

【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移。是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。

【描述方式】

  1. 起始点:实心圆;
  2. 状态之间的转换:使用开箭头的线段;
  3. 状态:圆角矩形;
  4. 判断点:空心圆;
  5. 一个或多个终止点:内部包含实心圆的圆。

【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程

【状态图】

  • 开始符号和结束符号:表示开始和结束。
  • 动作:触发状态改变的动作。就是是什么事情让状态改变的。
  • 状态:对象当前所处的状态。

用文字来描述一下这个状态图要表达的事情:

  1. 刚提出请假申请时是提出状态。
  2. 领导同意则改为批准状态。
  3. 领导不同意则改为拒绝状态。
  4. 拒绝后可以重新申请或直接撤回。

7.活动图

【概念】交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。时序图按照时间顺序布图,而活动图按照空间结构布图。

 

8.构件图(Component diagrams)

【概念】描述代码构件的物理结构以及各构件之间的依赖关系

构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。

【描述方式】构件

【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构

【构件图】

9.部署图

【概念】系统中硬件的物理体系结构。描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。

【描述方式】三维立方体表示部件

【目的】显示系统的硬件和软件的物理结构。描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。

【部署图】

 

图的差异比较

1.序列图(时序图)VS协作图

序列图和协作图都是交互图。二者在语义上等价,可以相互转化。但是侧重点不同:序列图侧重时间顺序,协作图侧重对象间的关系。

共同点:时序图与协作图均显示了对象间的交互。

不同点:时序图强调交互的时间次序。

协作图强调交互的空间结构。

2.状态图VS活动图

状态图和活动图都是行为图。状态图侧重从行为的结果来描述,活动图侧重从行为的动作来描述。状态图描述了一个具体对象的可能状态以及他们之间的转换。在实际的项目中,活动图并不是必须的,需要满足以下条件:1、出现并行过程&行为;2、描述算法;3、跨越多个用例的活动图。

3.活动图VS交互图

二者都涉及到对象和他们之间传递的关系。区别在于交互图观察的是传送消息的对象,而活动图观察的是对象之间传递的消息。看似语义相同,但是他们是从不同的角度来观察整个系统的。

 

UML与软件工程

UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量。而UML作为一种建模语言,更加有效的实现了软件工程的要求。

如下图,在软件的各个开发阶段需要的UML图。

下表是UML使用人员图示