Может кто-нибудь показать мне, как выглядит хорошая матрица зависимостей, и указать, почему?

Я хотел бы начать использовать DSM, но не знаю, с чего начать.

Как выглядит хорошая матрица зависимостей и почему? Как это работает?

4 ответа

Решение

В этом посте " Краткий обзор шаблонов структуры кода" объясняется, как использовать матрицу структуры зависимостей для идентификации шаблонов структуры кода. Снимки экрана сделаны с помощью Матрицы структуры зависимостей инструмента NDepend. Вот несколько шаблонов:

Многоуровневый код (код без цикла, безусловно, самая крутая вещь, которую DSM может показать вам с первого взгляда)
альтернативный текст

Код с циклами зависимостей
альтернативный текст

Высокая когезия / низкая связь
альтернативный текст

Голодный абонент
альтернативный текст

Популярная Калли
альтернативный текст

Взаимная связь
альтернативный текст

Объект данных
альтернативный текст

Эрик Дёрненбург дает лучшее описание, которое я видел, включая несколько хороших примеров того, как расположение графа может выявить структурные проблемы. Кратко:

  • как уже упоминали другие, все, что выше диагонали, указывает на цикл, что по сути означает, что ваши границы "размыты" (не чистые)
  • маленькие квадратики (ну, нижние треугольники) вдоль диагонали == хорошо, если компоненты сгруппированы в соответствии с иерархией
  • с другой стороны, тяжеловесные строки или столбцы == возможные проблемы: либо
    • строки: у вас есть компонент / группа, от которой зависит множество других (возможно, она пытается использовать слишком много функций), или
    • столбцы: у вас есть компонент / группа, которая зависит от множества других (возможно, она пытается позаботиться обо всем сама, а не делегировать)

Перечислите подсистемы на осях X и Y в том же порядке. Отметьте "О" по диагонали. Подсистемы, зависящие от самих себя, не имеют особого смысла. Идите вертикально вниз по матрице. Если эта подсистема зависит от соответствующей горизонтальной подсистемы, отметьте X.

Хороший перестраивает подсистемы, чтобы показать шаблоны, которые могут привести к хорошему рефакторингу.

У меня нет одной под рукой, хотя. Сожалею.

Одна из наиболее ценных функций DSM - обнаружение циклов, например, между проектами или пакетами. Цикл отображается в верхней правой части матрицы. Смотрите эту страницу для более подробной информации: http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix

Другие вопросы по тегам