У меня довольно сложное приложение, разбитое на несколько компонентов. Каждый компонент имеет файл решения, который содержит несколько проектов. Поэтому мне нравится думать об этом как о компоненте, содержащем несколько проектов / библиотек. Существует также «общий» компонент. Все остальные компоненты зависят от «общего». Итак, компиляция выглядит так:
«nant component1.compile»
скомпилирует «common», а затем скомпилирует component1, так как component1 зависит от «common».
Со временем «общее» стало довольно большим. Я уверен, что его можно разделить на несколько более мелких компонентов. Тогда компоненты должны зависеть только от некоторых из этих меньших, разбитых «общих». Мы надеемся, что это сократит время компиляции для различных компонентов.
Итак, вопрос: Я хотел бы визуализировать зависимость между всеми различными проектами в приложении, а также пометить, к какому компоненту принадлежит проект. Как бы вы это сделали?
Взгляните на мой бесплатный плагин DSM для .NET Reflector, который можно загрузить с www.tom-carter.net
. Он позволяет два разных представления о ваших зависимостях: модель развертывания для поиска зависимостей между сборками и архитектурная модель, чтобы показать зависимости между типами.
Если он не предоставляет визуально ту информацию, которую вы ищете, вы можете сохранить модель в xml и запустить свой собственный сценарий для данных.
Преимущество матрицы зависимостей в том, что визуально анализировать зависимости намного проще, чем прямоугольные и линейные графики
Если вам нужна дополнительная помощь, позвольте мне
[Обновление] Этот плагин теперь доступен в виде надстройки Visual Studio
Если у вас есть доступ к Visual Studio 2010 Ultimate, вы можете выбрать Создать график зависимостей
в меню Архитектура
.
На MSDN есть пошаговое руководство: Как создать графики зависимостей для кода .NET
Я бы попробовал импортировать его в инструмент UML, который мог бы отобразить для меня диаграмму зависимости между модулями.
На рынке их несколько, как коммерческих, так и с открытым исходным кодом. Получите тот, который дает вам больше всего возможностей для вашего бюджета.
понятие было предложено мне сегодня утром (:
но, честно говоря, я не могу дать надлежащий отчет об этом, так как это слишком дорого для меня...
Вы можете взглянуть на NDepend: http://www.ndepend.com/
edit, чтобы добавить:
Patrick Smacchia, ведущий разработчик NDepend, блоги здесь : http://codebetter.com/blogs/patricksmacchia/default.aspx и много написал на тему компонентизации, которые могут быть вам полезны.
Если у вас все в порядке с информацией об уровне сборки, вам следует взглянуть на надстройку Graph к популярному инструменту Reflector. Он предоставляет график зависимостей на уровне сборки и класса.