[技术讨论]UML无用、误用还是务用

来源:互联网 发布:qq资源网源码 编辑:程序博客网 时间:2024/05/22 14:27

1、引言

在水木上昨天一个话题引起了一些对话,涉及到UML的使用问题,这里贴在下面,因为这个话题涉及到青润几年前的一篇文字,那篇曾经讨论非常的文字,因此链接先放在这里:http://blog.csdn.net/qingrun/archive/2005/03/15/320157.aspx

2、话题引发

下面是水木上第一个帖子(http://www.newsmth.net/bbscon.php?bid=126&id=69229)的对话:

☆─────────────────────────────────────☆
   darkelf9 (整理屋子) 于  (Tue Jan 12 19:42:21 2010)  提到:

【 以下文字转载自 CPlusPlus 讨论区 】
发信人: darkelf9 (整理屋子), 信区: CPlusPlus
标  题: 通过C++代码自动生成类的关系图
发信站: 水木社区 (Tue Jan 12 19:42:06 2010), 站内

正在看一个遗留工程

头大中

有没有什么工具,能够根据c++项目的.cpp/.h文件,生成这个项目用到的C++的类之间的
关系

例如A继承了B,B继承了C

哪个namespace下面有哪些类之类的东西

方便代码的阅读,

谢谢了




☆─────────────────────────────────────☆
   zhangmike (秦月) 于  (Tue Jan 12 20:24:44 2010)  提到:

青润,你的问题来了!
【 在 darkelf9 (整理屋子) 的大作中提到: 】
: 发信人: darkelf9 (整理屋子), 信区: CPlusPlus
: 标  题: 通过C++代码自动生成类的关系图
: 发信站: 水木社区 (Tue Jan 12 19:42:06 2010), 站内
: ...................


☆─────────────────────────────────────☆
   qingrun (青润) 于  (Tue Jan 12 22:28:05 2010)  提到:

晕倒,这就成了我的问题了?呵呵
用任何uml工具都可以做到,不管是源代码还是编译后的类文件,用反向工程,导入类到模型文件中,然后把类拖入到一张图上可以看到一些关联关系。
关于反向工程的具体操作步骤和过程,去搜索我的名字加上反向工程就可以查到几乎所有的注意事项,如果觉得不完整,就去看我写的那本书,上面介绍的很详细。
这类问题回答的太多了,真得没什么价值,搜索一下,网上肯定都有,至少五六年前我就给别人这样解答过。

【 在 zhangmike (秦月) 的大作中提到: 】
: 青润,你的问题来了!


☆─────────────────────────────────────☆
   zhangmike (秦月) 于  (Wed Jan 13 12:52:04 2010)  提到:

rose,together,ea等,几乎所有的uml工具都可以进行反工。
    --- 青润
有没有免费的UML工具,支持正反向工程都不错的?
在收费的UML工具中,哪几个划算些?


【 在 qingrun (青润) 的大作中提到: 】
: 晕倒,这就成了我的问题了?呵呵
: 用任何uml工具都可以做到,不管是源代码还是编译后的类文件,用反向工程,导入类到模型文件中,然后把类拖入到一张图上可以看到一些关联关系。
: 关于反向工程的具体操作步骤和过程,去搜索我的名字加上反向工程就可以查到几乎所有的注意事项,如果觉得不完整,就去看我写的那本书,上面介绍的很详细。
: ...................



☆─────────────────────────────────────☆
   qingrun (青润) 于  (Wed Jan 13 14:10:36 2010)  提到:

免费的我没怎么使用,starUML好像评价不错。
因为ea,国产的trufun都给我有最完整版本的授权,rose是使用最熟练的工具,所以,这几个我用的比较多一些。
01年我参加分析Jboss代码的时候,就是用rose进行的代码反工(当时jboss没有提供可作分析的源代码),最后完成了appserver和webserver连接部分的全部代码设计,可以用于任何webserver与jboss的连接。
【 在 zhangmike (秦月) 的大作中提到: 】
: rose,together,ea等,几乎所有的uml工具都可以进行反工。
:     --- 青润
: 有没有免费的UML工具,支持正反向工程都不错的?
: ...................



☆─────────────────────────────────────☆
   timshaw (写啥呢?真矛盾) 于  (Wed Jan 13 20:14:19 2010)  提到:

话说我还从来没用过这类代码反向工具,看的代码太少了,泛而不精。
不过就我接触过的很多人好像大多没用过
记得当年试用过rose,那还是想学uml的时候,后来对uml无爱(应该是我接触到的项目都比较小的缘故),就再也没有碰过rose,together之类的东东了。

【 在 qingrun (青润) 的大作中提到: 】
: 免费的我没怎么使用,starUML好像评价不错。
: 因为ea,国产的trufun都给我有最完整版本的授权,rose是使用最熟练的工具,所以,这几个我用的比较多一些。
: 01年我参加分析Jboss代码的时候,就是用rose进行的代码反工(当时jboss没有提供可作分析的源代码),最后完成了appserver和webserver连接部分的全部代码设计,可以用于任何webserver与jboss的连接。



☆─────────────────────────────────────☆
   qingrun (青润) 于  (Wed Jan 13 21:04:39 2010)  提到:

我01年初开始用rose的时候也不感兴趣,不过,过cmm3的时候要求必须用,那一个项目下来让我感觉到的确有些不同,此前我也就是用他反工一下代码作分析用一下,也就是那个appserver项目的内容。
此后开始自己主动的看,硬着头皮把UML Concept翻了两遍,再项目中进行一些实验和操作,才出来的。
大小项目都可以用,只有你熟悉了,才能发现一些捷径,不熟悉的时候,都会觉得不好用的。呵呵
06年ivar来中国前有一场争论,我当时发了一篇文字《精通它,才能毁灭它》就是针对当时甚至现在都有的一种论调:uml无用论,写的。呵呵。

【 在 timshaw (写啥呢?真矛盾) 的大作中提到: 】
: 话说我还从来没用过这类代码反向工具,看的代码太少了,泛而不精。
: 不过就我接触过的很多人好像大多没用过
: 记得当年试用过rose,那还是想学uml的时候,后来对uml无爱(应该是我接触到的项目都比较小的缘故),就再也没有碰过rose,together之类的东东了。



☆─────────────────────────────────────☆
   timshaw (写啥呢?真矛盾) 于  (Wed Jan 13 21:47:04 2010)  提到:

iread that artical you mentioned, and i give it an e name:<hack it,before you crash it> . the case at the end is very intersting. ^_^

【 在 qingrun (青润) 的大作中提到: 】
: 我01年初开始用rose的时候也不感兴趣,不过,过cmm3的时候要求必须用,那一个项目下来让我感觉到的确有些不同,此前我也就是用他反工一下代码作分析用一下,也就是那个appserver项目的内容。
: 此后开始自己主动的看,硬着头皮把UML Concept翻了两遍,再项目中进行一些实验和操作,才出来的。
: 大小项目都可以用,只有你熟悉了,才能发现一些捷径,不熟悉的时候,都会觉得不好用的。呵呵
: ...................



☆─────────────────────────────────────☆
   qingrun (青润) 于  (Wed Jan 13 22:22:32 2010)  提到:

换过去说吧,这里就先结束。

 

3、话题深入

第二个帖子的对话:

发信人: timshaw (写啥呢?真矛盾), 信区: SoftEng
标  题: 咱讨论讨论UML吧
发信站: 水木社区 (Wed Jan 13 21:31:13 2010), 站内

记得2年前看过一期it经理,上面有篇雅克波森写的文章,里面有句话大意是说:"有些人认为UML走到尽头了,但是出人意料的是,UML活的还挺滋润的。"
这里,有些人认为uml要死的理由都有哪些?这里我想说说自己粗浅的感想

我没接触过大的项目,也没怎么用过uml工具,实际上我去待过的几家公司,我门开发人员都很少用uml交流,基本上也只有在以前部分老员工留下来的文档中才能见到一点点uml图。有些是在技术文档中,而我也曾在有些需求文档里找到UML图(用例图序列图等),说实话,连我们这些开发人员都不怎么去看uml,那些客户会看吗?能看懂吗?

刚才说到我对uml用的不多,我自己分析了以下原因,是发现很多时候uml的那些概念在现在来说是相当的基础和普通了,他们的精髓已经融到我们日常工作中而可以抛弃那些图框等皮囊。进一步考虑,uml的这些在我们做需求分析和系统建模的时候已经不见得有好的效果了,很多团队都有自己一套或者多套模型,比uml的那些概念更精细更具体,因此也显得更实用。一个不大恰当的比喻,就好比虽然java有他的语法,但是我们多数团队还是有自己的编码规范,一个是防御性的,一个是积极主动也更有效的。一般团队都有自己擅长的技术或者用的比较好的框架,这些东西背后可能都有自己的概念模型,团队内部用这些概念来沟通,其效率怕是比用uml折腾高得多。
上面我说很多技术都有自己的概念模型,我没仔细敲过马丁大叔的DSL定义,我习惯把这些某方面自成体系的概念叫做DSL。比如工作流方面的界面方面的那些概念,我们每个团队都可以敲定应用各模块,各个层面上的DSL。相比UML,使用这些DSL交流起来更通畅些。

那么为什么uml还如雅克波森说的活得仍然很滋润呢,我只能猜测了。大型项目不是弱若我者所能想象的,为了达到更好的效果只能用uml,因为有太多的东西要交流,有太多的人参与沟通,这些人这些事他们的背景/上下文是各式各样的,为了应对这种复杂性,只能采用更保守的UML。正如我们所看到的一样,uml经常用在书籍中,因为书籍面向的受众也有这种既广且杂的特点。

大家发表一下看法?你对uml熟吗经常使用uml吗?你认为uml的未来如何?或者任何uml的话题,free style。

 

发信人: qingrun (青润), 信区: SoftEng
标  题: Re: 咱讨论讨论UML吧
发信站: 水木社区 (Wed Jan 13 22:36:54 2010), 站内

雅克波森?是Jacobson么?
还是那句话,如果你没有用过,就不要来讨论这个话题,因为这样的讨论对我来说是没有意义的,对你来说也许有用。
UML能成为标准,肯定是有它成为标准的历史和基础的,至于谁推动,如何如何,每个人都可以说出一套道理,但是,你是否真的有资格来批评一个已经存在的事物,是需要考虑的。
我不清楚你去过的几家公司是什么样子的公司,说实话,国内能够真正用起来UML的人的确很少,一个多星期前和人在社会招聘板块因为这个数据还发生过争执,就是那个说精通是什么什么的人,他也认为有很多人精通UML,而我觉得,国内能够用好UML的人可能也只有千为基数的统计数量。
当然,很多东西都可能会被淘汰,也可能会失去它的地位,被新的语言,新的方法所替代。如果非要讲求这个道理,那我们任何语言都不用学了。可是实际上,一个事物既然有了生存的基础,那就必然有它存在的土壤,以及这块土壤扩大或者缩小的机会,Borland一样有机会,只是他没有做好,最后走入了自己的深渊。
对于我这种工程设计人员来说,有下面几个理由让我是用UML:
1、我关心的事问题的有效解决,而不是我是否能做出一个新的标准来替代UML。
2、我已经付出了学习UML的代价,一则目前没有可替代UML的更好的标准,二则有了新的标准也未必就能立刻替代UML,而且学习新的标准(注意:这个标准目前还不存在)我还是需要付出代价,因此在我认为我付出的代价值得之前,我不会更换我原来的开发方法。
3、UML工具目前已经足够成熟,注意:是足够成熟,而不是十分成熟。因为在我是用的过程中,我认为他们都缺少很多可以成为工具使用更便利更有效的开发特性,这也是MDA等方法后来不了了之的主要技术原因。
4、软件工程本身涉及到方法论和过程论的配合,单一的方法论或者单一的过程论的应用都将会带来无尽的麻烦。
5、我目前倾向于减少文字描述,提高代码有效性,以及代码自身和注释配合以及工具协调之间的一种无文档开发方法论的形成——我基本上到去年中期可以认为我的这套方法已经接近完善了。
6、在没有更新的标准出来之前,目前的标准是值得学习的,因为,如果始终不用不学,等新的东西出来的时候,你也一样无法接受。一个早期BASIC的程序员如果不经历windows出现初期的开发工具的转换,目前基本上可以认定他已经不能继续作为一个程序员而存在了。
7,暂时没有了。
上面的内容也可以作为你选择是否要学习UML的一个评判标准。
而对于我来说,目前不是简单的UML学习或者使用的问题,而是在完善了我的这套方法论后,如何完善过程论的整体,以及最近几年研究的心态对抗问题、度量、绩效等方面的补充,所以,一般对于UML是否还需要学习,是否要淘汰的讨论我都是不参与的,没有兴趣,也没有时间。
关于我的方法论是否有人用,我可以明确说,虽然我已经很久不在公司任职,但是国内至少有十个以上的公司的技术总监级别的人参加过我的培训,他们也都在使用这套方法,并不断给我提供建议和补充,最近三年多的很多提升是在和他们的交流中实现的。


【 在 timshaw (写啥呢?真矛盾) 的大作中提到: 】
: 记得2年前看过一期it经理,上面有篇雅克波森写的文章,里面有句话大意是说:"有些人认为UML走到尽头了,但是出人意料的是,UML活的还挺滋润的。"
: 这里,有些人认为uml要死的理由都有哪些?这里我想说说自己粗浅的感想
:我没接触过大的项目,也没怎么用过uml工具,实际上我去待过的几家公司,我门开发人员都很少用uml交流,基本上也只有在以前部分老员工留下来的文档中才能见到一点点uml图。有些是在技术文档中,而我也曾在有些需求文档里找到UML图(用例图序列图等),说实话,连我们这些开发人员都不怎么去看uml,那些客户会看吗?能看懂吗?
: ...................

原创粉丝点击