热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面向对象分析设计02UML+UML各种图形及作用

一、UML是什么?UML有什么用?二、UML的历史三、UML的上层结构(Superstructure)四、UML建模工具五、

一、UML是什么?UML有什么用?

二、UML的历史

三、UML的上层结构(Superstructure)

四、UML建模工具

五、UML的图(重点)

   1、用例图(use case diagram)

   2、活动图(activity diagram)

   3、静态结构图

   4、顺序图(Sequence Diagram)

   5、交互纵览图(Interaction Overview Diagram)

   6、通信图(Communication Diagram)

   7、时间图(Timing Diagram)

   8、状态机图(State Machine Diagram)

   9、构件图(Component Diagram)

   10、部署图(Deployment Diagram)


一、UML是什么?UML有什么用?

UML是什么?

Unified Modeling Language(统一建模语言)是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品)

UML是一种标准的图形化建模语言,是面向对象分析与设计的标准表示,它:

星星不是一种可视化的程序设计语言,而是一种可视化的建模语言(用于分析设计)

星星不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准

星星不是过程,也不是方法,但允许任何一种过程和方法使用

UML有什么用?

软件开发系统规模比较复杂时,需要用图形抽象地表达复杂概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险。有必要采用一套通用的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、开发人员之间一致、高效地交流。

二、UML的历史

UML发展背景:

P. Coad和E.Yourdon提出OOA和OOD

G. Booch提出面向对象开发方法

Jacobson提出OOSE

Rumbaugh提出的OMT

……

UML的出现结束了这场方法学战争

UML发展历程:

image

三、UML的上层结构(Superstructure)

至于UML底层的基础结构(Infrastructure),软件开发工程师们没必要了解,只需要懂得上层结构就行了。

image

构造块(building blocks)通用机制(common mechanisms)构架(architecture)

星星事物(things)

    结构、行为、分组、注释

星星关系(relationships)

   依赖、关联、泛化、实现

星星图(diagram)

   静态(7种):类图、对象图、构件图、部署图、包图、组合结构图、外廓图

   动态(7种):顺序图、通信图、时间图、交互纵览图、活动图、状态机图、用例图

星星规格说明(Specifications)

文本维度的模型描述

星星修饰(Adornments)

描述建模元素的细节信息

星星通用划分(Common Divisions)

建模时对事物的划分方法

星星扩展机制(Extensibility Mechanisms)

构造型、约束、标记值

4+1视图
UML中的视图包括用例视图(Use Case View)、逻辑视图(Logical View)、实现视图(Implementation View)、进程视图(Process View)、部署视图(Deployment View)等,这5个视图被称作”4+1”视图.image

四、UML建模工具

比较流行的有Rational Rose ,Microsoft Visio、Enterprise Architect 、Visual UML等。我现在使用的UML建模工具是Enterprise Architect 8.0,推荐使用这款,比较好用。

五、UML的图(重点)

image

1、用例图(use case diagram)

灯泡用例图(Use Case Diagram)是被称为参与者(Actor)的外部用户所能观察到的系统功能的模型图

     列出系统中的用例和参与者

     显示哪个参与者参与了哪个用例的执行

灯泡核心概念

    用例:系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用

    参与者、参与者泛化

    用例与参与者之间的关系:关联

    用例之间关系:扩展、包括、泛化

灯泡推荐使用场合

    业务建模、需求获取、定义


某图书馆管理系统:

是一个基于Web的计算机应用系统;

读者可以查询图书信息以及借阅信息;

读者可以通过系统预约所需的图书;

图书馆工作人员利用该系统完成读者的借书、还书业务;

图书馆工作人员可以对图书信息、读者信息等进行维护;

对于到期的图书,系统会自动向读者发送催还信息;

管理员会定期进行系统维护;

……

image

UC01:“借书”用例文档

用例名称:借书

用例标识:UC01

涉及的参与者:工作人员

涉及的用例:

描述:工作人员利用该用例为读者完成借书过程

前置条件:工作人员必须登录到当前系统

涉众利益:

     读者:能够方便的找到并借出所需的图书

     工作人员:能够快速并准确的完成借书工作

基本事件流:工作人员帮助读者借阅图书

   1.用例起始于读者带着所要借的图书来到借阅前台;

   2.工作人员录入读者信息;

   3.工作人员逐一录入所有的图书信息:

   * 3.1 工作人员录入一本图书信息;

   * 3.2 系统确认该读者可以借阅当前图书;

   4.工作人员确认本次借阅信息;

   5.系统记录本次借阅情况。

后置条件:系统将读者借阅信息正确地记录到数据库中

备选事件流

   2a. 读者身份不合法

   2b. 读者存在欠费信息,不允许借书

   3.2a. 该读者不允许借阅当前图书

字段列表:

   5. 借阅信息主要包括:读者图书证号、图书编号、借阅日期(默认为当天日期)、借阅天数以及归还日期。

业务规则

   3.2 系统根据当前读者的借阅规则来判断是否可以借阅图书;而借阅规则取决于读者的类型(如本科生、研究生、老师等)和图书的类型(如科技类、文学类、新书等),并可动态配置

非功能需求:

设计约束:

部署约束:

未解决的问题

   2b. 读者存在多少欠费记录时,才不允许借书?

   3.2 借阅规则的具体配置情况需和用户进一步讨论?

2、活动图(activity diagram)

灯泡活动图(Activity Diagram)

通过动作来组织,主要用于描述某一方法、机制或用例的内部行为

灯泡核心概念

状态、活动、组合活动、对象

转移、分支

并发、同步

泳道

灯泡推荐使用场合

业务建模、需求、类设计

image

 

3、静态结构图

类图(Class Diagram)

是软件的蓝图,详细描述了系统内各个对象的相关的类,以及这些类之间的静态关系。

核心概念:类、接口、依赖、关联、泛化、实现

类图展示实体类的静态关系:

image

对象图(Object Diagram)

表示在某一时刻类的对象静态结构和行为。

核心概念:对象、链接、多重性

对象图展示我当前借书情况:

image

包图(Package Diagram)

展现有模型本身分解而成的组织单元(包)以及它们的依赖关系。

核心概念:包(、框架、层、子系统) 、依赖

包图展示系统分层结构:

image

组合结构图(Composite Structure Diagram)

描述系统中某一部分(组合结构)的内部结构,包括该部分与系统其它部分的交互点。

核心概念:组合结构、部件、端口、协议

组合结构图展示借书内部结构:

image

 

4、顺序图(Sequence Diagram)

灯泡顺序图(Sequence Diagram)

用于显示对象间的交互活动

关注对象之间消息传送的时间顺序

灯泡核心概念

对象、生命线、激活、交互、消息

交互帧(Interaction Frame)

灯泡推荐使用场合

用例分析、用例设计

“借书”用例实现的顺序图image

5、交互纵览图(Interaction Overview Diagram)

灯泡交互纵览图(Interaction Overview Diagram)

活动图和顺序图的混合物

直观地表达一组相关顺序图之间的流转逻辑

灯泡核心概念

交互帧

分支、转移

灯泡推荐使用场合

用例分析、用例设计

交互纵览图组织多个顺序图image

6、通信图(Communication Diagram)

灯泡通信图(Communication Diagram)

UML 1.x中称为协作图(Collaboration Diagram)

表示一组对象间关系以及交互活动

灯泡核心概念

对象、协作角色

协作、交互、消息

灯泡推荐使用场合

用例分析、用例设计

“借书”用例实现的通信图
image

7、时间图(Timing Diagram)

灯泡时间图(Timing Diagram)

一种交互图,展现消息跨越不同对象或角色的实际时间信息;

具体描述单个或多个对象状态变化的时间点以及维持特定状态的时间段;

顺序图是表示交互的主要手段,可以在顺序图中增加时间约束来表明对象状态变化的时间点以及维持特定状态的时间段。

灯泡核心概念

时间约束、持续时间约束、生命线

状态、条件、事件

“打电话”顺序图的时间约束
image
利用时间图描述时间约束
image

8、状态机图(State Machine Diagram)

灯泡状态机图(State Machine Diagram)

UML1.x为状态图(Statechart Diagram)

利用状态和事件描述对象本身的行为

灯泡主要概念

状态、初态、终态、复合状态

事件、转移、动作

并发

灯泡推荐使用场合

类设计

“图书”类的状态机图
image

9、构件图(Component Diagram)

灯泡构件图(Component Diagram)

封装类为构件

描述在系统实现环境中的软件构件和之间的关系

灯泡主要概念

构件、工件、接口(所供接口、所需接口)

依赖、实现

灯泡推荐使用场合

系统设计、实现、部署

构件图描述类的实现环境
image

10、部署图(Deployment Diagram)

 

灯泡部署图(Deployment Diagram)

描述系统所需的硬件构件的物理部署

灯泡主要概念

节点、构件、位置

连接、依赖

灯泡推荐使用场合

系统设计、实施、部署

部署图描述系统部署情况
image

分类

图的名字

介绍

 

类图(Class Diagram)

类图用于定义系统中的类,包括描述类之间的联系(如:关联、依赖、聚合)以及类的内部结构,即类的属性和操作。因此类图是描述系统中类的静态结构,即它所描述的是一种静态关系,在系统的整个生命周期都是有效的。

对象图(Object Diagram)

对象图所使用的表示符号与类图几乎完全相同,它们的不同点在于对象图只是显示类的对象实例,而不是实际的类。一个对象图是类图的一个实例,由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

对象图是类图的一种实例化图,描述系统在某个时刻可能包含的对象和相互关系。

包图(Package Diagram)

包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。

构件图(Component Diagram)

描述可以部署的软件构件(如:代码部件、jar文件、EJB文件等)的物理结构以及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。构件图有助于分析和理解部件之间的相互影响程度。

部署图(Deployment Diagram)

描述一个系统的拓扑结构,定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象,以显示节点跟可执行软件单元之间的对应关系。

 

用例图(Use Case Diagram)

它从用户角度描述系统的功能,并指出各功能的操作者。用例图描述了一系列的角色和使用案例及它们之间的关系。

活动图(Activity Diagram)

行为图描述系统的动态模型和组成对象间的交互关系。

活动图描述为满足用例要求所要进行的活动以及活动间的约束关系。活动图是使用例图所描述的行为具体化。

状态图(State Diagram)

描述一类对象的所有可能的状态以及事件发生时状态的转移条件。通常状态图是对类图的补充,实际上并不需要为所有的类绘制状态图,而只需要为那些有多个状态、并且其行为受外界环境的影响而会发生改变的类绘制状态图。

时序图/序列图/顺序图(Sequence Diagram)

交互图描述对象间的交互关系。

顺序图用于显示对象之间的动态合作关系。它强调对象之间消息发送的顺序,同时也显示对象之间的交互过程,它强调的是时间和顺序。

合作图/协作图(Collaboration Diagram)

合作图显示对象间的动态合作关系,除了显示信息交换外,合作图还显示对象以及它们之间的关系,它强调的是通信关系。

原文:http://blog.csdn.net/chenxiang0207/article/details/8245283

附:

类图,对象图,用例图,部署图,构件图,为静态图

状态图,顺序图,活动图,协作图为动态图



推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文介绍了最长上升子序列问题的一个变种解法,通过记录拐点的位置,将问题拆分为左右两个LIS问题。详细讲解了算法的实现过程,并给出了相应的代码。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
author-avatar
mk艾草_180
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有