《大象Think in UML》阅读笔记之一

时间:2021-11-13 19:25:27

Think in UML这一书以UML为载体,将面向对象的分析设计思想巧妙地融合在建模UML当中,通过一些实例将软件系统的开发过程中的一些知识有机地结合起来。全书共分为四篇:准备篇、基础篇、进阶篇和总结篇。

准备篇讲述面向对象分析的一些基本概念及学习建模需要了解的一些基本知识。书籍Think in UML的开头为大象希形,其中提到了和UML师出同门的一门语言RUP,经过上网查找资料得知,RUP英文全称为Rational Unified Process,中文译为统一软件开发过程,是一个面向对象且基于网路的程序开发方法论,是Rational软件公司创造的软件工程方法。借由RUP中文档、模型、软件层次、迭代、构件、架构、测试等等的官方文档的晦涩和枯燥,即使开发者明白RUP可以说是一种软件高级人才的金手指,却也无法把完全掌握这种堪称致命性的缺点来引出Think in UML这本书的便利和简单易懂,所以本书的名称为Think in UML来使从事软件方面工作的人容易理解和掌握,这本书最大的优点也是最诱人的地方就在于把RUP的精髓理解透彻,摸清了软件开发过程的开发框架、软加架构、设计模式、系统分析建模与设计的来龙去脉。

众所周知,这几年来从事软件开发工作的人员都把一个词和软件紧紧联系起来,这个词就是“面向对象”,面向对象中的对象指的是类的集合,根据网络上的资料翻阅,面向对象(Object Oriented,OO)这个概念和应用已经超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等一系列领域,随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题,一切事物皆对象,将现实世界的事物抽象成对象,现实世界的关系抽象成类、继承,帮助人们实现对于现实世界的抽象和数字建模。面向对象能够有效地提高编程的效率,通过类的封装技术,消息机制可以快速开发出一个全新的系统。既然面向对象的技术是如此之重要,那么UML就不得不提了,因为UML是软件开发过程中面向对象分析和设计的重要工具,书中有一句话是UML是面向对象思想和方法的具体化和符号化,学习UML的过程就是掌握面向对象思想和方法的过程,而UML统一建模语言我们在大二就已经学习过。

从此书中我们可以发现不论对于面向过程还是面向对象,作者并没有偏向任何一方,而是认为他们都是人们在采用不同的方法来认识和描述这个世界的时候所采用的工具而已,都只是表象而不是本质,同时举例了UML的创始人之一的Grady Booch 在2004年IBM Developer Works Live大会的访谈中讲过的一段流传甚广的一段话:

《大象Think in UML》阅读笔记之一

从本质上来说面向过程和面向对象是一个古已有之的认识论的问题,面向对象方法的兴起只是因为我们需要这种方法来解决一些问题。

简而言之,面向过程的方法就是认为我们所生存的世界是由一个个相互关联的小的系统组成的,并且面向过程的方法认为每个组成世界的小系统之间都有着明确的开始和结束,开始和结束之间有着严谨的因果关系。作者举了一个例子,就像一个简单的数据的系统,这个系统能够实现增删查改的功能,计算机是通过数据来记录这个过程的变化。数据变化的过程中每一步必然都会产生、修改或者读取一部分数据,当这个过程完成后,数据酒后顺着这个过程链传递到下一个过程,循环往复,数据不断变更,但是随着信息的更新和发展,大数据已经成为一个主流的问题,一份数据经常被多个过程共享,他们之间的问题越来越复杂,经常出现相互矛盾的数据需求,所以面向过程的方法已经不足以满足软件开发人员对于系统的高要求性,我们更需要的是一种On-Demand Business(随需应变的商务)。这种时候面向对象的方法就产生了。

面向对象的方法与面向过程方法不同,它把世界看做一个个相互独立的对象,并且对象之间相互没有因果关系,只有在一些外部力量的驱使下,这些对象之间才会根据某种规律相互传递信息,而这些对象之间的互动促成了这个世界的一个“过程”,显而易见,在没有这种外力的作用下,对象之间则始终保持着“静止”的状态。面向对象的方法只需要研究“一个对象”,不会像面向过程那样遭遇大数据的问题,“这个对象”的复杂度和结构是有限的,彼此是相互独立的。