频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

感悟UML中的禅理

作者: 王海鹏 出处:软件世界 2007-02-25 13:59    砖    好    评论   进入论坛
阅读提示:本文是作者明白UML存在的意义的心路历程,得出UML是:说不可说之说。“释迦四十九年说,未曾说着一字。”佛曰:不可说。明明不可说,偏又说了那么多。您同意他的看法吗?

UML来做一些设计时,开发人员会觉得自己好像不会写程序了。的确用UML降低了开发效率,好处却并不显见。于是我们看到了在教科书中大量地采用UML,看到了用UML解释别人的系统设计。

笔者是从C++开始学习面向对象程序设计的,并被IO流和Borland Turbo Vision这样的OO设计所折服,惊叹于OO编程的优雅,于是致力于学习OO编程。

当我自以为在OO编程上小有心得时,在网上看到了关于UML的介绍。开始了解UML时,我的心情是复杂的。原来软件是这样设计出来的?如果真像Booch所说,那么我们一直在造狗窝,一直不知道怎样造大厦?于是有了学习UML的冲动。但是随着学习的深入,产生了新的问题。UML很难掌握,尽管有“精通UML”之类的书。仅以用例图来说,曾在BBS论坛上遇到无数的人不知道怎样合适地画用例图。UML不但难掌握,而且很“肤浅”——它只是一种表示法而已。它只是一种语言,而用这种语言说出的话到底水平如何,显然取决于说话人的其他素养。

UML和OO思想哪个重要?没有OOA/OOD的深厚功底,学UML有何用?当我试着用UML来做一些设计时,觉得自己好像不会写程序了。用UML降低了我的开发效率,好处却并不显见。另外还有一些其他的问题也在困扰着我,例如:如何以用例驱动的方式设计一个类似Swing这样的类库?为什么书上的例子举来举去都是ATM机?为什么这么多优秀的开放源代码软件,几乎没有声称是以这种方式来设计开发的?我置疑是否这种方式真的有价值。

语言甚至会束缚思想。维特根斯坦应该是持这种观点的。奥威尔在他的名著《1984》中有一段描述,说明“新话”对思想的控制。UML1.x的版本对实际可能的设计做了许多简化,使我对UML有一种“新话”的感觉。我头脑中,曾一度把UML与“符号暴力”相联系。

据说Kent Beck从来不画UML图,最多画点简单的CRC卡片,经常是直奔编码而去。但很多人都不怀疑他是位优秀的OO设计师。于是我大部分时间思考的都是测试驱动,依赖注入,代码即设计这类问题,与UML渐行渐远。

机缘凑巧,我读过一点佛经和故事。给我留下很深印象的是,禅宗六祖惠能是不识字的。禅宗的十六字心传是“教外别传,不立文字。直指人心,见性成佛”。而正是这位不识字的六祖,要求“不立文字”的大德,他的讲稿被整理成了唯一一部由中国人写的被称为经的佛教典籍——六祖坛经。非常矛盾的一件事。坛经记载,惠能还未出家时,听到有人读《金刚经》,“惠能一闻,心明便悟”。这就是“籍教悟宗”。六祖之后,禅宗进入“不立文字”的无字禅时代。视语言为障道之本,视读经为磨砖成镜。然而没有文字终究不便,到了北宋,由于禅宗灯录的大量刊行,参究公案之风日盛,文字禅由之而起。“不立文字”之禅变成了“不离文字”之禅。

忽然间我仿佛明白了UML存在的意义:说不可说之说。“释迦四十九年说,未曾说着一字。”佛曰:不可说。明明不可说,偏又说了那么多。

以前曾经认为,设计OO系统掌握住一个要点就行,即“道法自然”。然后就是“运用之妙,存乎一心”。在这个理论结构里,似乎是没有UML存在的位置。毕竟“道可道,非常道”。但是佛经给了我启发,这些经书在翻来覆去花了很多力气讲一些本来讲不明白的东西。“不立文字”,是“说不得”;“不离文字”,是“说不得的东西如何去说”。对于这种难以言说的东西,人们常常采用寓言或发生在别人身上的故事来说明,即把抽象的道理形象化地释出。

UML所做的正是相同的事,于是我们看到了在教科书中大量地采用UML,看到了用UML解释别人的系统设计。也许我们能通过学习教科书中的UML和别人设计的UML实现“籍教悟宗”。

UML也是一种想像力的培训,让您在一切都还没有的时候,生动地想象出系统将来的样子。一个伟大的设计师,必是具有超凡想像力的人。UML是渡河的筏,对于已在河对岸的人,自然不需要;对于未渡而想渡的人,却是非常需要的东西。此时我的感觉就是:“向来枉费推移力,今日自在水中行。”

名词解释

什么是UML?

统一建模语言(Unified Modeling Language)是一种用于描述、构造软件系统以及商业建模的语言,综合了在大型、复杂系统的建模领域得到认可的优秀的软件工程方法。

(责任编辑 火凤凰 sunsj@51cto.com  QQ:34067741  TEL:(010)68476636-8007)


关于 UML
专题
UML统一建模语言
初探敏捷开发
WCF开发基础
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81120次)
·UML类图详解 (查看72587次)
·C++是垃圾语言?! (查看42719次)
·C#技术开发指南 (查看40290次)
·UML统一建模语言 (查看39225次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。