Dependency Graph и язык DGML: диаграммы зависимостей в Visual Studio 2010

Один из интереснейших архитектурных инструментов Visual Studio 2010 – Dependency Graph, который используется для анализа кода и визуализации связей между различными артефактами кода приложений (классами, интерфейсами, пространствами имен и т.п.), как для исходного кода, так и для бинарного.

IC392998[1]

IC392999[1]

Об этом инструменте написано много в источниках, которые я давал в прошлом сообщении, в т.ч. и в отличном материале Jennifer Marsman:

Будучи отличным (безусловно, “одним из”) и очень наглядным средством документирования кода, логично что DGML можно генерировать и в процессе сборки (batch build) приложений. Об этом можно прочитать в материале Generate Graph Documents for Batch Processing.

Однако, далеко не все обращают внимание на то, что используемый для этого язык DGML - Directed Graph Markup Language, может применяться для достаточно широкого спектра задач. Да и сам по себе представляет собой крайне интересное явление :)

image_thumb_7[1]

(забавная илюстрация по использованию мыши для работы с Dependency Graph в VS 2010, описанная в виде DGML)


Начнем с того, что существует спецификация этого языка, представленная в виде соответствующей XML-схемы:

В свою очередь, документация MSDN включает обширный материал

включающий описание элементов DGML

Как следствие, генерировать DGML для дальнейшей визуализации в Visual Studio (например, как часть средств визуализации требований, топологии инфраструктуры для развертывания приложений и т.п.) можно хоть в PowerShell ;)

И уже вовсю появляются инструменты, использующие этот мощный инструмент. Например,

FileDownload[1]

Наверное, сложно найти .NET-разработчика, не знающего Dotfuscator :) а вот то, что его авторы из PreEmptive Solutions используют DGML наверняка будет для многих новостью.

Ну а для того, чтобы вы в полной мере могли почуствовать мощь DGML не только на уровне “лёгкого введения” , но и в более “продвинутой” форме -

dgml_sample

- c удовольствием даю ссылку на демонстрационные DGML-файлы и блестящую 10-минутную видео-демо по использованию DGML, которая вместе с другими интересными материалами по DGML доступна в маленьком. но очень интересном блоге.

P.S. Мне приходилось не раз до моего прихода в Microsoft слышать, что сейчас уже редко появлется что-то действительно принципиально новое в средах разработки, полезное и для архитекторов и для разработчиков. Как мне кажется, DGML один из примеров того, что это серьезное заблуждение. По крайней мере тогда, когда мы говорим о Visual Studio ;) Ну а о других принципиально новых инструментах, например Layer Diagram, появившейся в Visual Studio 2010, мы поговорим уже в следующий раз ))