
1.4.1 为什么要用UML建模
模型建模不仅仅适用于建筑行业,比如城市在进行规划的时候通常都有自己的规划模型等。如果不首先构造这些模型就进行城市的建设,那简直是难以想象的。一些设备,比如ATM机也需要一定程度的建模,以便更好地理解要开发的系统。在社会学、经济学和商业管理领域也需要建模,以证实人们理论的正确性。
那么,模型是什么?模型就是对客观世界的形状或状态的抽象模拟和简化。模型提供了系统的概述(Sketch)和蓝图(Blueprint)。模型给人们展示系统的各个部分是如何组织起来的,模型既可以包括详细的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个系统都可以从不同的方面用不同的模型来描述,因而每个模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织。它也可以是行为性的,强调系统的动态方面。对象建模的目标就是要为正在开发的系统制定一个精确、简明和易理解的面向对象模型。
为什么要建模?一个基本理由是:建模是为了能够更好地理解正在开发的系统。
通过建模,要达到4个目的:
(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。
(2)模型能够规化约束系统的结构或行为。
(3)模型给出了指导构造系统的模板。
(4)模型对做出的决策进行文档化。
那么具体到软件所涉及的人员,包括系统用户、软件开发团队、软件的维护和技术支持者,系统建模都有什么作用呢?
(1)对于软件系统用户,软件的开发模型向他们描述了软件开发者对于软件系统需求的理解。让系统用户查看软件对象模型并且找到其中的问题,这样可以使软件开发者不至于从一开始就发生错误。
(2)对于软件开发团队而言,软件的对象模型有助于帮助他们对软件的需求以及系统的架构和功能进行沟通。需求和架构的一致理解对于软件开发团队是非常重要的,可以减少不必要的麻烦。
(3)对于软件的维护和技术支持者而言,在软件系统开始运行后的相当长的一段时间内,软件的对象模型能够帮助他们理解程序的架构和功能,迅速地对软件所出现的问题进行修复。
建模并不仅仅针对大型的软件系统,甚至一个小型的通讯录软件也能从建模过程中受益。事实上,系统越大、越复杂,建模的重要性就越大,一个很简单的原因就是:人们对复杂问题的理解能力是有限的,人们往往不能完整地理解一个复杂的系统,所以要对它进行建模。通过建模,可以缩小所研究问题的范围,一次只需要重点研究它的一个很小的方面,这就是“分而治之”的策略和方法,即把一个困难问题划分成一系列能够解决的小问题,对这些小问题的解决也就构成对复杂问题的解决。一个选择适当的模型可以使建模人员在较高的抽象层次上工作。
那么我们选择什么工具对软件对象进行建模呢?
早在20世纪90年代以前,业界就有一股主要的力量,把出现的各种主要的建模技术整合到一起,从而创建了一种通用的建模符号,即统一建模语言(Unified Modeling Language,UML),它是面向对象方法建模领域的三位巨头James Rumbaugh、Grady Booch和Ivar Jacobson合作的结果。事实上经过发展,UML语言成为大众所接受的标准建模语言,成为工业标准的对象建模语言。
James Rumbaugh、Grady Booch和Ivar Jacobson这三位同时也为一种被称为Rational统一过程(Rational Unified Process,RUP)的全面开发做出了巨大贡献。RUP是一种完善的软件开发方法,包括建模、项目管理和配置管理工作流。
学习一种有效的、通用的建模技术,使自己能够阅读、选用和评估类似RUP的开发方法,并且把来自于不同方法论的适合自己开发程序所需要的过程、符号和工具结合到一起,打造自己的实践开发手段。每个项目都能从一些建模中受益,即使在一次性的软件开发中—由于可视化编程语言的支持,可以轻而易举地扔掉不适合的软件。建模也能帮助开发组织更好地对系统计划进行可视化,并帮助他们正确地构造模型,使开发工作进展得更快。