Материал предоставлен https://it.rfei.ru

Расширяемость

Расширяемость — это легкость адаптации программного продукта к изменениям спецификации.

Проблема расширяемости — это проблема масштаба. Для маленьких программ изменение не является большой проблемой, но по мере роста программных продуктов адаптация становится все труднее. Большая программная система часто видится как огромный карточный дом, где удаление одного элемента может привести к разрушению всего построения.

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

Но сейчас стало возможным признать и рассмотреть центральный вопрос: что делать, если проблема изменяется в ходе ее решения. Изменения всегда характерны для процесса конструирования программных систем: меняются требования, наше понимание требований, алгоритмы, представление данных, приемы реализации.

Поддержка изменений является основной миссией технологического стека Scala + Circumflex.

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

Для улучшения расширяемости важны два принципа:

  • простота построения — простая архитектура легче адаптируется к изменениям, чем сложная;
  • децентрализация: чем более автономны модули, тем выше вероятность того, что простое изменение затронет только один или небольшое количество модулей и не вызовет цепную реакцию изменений во всей системе.
УстойчивостьВозможность повторного использования