一. 前言
期末考试之前,我复习系统分析与设计的时候对UML图做了一些知识汇总,现在放到博客上。如果有不对或不恰当的地方,欢迎各位指正。本文仅仅起记录作用,可随意转载,荣幸之至。
截图来自网络或是老师的PPT

二. 概述
· 系统模型的三个主要部分:

功能模型:从用户的角度来看,系统的功能。包括用例图等
对象模型:用对象表示系统的结构和子结构、属性、操作或关系等。包括类图
动态模型:表示系统的内部行为。包括顺序图、活动图、状态图等

· 行为图和交互图:

行为图包括:用例图、状态图、活动图和交互图。交互图又包括顺序图,协作图等。用一个树形结构来表示各种图的关系:

下面根据例子介绍主要的几种图。

三. 具体例子
· sequence diagram(顺序图):
从左到右画出对象及其生命线,对象用矩形表示,生命线用虚线;
在生命线中嵌入的矩形,表示某一过程;对象之间用带箭头的线表示消息传递:

上图表示客户在银行取款的部分顺序图。客户插卡属于消息传递,用带箭头实线表示并在线上面注明行为;
返回的消息用带箭头虚线表示。同步消息和异步消息的区别如图所示。

如果消息传递受某个条件限制,将该条件用 [] 括起来;
表示if…else…结构,用Alt关键字标示(即alternative),并将该结构用实线框括起来:

if…then…结构同上,区别在于关键字Alt改为Opt。
再放一个例子:电梯系统中,一个乘客在一楼呼叫电梯准备上六楼:

这个电梯系统的顺序图是我自己设计的,不一定很正确,但是可以参考画顺序图的规则。


· state machine diagram(状态图):
表示系统的各个对象的状态变化。状态用圆边矩形表示,状态之间用带箭头实线表示,实线上标注驱动状态改变的事件。
起始点(请忽略图中的文字):

结束点:

异常终止点:

例子:仍然是电梯系统,一个乘客在一楼呼叫电梯准备上六楼,电梯的状态图:

历史状态:例如,洗衣机洗到一半突然断电,但是记录了历史状态,当通电后可以继续运行:


· collaboration diagram(协作图):
主要表示对象间的协作关系。对象用矩形表示,用带无箭头实线表示对象间有关系,实线上方用箭头表示消息的传递,注意这些消息要用序号标记。
下图为一个打印公司的协作图:

再例如,下图为一个安保系统的协作图,包括的对象有保安,操作台,火警传感器,安保传感器,窃贼:


· use case diagram(用例图):
表示系统的对象和用例。系统具有边界,对象用矩形表示,画在边界外;用例用椭圆表示,画在边界内。一个对象是一个用例的actor,则将它们连起来。
用例的关系:包含、扩展、泛化,包含和扩展都是虚线,而泛化是实线+三角,泛化的画法同对象图。扩展关系标注为extend,是带箭头的虚线,指向被扩展的用例。包含关系标注为include,也是带箭头的虚线,指向被包含的用例。
行为者和用例的连接是不需要文字说明的。


当用例图设计多个系统、多个对象,可以分开来画:


· activity diagram(活动图):
活动图是用例流,不使用对象、类等,但是对象也可以标注出来,要下划线,可用[]表示当前该对象的状态。
活动图的泳道:将用例按照功能或者对象分成几个部分,用实线隔开,状似泳道:

包括起始点、终止点(和状态图相同),对操作流建模,当一个操作完成时,流立即转移到下一个操作。状态的自动转移使它区别于状态图。下例为“作者-出版社-印刷厂”的活动图:

分支(选择性转移)的画法(状态图的分支也是这样画):

并发执行的画法:


· component diagram(组件图):
通常组件在运行时由一个或多个(对象)实现,具有比类图更高的抽象级别。组件图中所有的元素都是私有的。组件图之间通过接口相连,接口分为两种:一种用于访问其他组件(凸形),一种提供给其他组件访问(凹形)。例如:


· class diagram(类图)
类图是最常见的UML模型。包括类名、属性、方法三个部分:

类之间的关系有(根据关联强度从大到小):泛化=实现,组合,聚合,关联,依赖。
类图分为分析类图和设计类图。我们一般先构思分析类图,再构思设计类图。两者的区别:
a.一个分析类可能被分解成一个或多个设计类或接口;
b.在分析阶段类图研究领域的概念,可以理解为从需求中获取,而在设计阶段类图重点描述类与类之间的接口;
c.分析类的三高:高于设计实现(不必理会复杂的设计要求比如系统框架)、高于语言实现(不必理会采用哪一种特性的语言来编写)、高于实现方式(不必考虑采用哪一种具体的实现方式)。

设计类应当:指明每个模块的指责、具有完整的属性和完全的描述(可见性、属性名、类型、默认值)、完整的实现方法(可见性、方法名、变量列表、属性、返回值)。例如:

分析类转为设计类:细化分析类(分析类的抽象更加细节化、增加新的属性以使类能够完整地实现)、将大的分析类拆分;细化分析关系:拆分出整体和部分(用组合或聚合连接);注意标出数据结构的特点如indexed、sorted、set:

总之,当我们分析问题域的时候,我们一般用分析类图进行表示;当我们的分析已经成熟,考虑将它们具体地实现时,一般会借用设计类图。

系统分析与设计——UML图总结相关推荐

  1. 积分商城设计UML图

    这是我去年在一个项目里做的系统设计,但设计刚做完,项目因为商业原因被老板停掉了,所以没用上,就贴在这里给有需要的同学做个参考吧. 概述 该系统主要是鼓励用户通过参与我们的活动获取积分,用积分兑换成实物 ...

  2. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  3. UML系统分析与设计01-准备

    http://www.cnblogs.com/showjan/archive/2012/05/14/2499713.html UML,统一建模语言,在软件系统分析和设计中被广泛应用.作为一个初学者,我 ...

  4. 设计模式01 UML图,软件设计原则,创建型模式

    概述 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1995年,由 Erich Gamma.Richard Helm.Ralph Johnson 和 Joh ...

  5. UML图和软件设计原则

    笔记来源于黑马程序员但不仅仅是黑马 UML图和软件设计原则 UML图 2.1 类图概述 2.2 类图的作用 2.3 类图表示法 2.3.1 类的表示方式 2.3.2 类与类之间关系的表示方式 2.3. ...

  6. UML图及软件设计原则详解

    1.UML图 统一建模语言(Unified Modeling Language,UML)是用设计软件的可视化建模语言.它的特点是简单.统一.图形化.能表达软件设计中的动态与静态信息. UML从目标系统 ...

  7. 设计模式学习笔记1——概述 UML图 软件设计原则

    目录 1.设计模式概述 1.1.软件设计模式产生背景 1.2.软件设计模式概念 1.3.学习设计模式的必要性 1.4.设计模式分类 1.4.1.创建型模式 1.4.2.结构型模式 1.4.3.行为型模 ...

  8. 【设计模式学习01】设计模式概述,UML图,软件设计原则

    文章目录 1. 设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2. UML图 2.1 类图概述 2.2 类图的作用 2. ...

  9. UML面向对象系统分析和设计:交互图

    UML面向对象系统分析和设计 1. 概述(交互图) 交互图是用来表达系统的各个对象之间如何交互,如何完成某个行为的动态模型工具.主要用于对用例图中的控制流进行建模.一般要求每个用例使用一个交互图进行描 ...

  10. 软件设计-UML类图详解说明

    一. UML类图思维导图 二. 详细分析和介绍 下面就从上面的思维导图开始,详细的介绍UML类图! 1. 什么是UML,概念是什么? UML(Unified Modeling Language)中文统 ...

最新文章

  1. 马年计划2014-2-21
  2. 程序员伤不起的年龄——30岁
  3. Spring boot -mongodb
  4. 3Sum探讨(Java)
  5. 使用组策略推送exchange自签名证书
  6. Kestrel的ListenAnyIP和ListenLocalhost的区别
  7. recaptcha_与reCAPTCHA的Spring集成
  8. MIP开发教程(一) MIP-CLI工具安装与环境部署
  9. Flex DataGrid 筛选实现
  10. 消息中间件kafka与activeMQ、rabbitMQ、zeroMQ、rocketMQ的比较
  11. 网络请求与本地函数调用的区别
  12. mysql stop salve_MySQL主从切换
  13. html项目的文件结构,项目文件结构
  14. 快速搭建企业级邮件系统iRedMail+Mysql+Postfix+php
  15. TF2.0—tf.keras.losses.BinaryCrossentropy
  16. SAS中library是 excel引擎,LIBNAME STATEMENT
  17. 解决pr调用麦克风的问题
  18. 堆糖生活家喜欢的图片批量下载
  19. DFS hdu1181(变形课)
  20. NAS存储忘记密码如何解决?

热门文章

  1. 软件测试中的测试报告
  2. cad上样条曲线上的点太多了_CAD如何将样条曲线转换成多段线
  3. 车牌识别摄像头php,高清车牌识别摄像头SDK支持二次开发
  4. ucGUI3.9版本快速移植构建
  5. 微信小程序的图片上传及图片预览功能
  6. CMMI4 培训计划
  7. python提取html表格_用Python抓取HTML表格
  8. 2.4G射频电路设计参考(wifi ble)
  9. grads插值_常用grads函数
  10. 打破信息茧房-我主动获取信息的方法 -#3