Генерация диаграммы классов

Вот хорошая статья, объясняющая причину Почему глобальные переменные плохие

Почему следует избегать глобальных переменных, когда они не нужны?

Нелокальность. Исходный код легче всего понять, когда область его отдельных элементов ограничена. Глобальные переменные могут быть прочитаны или изменены любой частью программы, что затрудняет их запоминание или рассуждение о каждом возможном использовании. Отсутствие контроля доступа или проверки ограничений - глобальная переменная может быть получена или установлена ​​любой частью программы, и любые правила, касающиеся ее использования, могут быть легко нарушены или забыты.

Неявная связь - Программа со многими глобальными переменными часто имеет тесную связь между некоторыми из этих переменных и связь между переменными и функциями. Группировка связанных элементов в единые блоки обычно приводит к улучшению программ.

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

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

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

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

8
задан Stephane Rolland 3 January 2013 в 10:02
поделиться

9 ответов

Я настоятельно рекомендую BOUML . Его обратная поддержка Java абсолютно ROCK SOLID .

BOUML имеет много других преимуществ:

  • он чрезвычайно быстрый ( самый быстрый UML-инструмент из когда-либо созданных, проверьте тесты производительности ),
  • имеет надежную поддержку импорта C ++, Java, PHP и других,
  • многоплатформенный (Linux, Windows, другие ОС),
  • имеет отличную поддержку экспорта SVG, что важно, поскольку просмотр больших графиков в векторном формате, который быстро масштабируется, например, в Firefox, очень удобен (вы можете быстро переключаться между представлением "с высоты птичьего полета" и представлением сведений о классе),
  • он полнофункциональный, впечатляюще интенсивно разработано (посмотрите на историю разработки , трудно поверить, что такой быстрый прогресс возможен).
  • поддерживает плагины, имеет модульную архитектуру (это позволяет участие пользователей , похоже, Сообщество BOUML формируется)
8
ответ дан 5 December 2019 в 06:38
поделиться

Инструмент, который вы хотите использовать, - Doxygen . Он похож на Javadoc, но работает на нескольких языках. If выясняет зависимости и может вызвать graphviz для визуализации диаграмм классов. Вот пример нескольких классов Java, запускаемых через Doxygen .

6
ответ дан 5 December 2019 в 06:38
поделиться

Это больше набор инструментов, чем инструмент, и я сам не пробовал. Но это может быть отправной точкой. Использование UMLGraph , ant и GraphViz . Пошаговое объяснение: в этой статье .

3
ответ дан 5 December 2019 в 06:38
поделиться

Вы можете реконструировать диаграммы классов с помощью инструмента моделирования с открытым исходным кодом ArgoUML http://argouml.tigris.org/

2
ответ дан 5 December 2019 в 06:38
поделиться

Я использовал Visual Paradigm для UML для того, что вы хотели сделать, и это было неплохо.

Подробнее см. здесь .

Просто зайдите в Инструменты - > Мгновенный реверс и выбор пакетов.

2
ответ дан 5 December 2019 в 06:38
поделиться

Visual Paradigm для UML Standard Edition (или более поздней версии) будет преобразовывать файлы Java в диаграммы классов.

1
ответ дан 5 December 2019 в 06:38
поделиться

Думаю, если ваш босс просто хочет занять вас до начала следующего проекта, то в этом нет ничего плохого, но вы довольно быстро обнаружите, что создание диаграммы классов с 3500 классами скажет вам ровно НИЧЕГО о вашей системе. Фактически, вам не нужна диаграмма, содержащая более 10 классов. Итак, как только вы перевернули весь код в свой инструмент моделирования, вы захотите начать систематизировать и упорядочивать, чтобы найти смысл. Создайте новую диаграмму, перетащите на нее один важный класс и внесите все классы, которые напрямую связаны с этим классом. Повторите это, возможно, для 300 наиболее значимых классов. Не волнуйтесь, это не так ужасно, как кажется, может быть, неделя работы.

Для справки, мой любимый инструмент моделирования - Enterprise Architect от Sparx Systems . Он изменит исходные коды Java или файлы .jar. Существует бесплатная 30-дневная пробная версия.

1
ответ дан 5 December 2019 в 06:38
поделиться

Есть несколько инструментов, которые помогут вам создать эти диаграммы. Это стоит денег.

В противном случае вы могли бы попытаться проанализировать ваши файлы Java. Так же просто можно создать простой синтаксический анализатор, который читает файлы Java и записывает имя класса и все операторы импорта в файл и генерирует оттуда диаграмму классов. graphviz может вам в этом помочь.

0
ответ дан 5 December 2019 в 06:38
поделиться

Я использую Enterprise Architect несколько лет. Это мне предложил разработчик JBoss. Он очень хорошо работает для всех типов моделирования UML, включая обратное проектирование моделей классов (Java, C # и другие). Базовая версия в настоящее время стоит 120 долларов за рабочее место, но в ней есть большинство возможностей гораздо более дорогих инструментов, и ее гораздо легче освоить. Мне особенно нравится его способность генерировать документацию HTML и RTF.

Очень легко синхронизировать код между инструментом и вашим исходным кодом. Даже двунаправленный, если хотите.

Вашему менеджеру проекта могут также понравиться диаграммы активности и последовательности, которые он может создать. Я также часто использую схемы развертывания. Это'

0
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: