Являются ли диаграммы классов UML адекватными для проектирования систем JavaScript?


23

Учитывая, что UML ориентирован на более классический подход к объектной ориентации, все же можно ли его надежно использовать для проектирования систем JavaScript?

Одна конкретная проблема, которую я вижу, состоит в том, что диаграммы классов, на самом деле, представляют собой структурное представление системы, а JavaScript в большей степени ориентирован на поведение, как с этим справиться?

Пожалуйста, имейте в виду, что я не говорю о реальной области мира здесь; это модель для решения, которого я пытаюсь достичь.


7
Многие из нас сказали бы, что UML не подходит для разработки чего-то действительно. Я считаю, что единственной ценностью во всем каноне UML является диаграмма последовательности. Каждая другая диаграмма UML, которую я пытался понять, была лучше объяснена на английском языке. Но это субъективно, что это такое.
Джимми Хоффа

1
@JimmyHoffa Я согласен в значительной степени. Особенно в современных IDE программист должен легко иметь возможность смотреть на объектно-ориентированный исходный код и получать ту же информацию (и даже больше), что изображена на диаграмме классов. Я могу представить диаграммы классов более полезными до того, как стали доступны современные IDE с подсветкой синтаксиса и автоматически созданными контурами. Диаграммы классов могут быть пригодны для изображения объектно-ориентированных структур людям, не имеющим опыта программирования, или в большом проекте, где у разработчика недостаточно времени, чтобы в устной форме объяснить дизайн всем.
Дэвид Качиньский

1
@JimmyHoffa Не могли бы вы порекомендовать несколько хороших книг или ресурсов по системам, смоделированным специально с использованием диаграмм последовательности? Я прочитал « Применение UML и паттернов», и он предоставил действительно хорошие примеры форм с использованием UML, а не просто объяснял схемы и синтаксис.
Сонго

@JimmyHoffa: Я почти согласен с вами, но не с диаграммами последовательности - потому что диаграмма последовательности IMHO не показывает ничего, что нельзя лучше выразить псевдокодом. Единственный тип диаграмм, который реально используется для меня - это диаграммы потоков данных, которые не являются частью UML.
Док Браун

@ Достаточно справедливо, давайте просто согласимся, что изучения UML следует избегать, и, скорее, чтение strunk & white должно его заменить :)
Джимми Хоффа

Ответы:


18

Похоже, вы спрашиваете две разные вещи

  • Можно ли использовать UML для изображения систем JavaScript?
  • Можно ли использовать диаграммы классов для изображения систем javascript?

Имейте в виду, что UML включает в себя множество типов диаграмм , в частности ветвь диаграмм поведения, включая диаграммы последовательности и сценариев использования. Такие диаграммы специально решают вашу проблему моделирования javascript как языка, управляемого поведением.

Вполне возможно, что система javascript не использует объектно-ориентированный дизайн. В таком случае диаграммы классов, вероятно, не будут уместны, как вы указали. Однако, поскольку javascript поддерживает объектно-ориентированное проектирование, диаграммы классов могут эффективно изображать систему с использованием javascript. Это действительно зависит от того, как используется JavaScript.


5

Ваш ответ скрыт в вашем вопросе:

Одна конкретная проблема, которую я вижу, состоит в том, что диаграммы классов на самом деле являются структурным представлением системы, а javascript в большей степени ориентирован на поведение, как вы можете с этим справиться?

Посмотрите на методы BDD (разработка на основе поведения) и выберите инструменты, которые соответствуют вашим потребностям проектирования.

Связанное обсуждение, которое может оказаться полезным для просмотра - Как писать истории / сценарии в BDD . И очень полная статья из журнала Code - Behavior-Driven Development

PS: В целом, UML represent general types of behaviorоднако, он все еще может быть использован для моделирования вашего дизайна с правильным набором выбранной категории (например, диаграмма последовательности).I would reference the Wikipedia and find the right UML diagram category to use.


Кажется, это определение проблемы или подход к управлению развитием. Я на самом деле говорил о дизайне более низкого уровня, ближе к решению.
Хулио Родригес

4

Была проделана работа по адаптации веб-приложения к UML, которое называется расширением WAE, и есть книга Джима Коналена «Создание веб-приложений с использованием UML», подробно объясняющая это. Вы можете увидеть переменные и функции JavaScript в диаграмме классов.

Почему я считаю, что это лучший вариант для моделирования веб-приложений? Потому что все знают, как работает диаграмма классов, и это самое близкое к ней. Это очень легко понять, и программисты слишком ленивы, чтобы читать документацию словами, но смотреть на диаграмму не так уж и сложно;). Однако, если вы хотите увидеть, что происходит при выполнении, вам следует искать диаграмму последовательности, потому что в веб-приложении файлы иногда генерируются динамически.

Диаграмма, сгенерированная пакетом node.js "wavi"


3

Существуют также модели поведения в UML, которые можно использовать для отображения поведения системы, например диаграммы последовательности или диаграммы состояний.


1

Да, вы можете использовать UML, в особенности диаграммы последовательности .

Что касается использования диаграмм классов , это зависит от того, разрабатываете ли вы свое приложение с использованием принципов объектно-ориентированного проектирования или нет. Если у вас есть только несколько JavaScript-функций, диаграммы классов мало что добавляют. Если вы используете прототипы объектов JavaScript для имитации своего рода классов, эти диаграммы будут полезны.

Основываясь на своем опыте разработки внешних интерфейсов Javascript в UML, я написал официальный документ на эту тему: Технический дизайн в UML для приложений Angular .


0

Кажется, вы можете использовать UML для JavaScript, но это будет зависеть от того, как вы собираетесь подходить к своей работе.

В частности, JS / UML может автоматизировать документацию UML для JSDoc, Dojo, YUI.

Я предполагаю, что есть еще что-то, но больше ничего не сталкивалось.


как это отвечает на заданный вопрос?
комнат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.