Диссертация (1145120), страница 30
Текст из файла (страница 30)
Частичнопроблема больших диаграмм затрагивается в обзоре [356], при обсуждениикритерия качества моделей «сложность» (C4-Comprehensibility). Однако дан172ная проблема обсуждается в контексте вопроса о создании понятных дляпользователей моделей, но не рассматривается ситуация объективно сложных моделей.Интересна работа [3], в которой авторы представляют сред-ство визуализации структуры крупных COBOL-приложений в контексте реинжиниринга. Средство поддерживает установку различных фильтров, чтооблегчает просмотр и анализ больших моделей, скрывая информацию, не затронутую фильтром.
Можно также показывать/ скрывать различную информацию по разным правилам (то есть, фактически, реализован набор v2vтрансформаций). Однако предложенные результаты являются решением конкретной прикладной задачи, общего метода решения подобных задач в работенепредлагается.Такимобразом,предложеннаяпредметно-ориентированная методология справедливо выделяет данную задачу, а предложенная далее в данной диссертационной работе модель v2v-трансформаций является вариантом общего подхода к её решению.Относительно представленного алгоритма слияния и-карт необходимозаметить следующее. Задача слияния (merge) двух версий электронных активов с научной точки зрения решена. О слиянии текстовых файлов см. классическую работу [296], алгоритм для нахождения разницы (Diff) двух древовидных структур представлен в [208], алгоритмы слияния деревьев (XMLфайлов) представлены в [242], [335], [336], [368], [387].
Существуют такжереализации данных алгоритмов [222], [368], [424], [430]. Средство с открытым кодом TreeDMJavaImplementation [424] реализует 3DM-алгоритм, IBMXML Diff and Merge [430] является бесплатным и простым Java-средством,DeltaXML Tool [222] является коммерческим средством слияния XMLфайлов.
Все они позволяют получить разницу между двумя XML-файлами, атакже слить их в один. Кроме того, существует система контроля измененийдокументов So6 [368], которая позволяет нескольким пользователям редактировать XML-файлы одновременно. В области слияния моделей в рамкахмодельно-ориентированного подхода следует упомянуть технологию EMF173DiffMerge [236], предназначенную для разработки инструментов Diff/Mergeдля различных инструментов, реализующих визуальные языки моделирования. Однако, несмотря на эти достижения, задача создания конкретного инструмента для сравнения/слияния сложно структурированных структур данных в рамках конкретного программного приложения остаётся — указанныевыше подходы не удаётся использовать as is: алгоритмы требуют серьёзноймодификации в силу особенностей представления структур данных в конкретной прикладной задаче (например, представления базовой, исходнойверсии двух сливаемых версий информационного актива), а также из-за уникальных требований по интерактивной работе с конфликтами и визуализациирезультатов работы алгоритма.
Более того, если говорить о слиянии моделей,то инструмент EMF DiffMerge ограничен только теми разработками, которыесозданы с помощью стандарта Ecore [87], принятого в Eclipse Modeling Project [233], [268]. Однако на практике используется широкий набор другихсредств представления метамоделей.
Вопросы практической применимостиdiff/merge алгоритмов, а также идея платформы по разработке целевых сервисов на базе таких алгоритмов в области документооборота обсуждается автором данной диссертационной работы в [85]. В связи с вышесказанным,примеры модификаций алгоритмов слияния сравнения, основывающихся наработе с XML и/или ориентированных на слияние моделей и реализующихспецифические требования DSM-решений, представляют большой научный ипрактический интерес. В то же время они не является исключительно прикладной задачей, которую следует оставить индустрии, так как надлежащимобразом обобщённые, структурированные и изложенные, созданные решениямогут быть повторно использованы широким кругом специалистов.В заключение обсуждения алгоритма слияния и-карт сделаем краткий обзор средств сравнения слияния древовидных и графовых структур данных.
Вработах [335], [336] представлен 3DM-алгоритм для слияния деревьев на основе подхода 3 way merge. В [424] можно найти открытую реализацию дан174ного алгоритма на языке Java. В основе алгоритма 3DM лежит следующаяидея. Для каждого узла двух сливаемых деревьев рассматриваются изменения, произошедшие с ним относительно базового дерева, и целевое деревостроится применением к базовому всех этих изменений. 3DM-алгоритм производит слияние XML-файлов в два шага. На первом шаге происходит сопоставление (идентификация, matching) узлов сливаемых деревьев с узлами вбазовом дереве.
На основе этого сопоставления легко понять, каким образомизменились сливаемые деревья относительно базового: если узлу в сливаемом дереве не сопоставлен узел в базовом, то он был вставлен, и т.д. (алгоритм идентифицирует все возможные операции: вставку/изменения поддерева, удаление/перемещение/копирование поддерева). На втором шаге на основе информации об этих изменениях производится непосредственно слияниедеревьев.
Обход сливаемых деревьев производится так, что сопоставленныеузлы посещаются одновременно. Построение целевого дерева происходит вширину, на основе списков детей сопоставленных узлов в базовом и двухсливаемых деревьев с помощью специальных эвристик строится список детей узла в целевом дереве. Технология SO6 [368] является подходом для синхронизации деревьев, но он может использоваться и для слияния деревьев,так как имеется возможность записывать все операции, изменявшие обе версии, а потом синхронизировать эти операции между собой. Авторы предлагают точные спецификации функций преобразования, а также алгоритмов ииспользуемых структур данных. Существует также открытая реализацияподхода на языке Java [403]. Однако подобные подходы на практике оказываются довольно трудоёмкими, поскольку проще согласовывать результат, ане многочисленные атомарные операции, которые к нему привели — существуют взаимообратные операции (добавление и последующее удаление одной и той же информации) и др.
случаи, когда последовательность действийлегче воспринимать как одно целое. Кроме того, в подходе, представленномв работе [368], реализованы лишь операции «добавить» и «удалить», но нет175операции «перенести». Подход DeltaXML [242] выполняет слияние XMLфайлов на основе построения промежуточного XML-файла, который содержит оба сливаемых файла и организован так, что легко определить, какиеданные являются общими для сливаемых файлов, а какие — уникальны длякаждого из них. Подход поддерживает как 2 way merge, так и 3 way merge.Однако он в большей степени ориентирован на XML-данные, а не на XMLдокументы: основное отличие здесь, как считают авторы, заключается в редком использовании операции «перенести». Соответственно, DeltaXML неподдерживает эту операцию.
Кроме того, в описании подхода нет спецификации самого алгоритма, в частности, промежуточного XML-файла, поскольку DeltaXML является коммерческим продуктом [222]. Поэтому для нашихцелей этот подход оказывается непригоден. Подход, описанный в работе[387], предлагает использовать при слиянии XML-файлов следующую технику: сначала алгоритм находит разницу между исходным файлом и одной изверсий в виде edit-скрипта, и потом применяет этот edit-скрипт ко второйверсии.
Главная сложность здесь в том, что контекст выполнения операциимог измениться во второй ветке. Для решения этой проблемы для каждойоперации в момент создания edit-скрипта сохраняется ещё и её контекст (отпечаток), который потом помогает определить точное место во второй версии, где она должна быть применена. К сожалению, детали реализации подхода и полную спецификацию алгоритма не удалось найти в свободном доступе, и подход не рассматривает операцию перемещения, поэтому длянаших целей он оказался непригодным.Выполним сравнение и соотнесение метода автоматизированного создания валидаторов для контроля качества (корректности) визуальных спецификаций с имеющимися в этой области работами.Вначале рассмотрим имеющиеся подходы к управлению целостностью(consistency/inconsistency management), поскольку данная область, как указывалось выше, сильно пересекается с задачей обеспечения корректности моде176лей.
Пожалуй, первой обстоятельной работой, исследующей данную задачув целом, а также рассматривающей имеющиеся в этой области подходы, является работа [411]. В этой работе задача управления согласованностью несколькими активами разработки ПО формулируется в общем (математическом) виде. Формально определяется, что такое семантическое пересечениеразличных активов, а их целостность определяется как истинность некоторых утверждений, сформулированных относительно этих активов в терминахих семантических пересечений. Идея утверждений, формулирующих ограничения целостности, активно использовалась впоследствии, в частности, вязыке OCL [362].
Использовалась эта идея и в данном диссертационном исследовании. Но, в отличие от [411], рассматривалось не множество активов,а один. Соответственно, пропадала необходимость рассматривать семантические пересечения.Интересный обзор темы целостности UML-моделей представлен в [279].Излагается концепция целостности артефактов в процессе разработки, основанном на UML. Вводится понятие внутренней целостности (intraconsistency) и внешней целостности (inter consistency). Первое означает целостность различных частей внутри одной модели, второе — целостностьразных моделей.