Критерии гибкости архитектуры



Гибкая архитектура - это архитектура, способная эффективно адаптироваться к изменяющимся требованиям масштабируемости, функциональности и безопасности системы; это архитектура, которую удобно использовать.



Построение гибкой архитектуры невозможно без понимания критериев, согласно которым её можно назвать гибкой.



Самый важный критерий - это результат. Результатом качественной архитектуры является высокая скорость внесения изменений в работу приложения.



Остальные критерии являются косвенными. Это значит, что соблюдение каждого из них увеличивает вероятность сохранения максимальной скорости внесения изменений в продукт, однако не гарантирует её высокие показатели.



Важность косвенного критерия зависит от состояния текущего проекта. Выбирать, какой из них имеет наибольший приоритет, нужно исходя из тактических и стратегических преимуществ, которые они принесут в случае их успешного соблюдения. Выработка чёткой стратегии оценки важности критериев, а также методы их измерения - тема очень интересная, однако выходит за рамки этого ряда постов.



В зависимости от автора косвенные критерии могут очень сильно отличаться друг от друга. Ниже я привожу краткий и далеко не полный список важных критериев.





Перечень косвенных критериев



- Ясность и читаемость кода - чем выше, тем лучше.

- Распределение ответственности между компонентами

- Покрытие юнит тестами - средний оптимальный показатель 80%

- Степень связанности кода (coupling) - чем ниже, тем лучше

- Скорость рефакторинга

- Скорость тестирования



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