2009-04-28 4 views
4

Я столкнулся с Lattix для анализа архитектуры, исследуя код. Он поддерживает C/C++, Java, .Net и т. Д. Можно определить определенные правила для поддержки определенной архитектуры. Инструмент может отмечать любые нарушения во время сборки.Инструмент анализа архитектуры Lattix

Кто-нибудь использовал этот или любой другой подобный инструмент? Я вижу некоторую выгоду от этого инструмента в разработке, но не уверен, что этот инструмент должен иметь?

ответ

0

NDepend - очень полный инструмент для анализа архитектуры программного обеспечения для .Net-программ. Этот вид инструмента очень удобен для отслеживания зависимостей и измерения различных показателей кода.

1

Мы используем Lattix и NDepends для отслеживания зависимостей наших сборок.

Оба инструмента поддерживают статические визуализационные зависимости между сборками и классами через матрицу структуры зависимостей (DSM). DSM дает вам возможность показать архитектуру вашего приложения. Например, если вы используете слоирование, это должно быть видно в DSM. Циклические зависимости также будут видны в DSM.

Хороший практическое введение можно найти в OOPSLA05-dsm.pdf

NDepends конкретно цели .Net и имеет Visual Studio Integration. Lattix также может создавать DSM для других языков. Обе поддержки поддерживают интеграцию, которая позволяет создавать правила в вашей сборке для предотвращения неправильных зависимостей.

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

+0

Подробнее о структуре зависимостей. Использование матрицы для определения шаблонов проектирования здесь http://www.ndepend.com/Doc_Matrix.aspx –

0

Ну, инструмент выглядит набухающим и тонким и хорошо работал, когда его представляли.
После этого, все те инструменты, которые делают обратную инженерию (по моему опыту с несколькими версиями Rational Rose, StarUML, Sparx (лучший), понимают) из C++ хорошо .. попадают в неприятности.
Я вижу, почему - код на C++ более сложный и менее упорядоченный, чем C#, имеет ссылки на библиотеки, модули и COM и т. Д.
В нашем реальном проекте его (основанный на базе данных Understand) обратное проектирование было заморожено немедленно и полностью (я имею в виду жесткий сброс-сброс).
Может быть, нам нужно запустить его на WS или сервере.
Возможно, это было Понять «вина».
После перезагрузки он стал очень медленным, когда его матрицы открыли около 200 модулей ниже. Ну, я никогда не говорил, что наш проект хорошо развит, верно. Мы надеялись исследовать его, чтобы сделать его лучше. Я по-прежнему считаю, что это может быть очень полезно в долгосрочной перспективе (если ваша компания согласилась заплатить чеки на непрерывную переработку), но, как и все эти инструменты, лучше начать С нуля и постоянно использовать его все время. NB Мы пытались использовать его с bsc (база данных Microsoft), но также не удалось.

0

Я использовал Lattix для анализа кода C++, .NET, Java и Fortran. Это полезно как для разработки новых приложений, так и для улучшения архитектуры существующего программного обеспечения. Этот инструмент поддерживает прямой импорт .NET dll, классов Java или файлов jar и SQL-соединения. Если вы смотрите на C++ или Fortran, вам понадобится парсер, такой как Klockwork, Understand или Clang. Можно создать текущее обновление для вашего проекта Lattix при каждой сборке программного обеспечения - это позволит вам обновить DSM для постоянного мониторинга архитектуры вашего программного обеспечения.Это может дать вам знать, как меняется ваше программное обеспечение с течением времени, и если какой-либо код нарушает правила, установленные в начале вашего проекта, или если какие-либо правила необходимо изменить и т. Д. Для просмотра существующего программного обеспечения инструмент может быстро разложить системы для вас и определить, где существуют циклические зависимости. Существуют алгоритмы разделения системы на основе близости к другим подсистемам (например, классы) или группированию подсистем на основе шаблонов зависимостей. Это может быть полезно, если вы хотите улучшить архитектуру существующего программного обеспечения и сделать его модульным.

Существует обширная информация о kb.lattix.com - просто зарегистрируйтесь, чтобы читать статьи. Кроме того, я думаю, что они предлагают оценочную версию, которую вы можете изучить, чтобы узнать, будет ли инструмент полезен для вас.