Каркас архитектуры: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 23:
| message =
 
; '''Оформление варианта'''
 
<nowiki>
Пусть на некоторой стадии создания программы удалось найти усиление для одного из входящих в нее и ранее уже отлаженных алгоритмов. Запрограммировав новый, более удачный алгоритм, обычно не спешат с окончательным уничтожением заменяемого им фрагмента программы, сознательно допуская на какое-то время сосуществование обоих фрагментов в программном фонде.
 
Строка 47 ⟶ 48 :
 
Отметим, что здесь понятие безболезненности затрагивает уже не только тексты программ, но и описание конфигурации. Такое обобщение следует признать совершенно естественным. Ведь для ваших коллег практически безразлично, редактирование какого текста (программы или описания конфигурации) приведет к потере работоспособности.
</nowiki>
 
; '''Наборное гнездо'''
 
<nowiki>
Потребности и в вариантных, и в наборных гнездах могут возникать в задачах из практически любой предметной области. Однако в вариантных гнездах наиболее остро нуждается относительно обособленная отрасль программирования – задачи вычислительного эксперимента. Наборные гнезда, являются некоторым обобщением вариантных гнезд, и поэтому могут быть использованы для более широкой области программирования.
Наборные гнезда каркаса программы предназначаются для подстановки на их место нескольких однородных модулей. Таким образом, наборное гнездо служит для оформления группы однородных смежных элементов программы, повышая наглядность и обеспечивая возможность безболезненного расширения этой группы. Наборное гнездо представляет собой цикл периода сборки программы. Цикл повторяется столько раз, сколько имеется в программном фонде однородных модулей, предназначенных данной конкретной конфигурацией для подстановки в наборное гнездо, а переменная цикла в это время последовательно пробегает все подставляемые модули.
Строка 84 ⟶ 87 :
 
С другой стороны, требованию безболезненности для работоспособности ассоциативная схема не удовлетворяет. Причина в том, что если в подключаемом модуле имеются ошибки, то его появление (из-за неявного указания) в ранее отлаженной версии программы может привести к потере работоспособности.
</nowiki>
 
; '''Рассредоточенный набор'''
 
<nowiki>
Применение рассредоточенного набора, имеет достаточно большую область. Так как для данной работы полное рассмотрение возможного применения рассредоточенного набора не предоставляет интересса, мы ограничимся рассмотрением следующего примера.
 
Строка 98 ⟶ 103 :
Механизм рассредоточенного набора позволяет собрать воедино разбросанные по тексту программы однородные элементы. В тексте программы элемент рассредоточенного однородного набора объявляется посредством конструкции вида
 
<nowiki>
{ #INSTALL_IN [LOCAL] имя_набора [SUBSET]
{имя_компонента : значение }}
Строка 104 ⟶ 108 :
применение]
#END_OF_INSTALL
</nowiki>
 
В одной конструкции разрешается объявлять сразу несколько элементов различных рассредоточенных наборов (об этом говорят внешние фигурные скобки, окаймляющие первые две строки).
Строка 110 ⟶ 113 :
 
Далее следует необязательная часть #APPLY. Там располагается то, что должно остаться в исходном тексте после обработки конструкции #INSTALL_IN препроцессором. Часть #APPLY представляет собой обычный текст, среди которого могут размещаться значения компонентов объявленного элемента рассредоточенного набора, задаваемые конструкцией вида #имя_набора.имя_компонента. Кроме того, в текст можно включать порядковый номер; он задается в виде #имя_набора.NUMBER.
</nowiki>
 
}}