论坛首页 Java企业应用论坛

我们不需要UML了么?

浏览 31763 次
精华帖 (12) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2010-04-11  
gdpglc 写道
unsid 写道
"最后说一下Hashmap与Entity的问题该怎么处理,之前我也不知道怎么处理,后来上面的那位uml培训老师告诉我可以用uml 2.x中的组合结构图(Compostion Construction diagram)来表示复杂的类结构,例如java中的内部类和匿名类。
"

这点可能我孤陋寡闻,不过在设计时候,还有很多比Hashmap与Entity更细节的问题,可以通过扩充规范解决Hashmap与Entity的问题,但是UML规范始终是跟不上人们新的设计思路变化的。在实现代码的时候有很多精巧的设计,比如你把一个类设计成不可变类(类似String),你说这些算不算设计范畴?还真不能不算,你是通过充分分析这个类在并发环境下的风险。但是作为设计语言的UML更难触及这些问题,换言之你把UML给了一个实现人员,这个人员很难从中获得你要把这个类设计成不可变的信息。

所以我的观点是Hashmap与Entity,这种类型的问题他们是不可能用在UML中的,一个系统的设计UML仅仅代表了最最基础的一部分,是蓝图,有了UML你仍然什么都做不了。


   个人觉得软件开发是一个复杂的过程,从最初的对用户需求的调研到最终的功能落实为代码,UML要做的是建模,而不是什么都管。在整个软件开发过程中都可以使用UML,它不只限于用来做设计的。
  
   我不认为UML是一个万能的符号语言,用来记录软件设计中的细节,如果这样,做多少它都不够。细节完全可以用自然语言或者代码来表达,而隐藏在代码和细节背后的模型,才需要UML。

你举的例子其实和我下边的问题的实质是一样的:

为什么UML画完之后是不可执行的呢?

对于设计来说:UML是用来表达软件背后的思想的,是用来表达软件的骨架的,画UML图最忌讳的就是大而全的图 。如果UML能用来刻画软件执行的每一个细节,又何需代码人员将它转化为代码?

你说这些,好象你认为开发是:设计人员用uml事先把什么都定好,然后给开发人员开发的。在这一样个开发过程里,首先不是UML对不对的事,我想首先是这样行不行得通的问题?难到设计人员什么都要替开发人员事先把怎么做想好?就算这样行, 这种分工,面对的主要挑战将是交流,而你把交流的责任全部推给UML,把交流的问题怪在UML上,有点偏激吧!


我觉得你的说法很有道理,我也这么想过,我只是很想从别人嘴里也听到这些东西。

我觉得基本可以认定这点“只要设计做的好,过程做的好,最终装配(实现者)的能力不重要”这点在制造业适用在软件行业不适用,按照你的说法,“不可变类”应该属于实现者该思考的问题,如果不做这样设计可能会对系统造成很大损伤,所以实现者能力依然决定项目是否成功,尽管设计的到位依然存在失败的风险,在软件开发团队中每一个人都很重要,这也是为什么软件业的优秀团队比其他行业更难组建的原因。
0 请登录后投票
   发表时间:2010-04-11  
敏捷的核心理念之一就是: Adapting (适应)。

根据实际需要来决定UML是否对自己的项目有帮助。不过我个人感觉有时UML还是非常有用的。
0 请登录后投票
   发表时间:2010-04-11   最后修改:2010-04-11
if eles if else for while
画结构化的流程图大家应该都见过了。
相信大家也都应该画的不错


面向对象。。。。。
这利器一出。。。。。
再让你画个结构化流程图
根本没有用。。。。。。。

之后就有了UML
但用的人太少了
我学会之后全还大学老师了。。。。
0 请登录后投票
   发表时间:2010-04-11  
讨论到这个程度,我觉得不那么纠结了。

关于开源项目为什么找不到UML图的问题我不认为是上面某位朋友说的“apache有选择地发布文档,便于管理”,我觉得他们就是压根不画,他们是哪种喜欢用高质量代码直接说明问题的人。
0 请登录后投票
   发表时间:2010-04-12  
其实从OO来说,数据库表字段跟类中属性基本能对应。
所以维护数据库表结构关系,有个数据库表结构关系图看看就很明晰了。

pd12用的比较多,基本就是看表机构关系

不过还有个borland的architecture together这个用来生成数据库表结构文档,效果更好
0 请登录后投票
   发表时间:2010-04-12  
其实这个问题换个问法就清楚了。

我们不需要建模了吗?

显然建模是需要的,即然如此,UML就是一个不错的选择。
0 请登录后投票
   发表时间:2010-04-12  
gdpglc 写道
其实这个问题换个问法就清楚了。

我们不需要建模了吗?

显然建模是需要的,即然如此,UML就是一个不错的选择。


我明显不是想说的这个,谁都知道需要建模,我是在质疑uml对建模有多大贡献,其实写的好地代码自己就给自己建模。
0 请登录后投票
   发表时间:2010-04-12  
unsid 写道
gdpglc 写道
其实这个问题换个问法就清楚了。

我们不需要建模了吗?

显然建模是需要的,即然如此,UML就是一个不错的选择。


我明显不是想说的这个,谁都知道需要建模,我是在质疑uml对建模有多大贡献,其实写的好地代码自己就给自己建模。

你可能是想说,用代码进行建模行不行?
你要知道,需求调研、分析、设计、这时都是不会写代码的。代码并不是建模语言。
0 请登录后投票
   发表时间:2010-04-12  
很多开源软件开发参考文档仍然都是收费的,不公开uml,序列图更大可能是这个价值更高
写到大几千行代码,靠脑子已经很难维护代码,多好的代码都一样。越好的代码越颗粒化,以平均40行一个函数,1w行原始代码就会达到近250个函数,撇掉属性,到了十几w行谁还能光拿代码说话,造火箭的难道能牛逼到拿电路说话
0 请登录后投票
   发表时间:2010-04-12  
ppgunjack 写道
很多开源软件开发参考文档仍然都是收费的,不公开uml,序列图更大可能是这个价值更高
写到大几千行代码,靠脑子已经很难维护代码,多好的代码都一样。越好的代码越颗粒化,以平均40行一个函数,1w行原始代码就会达到近250个函数,撇掉属性,到了十几w行谁还能光拿代码说话,造火箭的难道能牛逼到拿电路说话

赞同。
光看代码我们很难一下子看出类之间的关系,采用的模式。
数据库er图能看出实体关系,1对多,多对多之类,uml里的类图比er图稍微全面一些。
状态图,序列图,对理解设计意图帮助很大的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics