|
(В оригинале Get the 1000ft view)
Мы всегда хотим знать, насколько качественным является разрабатываемое нами ПО. Обычно под качеством подразумевается удовлетворенность заказчика, однако есть еще один, более «тонкий» аспект качества, связанный с ясностью дизайна, легкостью понимания, сопровождения и изменения ПО. Но как же его увидеть?
На диаграммах дизайна обычно маленькие квадратики представляют целые системы, а линии между ними могут значить что угодно: зависимость, поток данных или общий ресурс типа шины. Эти диаграммы – вид с высоты 10 километров, как пейзаж из окна самолета. И часто единственный другой вид – это исходный код, что можно сравнить с видом с высоты 1 метра над землей. Оба эти вида не показывают достаточно информации о качестве ПО, один – слишком высокоуровневый, другой – слишком детальный. Нам требуется промежуточный, скажем, метров с 300.
Вид с высоты 300 метров предоставит информацию как раз нужного уровня. Он объединяет большие объемы данных и множество метрик, таких как количество функций, разветвление структуры классов или цикломатическая сложность. Конкретный вид сильно зависит от конкретных аспектов качества. Это может быть визуальное представление графа зависимостей, диаграмма метрик на уровне классов или сложная множественная метрика, зависящая от множества входных данных.
Создавать такие представления вручную и поддерживать их в актуальном состоянии – безнадежно даже пытаться. Нужно использовать инструменты, автоматически строящие эти метрики на основе реального исходного кода. Для некоторых отображений существуют коммерческие программы, однако на удивление просто их можно строит и при помощи комбинации небольших утилит, извлекающих метрики, вместе с пакетами для визуализации. Простой пример – загрузить результат работы утилиты checkstyle в электронную таблицу для построения диаграмм. Точно также можно визуализировать метрики в пакете InfoViz. Отличная утилита для визуализации сложных графов связей – GraphViz.
Как только подходящий вид становится доступным, качество ПО становится чуть менее субъективным. Становится возможно сравнивать его с аналогичным. Сравнение различных версий позволит понять общую тенденцию, а сравнение различных подсистем – резкие отличия или отклонения. Даже имея единственную диаграмму, мы уже можем понядеяться на наше чувство прекрасного. Хорошо сбалансированное дерево, скорее всего, представляет отличную иерархию классов, гармонический набор квадратиков может означать, что код адекватно разбит по классам подходящего размера. В большинстве случаев можно доверять правилу: «Если что-то хорошо выглядит, то скорее всего, оно действительно хорошее».
Автор оригинала - Erik Doernenburg
|