Одна из самых требовательных задач для любого программиста, архитектор понимает код других.
Например, я - подрядчик, нанятый для спасения некоторого проекта очень быстро. Исправьте ошибки, запланируйте глобальный рефакторинг, и поэтому мне нужен самый эффективный способ понять код. Каков список понятий, их приоритета и лучших инструментов для этого?
Из того, что я знаю: разработка обратного кода для создания объектных моделей (создание схемы на пакет не так удобно), создайте диаграммы последовательности (подключения инструмента в режиме отладки к системе, и генерирует схемы от времени выполнения). Некоторые методы визуализации, с помощью некоторых инструментов для работы не только с .java
но также и с, например. JPA
конструкторы как Hibernate
. Генерируйте схему для не вся кодовая база, но добавьте некоторый класс и затем классы, используемые им.
Состояние Архитектора Is Sparx Enterprise в инженерном анализе или далекий от этого? Какие-либо другие лучшие инструменты? Идеально был бы то, что инструмент заставляет меня понять код, как будто я записал это сам :)
В книге Шаблоны объектно-ориентированного реинжиниринга это подробно рассматривается. К сожалению, серебряной пули не прилагается: -)
Однако в нем перечислено множество полезных методов для переноса унаследованного кода.Вкратце
Я использую Enterprise Architect для всего UML (включая обратное проектирование с помощью Java), и он отлично работает.
Безусловно, самые важные инструменты - это ваши уши, ваш язык и гортань. Спросите людей, знакомых с кодом - они смогут помочь вам понять его общую архитектуру намного лучше, чем любые программные инструменты.
Автоматически преобразованные полные модели UML обычно почти бесполезны, потому что они не могут различать важные абстракции и детали реализации - в этом весь смысл таких моделей.
Программные инструменты более полезны для ответа на очень конкретные вопросы, когда вы исследуете детали, такие как «откуда вызывается этот метод?» или «какие классы реализуют этот интерфейс» - любая хорошая IDE сможет это сделать. Отладчики тоже могут помочь - размещение точек останова в ключевых точках кода и просмотр стека вызовов, когда они достигаются, часто очень поучительны.
Просто чтобы уточнить упоминание Майклсом хороших IDE, которые могут вам помочь:
Я часто использую следующие возможности Eclipse:
EclipseUML Omondo - лучший инструмент обратного проектирования Java. Он полностью меняет код Java, все пакеты и даже взаимодействие классов с интерфейсом, если они не находятся в одном пакете. Просто удивительно. Вы также можете перевернуть: - .class - аннотации спящего режима - аннотации JPA
Что мне нравится в этом инструменте, так это то, что мой код чистый, потому что вся информация о модели сохраняется в формате xmi, а не как тег в моем коде. Вы также можете создать небольшую документацию внутри каждого существующего пакета, используя диаграммы в качестве представления модели. Просто изумительно и в соответствии с официальной спецификацией uml 2.2. Единственная проблема в том, что это действительно слишком дорого , поэтому цена для меня остановка !!
Не извлекает архитектуры высокого уровня, но значительно упрощает обход вашего Java-кода: наш Браузер исходного кода Java . При этом читается исходный код (и вспомогательные файлы классов) и создается документация в стиле Javadoc, а также исходный текст с двунаправленной гиперссылкой на информацию Javadoc. (я один из руководителей).