Подтвердить что ты не робот

Почему разработчики Ruby не используют UML?

Я всегда слышу о том, что UML используется в Java-проектах, но никогда в Ruby. Является ли это просто культурной разницей или нет необходимости в моделировании в разработке Ruby, потому что она является частью более гибкой культуры?

4b9b3361

Ответ 1

Очевидно, вы не можете обобщить это для всех, но программисты на таких языках, как Ruby и Python, как правило, менее привлекаются к крупным проектным документам и UML, потому что они рассматривают свой язык выбора как сжатый и выразительный, всегда необходимо. Там возникает ощущение: "Я мог потратить время и заговорить обо всем этом в UML... или я мог бы просто написать Python, который фактически реализует дизайн и выражает его на языке, который мне нравится читать, и много людей могут читать". Программы Java, как правило, чувствуют себя "тяжелее", чем их аналоги Ruby или Python - это часть дизайна языка.

Обратите внимание, что я не говорю, что это относится к вашему проекту или даже к тому, что оно истинно вообще в целом - это то, что я наблюдал в этих культурах программирования.

Ответ 2

Назовите меня сумасшедшим, но UML не для меня, независимо от стека приложений.

Ответ 3

(Обратите внимание, язык иногда помещается в щеку.)

Вероятно, одним из самых больших культурных различий является то, что Java часто используется в проектах с большим количеством программистов под руководством PHB, где дизайн системы высокого уровня осуществляется людьми с названием "архитектор программного обеспечения". В этих проектах люди в роли "архитектор программного обеспечения" часто генерируют большое количество документации (включая отношения UML и диаграммы состояний) на начальной стадии планирования проекта. Эти и другие артефакты документации, как ожидается, будут реализованы ордами не-архитекторов-программистов.

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

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

Ответ 4

Одна из очевидных причин заключается в том, что хорошо продуманные программы Ruby в значительной степени зависят от Mixins, которые AFAIK просто невозможно смоделировать в UML вообще. Я знаю, что Schärli и др. Разработали расширение для UML, которое может представлять черты, которые, учитывая тесную связь между Traits и Mixins, возможно, были бы адаптированы или просто повторно использованы для представления Mixins, но тогда это не UML.

Ответ 5

Это комментарий к вопросу о mixins. Mixins действительно можно легко смоделировать в UML, используя множество разных методов. Обычно используется множественное наследование, интерфейсы или стереотипы (или любая их комбинация). Выбор метода зависит от проекта и личного вкуса - не будем забывать, что основной причиной моделирования является преодоление сложности, лучшее понимание действительности и более эффективное общение, поэтому каждая модель должна соответствовать конкретной проблеме и аудитории. Модели, по определению, прагматичны и поэтому должны быть процессом их создания.

Не будем забывать, что UML расширяется с использованием профилей и стереотипов. Такой расширенный UML по-прежнему действителен UML.

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