UML入门
本文主要讲解uml的一些入门知识。
uml:统一建模语言,uml通过图形化的表达对系统进行细致的划分,在开发前期有助于开发人员与开发人员之间交流,同时也能方便用户与开发者之间进行良好的反馈。利用uml进行建模是有效的方法是使用面向对象的软件开发方法。面向对象的核心思想是根据现实世界中的具体事物来构建软件系统,并在系统中尽可能的使用人类的自然思维方式。并根据事物的本质特征将其抽象为系统中的对象,以对象作为系统的基本构成单元。
uml由基本构造块,规则,通用机制三部分组成。
在用uml建模过程中常用的图有:用例图(use case diagram),类图(class diagram),顺序图(sequence diagram),状态图(state diagram)。各种图之间的关系如下:
一.用例图,用例图从用户的角度描述系统的功能,所以在对系统的需求分析是经常用到该图,用例图也是软件建模其他部分的基础。用例图通常由四个部分组成:系统,用例,关系,参与者。
1.系统由用户执行功能是需要使用的软件(集)构成,系统在用例图中用一个长方框表示,系统的名字被写在方框上面或方框内,在建立系统的过程中需要注意的几点:(一)系统的边界:系统的边界即可以理解为用例图的使用范围(二)系统的规模在最初可能无法确定,所以在建立系统的初期我们经常利用系统的核心功能,然后在以此为基础逐渐拓展系统的功能。
2.参与者,表示使用系统的对象,是系统外的一个实体,参与者不仅仅是对人而言,也可以是一个计算机系统,或者另一个系统,我们只需牢记他的特点即可:作为外部用户与系统进行交互
3.用例,用例的英文名是:use case,我们可以理解为可以“能用来做什么”,每个用例说明系统具有的一个功能。(如查询成绩,保存成绩)
4.关系,直接理解其字面意思即可,表示参与者与用例之间的通信,这种通信是双向的。
下面来讲解一下用例图各个部分之间的关系的表示方法
1.参与者与用例之间:不带箭头的实线,就是那种单纯的一根线
2.参与者与参与者:用一端为空心的三角箭头表示,箭头的意义可以理解为"归属于"
3.用例与用例:用例与用例之间的关系可以分为两种:泛化与依赖,其中依赖关系可以分为包含关系与扩展关系两类。
泛化关系用来表示一般用例与特殊用例之间的关系,一种继承关系,表示子类是如何特化父类的特征与行为,用一端带有空心三角箭头的线表示。
包含:一个用例包含另一个用例,用虚线线头表示,线上需要标注《include》。基用例并非一个完整的用例,必须和子用例一起才能完成一项功能。
扩展:一个用例的行为扩展了另一个用例的行为,用虚线表示,线上用《extend》标注。基用例本身就是一个完整的用例,可以单独完成一项功能。
包含于扩展较难区分,下例中销户必须有结算的参与,所以用include关系,而停机提醒是可选的,所以用extend关系。
下文讲解用例图需要做的四件事情:确定参与者与用例;细化用例;区分用例的次序;建立用例图模型结构。
1.确定参与者与用例。参与者的确定思路:谁会用这个系统,谁会维护这个系统,谁会跟这个系统进行信息交流,细心的将这几个问题的答案给出来基本就可以确定参与者了。
确定用例的思路:结合上一步确地的参与者,我们可以进一步列出这些参与者的用例清单,在列清单是可以借助这几个问题:参与者要干嘛(创建,删除,插入,更新)?,系统的基本功能需要哪些用例来实现。下面结合学生管理系统这个例子讲解:
参与者:老师,学生,管理员,结合这些参与者可以确定的用例:查询成绩,更改成绩,浏览成绩等。
2.区分用例的先后次序:有些用例必须在其他用例之前执行,因为他们之间的一些依赖关系。
3.细化用例:这个环节需要更加具体的分析如何提供服务,包括服务的具体功能,异常情况的处理措施,处理流程。用例的描述可以利用建立表格来文字描述,当然也可以用UML
4.构建用例图模型:将前几个步骤得出的具体内容(细化了的用例与参与者,关系)加在用例图上得出具体的用例图模型。
二.类图:类图用来描述类,接口,以及他们之间的关系的图,他显示系统中各个类的静态结构。类的组成:类,关联/关系。类的定义:具有相同属性和方法的一组对象的集合。比如“学生”这个类,而成绩,学号就是这个类的属性。
类图之间的关系:关联,依赖,聚合,泛化。
关联(association):它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头.
聚合(aggregation):整体与部分的关系,且部分可以单独存在。车子与轮胎。
泛化(generalization):是一种继承关系,表示一般(广泛)与特殊(具体)的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
依赖(dependency):一种使用的关系,一个类的实现需要另一个类的协助,如果A依赖与B。则B体现为局部变量,方法的参数,或静态方法的调用。例如人划船,人依赖于船。
三.顺序图:关注对象间的交互活动与消息传递的顺序,纵向表示时间线,横向轴代表了在协作中各独立对象的类元角色。以下展示一个很6的例子:
上图形象的展示了顺序图的核心作用:用对象间的交互来描述用例,同时寻找类的操作。
四.状态图用来描述对象具有的各种状态,各种状态间的转换过程以及激发转换过程的条件与事件
文章有参考以下几篇博文:如有侵权请联系本人
http://www.lupaworld.com/article-233409-1.html
http://www.cnblogs.com/sura/archive/2012/07/01/2572083.html
http://blog.sina.com.cn/s/blog_68220005010125cg.html
UML入门的更多相关文章
- UML入门学习
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
- uml入门之14图与图之间的关系
1.先奉上整理的14图. 2.其次奉上整理的图之间的6种关系
- 【UML 建模】UML入门 之 交互图 -- 时序图 协作图详解
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 . 动态图概念 : 从静态图中抽取瞬间值 ...
- UML入门[转]
访问权限控制 class Dummy { - private field1 # protected field2 ~ package method1() + public method2() } Al ...
- UML入门 之 交互图 -- 时序图 协作图详解
作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 动态图概念 : 从静态图中抽取瞬间值的变化描 ...
- UML之轻松入门(3)-SRP做好厨子,让别人编程去吧
一个厨子能够做出一手好菜,或许他是新东方毕业的或者是祖传秘方.你让他做上一桌佳肴那是简单.快乐而又高效的,然而让他编程就会成为一种苦恼并且让人想不通的一件事.或许这个比喻不是非常恰当,可是对 ...
- [UML]UML系列——用例图Use Case
用例图的概念 用例图是描述用例.参与者以及它们之间关系的图. 用例图的作用 用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为. 用例图定义和描述了系统的外部可见行为,是分析.设计直至组 ...
- UML教程首页(转载)
UML是一种标准语言,用于指定,可视化,构造和文档的软件系统的文物. UML是OMG在1997年1月提出了创建由对象管理组和UML1.0规范草案. 本教程给出了一个比较完整的学习理解UML,可以方便学 ...
- 《火球——UML大战需求分析》(0.1)——开篇废话
说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...
随机推荐
- docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
一.前言 先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过 ...
- .NET高性能框架Chloe.ORM-完美支持MySql
扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...
- Linux常用获取进程占用资源情况手段
测试环境:Ubuntu14.04 1. 获取进程ID号 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...
- redis分片
本文是在window环境下测试 什么是分片 当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储 那么当多个请求来取数据时,如何知道数据在哪个redis呢,redis有 ...
- AngularJS表达式
1. AngularJS使用表达式把数据绑定到HTML. 2. AngularJS表达式的特点: 表达式写在双大括号内:{{表达式}}. 表达式把数据绑定到HTML,这与ng-bind指令有异曲同工之 ...
- iOS推送流程
1. 在apple开发者帐号上创建一个BundleID,创建证书或者Xcode上都是用这个BundleID(例如com.mycompany.pushDemo) 2. 代码层面: 在capability ...
- Python 【第九章】 Django基础
在windows 命令行上安装Django 在CMD命令行中输入以下命令进行安装. pip install Django 在windows python安装目录上会出现 一个django-admin. ...
- MVC 总结
以下内容摘自 PHP for Absolute Beginners, Thomas Blom Hansen & Jason Lengstorf The model-view-controlle ...
- 10 Symbol
Symbol 书中讲了2部分. Symbol() Symbol 属性值. 完全两种画风的东西. 1. Symbol 首先他是一种全新的值. 不属于以前的任何一种 ES6引入了一种新的原始数据类型Sym ...
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...