《大象 Thinking in UML》学习笔记——为什么需要UML?

Posted bit_kaki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《大象 Thinking in UML》学习笔记——为什么需要UML?相关的知识,希望对你有一定的参考价值。

一、UML的定义

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

UML是一种是面向对象软件的标准化建模语言,要弄清UML,首先得搞清楚面向对象和面向过程。

二、面向对象和面向过程

面向对象和面向过程是两种不同描述世界的方法。

面向过程:世界视为过程,世界由一个个相互关联的小程序构建来的。但是构成一个系统的因素太多,要把所有可能的因素都考虑到,把所有因素的因果分析都分析清楚,再把这个过程模拟出来实在是太困难了。

面向对象:世界视为对象,世界由一个个相互独立、相互之间没有因果关系的对象构成。但是难点在于为什么这样抽象对象?怎样组合对象?对象的组合表达了怎样的含义?

以知乎上的一个例子来区分面向过程和面向对象:

面向过程:
        为了把大象装进冰箱,需要3个过程。
        1) 把冰箱门打开(得到打开门的冰箱)
        2) 把大象装进去(打开门后,得到里面装着大象的冰箱)

        3) 把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)


        每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱:
        冰箱开门(冰箱)
        冰箱装进(冰箱, 大象)
        冰箱关门(冰箱)

面向对象:
        为了把大象装进冰箱,需要做三个动作(或者叫行为)。
        每个动作有一个执行者,它就是对象。
        1) 冰箱,你给我把门打开
        2) 冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去)

        3) 冰箱,你给我把门关上


        依次做这些动作,就能把大象装进冰箱:
        冰箱.开门()
        冰箱.装进(大象)
        冰箱.关门()

三、面向对象的困难

面向对象是把世界看作是由许多对象组成的,然而现实世界和对象世界之间存在着一道沟壑,这道沟壑的名字叫抽象,抽象是面向对象的精髓所在,同时也是面向对象的困难所在。要跨越这道沟壑,我们需要:

一种把现实世界映射到对象世界的方法;
一种从对象世描述现实世界的方法;
一种验证对象世界行为是否正确反映了现实世界的方法。

而UML就是跨越这道沟壑的方法。


四、UML的特点

UML是一种建模用的语言,就是一种建模用的语言,包含模型和关系,类似于语言中的基本词汇和语法。

UML的特点是统一,形成一种标准让人和机器都能读懂。

UML的优点是可视化,通过原模型和表示法,更加准确直观表达出文字难以表达的内容。

五、从现实世界到业务模型

建模是对客观事物建立一种抽象方法,用来表征事物以及对事物本身的理解。

知道如何抽象现实世界:人、事、物、规则,人驱动系统、事体现过程、物记录结果、规则是控制;

在UML里:参与者(actor)代表人,用例(use case)代表事,业务对象模型(business object model)代表物,业务场景(business scenario)代表规则。




六、从业务模型到概念模型

UML通过称之为概念化的过程(Conceptual)来建立适合计算器理解和实现的模型,这个模型成为分析模型(Analysis Mode)。

原模型包含:边界类、实体类、控制类。

边界类类似于系统中的界面,决定操作能不能做,代表了事;
实体类由领域模型转化而来,重新表达了业务实体,代表了物;

控制类表达了需求中的动态信息,体现了规则。




七、从概念模型到设计模型


实现类可以简单地从分析类映射而来:

边界类可以被转化为操作界面或者系统接口;
控制类可以被转化为计算程序或者控制程序,例如工作流、算法题等。

实体类可以转化为数据库表、XML文档等。





UML的三个模型的建立过程解决了面向对象的三个困难。



以上是关于《大象 Thinking in UML》学习笔记——为什么需要UML?的主要内容,如果未能解决你的问题,请参考以下文章

大象——Thinking in UML

读书会第一期《大象:Thinking in UML》

好书推荐:《大象:Thinking in UML》,软件设计的九阳真经

01:关于《大象:Thinking UML》

Thinking in UML 学习笔记——建立对象模型

Thinking in UML 学习笔记——UML核心视图之类图