UML统一建模语言

一、建模语言的背景:

通俗地阐述就是:客户一开始不知道要什么,开发通过客户的阐述进行理解和分析,这个过程中间可能会产生一些误解。为了避免此类事件,所以需要建模。类似于要建造一栋楼,建筑设计师根据住户的提出的想法,设计出建筑图稿,建筑工人再根据图稿开始建造房子。

1、因为不能完全地理解一个复杂的系统,所以要对它进行建模,

2、为了更好地理解正在开发的系统。

3、建模的四个目的:

(1)帮助我们按照需要对系统进行“可视化”

(2)允许我们详细“说明系统的结构和行为”

(3)给出了一个指导我们“构建系统”的模版。

(4)对我们所做出的决策进行“文档化”

二、建模的含义: 通俗概括,在理解的过程中生产出的对现实进行抽象和简化的模型。

1、重要的研发成果往往产自类比。

2、把不太理解的东西和一些已经较为理解,且十分类似的东西作比较,可以对这些不太理解的东西产生深刻的理解,叫做建模。

模型:

1、建模产生的结果叫做模型,模型是对现实的简化,对事物的一种抽象。

2、模型帮助人们更好地了解事物的本质,抓住问题的要害。

3、在模型中,人们总是剔除与问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单,易于把握。

三、建模的四项基本原理。

1、选择要创建什么模型。 

      同一个现象,不同的模型,不同的结论

2、每一种模型可以在不同的精度级别上表示。

       可以是纸飞机,也可以是飞机模型。

3、最好的模型要与现实相关联的。

(1)和现实不关联的话,毫无价值。

(2)模型是对现实的简化,但是简化不能掩盖掉任何重要的细节。

4、单个模型是不充分的,对每一个重要的系统最好用一组几乎独立的模型去处理。

     比如对每个角度每个部分的理解都是片面的,不能以偏概全,只有综合所有部分的模型,才能形成完整的模型。

四、UML,统一建模语言

UML出现之前,每个人都有不同的表达方式,跨部门跨人群之间的沟通很困难,只能定义出一门语言来进行统一建模。

UML类似一个工具包。UML由事物、关系、图组成。

五、UML的是一种图形化建模工具,常用符号如下:

六、用例图

 更多用例图的含义请参考博文:UML--用例图详解-菜鸟笔记

1、用例图作用:用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。

2、用例图的构成元素

用例图的构成元素有四个:参与者(角色)用例、系统边界、元素之间的关系。

(1)参与者:位于系统之外并与系统进行交互的一类事物(人、物、其他软件系统)。

参与者的作用:通过它可以对软件系统与外界发生的交互进行分析和描述、通过它可以了解客户希望软件系统提供哪些功能。

(2)用例:系统为响应参与者引发的一个事件而执行的一系列的处理/动作,而这些处理应该为参与者产生一种有价值的结果。

(3)系统边界:系统边界是指系统与系统之间的界限。用方形框+系统名称表示

(4)用例图中的关系:

   参与者与用例的关系:关联关系(用实线表示)。

   参与者与参与者的关系:泛化关系(实线+空心箭头) 。

   用例之间的关系:

  泛化关系(比如 发出订单和网上发出订单,其中网上发出订单属于发出订单的一种方式)、

 包含关系( 多个用例用到同一段的行为,则可以把这段共同的行为单独抽象成一个用例,比如取款和查询余额之前都需要输入密码,则输入密码可以作为公共的用例,被取款用例和查询余额用例包含 )、

  扩展关系    (一个扩展功能的用例,满足条件执行,不满足条件不执行。比如打印取款流水用例是取钱用例 的扩展) 

用例图:


3、用例描述

用例描述模版示范:

summary:大概的功能

actor List:涉及的参与者

pre-condition:前置条件。运行的前置条件

description:用例中详细的步骤描述。如输入密码->系统验证密码->输入金额...

post-condition: 后置条件,用例执行完之后,系统所处的状态。比如取完钱之后,银行卡里的钱要扣除金额。

exception:异常情况。比如金额不足,报错。

七、活动图:

1、活动图的定义:

 (1)描述一项任务执行过程中所完成的工作。

 (2)描述对象内部的工作。

 (3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。

 (4)显示用例的实例如何执行动作,以及如何改变对象的状态。

(5)说明一次业务流程中的人(参与者)和对象是如何工作的。

2、活动图与用例模型互为补充,主要用于需求分析阶段。

3、活动的基本要素包括:

活动(动作)、动作流、分支与合并、分叉与汇合、泳道。

(1)活动:活动表示某流程中的任务的执行,它可以表示算法过程中语句的执行。

(2)动作流:所有动作状态之间的转换称之为动作流。

(3)分支与合并:分支一般用于表示对象类所具有的条件行为。条件行为用分支和合并表达。

     分支如上图的绿色棱形,表示条件。

(4)分叉与汇合:分叉可以用来描述并发线程。汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。

     

(5)泳道:泳道将活动图中的活动分成了若干小组,并把每一组制定给负责这种活动的业务组织,通常为对象。泳道区分了负责活动的对象,明确地表示哪些活动是由哪些对象触发的。

每个活动只能明确地属于一个泳道,并且泳道要负责泳道内的全部活动。

泳道没有顺序,不同泳道中的活动既可以顺序进行,也可以并发进行,动作流和对象流都可以穿越分割线。

分成customer,sales,warehouse 三个部门,且用实线分开,各自完成组内的活动。

八、类图

(1)类的定义:

     具有相同属性、操作、方法、关系或者行为的一组对象的描述符。类是真实世界事物的抽象。

在对系统建模时,将会涉及到如何识别业务系统中的事物,这些事物构成了整个业务系统,在UML中,将所有的这些事物都建模成类。

(2)对象的定义:

  当这些事物存在于真实世界中,它们是类的实例,并被称为对象。同一个类的各对象具有相同的属性,但属性的取值可以不同。对象提供相同的操作,相同的定义。

(3) 把类相关的元素画在一起,组成的图叫做类图。

(4)类之间的关系

 依赖关系、关联关系、继承关系、实现关系。

1.1 关联关系:

lecturer教Course。 1..* 表示 1到多个老师教Course。0..* 表示每一门课可以由0到多个老师教。

角色:Company是Employer的角色(雇主),person是Employee的角色(雇员)

1.2 关联关系的修饰:多重性、聚合/组合、关联类

1.2.1 多重性:

关联关系解读:

  角色:company是employer(雇主),person是employee(雇员)一个公司有7个雇员,一个人拥有(owner)0到多个账号bankAccount,1到多个人可以操作(operator)0到多个账号。 

1.2.2 聚合/组合:

聚合和组合的区别:组合,整体没了,部分也没了。聚合,整体没了,部分还存在。

1.2.3 关联类:

job为关联类,company和person不足以表达两者之间的关系。则用job来解释两者之间的关系。

表示,人在这个公司是从事什么工作,拿多少薪水的。

类图解读:

school、student的解读: school是由student聚合的(学校没了,学生还在),1到多个学校可以有无数个学生。因为黑色箭头朝上,则student 是school的成员。

 school、department的解读:1个 school有1到多个department,组合关系(school没了,department就消失了)。

department和chairperson的解读:0到1个department可以有0到1个chairperson(主任)。

department 和instructor解读: 这个department是由1到多个instructor(老师)组成的。(聚合,部门没了,老师还是存在的)。

instructor和course的解读:1个instructor可以教多门课程。每门course可以有多个instructor来教。

department和course的解读:一个department可以有多门课程。

student和course的解读:student可以出席(attends)多门课程。

九、顺序图

1、顺序图是什么:顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

2、顺序图的元素:

顺序图有四部分:参与者(Actor)或对象(Object)、生命线(Lift Line) 、激活期 和 消息。

2.1 、消息:

消息中还细分为了简单消息、同步消息和异步消息。

简单消息:就表示控制如何从一个对象发送给另一个对象,并不包含控制的细节。

同步消息:意味着阻塞和等待。如:A向B 发送一个消息后,对象A 必须一直等到B执行完成后返回才能继续往下执行。这就是同步消息。

异步消息:就意味着是非阻塞。如:A向B发送消息后,直接可以执行下面代码,无需等待B的执行。

同步消息用实心箭头表示,异步消息用开放式箭头表示。返回消息用相左的虚线箭头表示。

2.2、交互框:

UML在2.0时在时序图中加入了交互框。交互框用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:

2.2.1、alt (选择片段):

将 if/else 在图示中表示出来了。

2.2.2 、opt:

包含一个可能发生或不发生的序列

只要当我成绩score小于60时,老妈打我这件事情肯定会发生。

大于就不会发生。

2.2.3 、Loop (循环):

片段重复一定次数,可以在临界中指示片段重复的条件。

2.2.4 、并行(Par):

3、顺序图举例:

loop(1,3)代表 enter password,valid=verify(password)要循环执行1到三次。

opt  条件valid password满足则执行enter(account)和enter(amount),不满足则不执行。

4、代码与顺序图映射:

十、通信图

1、通信图(Communication Diagram),也叫协作图(Collaboration Diagram),描述了对象与对象之间的协作/合作关系,侧重说明对象的消息传递,强调发送和接收消息的对象之间的组织结构。通信图的建模结果用于获取对象的职责和接口。

2、通信图的构成:对象、链接(对象之间的连接)、链接上的消息。

上述的通信图解读:第一步是执行1,第二步执行 2.1、2.2 两个重载方法,第三步执行3,把Transaction删掉。

3、通信图和顺序图的区别:

同:都来自uml的元模型中相同的信息,二者在语意上是等价,可以互相转化。

不同:

(1)通信图显示对象之间是如何被连接的结构关系。对象之间的交流,通过在链接上附着带序号的消息,而顺序图没有。

(2)顺序图显示消息的返回,有对象的生命线,控制焦点,而通信图没有。

十、状态图

1、状态图出现的背景:

顺序图是对多个对象的动态行为进行建模,当需要考察单个实体的动态行为时,则用状态图对其进行建模。

2、状态图的概念:

状态:是对象的生命期中的一个条件或状况。

状态机:是一种行为,说明对象在它的生命期中,响应事件所经历的状态序列以及它们对每个事件的响应。

状态图:状态机可以用状态图可视化,状态图显示了一个状态机,它强调从状态到状态的控制流。

3、状态的组成:

名称、进入/退出动作、内部迁移、子状态、延迟事件

4、事件event:

(1)是对一个在时间和空间上占有一定位置的有意义的事件的描述。

(2)UML对四种事件进行建模:参量的变化(布尔表达式,定时器,溢出)、信号signal(异步)、调用call(同步)、时间事件。

 时间事件:表示一段时间的推移。after 时间表达式,at表示某个绝对时间点上发生的时间事件。

变化事件:表示状态的一个变化或某些条件得到满足的条件。when + 布尔表达式,当条件满足,则引发变化事件。

 5、迁移:

(1)在状态A,发生事件并满足一定条件,转到状态B。

(2)一个迁移由5部分组成。源状态、事件触发器,触发条件,效应,目标状态。

6、特殊的迁移

(1)自身迁移

   从状态A迁移到状态A

(2)内部迁移

  在状态A内部行为

7、状态图

(1)状态:

   一般状态:圆角矩形;初始状态:实心圆;结束状态:像眼睛。

(2)事件:

  触发事件名(触发条件)/迁移动作

(3)迁移:叉形箭头实线(从初始状态指向目标状态)

(4)状态图:

状态图解读:有两种状态off和on。基于Off的状态的基础上,lockedDoor车门则锁住了,所以仍旧为off。通过开门(Open)则灯就变成On状态。在on状态的基础上又open车门,则继续回到On状态。在On的状态下DownUp_button把按钮按下,则车灯则关闭变成Off状态。在Off的状态下,downUp_Button,则车灯为ON。ON在LockedDoor 关门5秒后就变成OFF状态。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值