为什么Ruby开发人员似乎不使用UML?

时间:2009-08-31 03:20:59

标签: ruby-on-rails ruby uml

我总是听说过在Java项目中使用UML但从未在Ruby项目中使用过。这只是一种文化差异,还是在Ruby开发中建模的需求较少,因为它是更“敏捷”文化的一部分?

5 个答案:

答案 0 :(得分:36)

显然你不能把它推广给每个人,但是像Ruby和Python这样的语言的程序员往往不太喜欢大型设计文档和UML,因为他们认为他们选择的语言简洁而富有表现力而不是总是必要的。有一种感觉,“我可以花时间在UML中绘制所有这些...或者我可以编写一些实际实现设计的Python,并用我喜欢阅读的语言表达它,很多人可以读。“ Java程序往往比Ruby或Python程序感觉“更重” - 它是语言设计的一部分。

请注意,我并不是说你的项目也是如此,甚至整体而言它都是真的 - 这正是我对这些编程文化所观察到的。

答案 1 :(得分:20)

叫我疯了,但无论应用程序堆栈如何,UML都不适合我。

答案 2 :(得分:14)

(注意,舌头有时放在脸颊上。)

也许最大的文化差异,一个是Java在项目往往使用大量的程序员,通过的PHB,其中高层次的系统设计是由人,标题为“软件架构师”做领导。在这类项目中,“软件架构师”角色中的人员通常会在项目的初始规划阶段生成大量文档(包括UML关系和状态图)。这些和其他文档工件预计将由大量非架构师程序员实现。

另一方面,Ruby是新的热点,因此更常被想要在其中编程的人选择。由于“架构师”是实施者,因此对复杂的前期文档的需求较少。实施者记下一些关于一般设计指南的注释,然后坐下来编程,而不是预先设计其他人进行编程。

这是不是说你不会建在Ruby或其他时髦的语言的项目在这里或那里找到一些零星的UML图 - 例如,当有人试图描述一个复杂的概念 - 但这样的事情如果你自己做这项工作,就不需要那么多了。

答案 3 :(得分:6)

一个显而易见的原因是精心设计的Ruby程序严重依赖于Mixins,而AFAIK根本无法用UML建模。我知道Schärli等人开发了一个UML的扩展,它可以代表Traits,因为Traits和Mixins之间的密切关系可能会被改编或仅仅用于代表Mixins,但那时它不再是UML了。

答案 4 :(得分:4)

这是关于mixins的答案的评论。 Mixins实际上可以使用许多不同的方法很容易地用UML建模。通常,使用多重继承,接口或构造型(或这些的任何组合)。选择方法取决于项目和个人品味 - 让我们不要忘记建模的主要原因是为了克服复杂性,更好地理解现实并更有效地沟通,因此每个模型都需要适合特定问题和受众。根据定义,模型是务实的,因此必须是创建模型的过程。

让我们不要忘记,UML可以使用配置文件和构造型进行扩展。这种扩展的UML仍然是有效的UML。

一般来说,UML比编程语言更具表现力和更少的限制性,所以如果某些东西可以用某种编程语言写下来,它也可以用UML完成。