这是Liu Junsong朋友给CSDN的来信,我转贴在此
----------------------------------------------
最近,在<<程序员>>杂志上发表了高展先生的一篇文章"UML的三大硬伤",认为它有"上不着天,下不着地,一盘散沙"的三大缺点,顿时一石激起千层浪,在网上有人激烈反驳"究竟是谁的硬伤?",详细的讨论信息在www.csdn.net网站上有具体的描述.
我看了双方的观点,觉得这个问题其实没有那么简单.
UML有没有用呢?有.有没有缺点呢,也有.UML毕竟只是人创造出来的一种特殊的语言而已,又怎么会是完美的呢,它有一些缺点不是很正常的吗?那么高展先生自己写文章来批评它,难道不也是很正常的一件事情吗?无论他的具体观点对也好错也好,都是属于一种学术上的正常讨论,又有什么关系呢?
我对高展先生的观点基本上是赞成的,但也不完全赞同.
UML在美国确实用的非常广泛,而用到中国确实处处碰壁,高展先生所描述的情况,虽然我没有亲眼所见,可是我认为这种情况确实是客观存在的.也就是说,在目前的情况下,完全采用UML来进行系统分析和描述,往往会产生"上不着天,下不着地,一盘散沙"的情况,最后把项目搞的一团糟.这种令人意外的情况的出现,不是偶然的,而是必然的.
考察产生这种情况的根本原因,恐怕和语言文化有关.美国的语言是英语,而中国的语言是中文.英语是一种表音的语言,主要是用来说的.而中文是一种表意的语言,主要是用来写的.当然还有一些其他的原因,但从根本上来讲,这两种语言是属于不同的语言体系,属于完全不同的两种语言.在这样两种不同的语言体系里面成长起来的人,他们的思维方式从整体上看,是有区别的.语言影响了人们在思维方式,生活方式,工作方式等各方面的不同,同样也影响到了计算机行业本身.
正因为英语是一种表音为主的语言,所以作为表达意思来讲,和中文相比,这种语言本身是有局限性的.那么在表达意思时,又应该怎么办呢?最后的解决方案就是采用图形来表达其含义,所以如果看外文原版的计算机图书,会发现其中有大量的插图,而外国公司所提供的各种培训,更是一个幻灯图片加一个幻灯图片,这些都是因为不使用图片,意思的表述将难以进行,这是英语本身的局限性所在.而正是出于这种考虑,美国的各个公司才推出UML这种语言,因为英文的描述太容易产生歧义,为了消除歧义,干脆大家都用标准的图形方式来进行交流好了,这样不就没有歧义了吗?说真的,他们也确实做到了,因为对于图片来研究所产生的歧义,比用语言来交流产生的歧义,要小得多.另外的一个原因就是计算机系统在美国已经存在很长时间了,普通人对于它并不神秘,所以也很容易接受和理解为什么要使用这种图形化的方式来构建系统的模型,在这种情况下,UML被广泛的使用,被广泛的认同,也就不足为奇了.
而在中国,目前的情况是完全相反的.对于设计人员来说,他们往往考虑不到用户对于UML的陌生,也不愿意承认自己对于UML的陌生,而只是在压力之下被动的去使用UML作为建模语言进行分析,按部就班,循规导距,只知道UML是什么,该怎样来做,却不知道为什么要这样来做,知其然而不知其所以然,最后拿出来的设计方案,用户不明白,程序员也不明白,自己明白不明白也不知道.而这个问题往往被人忽视,被人掩盖起来,等到问题暴露出来以后又不知所措,不知道问题是出在那个地方.最后就会出现三大硬伤所描述的现象.
那么,应该怎么办呢?我认为,在采用UML进行建模时,应该考虑到中国目前软件人员和用户对于UML的陌生和不解,增加他们对于UML的认识,在适当的时候进行一定的妥协,放弃其中一些确实令人迷惑的部分,只选用其中可以被人理解的部分,将结构化的分析方法和面向对象的分析方法结合起来,将UML的分析设计原则,和项目的具体情况结合起来,这样完成的分析设计,才能够被客户所认同和接受,这样完成的设计文档,才是真正有实际意义的文档,才可以去知道程序员进行编程.
还是那句话,软件所反映出的矛盾和问题,其实是人与人之间的矛盾和问题,UML在美国受到广泛欢迎,而在中国则受到怀疑,问题并不是出在UML本身上,而是出在两个国家的环境不一样上.套用毛主席的名言,不考虑中国的具体环境,盲目推行UML,是犯了教条主义的错误;而一味强调中国的特殊情况,完全拒绝,否定外国的先进经验,则是犯了经验主义的错误.UML的先进理论,必须与中国软件发展的实际情况相结合,才能够真正地发扬光大,发挥出越来越大的作用.