Внешняя алгебра. Алгебру будем называть внешней, если она определяет операции над компонентами и компонентными средами как над целевыми объектами.
Модель компонента и компонентных сред служит основой формирования внешней компонентной алгебры, которая определяет множество операций над соответствующими элементами и имеет такое выражение:
где CSet = {Сотрп} - множество компонентов, каждый из которых представлен моделью (3.3); CESet = {СЕ" - множество компонентных сред, каждое из которых описывается выражением (3.4); Q| - множество операций внешней алгебры.
В состав элементов множеств входят: Сотр — компонент, СЕ], СЕ2, СЕ3 — компонентные среды. К множеству операций Q относяшя операции {®,, и} обработки элементов множества компонентов. Формальное определение базовых операций над компонентами приведены ниже.
Операция инсталляции (развертывания) компонента в компонентной среде.
СЕ2 = Сотр ф СЕ] имеет следующую семантику:
Операция объединения компонентных сред СЕЪ = СЕ] и СЕ2 имеет аналогичную семантику:
Операция Ф имеет более высокий приоритет, чем операция и. Этот факт объясняется тем, что прежде, чем начать работать с компонентными средами, необходимо инсталлировать их компоненты. Отметим очевидные свойства операций:
Операция удаления компонента из компонентной среды СЕ2 = СЕ Сотр имеет следующую семантику:
Для этой операции существует равенство на основе соответствующих операций над множествами, которые входят в определение компонента и среды (Сотр Ф СЕ) Сотр = СЕ. При ином порядке скобок равенство не всегда выполняется. Это означает, что операция имеет более высокий приоритет, чем операция .
Операция замещения компонента Сотру компонентом Сотр2 выражается через операции Ф, и имеет вид: СЕ2 = Сотр2 Ф (СЕ Сотр|).
Условие целостности компонентной системы заключается в существовании для каждого компонента Сотр из СЕ, имеющего исходный интерфейс CInt" , компонента Сотр2 с соответствующим входным интерфейсом CInt2 а контракт Cont{m = (Clnt", Chit™, IMap]2m) входит в состав множества Coni.
Процесс выполнения компонентной программы начинается с развертывания компонентов с помощью контрактов в соответствии с функциональными требованиями к ней.