Borland®
软件建模介绍
我们需要建模工具做些什么?
Borland白皮书
Christopher Z. Garrett 编写
2003年3月
软件建模介绍 — 我们为什么需要建模工具?
Borland® 2
目录
介绍....................................................................................................................................................... 3
为什么要建模呢? ................................................................................................................................. 3
增强的沟通.................................................................................................................................... 3
图所传递信息的类型............................................................................................................. 5
更好的计划与降低的风险............................................................................................................. 6
你从建模工具需要些什么?................................................................................................................... 6
UML™ 符合性.................................................................................................................................. 7
连续同步的模型与代码............................................................................................................... 10
小组特性...................................................................................................................................... 11
重构(refactoring)................................................................................................................. 11
模式.............................................................................................................................................. 11
逆向工程...................................................................................................................................... 12
报告.............................................................................................................................................. 12
集成.............................................................................................................................................. 12
结论..................................................................................................................................................... 12
软件建模介绍 — 我们为什么需要建模工具?
Borland® 3
介绍
可视化建模软件的想法以及支持这种尝试的工具已经存在多年了。但是,许多
开发者与项目经理可能不理解为什么这对软件开发来说是重要的。有时,项目经理
理解建模工具的基本原理,但是他们必须说服高层管理人员,因为对于比较大型的
软件采购来说,这些高层管理人员要最终予以批准。
本白皮书概述了建模的理由以及建模工具应用的基本原理。也描述了建模工具
应当具备的最低特性集。
为什么要建模呢?
“如果你坚信理解它,我们就不称之为代码” — 摘录自联邦快递公司的一则
广告,这是由IS生存主义者Matthew Persico报道的。
一些开发经理不知道究竟为什么建模是重要的。毕竟代码应当不言自明。从本
质上说,代码就是模型。为什么要添加一个额外的抽象层,并且随着项目的进行,
我们还必须进行该层的维护呢?原因是模型能为开发机构带来许多毫不含糊的好
处。这些好处便是增强的沟通,更好的计划,降低的风险与节省的成本。
1)增强的沟通
关于我的那块地有一段法律条文,该条文开头的部分见图1。如果你是一位土
地测量员,你将能够对我的那块地进行完整的描述并绘制出一幅图来,指着地图并
告诉我的房子的确切位置。对于一位土地测量员或律师来说,这就是描述我拥有的
那块土地的“代码”。这是对我的财产的确切描述,但这不是观察世界的一种自然
方式。考虑到上述情况,一位有经验的土地测量员也许对我的那块地有一个总体的
看法,比如我的那块地的形状,朝向如何等等。他可能在脑子里有那块地的图像。
不过,不管从数学上来看是如何的严谨,但对一个人来说,这也不是一件自然而然
的事情。每个人都想看到该块土地的图纸。从图上可以看出,该块土地相对平坦 —
大致为长方形,没有一点儿特别的地方。
因此,作为任何土地测量工作或购置土地的一部分,总会有一张该块土地的图
软件建模介绍 — 我们为什么需要建模工具?
Borland® 4
纸,对其进行大致的描述。任何人看到这张图纸,马上就会明白它代表了什么。测
量工作通常也包括一个更高层次的概图,表示与之相临的地方,甚至还包括与城市
其它部分的关系。
图 1: 关于一块土地的法律描述。这种描述虽然准确,
但不能很快传递一块土地图纸所直接表示的信息
我们想看到一幅图片的原因在于人类自然希望使用最简单的方式进行沟通。我
们常说“一图抵千言”。用建模的术语来说,这可理解成“一张类图抵千行代码”
或者“一个使用范例(use case)图抵十次令人精疲力尽的电话会议,一次与老板的
激烈讨论,三次与客户的会谈”。将意见与谈话表示为使用范例图,或将代码行表
示为类图,我们可以传递大量的信息,只需在屏幕上显示出一幅图即可。
图 2: 早期在原始的白板上进行头脑风暴。
(Tom Gullion 绘制,经许可使用)
法律“代码”与图纸的比较
根据1993 年地图册
第1132页记载以及1993
年地图册第1279页重新
记载的地图……,此为一
期 - A,Franklin Chase
Subdivision 第43 块地
的全图。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 5
在这种情况下,软件工程师相当于土地测量人员。他们理解代码,知道代码如
何组合在一起。不过,一个重要的区别在于每个工程师可能负责上千个代码行。想
象一下,假设上述的法律描述有一千行,就代表了整个社区了!要将所有的东西都
装到一个人的脑袋里是非常困难的,更不用说以不可视的方式进行该信息的沟通了。
一位有经验的开发者可能做一份现有的软件项目,看一看该项目的源代码,然
后在脑海里开始形成源代码组织形式的情景。即便是最聪明的工程师,也要花费几
个小时的时间才能完成这项任务。不过,如果其有一个可视化的模型且这个模型带
了几张图,她一看就能明白是该模型的结构是什么样子的。
从管理或用户的角度来说,可视化沟通也是重要的。工程师也许理解代码,但
为客户准备的可视化图就更有用。客户可能不理解编程语言的错综复杂之处,但至
少在一个高级层次上,能够理解一个对象模型关键部件中的一些部件。
直接将沟通信息压缩到可视化图中,这会减少任何软件项目的成本。如果你的
项目的每个软件工程师每天只是通过查看模型图的方式,就能节省几个小时的研究
性工作,你的项目成本将显著下降。同样,如果你能使用几张图在一个高级的层次
上说明你的项目,就可以极大地减少会议与演示的次数,否则,就需要举行会议或
进行演示说明你的工作进展情况。
目前,有多种商业发展趋势,这些趋势正使得软件开发小组之间的沟通更加困
难。首先是小型公司并入大型公司。这种合并常常带来更大的整体业务效率,但其
也意味着这些公司的IT部门很可能面临困难的开发过程以及不同的沟通机制。一个
小组可能接管另一个小组的职责,他们就需要开发工具帮助其理解并维护现有的软
件项目。另外一个趋势就是海外IT外包的增加。在这个方面,有地理上分隔的问题,
也有语言与文化障碍的问题。随着这些趋势的继续向前演变,任何有助于解决沟通
困难的工具将为你的公司(或机构)带来巨大的竞争优势。一个可视化图超越了语
言与文化障碍,能让分散的开发小组方便地开展工作。Unified Modeling Language™
(UML™,统一建模语言)等标准编程语言能跨越沟通隔阂,让你的开发小组变得
更加高效。
图所传递信息的类型
软件项目的图能表示范围广泛的信息,可以从高级架构直到源代码。一些使用
业界标准图能够可视化表示的内容举例如下:
• 系统的整体架构
• 系统依从关系
• 复杂程度
• 系统中的信息流
软件建模介绍 — 我们为什么需要建模工具?
• 业务需求
• 数据库组织与结构
• 源代码 – 包括面向对象开发的几乎每个方面
• 分发配置
更好的计划与降低的风险
对于任何软件项目来说,两个最大的风险就是时间与质量。建模能降低这两个
风险。在软件项目中,使用可视化模型,我们就能看到将“拱形”的概念变成高级
图,通过更加细分的图可以进行扩展。
一个结果是预测项目工作量的工程师与设计师能直观地把握要解决问题的复
杂程度。一项表面上可能只需要三周的工作,在实际过程开发中,也许比开始设想
的要困难得多。可以按照功能的主要领域分类,进行任务与开发小组的划分。甚至
从最高等级的图上起,模块性分类就可以出现。
由于图是在项目计划人员之间进行传递的,可以使用来自更多人员的信息确定
估计工作量。可以快速地理解跨越若干个小组的任务,股东们将明白为什么需要介
入某个特定分系统的工作。
在高级层次上看到项目复杂程度也有助于降低质量风险。复杂程度自然而然地
会引起质量问题。通过重构图的方式,可以将这种复杂性降低到最小程度,甚至也
可以通过识别风险并随着项目的进展,知道这些风险必须得到严密监视的方式,将
这种复杂性降低到最小程度。
你从建模工具需要些什么?
你可能已经认识到建模有某些突出的好处。如果你使用手工的方式完成所有这
一切工作,或甚至使用支持某些UML类的图的绘图工具,这将很快变成不可管理的
任务。你将需要一位专职人员,这位专职人员只是跟踪对模型做出的所有变更。源
代码完成时,看起来从来都不会与你的开发小组在白板上进行头脑风暴时绘制的最
初模型一模一样。甚至你可能以前在“小型”项目中尝试过。尝试一次将说服你必
须有一个更方便的方式。
建模工具能给你做很多的事情。其中包括UML符合性,模型与代码的连续同步,
小组特性,重构(refactoring),报告,审计与测量,以及与其它过程工具的集成。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 7
UML™ 符合性
UML是明确的软件建模语言。该标准在二十世纪九十年代出现,当时软件建模
的思想精英们聚集在一起,从参与竞争的建模过程中获取最好的想法,并为建模软
件创建出一种标准的语言。UML标准是由 Object Management Group™ 或 OMG™
(对象管理组)驱动的。欲了解更多的信息,请登录OMG的网站:www.omg.org。
学习UML可使用一本很好的入门书,书名是《UML 精髓:标准对象建模语言简明指
南》 ( 第二版), 这本书是由Martin Fowler与Kendall Scott合著的(Addison Wesley出版
社, 1999年)。
在下面几页中的内容丰富的表格概述了主要的UML图以及它们所表达的含义。
下面几张图在UML 1.3以及更高版本中提供。
使用范
例图
定义系统的性态,不指定系统如何工作。常用于需求规范分析之
中。
类图及
对象图
定义软件的静态组织或结构。有助于解释类与对象之间的层次与协
作关系。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 8
交互图
(顺序,
协作)
包装与协
作图
代表了两个或以上对象的活动交互与通信。
对类组进行组织并描述系统的整体性态。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 9
状态图 表示当事件发生时,对象或系统状态如何变化。
活动图 描述活动的顺序。支持条件以及并行性态。有利于分析,工作流程以及
并行过程。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 10
你所选定的建模工具应当提供对所有上述图的支持。另外,你所选定的供应商
应当有支持新兴UML标准的计划。不过,不强制你所选定的工具支持最新的版本 –
供应商要创建支持最新规范的工具,自然有一段时间的滞后。再之,你希望有一些
时间,让你自己的开发机构学习最新的规范,在最终采用之前获得最优方法。
连续同步的模型与代码
许多建模工具声称拥有双向的工程能力。这应当被认为只是不完整的一步,其
方向是朝着建模工具主要要求之一的。一个建模工具应当具备提供连续同步模型与
代码的能力。
支持这种能力的建模工具保持项目的模型连续与源代码同步。一位工程师可以
检验最新的源代码,马上看到现在模型是什么样子的。不需要其它的步骤。一些建
模工具提供了前向与逆向工程能力,但这与连续同步功能有显著不同。前向与逆向
工程一般指到达里程碑时,你将从模型中生成代码,反之亦然。与这种能力相关的
问题是你的开发小组必须进行运作,好象从未真正地同步过什么一样。正在进行检
查代码的一位工程师需要知道此刻模型是什么样子的,而不是两周之前甚至昨日的
样子。从代码到模型的逆向工程是十分繁琐的,去掉了真正连续同步的大量真实好
处。没有连续同步,从代码到模型以及再回到代码的“双向”能力将导致数据的显
著损失,使得代码没有用处。
诚然,连续同步模型与代码的优势不能被过分渲染。尝试具有该特性的产品的
开发者,如果没有一个类似的工具,就常常拒绝参加另外一个工程。其背后的原因
是他们知道使用该工具时的巨大生产力,能够消除尝试理解别人编写的源代码的许
物理图
(分发、
部件)
定义系统在分发状态的高层配置。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 11
多麻烦。
对上述有一个忠告。你的开发过程可能是非常依赖设计与模型驱动的。在这种
情况下,你的机构高度重视建模工作,你可能甚至不需要阅读本白皮书!不过,在
一个模型驱动的过程中,同步的价值并不是那么高,注意到这一点是重要的。这是
因为在通常情况下,过程单向流动,而不是迭代的、试验性的。如果在你的过程中
不需要该特性时,绝大多数连续同步模型与代码的工具也要求你关闭该特性。
小组特性
任何建模工具都应当让你直接使用源代码管理(SCM)系统。单单这一点就相
当于市场上甚至最昂贵的工具的成本价值。与你所选择的SCM的集成使得你在开发
小组上下有效地共享信息,保存项目及其模型单元的多种版本。甚至对于最小型的
项目来说,试图管理上百个或上千个文件,而每个文件都有若干个不同版本,这将
是一项难以处理的任务。
重构(refactoring)
重构是迭代式开发过程的一部分。一位工程师尝试某种东西,看到到并实现之,
这样会更好一些。从传统上讲,这也许意味着在使用范例图中运用橡皮擦,然后在
集成开发环境(IDE)中找到合适的代码并进行修改。或者说,它可能意味着彻底
审查源代码,以便找到从一个类移动到另一个类的方法的所有依从关系。
支持连续同步代码与模型的建模工具拥有所有关于源代码的最新信息,因此,
其应当充分利用这个信息并允许开发着根据自己的想法进行重构。这可以包括将一
个方法移动到一个高级类,整体移动到另一个类,或完全改变一个类的层次结构。
重构代码有多种方式,一个良好的建模工具应能处理这些工作,可以通过自行编辑
源代码的方式进行,也可以通过在一个图中可视化移动对象的方式进行。
模式
模式的概念在软件工程上的应用是在Erich Gamma, Richard Helm等编写的一本
叫做《设计模式》(Addison-Wesley出版社, 1995年)的书中介绍的,该书具有开创性
的意义。从那以后,这个概念得到了扩充,不仅包括了建模模式,也包括了更加细
分的模式,比如代码片段等。
一个良好的建模工具应当提供模式的全部类型,其中包括建模模式,特定语言
的模式,比如J2EE™ 模式,以及用于实现接口等公共操作的基本模式。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 12
另外,模式机制应当是可扩展的,这样就可以在发现模式时就能创建自己的模
式并应用之。
逆向工程
在当今的技术市场上,存在的压力一直是降低成本。成本降低可能包括升级现
有的系统,而不是构建新的软件。可能给开发者分配了这样的工作,即维护由一个
开发小组构建的软件,但该小组已经转到一个新的项目上。该项目可能没有什么文
档。
在这种情况下,建模工具的价值将是巨大的。开发者可以使用现有的代码,为
其创建模型,几乎马上就可以开始明白软件是如何创建的。这样可以节省开发者几
周的工作量,即便在变化相对较小的情况下,也可以做到这一点。
报告
在软件开发过程中,有许多时候需要生成自己工作的报告。你也许希望为高层
管理人员提供项目的高级情况概述。或者,你也许希望让股东评审一个里程碑。不
管原因如何,建模工具应提供高度定制的报告,该报告涉及到模型以及模型所表示
的源代码。
集成
最后,建模工具应当与其它的应用开发工具协调工作。建模工具应当与需求工
具无缝隙地集成在一起,这样设计师就能准确地看出打算构建的东西,当需求被追
踪到模型元素时,对这些需求进行核对。应当与分发到的应用服务器进行某种形式
的集成,或者至少与支持应用服务器分发的IDE进行集成。综上所述,建模工具应
当与你的源代码管理系统完全集成。
结论
为你的应用进行建模,有许多过硬的论据。不过,也有许多很好的反对观点。
这些反对观点总是强调维护应用模型所需的工作量。使用一个好的软件建模工具,
就不必为建模的弱点担忧。你将在沟通与效率方面获得巨大利益。
软件建模介绍 — 我们为什么需要建模工具?
Borland® 13
Made in Borland® 版权所有©2003 Borland 软件公司。保留所有权利。所有Borland 品牌以及产品名称均为Borland 软件公司在美国及其它国家的商
标或注册商标。所有其它标志是各自物主的财产。公司总部:100 Enterprise Way, Scotts Valley, CA 95066-3249·831-431-1000,公司网址:www.borland.com。
公司在澳大利亚,巴西,加拿大,中国大陆,捷克共和国,芬兰,法国,德国,香港特区,匈牙利,印度,爱尔兰,意大利,日本,韩国,墨西哥,荷
兰,新西兰,俄罗斯,新加坡,西班牙,瑞典,中国台湾,英国以及美国均设有代表处。20442。