《大象:Thinking in UML》读书笔记(1)为什么需要UML

1 面向过程

面向过程方法认为我们的世界是由一个个相互关联的小系统组成的。每个小系统都有明确的开始和结束,开始和结束之间有着严谨的因果关系。只要我们将这个小系统中的每个步骤和影响因素都分析出来,就能完全定义这个系统的行为。

传统商务模型

如上图的传统商务流程:

  • 消费者提交购买请求后,销售部将数据传递给财务、生产线,并产生订单;
  • 财务处理完成后更新订单状态;
  • 生产线根据订单要求生产产品,并传递给物流;
  • 物流送货完成,并更新订单状态之后,整个商务流程就结束了。

这个图被称为DFD(Data Flow Diagram)图,以图形的方式描绘数据在系统中流动和处理的过程。

面向过程方法的困难:难以描述复杂系统。因为面向过程将世界看作是过程化的,系统的各个部分之间存在密不可分的因果关系,在系统简单的时候还可以应对,但在描述复杂系统时,系统的细微变化都将导致因果关系的重构。

2 面向对象

面向对象(Object Oriented)方法将世界看作一个个相互独立的对象,相互之间并无因果关系,只有在外力驱动下,对象之间才会依据某种规律相互传递信息。这种交互被称为过程,在没有外力的情况下,对象则保持静止。
面向对象具有封装、继承、多态等特点,对象具有属性、方法、对象之间存在依赖、关联、耦合等关系。对象需要能够复用。面向对象还有一个非常重要的特性:抽象*。不夸张地说,抽象能力决定了面向对象里的一切。

面向对象方法的困难:抽象。也就是说,抽象是面向对象的精髓,同时也是面向对象的难点。

3 UML定义

UML(Unified Modeling Language)翻译为统一建模语言,它定义了一些用于表达某种特定含义的基本元素,如用例、类等,这些基本元素被称为元模型;然后定义了这些元模型相互之间的关系的规则,以及如何用元模型绘制图形以建立现实世界的映射,这些规则或图形被称为视图(View)
UML建立了软件生命周期管理的统一语言,即一个需求从分析、设计,到开发、测试、部署等各阶段的描述都可以采用UML语言进行,同时它采用可视化的方式呈现了系统的全貌,方便了不同阶段不同角色之间的沟通与交流。

4 UML的过程

4.1 从现实世界到业务模型

也就是给现实世界的问题建立软件模型。UML的方式包括:

  • 采用Actor元模型作为信息来源的提供者,描述现实世界的人;
  • 采用用例(Use Case)来表示Actor的业务目标,通过业务场景、用例场景等UML视图来描绘现实世界的规则。

4.2 从业务模型到概念模型

即把业务模型转化为可用以指导开发的表达方式。UML的实现方式包括:

  • 通过边界类(boundary)分析系统的边界,如Actor与系统的交互、系统与系统的交互、模块与模块的交互等;
  • 通过实体类(entity)表达业务实体,建立与业务实体的关联,可以看成是业务实体的实例化结果;
  • 通过控制类(control)表达原始需求中的动态信息,即业务或用例场景中的步骤或活动。边界类和实体类之间不可直接相互访问,而需要通过控制类来代理访问。

4.3 从概念模型到设计模型

即建立软件所需要的所有组成内容及开发软件所需要的所有必要细节。UML通过定义具体视图(类图、时序图、活动图等)将理想落入现实,使系统真正达到一个可以指导编码的状态。

5 RUP

RUP(Rationnal Unified Process)译为统一过程,是一种软件方法,它采用面向对象思想,使用UML作为语言,结合了项目管理、质量保证等许多软件工程方法。
统一过程定义了软件开发过程的四阶段和九个核心工作流:

统一过程