UML类图是否足以设计JavaScript系统?


23

鉴于UML面向面向对象的更为经典的方法,它仍然可以以可靠的方式用于设计JavaScript系统吗?

我可以看到的一个具体问题是,实际上,类图是系统的结构化视图,而JavaScript是更多由行为驱动的,那么如何处理呢?

请记住,我在这里不是在谈论真实世界;这是我要实现的解决方案的模型。


7
我们许多人会说UML不足以设计任何东西。我认为,在整个UML规范中,唯一的价值就是顺序图。我尝试理解的所有其他UML图都用英语进行了更好的解释。但这是主观的。
Jimmy Hoffa 2012年

1
@JimmyHoffa我在很大程度上同意。尤其是对于现代的IDE,程序员应该能够轻松查看面向对象的源代码并获得与类图中所示相同的信息(甚至更多)。我可以想象在使用语法高亮显示和自动生成的轮廓的现代IDE之前,类图会更有用。类图可能适合于向没有编程经验的人或在大型项目中开发人员没有足够的时间向所有人口头解释设计的情况下描述面向对象的结构。
大卫·卡钦斯基

1
@JimmyHoffa您是否可以推荐一些专门针对使用序列图建模的系统的书籍或资源?我读了《Apply UML and Patterns》,它实际上提供了使用UML的非常好的示例形式,而不仅仅是解释图和语法。
Songo 2012年

@JimmyHoffa:我几乎同意你的观点,但不同意序列图-因为恕我直言,序列图没有显示什么不能用伪代码更好地表达。唯一对我真正有用的图类型是数据流图,而这些都不是UML的一部分。
Doc Brown

@DocBrown相当公平,让我们同意应该避免学习UML,而应该读一读书呆子和白人的书:)
Jimmy Hoffa

Answers:


18

听起来您在问两个不同的问题

  • 可以使用UML来描述javascript系统吗?
  • 可以使用类图来描述javascript系统吗?

请记住,UML包括许多类型的图,特别是行为图的一个分支,包括序列图和用例图。此类图专门解决了将javascript建模为行为驱动语言的问题。

JavaScript系统很可能没有使用面向对象的设计。如您所指出的,在这种情况下,类图可能不合适。但是,由于javascript确实支持面向对象的设计,因此类图可以有效地描述使用javascript的系统。这实际上取决于如何使用javascript。


5

您的答案隐藏在您的问题中:

我可以看到的一个具体问题是,实际上,类图是系统的结构化视图,而javascript是更多由行为驱动的,那么如何处理呢?

查看BDD(行为驱动的开发)技术,然后选择适合您设计需求的工具。

您可能会发现对您有用的相关讨论- 如何在BDD中编写故事/场景。以及《 Code》杂志上非常全面的文章- 行为驱动开发

ps:通常,UML represent general types of behavior它仍然可以用于使用正确的一组选定类别(例如顺序图)对您的设计进行建模。I would reference the Wikipedia and find the right UML diagram category to use.


这似乎是一种问题定义或开发管理方法。我实际上是在谈论更接近解决方案的较低级别的设计。
朱利奥·罗德里格斯

4

已经进行了使Web应用程序适应UML的工作,该应用程序称为WAE扩展,Jim Conallen有一本书名为“使用UML构建Web应用程序”,对它进行了详细说明。您可以在类图中看到JavaScript的变量和函数。

为什么我相信它是对Web应用程序建模的最佳选择?因为evrybody知道类图的工作原理,所以这是最接近它的事情。它非常容易理解,程序员懒于阅读文字文档,但是查看图表并不难;)。但是,如果要查看执行时发生的情况,则应查找序列图,因为在Web应用程序中,有时文件是动态生成的。

由node.js包“ wavi”生成的图


3

UML中也有行为模型,您可以使用它们来描述系统的行为,例如序列图或状态图。


1

是的,您可以使用UML,尤其是序列图

关于类图的使用,这取决于您是否使用面向对象的设计原理来设计应用程序。如果只有一堆JavaScript函数,则类图不会增加太多。如果您使用JavaScript对象原型来模拟一种类,那么这些图将很有用。

基于我在UML中设计Javascript前端的经验,我写了一份有关以下主题的白皮书:Angular应用UML中的技术设计


0

似乎可以将UML用于JavaScript,但这取决于您如何进行工作。

特别是JS / UML可以自动执行JSDoc,Dojo和YUI的UML文档。

我想那里还有更多,但是还没有碰到其他任何东西。


这如何回答所提问题?
蚊蚋
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.