UML--示范.(用例图、类图、序列图、时序图、包图....)

2010-12-19 14:39

物理上的硬件使用节点nodes表示。每个组件属于一个节点。组件用左上角带有两个小矩形的矩形表示。
转载自:http://dn.codegear.com/article/31863

UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。

2011-04-20 21:38

UML设计的9种图例概论

1、用例图

描述角色以及角色与用例之间的连接关系。

说明的是谁要使用系统,以及他们使用该系统可以做些什么。

一个用例图包含了多个模型元素,

如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。

2、类图

类图是描述系统中的类,以及各个类之间的关系的静态视图。

能够让我们在正确编写代码以前对系统有一个全面的认识。

类图是一种模型类型,确切的说,是一种静态模型类型。

3、对象图

与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。

4、活动图

描述用例要求所要进行的活动,以及活动间的约束关系,

有利于识别并行活动。

能够演示出系统中哪些地方存在功能,

以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。

5、状态图

描述类的对象所有可能的状态,以及事件发生时状态的转移条件。

可以捕获对象、子系统和系统的生命周期。

他们可以告知一个对象可以拥有的状态,

并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。

一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;

该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。

6、序列图(顺序图)

序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。

顺序图可以用来展示对象之间是如何进行交互的。

顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。

7、协作图

和序列图相似,显示对象间的动态合作关系。

可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。

如果强调时间和顺序,则使用序列图;

如果强调上下级关系,则选择协作图;

这两种图合称为交互图。

8、构件图 (组件图)

描述代码构件的物理结构以及各种构建之间的依赖关系。

用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。

9、部署图 (配置图)

是用来建模系统的物理部署。

例如计算机和设备,以及它们之间是如何连接的。

部署图的使用者是开发人员、系统集成人员和测试人员。

几种图的区别:

一:这九种模型图各有侧重

1:用例图侧重描述用户需求,

2:类图侧重描述系统具体实现;

二:描述的方面都不相同

1:类图描述的是系统的结构,

2:序列图描述的是系统的行为;

三:抽象的层次也不同

1:构件图描述系统的模块结构,抽象层次较高,

2:类图是描述具体模块的结构,抽象层次一般,

3:对象图描述了具体的模块实现,抽象层次较低。

在有的文献书籍中,将这九种模型图分为三大类:

结构分类、动态行为和模型管理:

1:结构分类包括用例图、类图、对象图、构件图和部署图,

2:动态行为包括状态图、活动图、顺序图和协作图,

3:模型管理则包含类图。

画图说明

UML(统一建模语言):是面向对象的可视化建模的一种语言。

是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。

UML中有3种构造块:

事物、关系和图,事物是对模型中最具有代表性的成分的抽象;

关系是把事物结合在一起;

图聚集了相关的的事物。

具体关系图标如下:

说明:

构件事物是名词,是模型的静态部分。

行为事物是动态部分,表示行为。

分组事物是组织部分。

注释事物是解释部分。

依赖:一个事物变化会引起另一个事物变化。

聚集:特殊的关联,描述整体与部分的组合关系。

泛化:是一种特殊与一般的关系,如子元素(特殊)与父元素(一般),箭头指向父元素。

实现:类元之间的关系,其中一个类元指定了由另一个类元保证执行的契约。

一般用在接口和实现他们的类之间或用例和实现它们的协作之间。

1. 类(Class): 表示对某种对象的封装。具体表示如下图,

最上面一格代表类名,斜体表示该类为抽象类;第二格表示该类的特性,就是常说的字段和属性;第三格表示类的操作,

即方法和行为。前面的+号表示public,-表示private,#表示protected。

2. 接口(Interface): 是指一系列方法的声明,没有实现,实现该接口的类负责实现该接口的方法。

其中,最上面一格表示接口名称,第二格表示该接口定义的一些方法。

3. 继承(Inheritance):是指使用已存在的类的定义作为基类,可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。具体表示方法是空心三角形+实线。

当然,Java语言中为了实现类似C++的多继承机制,还有个实现(Implements)接口的类图,具体表示方法是空心三角形+虚线或者下图的棒棒糖表示法。

4.关联(Association):

当一个类需要“知道”另一个类时,就可以用关联来表示,

使用实线箭头来表示。

5.聚合(Aggregation):是一种弱的“拥有”关系,

相当于包含,但不是其中的一部分,

以便和合成区分开来,使用空心菱形+实线箭头来表示。

6.合成(Composition):

也叫组合,是一种强的“拥有关系”,体现的是一种局部和整体的关系,

其生命周期和整体一样,使用实心的菱形+实线箭头来表示。

其中连线两段的数字表示基数,表明一个类可以有几个实例,一个人有一个脑袋,所以用1:1表示。

7.依赖(Dependency):

比如,人类要喝水,要吃饭等,体现的是一种依赖关系,

使用虚线箭头来表示。

UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。

在UML系统开发中有三个主要的模型:

功能模型: 从用户的角度展示系统的功能,

包括用例图。

对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,

包括类图。

动态模型: 展现系统的内部行为。

包括序列图,活动图,状态图。

下面具体说明:

1.类图:描述一组对象、接口、协作等事物之间的关系。

如下图(摘自网络):

注:#表示protected,+表示Public,-表示private

2.对象图:描述一组对象之间的关系,是具有具体属性值和行为的一个具体事物,

其是类图中所建事物实例的静态快照,

其与类图的主要区别是一个是抽象的,而对象图是具体的。

如下图:

3.用例图:描述一组用例、参与者以及它们之间的关系,

其展示的是该系统在它的外面环境中所提供的外部可见服务。如下图:

4.交互图:包括序列图(顺序图)和协作图,两者对应,

顺序图是强调消息时间顺序,有对象生命线和控制焦点。

协作图是强调接收和发送消息的对象的结构组织,有路径和顺序号。如下图(摘自网络):

序列图:

协作图:

5.状态图:展示了一个状态机,

由状态、转换、事件和活动组成。

强调事件行为的顺序。如下图):

6.活动图:是一种特殊的状态图,实现一个活动到另一个活动的流程。

如下图(摘自网络):

7.构件图和部署图:构件图展示一组构件之间的组织和依赖关系,

并以全局的模型展示出来。

部署图是构件的配置及描述系统如何在硬件上部署。如下图:

利用visio在软件开发中各种图相关推荐

  1. 软件开发中会使用到的图

    文章目录 软件开发中会用到的图 一.背景 二.图为了解决什么问题 三.不同流程中适合运用的图 四.实际的运用 五.结语 软件工程中的各种图 软件工程用的15种图 数据关系流图怎么画?这款软件教你轻松绘 ...

  2. 建模语言UML在软件开发中的应用

      建模语言 UML 在软件开发中的应用 摘要:UML( Unified Modeling Language)是建立系统模型和分析业务处理流程强有力的工具,它能够帮助软件开发人员从不同角度描述系统,使 ...

  3. 暗黑破坏神 用什么 开发的_软件开发中最具破坏性的五种态度

    暗黑破坏神 用什么 开发的 重点 (Top highlight) 成长心态是关键 (GROWTH MINDSET IS KEY) Based on my years of professional s ...

  4. 【转】工作分解结构在软件开发中的应用

    1 概述 通过对项目管理的系统学习,我个人对于工作分解结构在软件中的应用有很深的感触,对于工作分解结构在软件开发中的应用有一些个人的看法和见解. 首先我们看一下项目分解结构的定义,工作分解结构是进行范 ...

  5. 短视频软件开发中如何实现720P磨皮美颜录制?

    短视频软件开发中如何实现720P磨皮美颜录制? 在Android上要实现一个录制功能,需要有几个方面的知识储备:自定义相机的开发.视频数据格式的了解.编码相关知识以及视频合成技术,同时如果需要美颜.磨 ...

  6. 测试自动化金字塔在软件开发中是如何使用的?

    测试自动化金字塔,是一个指南,指导您进行什么类型的测试以及每种测试的数量.测试自动化金字塔有助于创建更高效的测试,并导致向客户发布更可靠的软件. 测试自动化金字塔的好处 测试自动化的大部分好处显而易见 ...

  7. No Silver Bullet: Essence and Accidents of Software | 没有银弹:软件开发中的主要问题和次要问题

    本文系软件工程中著名的一篇论文:No Silver Bullet: Essence and Accidents of Software 1 @Author:Frederick P. Brooks, J ...

  8. 软件开发中常见知识总结

    最近在准备软件开发的笔试面试,复(yu)习(xi)了一些在软件开发中的常见知识.为了给自己攒点RP,故与大家分享一二. 软件开发需要准备的比较多,主要分为编程语言,数据结构和算法,计算机网络,计算机操 ...

  9. 软件开发中的瀑布模型

    软件开发的流程 软件开发的流程有很多种模型,这里讲的一种软件开发的流程是瀑布模型     瀑布模型是将软件生存周期的各项活动规定为固定顺序的若干阶段工作,最终得到软件产品. 他的核心思想是按工序将问题 ...

最新文章

  1. Uva 11292 The Dragon of Loowater 模拟题
  2. tsne pca 自编码器 绘图(CC2)——一定记得做无量纲化处理使用standardscaler,数据聚类更明显...
  3. python详细下载安装教程-Python下载并安装图形教程[超级详细]
  4. 南京秦淮灯会亮灯迎春 明城墙内外“飘”年味
  5. 干货:如何利用机器学习实现有噪声标签样本分类模型?
  6. [云炬创业基础笔记]第二章创业者测试13
  7. CodeForces - 1459D Glass Half Spilled(dp)
  8. 科技前沿智能创新 2019北京智能家居 全屋智能博览会
  9. sas数据导入终极汇总-之二
  10. 【WebRTC---源码篇】(三)Windows/Linux音视频采集封装模块
  11. cpu system linux,LINUX system BOOT
  12. ndk-build.cmd‘‘ finished with non-zero exit value 2
  13. mysql好玩的代码_搞一些好玩的东西redis
  14. 每日一练--IT冷知识C/C++--第一天
  15. 高稳定度低纹波直流电源设计 【转自电子工程师世界】
  16. centos7-docker部署私有镜像仓库(docker-registry)
  17. 如何更好使用markdown输出pdf
  18. 二叉树的构造(前序+中序)---(后序 + 中序)
  19. Python爬虫(2.网络爬虫的实现原理及技术)
  20. #数据库--第1章 Windows 下的数据库导入 TPCH 数据(以 SQL Server 作为示例,MySQL同样适用)

热门文章

  1. OpenCASCADE:使用 扩展数据交换XDE之形状和组件
  2. OpenCASCADE:建模算法之隐藏线去除
  3. wxWidgets:wxLogNull类用法
  4. BOOST_CONSTANTS_GENERATE宏相关用法的测试程序
  5. boost::hana::is_convertible用法的测试程序
  6. boost::geometry::segment_view用法的测试程序
  7. boost::describe模块宏BOOST_DESCRIBE_PP_IS_PAREN的测试程序
  8. Boost:基于Boost的阻塞TCP回显服务器
  9. ITK:两个图像的全局配准(BSpline)
  10. ITK:概念检查是同维的