UML面向对象分析与设计学习笔记

UML面向对象分析与设计学习笔记

截至2018.10.11,OMG在官网发布的最新UML(Unified Modeling Language)版本为UML 2.5.1。官方的描述文档有796页之多,对UML2.5.1做了详细描述说明。下面列出了几个比较重要版本发布的时间:

UML1.1版本发布时间是1997.12;

UML2.0版本发布时间是2005.05;

UML2.3版本发布时间是2010.05;

UML2.4.1版本发布时间是2011.07;

UML2.5.1版本发布时间是2017.12.05。

UML从1.x到2.x版本内容变化非常大,所以选取了基于UML2.x编写的参考学习书籍《UML面向对象分析与设计》(Object Oriented Analysis and Design Using UML)。该书原书由D Jeya Mala和 S Geetha著。

首先,作者对统一软件过程(RUP)、面向对象的理论知识和面向对象分析与设计中类和对象的识别做了讲解,然后介绍UML建模以及如何使用UML来实现面向对象分析、设计,并在最后列举了几个面向对象开发示例。

RUP过程模型由Booch、Jacobson和Rumbaugh三人提出,这一过程有时也称为统一软件开发过程(USDP),专门用于面向对象的系统开发。RUP是一个迭代过程,具有演化和敏捷过程模型的优点。RUP具有四个主要阶段:初始阶段、细化阶段、构造阶段和交付阶段。

面向对象的基本实体有7个:类、对象、属性、方法、访问说明符、接口、包和组件。面向对象的构造有:抽象、封装和信息隐藏、继承、多态以及消息传递。

对类和对象识别时,面向对象的分析技术有:基于抽象的分析、基于场景的分析、基于问题域的分析、基于操作的分析、基于CRC卡的分析、基于名词-动词的分析和基于数据流和控制流的分析。作者在书中讨论了面向对象设计的设计原则:

  1. 开闭原则(Open-Closed Principle,OCP)
  2. Liskov替代原则(Liskov Substitution Principle,LSP)
  3. 依赖性倒置原则(Dependency Inversion Principle,DIP)
  4. 接口分离原则(Interface Segregation Principle,ISP)
  5. 发布重用等效原则(Release Reuse Equivalency Principle,REP)
  6. 共同封闭原则(Common Closure Principle,CCP)
  7. 共同重用原则(Common Reuse Principle,CRP)

作者还花了大量篇幅来介绍类和对象的识别和细化过程中的设计模式。设计模式分为三大类:创建型、结构型和行为型。创建型设计模式有:抽象工厂、建造者、工厂方法、原型和单例。结构型设计模式有:适配器、桥接、组合、装饰器、外观、享元、代理。行为型设计模式有:责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、模板方法和访问者。作者还对框架和设计模式做了比较。框架是一组合作的类,为特定软件的类构造可重用的设计,为要开发的应用程序提供架构。它定义了整体结构,通过控制线程将系统划分为对象和类、职责、协作以及同步或异步操作。框架捕获设计决策,提高了设计而非代码的可重用性。而设计模式比框架更抽象、更通用,是比框架更小的架构元素。

UML是实现软件开发过程标准化的重要一步,它集成了用于指定、可视化、构建和记录业务建模的工程实践。UML定义了13种类型的图:类图、对象图、包图、组件图、复合结构图、部署图、用例图、活动图、状态机图、序列图、通信图、交互概览图和时序图。前六类属于结构图,后七类属于行为图。其中用例图是最重要的行为图。

作者用了五章篇幅讲解如何使用UML图来进行面向对象分析,并用一章来举例说明如何使用UML进行面向对象设计。作者从五个方面进行面向对象分析,依次是:基于场景模型、逻辑模型、交互图分析、行为设计模型和物理图模型。

基于场景的模型分析使用了主用例图和次用例图来分析,描述外部参与者和当前系统之间发生的一系列面向目标的交互行为。用例图的目的是:记录现有流程;分析新流程的概念;识别可能存在的IT杠杆;寻找重构的机会;通过构造语义网络图来识别系统的边界;更改和扩展参与者或用户的功能;为一些场景解决非功能性需求。

逻辑模型使用了类图来进行结构化表示。类图具有比较丰富的基本符号,包括:类、抽象类、标准/非标准的类构造型、类模板、接口、对象、数据类型、属性、分类器属性、关联属性、限定符、多重性、操作、抽象操作、约束、多重性、可见性、UML关联、关联终端、可导航性、元数、聚合、组合、链接、泛化、继承。类图的主要目的是设计分析系统的静态视图。通过描述系统执行的功能,说明系统的责任。

交互图分析使用了序列图和协作图来描述对象交互。UML序列图中描绘的元素有:生命线、执行说明、消息、组合片段、交互使用、状态常量、延续和销毁发生。使用序列图的基本动机是按照其发生顺序显示对象之间的交互,序列图与协作图的区别在于其强调在对象之间发送和接收消息的顺序。协作图有三个基本元素:对象、链接和消息。它强调协作对象之间盛行的关系。为了确保实施正确而适当的设计,序列图/协作图有具有清晰的作用:初始化事件、详细程度、描述变化、评估设计。

行为设计模型使用了状态图来描述系统中组件和对象的不同状态,使用了活动图来帮助描绘系统的工作流程行为。状态图符号有:初始状态、最终状态、状态、转移、选择点、结合点、符合状态和同步。状态变化是动态的,状态图描绘了从一种状态到另一种状态的控制流程。活动图有两种类型:简单活动图和泳道活动图。简单活动图只将过程流程表示为并发过程,而泳道活动图除了使用并发操作表示过程流程,还显示过程中设计的参与者和类。

物理图模型使用了包图、组件图和部署图。包图表示法涉及包、包内容的可见性、包之间的关系。包分为传统包和域包。包内容可见性使用“+”、“-”分别来表示公共和私有访问指示符。包之间存在的关系有:依赖、聚合和细化。包图主要用于提供模块的静态模型、模块部件和关系。组件图包括组件包、组件、接口和依赖关系,用来显示系统组件之间的结构关系。部署图包括节点和连接,主要用来显示目标系统中软件和硬件组件之间的关系。

本书作者从抽象到具体,从描述到举例,清晰的将UML面向对象分析与设计呈现在了我们读者面前,让我能够对UML工具和面向对象分析与设计的认识由浅向深发展。

2018.10.21

参考文献:

[1] (印)D Jeya Mala, S Geetha 著; 马恬煜 译. UML面向对象分析与设计[M]. 北京:清华大学出版社.2018

[2] OMG. About the Unified Modeling Language Specification Version 2.5.1 [EB/OL]. https://www.omg.org/spec/UML/2.5.1, 2017.12.

 

 

 

 

 

目录 第1章 入门 1.1 背景 1.2 编程简史 1.3 方法学 1.4 关于本书 第Ⅰ部分 设置场景 第2章 对象的概念 2.1 引言 2.2 什么是对象 2.3 相同还是相等 2.4 描述对象 2.5 封装 2.6 关联聚合 2.7 图树 2.8 链接可导航性 2.9 消息 2.10 启动操作 2.11 协作示例 2.12 面向对象程序的工作原理 2.13 垃圾收集 2.14 2.15 定义的内容 2.16 共享数据共享操作 2.17 型 2.18 术语 2.19 重用代码 2.20 小结 2.21 课外阅读 2.22 复习题 2.23 练习1的答案 2.24 复习题答案 第3章 继承 3.1 引言 3.2 设计层次结构 3.3 给层次结构添加实现代码 3.4 抽象 3.5 重定义方法 3.6 实现栈 3.7 多重继承 3.8 使用继承的规则 3.9 小结 3.10 课外阅读 3.11 复习题 3.12 复习题答案 第4章 型系统 4.1 引言 4.2 动态静态型系统 4.3 多态性 4.4 动态绑定 4.5 多态性规则 4.6 型转换 4.7 显式型转换 4.8 使用模板进行泛化 4.9 小结 4.10 课外阅读 4.11 复习题 4.12 练习2的答案 4.13 练习3的答案 4.14 复习题答案 第5章 软件开发的方法学 5.1 引言 5.2 软件开发中的经典阶段 5.3 软件工程瀑布方法学 5.4 新方法学 5.5 面向对象的方法学 5.6 Ripple概述 5.7 小结 5.8 课外阅读 5.9 复习题 5.10 复习题答案 第Ⅱ部分 理解问题 第6章 收集需求 第7章 分析问题 第Ⅲ部分 设计解决方案 第8章 设计系统体系结构 第9章 选择技术 第10章 设计子系统 第11章 可重用的设计模式 第12章 指定的接口 第13章 不间断的测试 附录A Ripple小结 附录B iCoot案例分析 附录C UML表示法小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值