Каркас архитектуры

Каркасный подход — подход к построению программного обеспечения (ПО), где любая конкретная конфигурация программы строится из двух частей. Первая, постоянная часть — каркас (фреймворк), не меняющийся от конфигурации к конфигурации и несущий в себе гнезда, в которых размещается вторая, переменная часть — сменные модули. Сменный модуль, в свою очередь, может содержать гнезда. В этом случае, наряду с каркасом программы в целом, можно говорить и о каркасе сменного модуля.

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

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

Изменяемость (гибкость) ПО

править

Любая программа, активно функционирующая на протяжении достаточно длительного времени, неизбежно будет изменяться. Причин великое множество: устранение неточностей, повышение эффективности, отслеживание изменение внешней среды (напр., реакция на появление новых аппаратных или программных средств), попытки применить программу для решения смежной или более общей задачи. Если не предпринимать специальных усилий, внесение изменений нередко оказывается чрезвычайно трудоемким и болезненным процессом, чреватым длительной утратой работоспособности отлаженного ранее материала. Главный рецепт облегчения внесения изменений — тщательно продуманная модульная структура программы. Если когда-то требуется пересмотреть решение, то тем самым четко очерчивается изменяемая область программы: изменения не должны выйти за пределы оформленного таким образом модуля.

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

Эффективные механизмы в каркасном подходе

править

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

Метаинформация и генерация кода

править


Построение каркасной архитектуры без метаинформации

править

См. далее:: Компоненты


Литература

править