В последние годы заметное распространение получила архитектура программного обеспечения со слоистой структурой [1,2]. Это позволяет сформулировать относительно простые механизмы реструктуризации и построить целостную модель жизненного цикла систем автоматизации.
Процесс развития сложной системы имеет много общего с поведением динамических систем, хотя и имеет свои специфические особенности. Рассмотрим один из аспектов устойчивости процесса адаптации структур.
Пусть задан интерфейс бизнес-процесса Is = (f0,, f1, ... , fn), где f ∈ Is идентификаторы элементов интерфейса (далее - прагматики). Особенность слоистых структур состоит в направленности связей со слоя i на слой i+1, но не наоборот. Композицию системы опишем как слово формального языка Lu* с алфавитом VT = {a0, a1, ... , an}. Сопоставим каждой букве алфавита VT = {a0, a1, ... , an} прагматику f ∈ IS0 и определим фактор-множество VT/F = {f0|{a1, a2 , ... ak}, f1|{b1, b2 , ... bl}, ... , fN|{z1, z2 , ... zm}}, где aj, bj,... , zj ∈ VT . Структура w0 ∈ Lu является адаптированной, если имеет место Is = I(w0), где Is = (f0,f1,...,fN), I(w0) = (f0 ´,f1 ´,...,fN ) и N´= N. Слово w0 ∈ Lu назовем совершенной адаптированной структурой, если в адаптированной структуре w0 насыщены все актуальные связи. Порядок сборки слов определяется некоторой решающей грамматикой G(VT,VN,R,S), Ls+(G) ⊆ Lu+. Ограничимся решающей грамматикой, описываемой реляционной алгеброй.
Будем исходить из гипотезы о существование универсального закона развития сложных систем. Предположим, что процесс развития представляет собой совокупность трех взаимосвязанных процессов и включает: цикл регенерации, цикл перебора альтернатив и процесс генерации решающих грамматик. Совокупность правил, определяющих процесс генерации грамматик, назовем императивной логикой À конструирования решающих грамматик.
Типичный пример императивной логики содержит правила генерации адаптированной решающей грамматики по формуле соединения R(k) = R(k-1) P Sj, где R- история разработки, Sj домен фактор-множества VT/F по атрибуту fj. Расширение алфавита по домену выполняется операцией Ej (G) для fj.
Перейдем к рассмотрению вопроса устойчивости процесса развития. Пусть совершенное адаптированное слово w0 ∈ Ls уже построено.
Рассмотрим причины, которые могут вызывать дефекты в структуре w0. Одна, очевидная причина - изменение интерфейса Is в результате изменения бизнес-процесса, другая - ошибки сборки. Наконец, наиболее интересный случай - внесение случайных ошибок в процесс перебора альтернатив.
В отдельный класс следует выделить процессы, обусловленные особенностями - логики. Возможны ситуации, когда - логика успешно строит решающую грамматику, но приводит к циклам при малых нарушениях в структуре w0 . Приведем пример такого рода.
Пусть известна решающая грамматика вида VT = {a,b,b´ ,c,d}, VN ={S,A,B}, R: (S → aA, aA → abB | ab´B , B → c | d; A, B → λ); w0 = abc. Расположим ветви дерева в том порядке, как они указаны в картеже R. Первая и вторая ветвь - закрыты, четвертая ветвь не исследована.
Ошибки 1-го рода. Пусть в результате ошибки использован шаблон S|- aA1|- abB|- abd. Т.к. слово не совершенно, ветвь 4 закрывается и начинается поиск в списке альтернатив. В нашем случае находится ветвь S|- aA1|- abB|- abc, которая приводит к совершенному слову.
Ошибки 2-го рода. Пусть в результате ошибки на текущем выводе ставится маркер «Закрыто». Исследование 4-ой ветви закроет ее и процесс вызывает генерацию грамматики, пытаясь расширить алфавит текущего домена. Расширение будет тождественным. После чего опять повторится цикл перебора альтернатив.
Таким образом, возникает бесконечный цикл обращения к - логике. В качестве шаблона используется последний вывод. Для выхода из этой ситуации в - логике должны быть предусмотрены дополнительные правила. Для активных систем подобные механизмы существуют. Если же используются базы опыта, то возможно возникновение бесконечных циклов.
Итак, требование устойчивости процесса развития структур накладывает дополнительное условие на императивную логику.
СПИСОК ЛИТЕРАТУРЫ:
- Ксензов М.В. Рефакторинг архитектуры программного обеспечения, М.: ИСП РАН, Препринт 4. - Москва, 2004.
- Вильямс Мартин Фаулер. Архитектура корпоративных программных приложений. - Москва, 2004.