Анализ существующей архитектуры с помощью Visual Studio 2010
Евгений ЧигиринскийMicrosoft
Visualization and Architecture tools in VS 2010
• Зачем они нужны?• Для кого они предназначены?• Что они могут делать?
Зачем?
• Сложность существующих систем остается серьезной проблемой– В коде, архитектуре, ТЗ, структуре
организаций– (этот список можно продолжать до
бесконечности)
Для кого?
• Для разработчиков...– ... которым нужно разобраться в
существующем коде– ... которым нужно быстро и надежно
исправить существующие проблемы и баги.• Для архитекторов...– ... которым нужно делать дизайн
архитектуры или документировать существующие решения
– ... анализировать фактические зависимости между компонентами (модулями) решения
Что они могут делать?
• Visual Studio 2010 предлагает средства разработки для ...– ... улучшения взаимодействия и
коммуникаций между участниками процесса разработки
– ... понимания существующих систем (архитектура и код)
– ... возможности контролировать архитектуру и код в процессе разработки.
Анализ кода и архитектуры
VS 2010 Architecture Tools – подход к решению проблемы
• Необходимы инструменты для понимания:– Архитектуры имеющегося
приложения– Уже имеющегося кода– Внешних компонент и систем, от
которых зависит код (по необходимости)• Чаще всего в виде DLL или EXE
Architecture Explorer
– Визуальное представление артефактов кода:
– UI для составления запросов к отдельным компонентам кода• Запросы могут быть сохранены виде DGQL (digital
graph query language) файлов– Генерация графов зависимости по результатам
запросов
Demo: Architecture Explorer
Диаграммы последовательностей
– Генерация диаграмм последовательностей из кода• Помогает разобраться что делает
незнакомый код• Визуализация зависимостей и вызовов• Визуализация отложенных вызовов (LINQ,
lambdas, и так далее)
– Возможность предлагать и сохранять изменения в дизайне на диаграмме
Demo: Sequence Diagrams
Графы зависимостей
– Используется для анализа кода и визуализации связей между различными артефактами кода приложения (классы, интерфейсы, методы, сборки, и так далее)
– Поддерживается анализ исходного и бинарного кода• Удобно для исследования сборок при
отсутствии исходного кода
– Наглядная документация кода
Язык DGML и графы зависимостей
• DGML – Direct Graph Modeling Language• Текстовый (XML) формат
• Визуализация в Visual Studio 2010
• Может быть использован для визуализации любых зависимостей:
• Визуализация артефактов TFS: http://visualization.codeplex.com
• Визуализация .NET объектов из дампа памяти: Visual GC Root
Demo: Графы зависимостей и DGML
Visual Studio 2010 Ultimate…
• …позволяет провести анализ существующего кода и архитектуры с помощью:– Architecture Explorer– Диаграмм последовательностей– Графов зависимостей
• …помогает улучшить архитектуру в уже существующем решении.
Контроль за процессом разработки
Контроль за процессом разработки
• Обеспечение целостности архитектуры
• Управление кодом
Диаграммы Уровней
• Визуализация архитектуры
• Проверка кода на соответствие архитектуре
Диаграммы Уровней - Шаблоны
• Выбор готовых шаблонов от Microsoft и сообщества архитекторов и разработчиков для диаграмм уровней
• Созданные шаблоны можно использовать всей командой
Проверка кода на соответствие архитектуре
Автоматизация проверки путем интеграции с процессом сборки (через TFS Build)
Demo: Диаграммы уровней и контроль процесса разработки
Visual Studio 2010 Ultimate…
• Предоставляет средства разработки для борьбы с проблемой «разрастания» кода и обеспечения целостности архитектуры:
– Диграммы Уровней (Layer Diagrams)
– Автоматизация процессов ALM путем тесной интеграции с TFS
References• http://msdn.microsoft.com/en-us/library/dd409365.aspx - MSDN:
Visualizing Existing Code. Практическое руководство по визуализации существующего кода из MSDN.
• http://blogs.msdn.com/b/camerons/ - Блог Камеруна Скиннера – руководителя команды Visual Studio 2010 Ultimate
• http://www.lovettsoftware.com/blogengine.net/ - Блог Криса Ловетта – архитектора команды Visual Studio 2010 Ultimate
• http://visualstudiogallery.msdn.microsoft.com/en-us/237f823c-45b4-4f1f-b9e2-607fe66eaae7 – подборка шаблонов диаграмм уровней от команды Patterns & Practices
Q & A