Диссертация (Платформа для создания специализированных визуальных сред разработки программного обеспечения), страница 25
Описание файла
Файл "Диссертация" внутри архива находится в папке "Платформа для создания специализированных визуальных сред разработки программного обеспечения". PDF-файл из архива "Платформа для создания специализированных визуальных сред разработки программного обеспечения", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве СПбГУ. Не смотря на прямую связь этого архива с СПбГУ, его также можно найти и в других разделах. , а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.
Просмотр PDF-файла онлайн
Текст 25 страницы из PDF
DMM, EProvide и AToM3 по ходу исполненияизменяют модель, а также при необходимости подсвечивают отдельные элементы,как, например, в EProvide, поэтому все эти подходы оценены в 2 балла. Прииспользовании xUML или двухуровневой отладки интерпретация позволит лишьподсвечивать текущий исполняемый элемент (1 балл).Если смотреть на способы задания семантики со стороны разработчикаконкретного визуального языка, то важным критерием их сравнения становитсяпонятность,отвечающаязаколичествознанийвобластивизуальногомоделирования и других связанных с ней областях, которое необходимо иметь дляуспешного и осмысленного применения данных способов.Самым понятным подходом, на наш взгляд, является DMM, так как правилапреобразования графов воспринимаются довольно интуитивно. У AToM3 естьнедостаток в том, что возможно ставить различные ограничения и писатьисполняемые инструкции на OCL и Python, а это требует от разработчикадополнительных знаний.
xUML подразумевает сложную систему зависимостейдиаграмм друг от друга, а также активную работу с AL, что снижает понятность, т.к.необходимо хорошо ориентироваться в UML и в PAS или некотором AL (0 баллов).Для использования EProvide нужно изучить стандарт QVT Relation, что посложности сравнимо с подходом в xUML (0 баллов). Для применения двухуровневойотладки же необходимо знание языка программирования, на котором написанаиспользующаяся система, а также особенностей её реализации для того, чтобы было153возможно встраивание в неё функционала отладчиков, что даёт данному подходуоценку в 0 баллов.Таблица 3. Сравнительная таблица для разобранных подходовКритерий сравненияДвухур.xUMLDMMотладкаEProvidAToM3eУниверсальность00333Формальность01313Наглядность средств0130311222Понятность00302Наличие реализации13033Возможность создания33333задания семантикиНаглядность процессаинтерпретацииотладчикаКритерий наличия реализации: 3 балла, если реализация существует (для xUML,например, их существует много), 0 баллов, если нет.
Двухуровневая отладка имеет 1балл, т.к. для неё присутствует реализация для конкретного языка. Если для данногоподхода уже реализовано средство, позволяющее не только интерпретировать, но иотлаживать, т.е. использовать различные точки останова, просмотр и изменениезначений атрибутов и т.п., или для подхода возможно такое расширение, то он имеет3 балла в графе “возможность создания отладчика”, иначе — 0 баллов.154После суммирования полученных для каждого из подходов баллов получаетсяследующее распределение: двухуровневая отладка — 5 баллов, xUML — 9 баллов,DMM — 17 баллов, EProvide — 12 баллов, AToM3 — 19 баллов.
Благодаря наличиюреализации, подход, использующийся в AToM3, представляется нам лучшимподходом. Он очень похож на DMM, что подтверждают набранные ими баллы.155Приложение C. Реализованный алгоритм поискаподграфа в модели репозитория QRealРассмотрим набор множеств и отображений, необходимых для работы этогоалгоритма. Пусть исходная модель является графом = ∪ , где — множествоего вершин, — множество рёбер, а искомый шаблон — граф ′ = ′ ∪ ′.
Вдальнейшем будем придерживаться соглашения, что обозначения с штрихомотносятся к сущностям, связанным с шаблоном, а без штриха — с исходноймоделью. Тогда:●Отображение : ′ → будет определяться постепенно и на определённыхшагах будет содержать промежуточный результат работы алгоритма. Взятоена элементе ′, оно выдаёт соответствующий ему элемент .●Подмножество вершин ′, образующих подграф ′, который на данном шагесовпадает с некоторым подграфом , обозначим за ′.●Подмножество вершин ′, у которых есть связи с вершинами из ′, нележащими в ′, обозначим за ′. Данное множество представляется в видесписка, поэтому порядок добавления элементов в него имеет значение.●Индекс вершины в ′, рассматриваемой на текущем шаге, обозначим за . Вначале работы инициализируем нулём.Таким образом, на каждом шаге имеется некий подграф (с множеством вершин,равным ′) в ′, который уже был найден в .
Отображение вершин и рёбер этогоподграфа на элементы уже содержится в . Также присутствует список вершин′, который позволяет продолжать поиск ′ в .Отметим дополнительно, что так как граф модели является типизированнымориентированным графом с атрибутами, то при сравнении вершин учитываетсяравенство их типов и атрибутов, а при сравнении рёбер ещё и их направления.Рассмотрим принцип работы алгоритма целиком.156На первом шаге выбираем произвольную вершину из ′ и ищем все вершины в, совпадающие с ней по описанным выше критериям.
Запускаем цикл, проходящийпо ним и при проходе каждого выполняем следующие операции: обнуление ,очищение ′, ′ от старых значений и заполнение их информацией осоответствующих первых вершинах.Второй шаг данного алгоритма представляет собой рекурсивную функцию,возвращающую значение логического типа. Работает функция следующим образом:берем вершину с индексом из списка ′, находим для нее первое ребро ′ из ′, неведущее в ′, т.е.
вторая вершина, инцидентная с данным ребром, не должна лежатьв ′. Если такого ребра не нашлось, то увеличиваем индекс на единицу и запускаемвторой шаг снова, если не равно мощности множества ′ (если же равно, то,значит, искомый граф найден целиком и в будет содержаться промежуточныйрезультат, то есть одно найденное вхождение данного графа. Добавляем его в списокнайденных подграфов и возвращаем истину). Обозначим вершину, выбранную из′, за ′, а вершину, которой ′ инцидентно помимо ′, за ′. Вершину(′)обозначим за .
Далее ищем у все ребра, совпадающие с ′ и не ведущие в(′). Обозначим полученное множество ребер за 1 . Если таких ребер не нашлось,то совершаем откат и запускаем второй шаг снова.Запомним текущее состояние рассматриваемых множеств и отображений. Послеэтого для каждого ребра из 1 обозначим вершину, с которой оно соединено, за .Ищем все ребра в ′, имеющие одним из своих концов ′, а вторым — вершину из′, и проверяем, есть ли такие же в из .
Если ребер не нашлось, то переходим кследующему ребру из 1 . Если нашлись все нужные ребра, то (′) = , а также∀′ ∈ один из концов ′ равен ′, а второй принадлежит ′: (′) = ∈ , где является найденным выше соответствующим ребром. Запускаем второй шаг снова,если индекс не равен мощности ′. Если второй шаг вернул истину, т.е. мы нашлинужный подграф, то откатываемся к запомненному состоянию и переходим к157следующему ребру из 1 .Откат происходит по следующему принципу. Убираем последнюю добавленнуювершину в ′, убираем последнюю вершину в списке ′, уменьшив принеобходимости индекс на единицу, убираем информацию об удаленной вершине в(как про саму вершину, так и про все его рёбра в ′).Нахождение заданного шаблона в графе позволяет в дальнейшем легкопроизводить операции создания новых элементов (как вершин, так и рёбер), ихкорректного соединения с уже существующими элементами модели, удаления илизамены старых элементов.158Приложение D.
Акты о внедрении159.