Диаграммы классов UML так хороши? - PullRequest
1 голос
/ 30 июня 2011

Итак, я участвовал в нескольких исследовательских проектах с моим учителем, и он ЛЮБИТ UML диаграммы классов. После их использования для построения ОЧЕНЬ сложной структуры данных, хранящейся в базе данных (представляющей график, который может меняться в зависимости от физики реальной проблемы)

Я обнаружил, что UML не слишком хорош для использования, кроме как на начальных этапах. Я обнаружил, что с 5 людьми, мультидисциплинарными, UML будет создан. Затем, когда начнется программирование, UML должен быть изменен. Снова, снова, снова и снова ... Тогда случилось бы, что UML отстанет от прогресса проектов из-за требований, и тогда случится худшее, что может случиться ... Несвежие комментарии.

Другие люди чувствуют то же самое? Есть ли лучший инструмент? Со своим следующим проектом я решил пойти другим путем. Определите диаграмму потока для всех различных пользовательских взаимодействий. Затем программа запрограммирована так, как диктуют блок-схемы, а не как структура UML-диаграммы. Я обнаружил, что мне не нужно менять структуру ни одного, и новички понимают программу быстрее.

Является ли это хорошим подходом, когда размер программы превышает 30 тыс. Строк кода? 50k? 100k?

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

У кого-нибудь есть вход?

Ответы [ 4 ]

1 голос
/ 01 июля 2011

Диаграмма классов абсолютно волшебна, если вы используете ее с языком Java.Я могу моделировать, генерировать код, изменять мой код, реорганизовывать его, снова объединять с UML и т.д .;Никогда не проблема, всегда идеально обновленная документация.Для создания базы данных я использую Java-аннотации с Hibernate, который был создан из моей диаграммы классов.

Действительно круто! !!!

0 голосов
/ 02 июля 2011

Майкл,

Ваш учитель, кажется, до смерти от UML Fever ( Ссылка на статью ): -)

Многие люди имеют "неправильное" понимание UML. (Чтоэто так, а что нет)

UML - это просто стандартные графические обозначения, строки и т. д. .Визуальное моделирование с общими обозначениями может быть очень полезным, , но вряд ли это так же важно, как знать , как проектировать и мыслить в объектах.Такие знания по проектированию - это совсем другой и более важный навык, и не овладевают изучением UML-нотации или использованием инструмента CASE или MDA. Человек, не имеющий хороших навыков в области ОО-проектирования и программирования, который рисует UML, просто рисует плохие проекты. Применение UML и шаблонов: введение в объектно-ориентированный анализ, проектирование и итеративную разработку, третье издание, КрейгЛарман [ 1.6.Что такое UML?] )

А также имеет «неправильное понимание» при рисовании диаграмм UML (когда рисовать диаграмму и кто ее будет рисовать)

Полезные UML зарисованы опытными OO-программистами (в идеале парами на досках) в качестве помощи для творчества мысли и коммуникации , прежде чем они сами используют свои собственные эскизы * каквдохновение * во время программирования.... Что важно, так это возможность создавать хорошие проекты и программы для объектов - искусство OOA / D. Когда резина выходит на дорогу, и код должен быть сокращен, важно то, что наша способность назначатьответственность и создать дизайн с низким сцеплением, высокой связностью, понятностью и простотой модификации. Это очень отличается от знания диаграммной нотации, такой как UML. ( Крейг Ларман, Что такое UML, а что нет Ссылка на статью )

И многие люди думают, что в UML есть только одна диаграмма: (или только одна полезная диаграмма), которая является Диаграмма классов .Это также неправильно.

Название парадигмы: Объектно-ориентированное Моделирование / Проектирование / Программирование /. Не ориентированный на класс ... Диаграммы классов просто показывают статические отношения между вашими классами. Вы не можете понять истинно объектно-ориентированную систему, а просто смотрите на ее «статическую» структуру.

Структура времени выполнения объектно-ориентированной программы часто мало похожа на ее структуру кода .Структура кода заморожена во время компиляции;он состоит из классов в фиксированных отношениях наследования. Структура времени выполнения программы состоит из быстро меняющихся сетей взаимодействующих объектов. Фактически, эти две структуры в значительной степени независимы. Пытаться понять одно из другого - все равно, что пытаться понять динамизм живых экосистем из статической таксономии растений и животных и наоборот. [Шаблоны проектирования, элементы многоразового объектно-ориентированного программного обеспеченияЭрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес [Соотношение структур времени выполнения и времени компиляции]

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

Как правило: (очень простое, поэтому забытое правило)

Если вы рисуете диаграмму, у вас должна быть веская причина:Почему вы делаете это?Если у вас нет конкретного ответа (ответ должен показывать реальную выгоду), ничего не рисуйте.Моделирование не является документальным занятием. И ешьте собачью еду.Рисуй для себя, а не для других.

0 голосов
/ 30 июня 2011

Многие разработчики думают, что делают дизайн / модель, в У.М.Л. или другой, останется. Менять диаграмму очень часто. Некоторые разработчики пропускают обновление диаграммы после первоначальных версий из-за ограничений по времени и ресурсам.

Я предлагаю вам привыкнуть к идее создания программного приложения. Это сложный процесс, и он будет меняться очень часто, а не как здание, в котором архитекторы создают свой UML («чертеж»), и как только программа («строит») будет разработана на основе этого UML, она останется такой.

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

И, честно говоря, здания и их чертежи тоже меняются, возможно, не так часто, как программные приложения, но они делают.

0 голосов
/ 30 июня 2011

Мне лично кажется, что диаграммы классов UML лучше всего подходят для низкоуровневого проектирования.Лучше держать абстрактные детали дизайна высокого уровня ...

действительно нашел этот ответ UML Diagrams - Discussion довольно приятно.

...