Cloud of Science. 2017. T. 4. № 3 http:/ / cloudofscience.ru
Использование дескрипционной логики для оптимизации диаграмм классов UML
М. В. Сергиевский*'**, А. Ю. Конкин*
"Национальный ядерный исследовательский университет МИФИ 115409, Москва, Каширское ш., 31
"Московский технологический институт
119334, Москва, Ленинский проспект, 38А
e-mail: sermax@yandex.ru
Аннотация. Большинство технологий объектно-ориентированной разработки опирается на использование универсального языка моделирования UML; особенно широко в процессе проектирования применяются диаграммы классов, которые служат для построения модели программной системы, отражающей закономерности предметной области. Современные CASE-средства, являющиеся базовыми инструментами объектно-ориентированной разработки, поддерживают UML, но не имеют средств огггимизации UML-диаграмм и чаще всего лишены возможностей их верификации. В статье будет показано, как можно представить диаграммы классов в вцце утверждений дескрипционной логики, а затем произвести их верификацию и оптимизацию. Оптимизация будет базироваться на использовании шаблонов и антишаблонов проектирования. Приведено несколько конкретных примеров оптимизации. Показано, что некоторые преобразования могут быть осуществлены автоматически; в остальных случаях проектировщику будет указано на не оптима льность моде ли и предложены рекомендации по ее исправлению.
Ключевые слова: UML, модель предметной области, дескрипционная логика, концепт, роль, диаграмма классов, шаблоны проектирования, анти-шаблоньг.
1. Введение
В последнее время именно UML является стандартным средством моделирования программных систем (ПС) [1]. Большинство технологий объектно-ориентированной разработки (включая гибкие и DevOps) используют широкие возможности этого языка. На этапе проектирования наиболее востребованным средством UML являются диаграммы классов. Основные преимущества языков моделирования ПС, таких как UML, — высокая выразительность, декларативность, богатство конструкций — отрицательно сказываются на возможностях автоматиче-
ской верификации. Точнее говоря, весьма затруднительна проверка следующих утверждений:
- не содержит ли диаграмма классов структурных ошибок, в частности, несовместимых компонентов;
- не имеет ли диаграмма классов избыточных компонентов;
- насколько диаграмма классов оптимальна с точки зрения последующей реализации.
Известно, что, если на этапе проектирования допущены ошибки, то они распространятся на этап реализации и чаще всего повлекут за собой необходимость дополнительной отладки; в худшем же случае придется прибегнуть к лишней итерации и созданию дополнительного прототипа, что затормозит процесс разработки. Проблема избыточности особенно актуальна тогда, когда ПС является результатом интеграции нескольких автономных компонентов, например \¥еЬ-сервисов. Неоптимальность диаграмм классов определяется присутствием в ней таких фрагментов, которые могут быть представлены по-другому, т. е. более эффективно с точки зрения реализации.
Существует подход, основанный на использовании шаблонов проектирования [2], который позволяет применять определенные структурные решения в начальной фазе разработки ПС. В этом случае можно сразу ориентироваться на использование ряда проверенных шаблонов и не отклоняться от методологии, с ними связанной. Но чаще приходится сталкиваться с диаграммами классов, которые необходимо корректировать, используя для этого те или иные шаблоны (это происходит во многом потому, что знания разработчиков в области проектирования ПС недостаточны). Процесс можно организовать таким образом, чтобы изменения вносились вручную в графическом виде, что достаточно просто и наглядно. Но, чтобы избежать ошибок, желательно производить эти действия автоматически с помощью специализированного СА8Е-средства, имеющего дополнительные функции вали-дации. Для этого необходимо иметь формальное описание диаграмм классов, которое должно позволять идентифицировать структурные ошибки в диаграммах. Кроме того, желательно иметь набор правил трансформации диаграмм классов в соответствии, например, с шаблонами проектирования, которые позволяют оптимизировать модель.
2. Формализация диаграмм классов
Существует несколько подходов к формальному описанию диаграмм классов; наиболее известны из них те, которые основаны на использовании ОСЬ, языка Ъ+ и дескрипционных логик (ДЛ). Реальная верификация и трансформация текстов осуществима для языка Ъ (частично) и дескрипционных логик.
Остановимся на использовании ДЛ как наиболее универсального из перечисленных механизмов. ДЛ широко используются для описания онтологий [3] и разрабатывались в основном для этих целей. Поскольку диаграммы классов можно представить в форме онтологий, то использование ДЛ вполне объяснимо. Из семейства дескрипционных логик следует выбрать наиболее подходящую для описания именно диаграмм классов. В большом количестве работ [4-7] предлагается использовать логику АСЬСН. расширенную возможностями представления я-арных отношений.
Формально диаграммы классов не оперируют объектами, но косвенно при описании, например, отношений ассоциации между классами объекты необходимы для понимания семантики.
Определим более точно, для каких целей целесообразно использовать описание диаграмм классов в виде утверждений ДЛ.
Во-первых, для удобного формального представления диаграмм классов. В СА8Е-средствах диаграммы классов чаще всего представляются в виде графов с вершинами и ребрами разных типов, описания которых хранятся в хт1-файлах. Анализировать такие громоздкие неформализованные описания довольно затруднительно.
Во-вторых, для проверки непротиворечивости диаграмм классов. Как известно, семантика самого 11МЬ не позволяет использовать определенные сочетания конструкций. Например, класс не допускает возможности наследования у самого себя прямо или косвенно, класс-ассоциация не должна иметь те же атрибуты, что и связанные с ним классы и т. д. Формально описать эти ограничения (а их достаточно много), не усложняя чрезмерно дескрипционную логику [12], невозможно. Попытки сделать это приводят к усложнению модели ДЛ за счет добавления новых аксиом. Вместо этого можно предложить дополнительные процедуры анализа утверждений ДЛ, которые позволят выявить ошибки.
Наконец, в-третьих, для оптимизации диаграмм классов, т. е. для замены одних конструкций на другие, более оптимальные. Например, известно, что я-арные отношения в ряде случаев можно заменить на бинарные [8].
Остановимся на проблеме оптимизации модели ПО, которая описывается с помощью диаграмм классов. Какую диаграмму классов считать более оптимальной — не простой вопрос. К примеру, использование многих стандартных шаблонов проектирования (к ним относятся фасад, абстрактная фабрика, адаптер) приводит к увеличению числа элементов диаграмм классов, но улучшает ее качество с точки зрения последующей генерации кода и модифицируемости. Так, ввод интерфейсов в ДК чаще всего повышает универсальность и степень повторной используемости будущего кода, но нельзя сказать, что увеличивает понятность. Понятие
сложности диаграмм классов [9], в принципе, может помочь в решении этой проблемы, но консенсуса в его определении не существует.
3. Дескрипционные логики
Перейдем к описанию базовой дескрипционной логики ALC (Attributive Language with Complément), на основе которой строятся многие другие логики [3].
Пусть заданы непустые конечные множества атомарных концептов А и атомарных ролей R. Тогда составные концепты логики определяются следующим индуктивным образом:
- всякий атомарный концепт А является концептом;
- выражения Г и 1 являются концептами;
- если С есть концепт, то его дополнение -С является концептом;
- если С и D есть концепты, то их пересечение С П О и объединение С U D являются концептами;
- если С есть концепт, a R есть роль, то выражения VR.C и 3R.C являются концептами.
Аксиомой вложенности концептов называется выражение вида Сс Д а аксиомой эквивалентности концептов — выражение вида С = D, где С и D — произвольные концепты.
Терминологией или набором терминологических аксиом (ТВох) называется конечный набор аксиом перечисленных видов.
Семантика ДЛ задается путем интерпретации ее атомарных концептов как множеств объектов, выбираемых из некоторого фиксированного множества (домена), а атомарных ролей — как множеств пар индивидов, т. е. бинарных отношений на домене.
Формально, интерпретация I состоит из непустого множества А7 (домена) и интерпретирующей функции, которая сопоставляет каждому атомарному концепту А некоторое подмножество А' сА', а каждой атомарной роли R — некоторое подмножество R1 çz Д'аА' . Если пара индивидов принадлежит интерпретации некоторой роли R, т.е. (е. ci) cz R1. то говорят, что индивид d является R—последователем индивида е. Интерпретирующая функция распространяется на составные концепты логики по стандартным правилам [3]:
- -р интерпретируется как весь домен: Т1 = А7 ;
- 1 интерпретируется как пустое множество: _L' = 0;
- дополнение концепта интерпретируется как дополнение множества
-пС1 =А'\С';
- пересечение концептов интерпретируется как пересечение множеств
- объединение концептов интерпретируется как объединение множеств
- выражение УЯ.С интерпретируется как множество тех индивидов, у которых все Я-последователи принадлежат интерпретации концепта С
(VЯ.С)' = {е е А7 | Vй е А7 : (е, й) е Я' => й е С'}; (1)
- выражение 3Я.С интерпретируется как множество тех индивидов, у которых имеется Я-последователъ, принадлежащий интерпретации концепта С.
(ЭКС)' = {е е А7 | Зй е А7 : (е, й) е Я' лй е С7}. (2)
Аксиомы СсО и С = О выполняются в интерпретации /, если С7 с ГУ и С7 = И' соответственно.
Для описания диаграмм классов целесообразнее использовать логику АЬССН. имеющую по отношению к АЬС следующие расширения.
(2 — ограничения кардинальности ролей: концепты вида < п Я.С, означающие, что существует не более п Я-последователей в С. Они интерпретируются так: (> пЯ)' =(ае А7 {Ь \ (а,Ь) е Я1} п} (< пТ?)7 =(аеА' {Ь | е Я1} л}, где обозначает мощность множества.
I — обратные роли: если Я есть роль, то Я тоже является ролью, означающей обращение бинарного отношения.
Интепретация роли Я , обратной Я, определяется аналогично интерпретации роли Я, только пара индивидов меняется местами.
Отметим, что ДЛ АЬС (а также многие ее расширения, в том числе АЬССН) можно рассматривать как фрагменты логики предикатов первого порядка с двумя переменными, которая разрешима [10]. Это позволяет переносить результаты о разрешимости, вычислительной сложности и разрешающих алгоритмах из области логики предикатов в область дескрипционных логик.
Отметим, что для диаграмм классов мы имеем дело только с ТВох, поскольку объекты в явном виде в диаграммах классов не фигурируют. Интересовать нас будет в первую очередь решение следующих трех задач: (1) не являются ли аксиомы, описывающие диаграммы классов в терминах ДЛ, противоречивыми, т. е. не может
ли хотя бы одна формула быть выведена одновременно со своим отрицанием; (2) можно ли выделить наборы утверждений (аксиом), свидетельствующие о неэффективности модели; (3) можно ли осуществлять преобразования аксиом (рефакторинг модели предметной области, существующей в виде утверждений ДЛ) так, чтобы получать более оптимальную модель.
4. Представление диаграмм классов в виде ДЛ
Итак, опишем метод представления, точнее кодирования диаграмм классов, в виде аксиом ДЛ [4].
Классу поставим в соответствие концепт, отношению ассоциации — роль. Каждый атрибут А типа К класса С представляется так:
С с: \/АК. (4)
Операция /(Я) : Р, задающая преобразование множества значений /? в множество значений Р, представляется ролью Р/ (К), для которой справедливо
С^РтуР[М<\Рт)Т). (5)
Отношение обобщения между классами С^ и С,, очевидно, представляется
С2сС„ (6)
где Сг — предок.
Для кодирования параметров отношения бинарной ассоциации (рис. 1) и агрегирования (агрегирование степени выше двух бессмысленно) используем следующие утверждения:
ВАС, с С,,
(7)
ЗА ,С[ с С2, С, с (> т, АС) П (> т-Л.С-,), С2 с(>;г1А~.С2)П(^ п2А .С2), где С,, С, — концепты, соответствующие классам; А — роль, соответствующая бинарной ассоциации; А~ — обратная (по отношению к А) роль; /?,, п2, тг, пи — числовые значения, соответствующие кратностям.
Наконец, я-арныс ассоциации (см. рис. 1) как с классом-ассоциацией, так и без него, могут быть выражены с помощью процедуры реификации [3], т. е. преобразования я-арных отношений в бинарные, следующим образом:
А^БЕ1.С1П...ПВЕп.СпП(<В1)П...П(<К), С„С(<ШД;.А)П(</,Д;.А).
(8)
Рисунок 1. N-арная ассоциация
Достаточно важным отношением в диаграммах классов является отношение зависимости. На полноту и непротиворечивость модели, описываемой с помощью диаграмм классов UML, это отношение никак не влияет. Для кодирования отношения зависимости введем обозначение С, —> С,.
Это означает, что класс С\ зависит от класса Сх. Будем рассматривать его как некое неформальное расширение дескрипционной логики.
Несмотря на несколько вольную трактовку понятия вложенности концептов, в работе [4] проведено доказательство непротиворечивости (consistency) описанного способа кодирования. Таким образом, первая задача (1) может считаться решенной.
Задача (2) связана с поиском неоптимальных с точки зрения диаграмм классов наборов утверждений ДЛ. То есть формальное описание диаграмм классов, представленное в форме утверждений ДЛ, анализируется с целью поиска заведомо неэффективных частей. Например, ищутся фрагменты диаграмм, для которых в соответствии с шаблонами проектирования есть более эффективная модель описания предметной области.
Также для решения данной задачи может быть применен подход, основанный на понятии антишаблона проектирования — неудачного с точки зрения последующей реализации фрагмента диаграммы классов [10]. Суть этого подхода заключается в том, что если в диаграмме классов обнаруживается анти-шаблон, то проектировщику дается информация о сути проблемы и предлагается изменить диаграмму классов.
Задачу (3) — автоматическое преобразование утверждений ДЛ, описывающих диаграммы классов, с целью получения более оптимальной модели — решить можно только в ряде случаев, например, ориентируясь на подходы, предложенные в работах [8, 11].
5. Примеры оптимизации
В качестве примеров применимости предложенной технологии используем ряд стандартных шаблонов и шаблонов, введенных в работе [8].
1. Возьмем шаблон, известный как «Цепочка обязанностей». Рассмотрим наиболее простой частный случай применения этого шаблона (рис. 2), когда запрос Напс11егМ() может обрабатываться объектом одного из двух классов. В этом случае может быть введен абстрактный класс (или интерфейс), перенаправляющий запрос конкретному классу. Тогда диаграмма классов примет вид, показанный на рис. 3.
Client
Рисунок 2. Пример использования шаблона «Цепочка обязанностей»
Тогда имеем описание диаграммы в виде следующих утверждений дескрипционной логики:
Handler1 с \/PHailillerM{RyP{< Г\\РНапДегМтТ\
Handler2 с VPHanillerM{R) Л < Ш PHanillerM{R) Т),
и неформальных расширений: Client —> Handler1, Client —» Handler2,
где HandlerM — операция, осуществляющая преобразование множества значений R в множество значений Р. которые в данном случае не конкретизированы.
Анализируя это описание, можно сделать вывод о правомерности применения шаблона «Цепочка обязанностей».
Рисунок 3. Результат использования шаблона «Цепочка обязанностей»
2. Шаблон, позволяющий перейти от тернарной ассоциации к бинарной.
Напомним, в чем суть этого шаблона: если в тернарной ассоциации имеется класс с кратностью (1), то тернарную ассоциацию можно заменить на комбинацию бинарной ассоциации и класса-ассоциации. Доказательство этого положения приведено в работе [7]. Диаграммы классов, иллюстрирующие эту ситуацию, приведены на рис. 4 и 5.
Рисунок 4. Тернарная ассоциация
Можно смело заменять тернарную ассоциацию на комбинацию бинарной ассоциации и класса-ассоциации, имея описание модели ПС в виде следующего набора утверждений дескрипционной логики:
Teaching с Student П Subject П Lecturer П
Student с (> 1 R} ).Teaching), Subject с (> \R^).Teaching), Lecturer с (> Щ ).Teaching П 1 Rr,).Teaching),
где Rj, R2, R3, Rj , R2, R3, — прямые и обратные роли классов Student, Subject и Lecturer в отношении Teaching.
SUBJECT TEACHING STUDENT
1..* 1..*
LECTURER
Рисунок 5. Замена тернарной ассоциации на бинарную и класс-ассоциацию
3. Третий пример основан на использовании антишаблона «Цикл ассоциаций» (рис. 6). Смысл этого антишаблона в следующем: если семантически связанные отношения ассоциации образуют цикл, то возможно, что одно из них избыточно и тогда его следует удалить. Удаление может производиться только проектировщиком; в связи с этим информация об обнаружении антишаблона «Цикл ассоциаций» должна поступить проектировщику.
Рисунок 6. Пример антишаблона «Цикл ассоциаций»
На языке дескрипционной логики это будет выглядеть так:
3 Effecting of payment. Customer с Payment,
3 Order _ goods. Order с Customer, 3 Payment _ order. Payment с Order.
Тогда проектировщику будет предложено удалить одну из трех аксиом. В данном случае логично было бы для удаления выбрать аксиому
3 Effecting of payment. Customer с Payment,
и соответствующее ей в диаграмме классов отношение ассоциации Effecting of payment. Такой выбор определяется семантикой предметной области, а именно тем, что оплачивается конкретный заказ, который связан только с одним пользователем.
6. Инструментальное средство оптимизации ДК
В существующих CASE-средствах обычно присутствуют упрощенные средства ва-лидации диаграмм классов, фиксирующие только грубые ошибки, связанные исключительно с правилами построения диаграмм; и полностью отсутствуют средства оптимизации. Последнее вполне объяснимо, поскольку задача формального описания ДК в полном объеме не решена и, кроме того, общепринятых правил оптимизации ДК пока не разработано. Но это не мешает попытаться использовать методы формального описания ряда элементов диаграмм классов, с одной стороны, и имеющийся в настоящее время набор правил оптимизации с другой.
В качестве базового CASE-средства можно взять довольно мощный пакет Rational Software Architect компании IBM, работающий на платформе Eclipse. Он поддерживает все основные элементы диаграмм классов, включая интерфейсы, классы-ассоциации, области видимости и т. д. и исключая я-арныс отношения ассоциации. Написан Rational Software Architect на языке Java и довольно легко расширяется с помощью плагинов.
Для расширения Rational Software Architect средствами валидации и оптимизации ДК необходимо осуществить следующее:
1. Разработать алгоритм преобразования внутреннего для Rational Software Architect представления ДК в утверждения ДЛ.
2. Создать метод поиска неоптимальных наборов утверждений ДЛ, используя предлагаемые шаблоны.
3. Предложить в ряде случаев способ автоматической замены найденных утверждений ДЛ более оптимальными.
4. Разработать алгоритм обратного преобразования утверждений ДЛ во внутреннее для Rational Software Architect представление ДК.
Кроме того, пользователю желательно дать возможность расширять перечень неоптимальных с его точки зрения фрагментов ДК. Сделать это можно следующим образом: пользователь в специальном режиме вводит фрагмент диаграммы классов и, если возможно, оптимизированный фрагмент. Далее система сама осуществляет необходимое преобразование в форму ДЛ и настраивает алгоритм поиска.
Кажется, что наибольшую сложность представляет решение задачи поиска неоптимальных фрагментов. Но в связи с тем, что общее число элементов в диаграммах классов сравнительно небольшое (не более нескольких тысяч), решить эту за-
дачу можно, используя переборные алгоритмы. Кроме того, диаграммы классов можно разбивать на фрагменты и анализировать каждый фрагмент автономно.
7. Заключение
В статье описан новый подход к оптимизации моделей программных систем на этапе проектирования. Этот подход заключается в преобразовании диаграмм классов в утверждения дескрипционной логики и автоматическом поиске неэффективных фрагментов. Для этих целей могут использоваться как шаблоны проектирования, так и антишаблоны. Информация об обнаруженных неэффективных фрагментах передается проектировщику, который и принимает решение о модификации модели. Кроме того, система может рекомендовать проектировщику применить определенные преобразования, а в ряде случаев проводить трансформации автоматически.
Актуальность подхода определяется тем фактом, что верификация и оптимизация модели проводятся уже на этапе проектирования, что позволяет в дальнейшем минимизировать процессы отладки и рефакторинга кода. Перечислим основные положения работы:
1. Формальное описание модели предметной области, представленной в форме диаграммы классов, в виде утверждений дескрипционной логики.
2. Автоматический поиск неоптимальных фрагментов модели с использованием шаблонов и антишаблонов проектирования.
3. Автоматическое для ряда шаблонов преобразование представленной утверждениями дескрипционной логики модели предметной области в более оптимальную.
Литература
[1] Rumbaugh J., Jacobson I., Booch G. The Unified Modeling Language Reference Manual. — Ad-dison-Wesley, Reading, MA, 1998.
[2] Gamma E„ Johnson R„ Helm R„ Vlissides J. Design Patterns. Elements of Reusable Object-Oriented Software. — Addison-Wesley, 2001.
[3] Baader F., Calvanese D„ McGuinness D„ Nardi D„ Pat el-Schneider P. F. The Description Logic Handbook: Theory, Implementation and Applications. — Cambridge University Press, Cambridge, 2003.
[4] Berardi D„ Calvanese D„ Giacomo G. D. Reasoning on UML Class Diagram // Artificial Intelligence. 2005. Vol. 168. P. 70-118.
[5] Queralt A., Artale A., Calvanese /)., Teniente E. OCL-Lite: Finite reasoning on UML/OCL conceptual schémas // Data & Knowledge Engineering. 2012. Vol. 73. P. 1-22.
[6] Sergievskiy A4. Description Logic Application for UML Class Diagrams Optimization // International Journal of Advanced Computer Science and Applications. 2017. Vol. 8. No. 1. P. 268-272.
[7] Berardi /)., Calvanese /)., Giacomo G. D. Reasoning on UML Class Diagram Using Description Logic Based Systems // Proc. of the KI2001 workshop on Application of Description Logics 2001, CEUR electronic Workshop Proceedings, 2001.
[8] Sergievskiy A4. N-ary Relations of Association in Class Diagrams: Design Patterns // International Journal of Advanced Computer Science and Applications, 2016. Vol. 7. No. 2. P. 265-268.
[9] Nikulchev E„ Deryugina O. Model and Criteria for the Automated Refactor-ing of the UML Class Diagrams // International Journal of Advanced Computer Science and Applications. 2016. Vol. 7. No. 12. P. 76-79.
[10] Cali A., Clavanese /)., Giacomo G. /)., Lcnzerini A4. A Fonnal Framework for Reasoning on UML Class Diagram // Proc. of the 13th Int. Sym. on Methodologies for Intelligent Systems (IS-MIS 2002), 2002.
[11] Brown W„ Malveau R., McCormick III H„ Mowbray T. AntiPatterns. Refactoring Software, Architectures, and Projects in Crisis. — John Wiley & Sons, Inc., 1998.
[12] Grigoriev A., Kropotin A., Ovsyannikova E. The Problem of Detecting Consistencies on UML Class Diagrams // Proc. of International scientific-practical conference on Modern problems and ways of their solution in science, transport, production and education'2012. http://www. sworld.com.ua/konfer29/721 .pdf
Авторы:
Максим Владимирович Сергиевский — кандидат технических наук, доцент, доцент кафедры
«Системный анализ». Национальный исследовательский ядерный университет МИФИ; доцент кафедры информатики и автоматизации. Московский технологический институт
Анатолий Юрьевич Конкин — аспирант кафедры «Информационные технологии в социальных системах». Национальный исследовательский ядерный университет МИФИ
Cloud of Science. 2017. T. 4. № 3 http:/ / cloudofscience.ru
Optimization of UML class diagrams via description logic
M. V. Sergievskiy***, A. Yu. Konkin*
'National Research Nuclear University MEPhI Kashirskoe highway, 31, Moscow, Russia, 115409
'Moscow Technological Institute Leninskiy pr., 38A, Moscow, Russia, 119334
e-mail: sermax@yandex.ru
Abstract. Most of known technologies of object-oriented developments are UML-based; particularly widely used class diagrams that serve to describe the model of a software system, reflecting the regularities of the domains. CASE tools used for object-oriented developments, often lack verification and optimization functions of class diagrams. This article will discuss one of the ways to present class diagram in the form of statements description logic, and then perform their verification and optimization. Optimization process is based on design patterns and anti-patterns. Some specific examples of optimization are given. We will show that some transformations could be done automatically, while in other cases suboptimal models need to be adjusted by a designer. Key words: UML, domain models, description logic, concept, role, class diagram, design patterns, anti-patterns.
References
[1] Rumbaugh J., Jacobson I., Booch G. (1998) The Unified Modeling Language Reference Manual. Addison-Wesley, Reading, MA.
[2] Gamma E„ Johnson R„ Helm R„ Vlissides J. (2001) Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley.
[3] Baader F., Calvanese D„ McGuinness D„ Nardi D„ Pat el-Schneider P. F. (2003) The Description Logic Handbook: Theory, Implementation and Applications. Cambridge University Press, Cambridge.
[4] Berardi D., Calvanese D„ Giacomo G. D. (2005) Artificial Intelligence, 168:70-118.
[5] Queralt A., Artale A., Calvanese D., Teniente E. (2012) Data & Knowledge Engineering, 73:1-22.
[6] Sergievskiy A4. (2017) International Journal of Advanced Computer Science and Applications, 8(l):268-272.
[7] Berardi /)., Calvanese /)., Giacomo G. D. (2001) Reasoning on UML Class Diagram Using Description Logic Based Systems. In Proc. of the KI2001 workshop on Application of Description Logics 2001, CEUR electronic Workshop Proceedings.
[8] Sergievskiy M. (2016) International Journal of Advanced Computer Science and Applications, 7(2):265-268.
[9] Nikulchev E„ Deryugina O. (2016) International Journal of Advanced Computer Science and Applications, 7(12):76-79.
[10] Call A., Clavanese /)., Giacomo G. /)., Lcnzerini M. (2002) A Fomial Framework for Reasoning on UML Class Diagram. In Proc. of the 13th Int. Sym. on Methodologies for Intelligent Systems (IS-MIS 2002).
[11] Brown W., Malveau R„ McCormick III H., Mowbray T. (1998) AntiPatterns. Refactoring Software, Architectures, and Projects in Crisis. John Wiley & Sons, Inc.
[12] Grigoriev A., Kropotin A., Ovsyannikova E. (2012) The Problem of Detecting Consistencies on UML Class Diagrams. In Proc. of International scientific-practical conference on Modern problems and ways of their solution in science, transport, production and education'2012. http://www. sworld.com.ua/konfer29/721 .pdf