UML 还有用吗?

在敏捷开发时代,uml还有没有必要去学习? 据说uml的最高境界是用uml图直接生成可执行软件!这个设想实在是太牛了,可能是未来智能语言的方向。其实像…
关注者
1,290
被浏览
947,399

135 个回答

「画图有用」不等于「UML 有用」。

也不要用反对二分法来抹稀泥。UML 本来就是一个边界明确的学究式标准化。对于这种打着实用性幌子,搞形式化 shit work 的行为,不用二分法一棍子打死绝不罢休。

这是 Uber 的架构师对 UML 以及其它「标准化」架构方法的评价

Let me start with a few things that might sound surprising.First, none of these designs used any of the standard software architecture planning tools.We did not useUML, nor the4+1 model, norADR, norC4, nordependency diagrams. We created plenty of diagrams, but none of them followed any strict rules. Just plain old boxes and arrows, similarthis one describing information floworthis one outlining class structure and relationships between components. Two diagrams within the same design document often had a different layout and were often added and modified by different engineers.
…… 不用任何标准化的软件架构工具。不用 UML …… 我们画了许多图,但是没有一个按照严格的标准绘制。只用最朴素的框图和箭头。……

UML本质上也是一种语言……就算画成图也是……


UML的问题在于,作为图型这货太复杂,作为语言这货没卵用,没有编译器和IDE支持或者说相较于程序设计语言支持就是个渣渣……


其实是一个很奇怪的东西,这货对于程序员来说,程序员会觉得画这玩意儿还不如写代码来生成这玩意儿。

对于非程序员的领域建模人员来说,这货的各种符号和箭头过于专业,很多东西与程序实现强相关与领域关系不大。在不同的领域所需要的东西又没有标准化……


就是个上不上下不下的东西……


你非说没用可能过于绝对,但就是个聊胜于无的东西,而且画图这玩意儿最看肚子里有没有货,把符号用的天花乱坠是没有用的……


====================================================


补充几点评论中讨论的:

我认为UML是不符合程序员思维的。

程序员的任务是用最简单最方便的方式把让计算机理解自己的意图。所以说,为什么高级前端开发人员很少用设计器?不是因为设计器不直观,而是因为写代码更快。如果你要直观的看到效果,打开浏览器就可以了……

这就是程序员的思维。

所以,我为什么要画图?画图不是最快表达我的想法的方式,写代码才是。代码和图是等价的,UML图形完全可以用一种类SGML语言或是JSON或者YAML语言来描述,而且写这种东西比拖拽UML图形更快。为什么没有出现这种东西?恰恰说明UML没用。

因为,有一种东西比UML表现能力更强,更通用,那就是代码。


大多数人印象中的代码可能是这样的:


但是代码当然也可以是这样的:

也可以长这样:



在程序员思维里面,这个图怎么显示好看,那是一个presentation的问题。这个图的部件怎么来的才是我架构设计的问题。

让图好看,完全可以写个Viewer来实现,所以我为什么要去纠结符号箭头以及摆放的问题呢?


对于程序员来说,UML类图本质上就是这么个玩意儿:

<class name="XXX">
  <inherit class="YYY" />
  <properties>
    <property name="ABC" type="MyType" />
  </properties>
</class>


回头一看,特么写这么蛋疼的东西为啥不直接写伪代码:

class XXX : YYY
{
  ABC : MyType
}


你说UML可以描述关联关系?喵喵喵?

class XXX : YYY
{
  #rel-type: ZZZ

  ABC : MyType
}


我为什么不画图?我写这么个东西给计算机去画图快多了啊……