`
caozuiba
  • 浏览: 922738 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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) 提到:

i read 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,那些客户会看吗?能看懂吗?
: ...................

分享到:
评论

相关推荐

    软件建模技术+UML

    软件建模技术+UML 软件软件建模技术+UML 建模技术+UML 软件建模技术+UML 软件建模技术+UML 软件建模技术+UML软件建模技术+UML软件建模技术+UML软件建模技术+UML软件建模技术+UML软件建模技术+UML软件建模技术+UML...

    面向对象技术UML教程

    面向对象技术(Object-Oriented Technology,OOT)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题映射到计算机程序中。UML(Unified Modeling Language),统一建模语言,是面向对象设计和分析的一种...

    UML建模技术.pdf

    ### UML建模技术知识点详解 #### UML的基本概念与作用 **UML**(Unified Modeling Language,统一建模语言)是一种标准化的图形化建模语言,被广泛应用于软件工程和系统架构的设计过程中。UML的主要作用在于: - ...

    UML技术介绍与使用

    **UML技术介绍与使用** UML(统一建模语言)是软件开发中的一种标准化建模工具,用于可视化、规格化和文档化软件系统的设计。它通过一系列图形符号和图来表达系统的各种视角,包括静态结构、动态行为以及系统的需求...

    UML相关技术培训资料

    5. 易于学习和使用:UML的图形化表示使得非技术人员也能理解模型,提高了团队间的沟通效率。 6. 集成最佳实践:UML倡导以架构为中心、用例驱动、迭代增量的开发模式,这些都是软件开发成功的关键因素。 UML模型图...

    中南大学面向对象技术与UML(PPT格式)

    中南大学的这门课程“面向对象技术与UML”深入浅出地讲解了这两者,旨在帮助学生理解和掌握这些关键概念。 首先,我们要理解面向对象技术的基本概念。面向对象编程(Object-Oriented Programming, OOP)的核心是类...

    面向对象分析设计与UML》讨论题

    **面向对象分析设计与UML**课程是计算机科学与技术专业的重要组成部分,它旨在为学生提供面向对象软件开发的基本理论和技术。这门课程强调了以下几个方面: 1. **面向对象的概念**:解释面向对象编程的基础概念,如...

    UML设计核心技术(PDF完整版)

    **UML设计核心技术详解** UML(统一建模语言)是一种通用的、直观的建模语言,用于软件工程中的系统分析、设计与可视化。作为面向对象设计的核心工具,UML帮助开发者以图形化的方式表达软件系统的结构和行为,提高...

    时代新潮流:UML Programming Guide设计核心技术

    《时代新潮流:UML Programming Guide设计核心技术》这本书将引导读者掌握UML的使用技巧,深入理解设计模式,提升软件开发的专业性和效率。通过书中详尽的案例分析和实践指导,读者将能够熟练地应用UML进行系统分析...

    《UML建模技术》讲义

    10. **第10章 UML面向对象分析与设计**:这一章将讨论如何使用UML进行面向对象的分析和设计,包括问题域分析、类与对象的抽象、接口设计、包组织等,为实际的软件开发提供指导。 通过这些章节的学习,读者将能够...

    UML技术手册_(pdg)

    《UML技术手册》是一本全面介绍统一建模语言(Unified Modeling Language,简称UML)的专业书籍,旨在帮助读者深入理解和应用这一强大的软件设计工具。UML是面向对象设计和软件开发过程中的标准图形表示法,它提供了...

    UML2.0 技术手册

    UML2.0 技术手册E文版

    uml使用手册(uml使用手册)

    **UML(统一建模语言)使用手册** UML,全称为Unified Modeling Language,是一种用于软件工程领域的图形化建模语言。它为软件开发者提供了一种标准化的方式来描述、可视化、构造和文档化软件系统的不同方面,包括...

    面向对象技术及uml建模实例

    面向对象技术是软件开发领域的一种主流方法论,它基于现实世界中的对象和它们之间的交互来构建复杂的系统。...因此,对于任何希望在软件开发领域有所建树的人来说,掌握面向对象技术和UML建模都是必不可少的技能。

    UML核心编程技术

    《UML核心编程技术》是关于统一建模语言(Unified Modeling Language)的深入学习资料,主要探讨了如何利用UML进行软件系统的设计和开发。UML作为面向对象设计的主要工具,为软件工程师提供了图形化的表示方式,使得...

    UML技术发展背景

    UML的本意是要成为一种标准的统一语言,使得IT专业人员能够进行计算机应用程序的统一建模,同时UML也是软件企业开发过程中必不可少的技术之一。

Global site tag (gtag.js) - Google Analytics