UML语言建模

UML了解

为什么说工程开发交流的语言是UML

简单的图形是不精确的

自然语言的描述是不精确的

沟通需要一门语言

工程化的过程我们需要用的不是容易引起歧义的自然语言,而是严谨统一的模型化语言即UML

UML让我们用一种语言,相同的方式进行交流

作计划,做需求,我们不用中文,而用UML

UML我们用它的三个方面:草图、蓝图、代码设计图

学好UML和看图说话的道理是一样的,记住两个要素:节点和联系

UML图形架构分三大类:

对象:类图、组件图、部署图

交互(行为):用例图、时序图、协作图、活动图

状态:状态图

我们的世界是三维立体的,我们需要从三个方向观察物体,才能有一个较好的理解。所以我们应该学会从三个角度用UML来描述软件。

可以通过三张图来描述:用例、类图、时序图(或活动图)

UML入门

用例图

用例(Use Case)是帮助角色确定系统使用情况的UML组件

用例组(UseCase Group)就是从用户的角度出发对如何使用系统的描述

用例图(Use Case Diagram)是用图形的方式来描述场景

用例在最早是以表的形式展示,简称用例卡片

用例图要素:参与者(主,附加,后台)、假设条件、前置条件、场景中的步骤、后置条件

在StarUml中用例图的元素:包(Package)、用例(UseCase)、角色(Actor)、关联(Association)、定向关联(DirectedAssociation)、泛化(Generalization)、依赖(Dependency)、包含(Include)、扩展(Extend)、系统边界(System Boundary)

Package主要用来分类、模块、子模块

用例是实际描述的一个具体动作,一般用动宾短语

Association、DirectedAssociation关联就是陈述性语句,如小张喝水

Generalization就是继承

依赖、包含、扩展类似

系统边界就是划分模块区间

用例图的作用

用例图用来描述需求场景

在与用户交流过程中快速建立用户业务描述,并且跟用户确认

设计好的用例图用来检验程序实现场景

用例图示例:

用例图相关疑问

为何一定要使用用例图概念,把用户的需求描述记录下来不可以么

这样做在实际中往往行不通。对于用户的描述,我们往往要用一种结构组织起来,用例就提供了这种组织结构。在记录客户的交谈结果以及将这些结果与开发者沟通的时候,这些结构尤为重要

我们和客户交谈的时候,我们所做的仅限于他们告诉我们的用例么

当然不是,事实上要搞清楚客户告诉了你什么,还要发掘客户没有告诉你什么

获取用例的难度有多大

列出系统的用例一点也不难,但在深入研究每个用例,并且让用户列出每个场景的步骤的时候,会需要经验和技巧

在高层用例图中,并没有显示出参与者和用例之间的关联,这是为什么

高层用例图出现在与用户会谈的早期阶段,这个阶段它仍然是一个考虑不成熟的产物,其主要目标是找出系统的总体需求及系统的边界和范围,因此暂时不需要关联

我们需要画UML大图么仅仅知道每种类型的图什么时候使用还不够么

如果你理解了UML的组织结构,即使遇到前所未遇的问题你也能处理,你可以重新组织UML元素以便适应工作需要

针对商场购物画用例图

状态图

状态图就是开关,是描述状态变化的图形

状态图描述了一个对象状态与状态的转变并且给出了状态变化序列的起点和终点

状态图元素:状态节点(Composite State)、状态子节点(Submachine State)、初始状态(Initial State)、结束状态(Final State)、交汇点(junction->一个口多输入输出)、选择点(Choice->单输入输出)、浅层历史状态(Shallow History)、深层历史状态(Depp History)、同步(Fork)、对象流程结束(Exit Point)、状态传递(Transition)、自我传递(Self Transition->入口动作、出口动作,中间动作)

状态图相关疑问

什么时候会用到状态图:需求过程,需要描述一个对象的状态跟踪的时候,比如一个表单在不同环境审批的状态

开始建立状态图的最好方法:首先列出对象状态,然后将注意力集中在状态的转移上。当研究每个转移的时候,要估计是否触发事件或者执行某个动作

状态图是否必须有终止状态:不一定,有的状态永远是活动的

状态图的部图技巧:图要清晰,回避交叉点

状态图示例:

时序图

时序图是描述一个时间段的不同角色之间的业务情况

我们通常用时序图来画出流程,时序图和协作图是类似的,掌握一种即可

时序图元素:对象(Lifeline)、对象消息传递(Message)、自我消息传递(Self Message)、组合碎片(CombinedFragment)、交互操作(Interaction Use)、框架(Frame)

时序图多做分析图:业务流程的分析图和程序调用的分析图

时序图相关疑问

我们在哪用时序图:

需求阶段-分析按照时间关系的流程的时候

设计阶段-分析程序之间调用的时候

时序图不仅可以用于系统分析,还可以用来说明一个组织中各种交互关系。把组织中的重要角色标志为对象,对象之间的消息就标识了角色的控制转移

时序图示例:

协作图

协作图与时序图类似,协作图也是展现对象交互的图形

协作图和时序图的异同

同:协作图和时序图是语义等价的

协作图强调的是交互语境和参与交互的对象整体组织

时序图强调的是交互时间顺序

协作图和时序图可互转

协作图相关疑问

在UML建模时有需要包含时序图和协作图两种图吗

两种图包含是个好主意。时序图重在表示时间关系,协作图重在描述对象之间的关系。不过二图取其一也可以,因为它们语义相同,可以借助工具自动互转

协作图示例:

活动图

活动图用来描述一个过程或者操作的工作步骤,类似于流程图

活动图元素:动作状态(Action)、子活状态(StructuredActivity)、开始状态(inital)、结束状态(Final)、同步(fork)、选择(Decision)、流程结束(Flow Final)、对象流程(Object Node)、接收状态(Accpet Signal)、发送状态(Send Signal)、状态传递(Control Flow)、自我传递(Control Flow)、垂直泳道(Swimlane)、水平泳道(Swimlane)

活动图相关疑问

活动图的必要与否

活动图就是用来描述流程的。活动图能表现多个对象之间的复杂活动关系,比时序图更有表现力。如收录系统的流程图时序图就表现不出来。我们在选择时优先选择时序图,时序图做不到的用活动图。

活动图示例

类图

复杂的类图

类图是用来描述对象及对象之间关系的图

类图在需求阶段和设计阶段有不同的含义

需求阶段类图可以看做对象图

MDA模型驱动的基础就是对象

类图用来描述实体对象的,和用例图同等重要

类图和设计的关系,类图和数据库的关系

类图元素:子系统(Subsystem)、包(Package)、类(Calss)、接口(interface)、枚举(Enumeration)、信号(Signal)、异常(Signal)、端口(Port)、局部(part)、关联(Association)、定向关联(Directed Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)、依赖等关系(Dependency)、实现(Realization)、关系类(AssociationClass)、连接(Connector)、对象(Object)、链接(Link)

聚合是空心组合是实心,组合是同生共死的,聚合如公司的组成,组合如房屋的组成

泛化就是继承

依赖在类中会有创建被依赖类的方法。如公司类依赖用户管理类

关联类是中间关系类

关联就好比公司和员工的关系,链接就好比我们公司和我的关系

类图相关疑问

不是程序员需要类图么:有必要,类图其实是描述实体的对象图。虽然它的类、接口、实现等特性在其它场景用不上。但是它们的属性,操作等来描述对象是最清晰的。

聚合具有传递性

类图的作用

需求阶段定义对象属性

定义数据库关系

设计阶段定义包、类结构和关系

组件图

软件组件可以是软件系统的一个物理单元、数据文件、表格、可执行文件、动态链接库等;这些都被定义为组件。

定义系统组件,接口及关系的图就是组件图

组件元素:接口(interface)、组件(Component)、组件实例(Component instance)、工件(Artifact)、端口(port)、部分(part)、关联(Association)、依赖(Dependency)、实现(Realization)、链接(Link)、连接器(Connector)

组件图示例:

部署图

部署图反应了工件如何在系统硬件上发布

剪贴画可以和UML混用,来表达更明确的图例

部署图示例:

案例展示

移动点菜系统

设计四要素

项目前提和评估

模块子模块,功能子功能

具体用例

界面原型

需求成文示例


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 本文原创:haorongrong 前言 最近在梳理项目,用到了UML, 对于这个工具可能有的人听过,或者有的人用过...
    jad_design阅读 806评论 0 2
  • UML的历史 面向对象的分析与设计(OOA&OOD)方法的发展在20世纪80年代中出现了一个高潮,UML就是这个高...
    oneape15阅读 2,492评论 0 16
  • UML概述 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的...
    aron1992阅读 512评论 0 0
  • UML9图 https://blog.csdn.net/wxb141001yxx/article/details/...
    日瑕阅读 2,700评论 0 0
  • 时间倒回到去年的11.11光棍节,那个时候的我还是一个什么都不太懂的傻姑娘,以为只要喜欢就可以天长地久。事实上...
    微凉岚烟阅读 331评论 0 0