设计模式 (1) UML

声明:

参考资料:
《设计模式》
作 者: 刘伟 主编
出 版 社: 清华大学 本社特价书
条 形 码: 9787302251200 ; 978-7-302-25120-0
I S B N : 9787302251200
刘伟老师博客地址http://blog.csdn.net/lovelion/article/details/17517213

本博客的内容大部分内容参考于书中和刘伟老师技术博客,想要查看原版,请归位原技术博客。

UML简介

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

UML的诞生

  1. 在一个现代化的工程中,人们要相互沟通和合作,就必须使用标准的工业化设计语言,用这些语言来对待开发的产品进行建模
  2. 建模过程把复杂的问题分解成为易于理解的小问题,以达到问题的求解的目的
  3. 建模是开发优秀软件的所有活动中核心部分之一,实现对系统的结构的可视化控制

演化历史

UML的演化可以分为几个阶段:

  1. 第一阶段是3位面向对象(OO,Object-Oriented)方法学家Booch、Rumbaugh和Jacobson共同努力,形成了UML0.9;
  2. 第二阶段是公司的联合行动,由十几家公司(DEC、HP、I-Logix、IBM、Microsoft、Oracle、TI、RationalSoftware等)组成了UML成员协会,将各自意见加入UML,以完善和促进UML的定义工作,形成了UML1.0和1.1,并向对象管理组织(OMG,ObjectManagementGroup)申请成为建模语言规范的提案;
  3. 第三阶段是在OMG控制下对版本的不断修订和改进,其中UML1.3是较为重要的修订版。

UML注意点

(1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它实际上是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。
(2)UML建模能力比其它面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。
(3)UML是一种建模语言,而不是一个开发过程。

UML是什么?

  1. UML是一种语言,它有属于自己的标准表达规则。它不是一种类似Java、C++的编程语言,而是一种分析设计语言,也就是一种建模语言
  2. UML是由图形符号表达的建模语言
  3. UML是一种用于描绘软件蓝图的标准语言

UML结构

视图结构(“4 + 1”视图)

Kruchten 提出了一个”4+1”视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。

视图简介

该模型五个主要的视图
逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
过程视图(Process View),捕捉设计的并发和同步特征。
物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。
开发视图(Development View),描述了在开发环境中软件的静态组织结构。

详细介绍

每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。如下图:
英文版
这里写图片描述
中文版
这里写图片描述

逻辑试图(Logical View)主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。 在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。
开发视图(Development/Module View) 开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员, 方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。
进程视图(Process View)   进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。
物理视图(Physical View)   物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。
场景(Scenarios)   场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。文本、图形表示皆可。

区别

这里写图片描述

UML2.0提供了13种图

1.用例图(Use Case Diagram)

又称为用况图,对应于用户视图。
使用用例表示系统的功能需求
用于表示多个外部执行者与系统用例之间以及用例与用例之间的关系。
用例图和用例说明文档是常用的需求建模工具,也称为用例

2.类图(Use Case Diagram)

使用类来描述系统的静态结构
包含类和它们之间的关系,描述系统内所声明的类

3.对象图(Object Diagram)

类图在某一时刻的一个实例,用于表示类的对象实例之间的关系

4.包图(Package Diagram):

用于描述包与包之间的关系,包是一种把元素组织在一起的通用机制

5.组合结构图(Composite Structure Diagram):

将每一个类放在一个整体中,从类的内部结构来审视一个类。
可用于表示一个类的内部结构
用于描述一些包含复制成员或内部类的类结构

6.状态图(State Diagram)

描述一个特定对象的所有可能状态及其引起状态转移的事件
包括一系列对象的状态及状态之间的转换

7.活动图(Activity Diagram)

表示系统中各种活动的次序
用来描述用例的工作流程
用来描述类中某个方法的操作行为

8.顺序图(Sequence Diagram):

又称为时序图或 序列图
表示对象之间的交互,重点表示对象之间发送消息的时间顺序、

9.通信图(Communication Diagram)

展示一组对象、这些对象之间的连接以及它们之间收发的信息。
与顺序图是同构图,即包含了相同的信息,表达方式不同而已,可相互转换

10.定时图(Timing Diagram)

采用一种带数字刻度的时间轴来精确地描述信息的顺序,而不是像顺序图那样只是指定消息的相对顺序
允许可视化地表示每条生命线的状态变化

11.交互概览图(Interaction Overview Diagram)

交互图和活动图的混合物
细化的活动图
活动都通过一些小型 顺序图表示
利用标明控制流的活动图分解过的顺序图

12.组件图(Component Diagram)

描述每个功能所在的组件位置以及它们之间的关系

13.部署图(Deployment Diagram)

描述软件中各个组件驻留的硬件位置以及这些硬件之间的交互关系

模型元素

包括事物以及事物与事物之间的联系。

事物 是对模型中最具有代表性的成分的抽象,包括结构事物,如类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(ActiveClass)、组件(Component)和节点(Node);行为事物,如交互(Interaction)、态机(Statemachine)、分组事物(包,Package)、注释事物(注解,Note)。

关系 用来把事物结合在一起,包括依赖、关联、泛化和实现关系。

PS:后续会有详细介绍这些图的文章,期待吧

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值