Статья: Проектирование систем программного обеспечения под управлением онтологий: модели, методы, реализации

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Проектирование систем программного обеспечения под управлением онтологий: модели, методы, реализации

В.Ф. Хорошевский

Вычислительный центр им. А.А. Дородницына РАН, ФИЦ «Информатика и управление» РАН, Москва, Россия

Аннотация

В представленном обзоре обсуждаются вопросы проектирования систем программного обеспечения под управлением онтологий. На основе краткого анализа «классических» технологий, подходов и методов показано, что в настоящее время акценты исследований и разработок всё больше смещаются из области технологий программирования в сторону моделирования процессов проектирования программного обеспечения, а также спецификации разрабатываемых систем и тестирования результатов разработок. Общим трендом является использование методов и средств онтологического моделирования процессов проектирования и спецификаций разрабатываемых систем. Обсуждаются парадигмы моделирования процессов разработки и инжиниринг программного обеспечения на основе повторного использования компонент. При этом общим подходом, поддерживающим рассмотренные парадигмы, является программирование через генерацию. Показано, что исследования и разработки в области создания семантических моделей проектирования программного обеспечения развиваются в настоящее время в рамках нового направления - Ontology-Based (-Driven) Software Engineering. При этом наряду с разработками по онтологическому моделированию процессов проектирования программного обеспечения активно ведутся работы по созданию инструментов онтологического инжиниринга в данной предметной области. Теоретические основы онтологического моделирования процессов проектирования программного обеспечения позволяют сместить центр тяжести от моделей сборки программного обеспечения прикладных систем из крупных функциональных блоков к моделям генерации блоков из согласованной системы онтологических паттернов их внутренних спецификаций. Перспективы в рассматриваемой области связаны с использованием методов и средств машинного обучения для генерации онтологических моделей проектирования программного обеспечения.

Ключевые слова: технологии проектирования, программное обеспечение, онтологическое моделирование, проектирование под управлением онтологий, система онтологий проектирования, прикладная система.

ONTOLOGY DRIVEN SOFTWARE ENGINEERING: MODELS, METHODS, IMPLEMENTATIONS

V.F. Khoroshevsky Dorodnicyn Computing Centre of Russian Academy of Sciences, Federal Research Center “Computer Science and Control” of Russian Academy of Sciences, Moscow, Russia

программный онтологический инжиниринг

Abstract

Ontology-driven software engineering is the scope of the paper. A retrospective analysis of the approaches, models and methods is carried out. In the first section, a brief overview of "classical" technologies, approaches and methods for software engineering is presented. It is shown that the emphasis of research and development is currently shifting from the field of technologies of programming towards the modeling of the software design processes, as well as towards the specifications and testing of the developed systems. It is outlined that the general trend in the domain is the use of methods and tools of ontology modeling of both the design processes per se and the specifications of the developed systems. The second section is devoted to a review of publications in the field of ontology-based software engineering.

Such paradigms for modeling software development processes as Software Product Lines, plug-and-play software development - Component-Based Development, model-driven software engineering - Model-Driven Engineering, etc. are discussed. It is shown that --programming through generation”, i.e. Generative Programming, is a general approach supporting the considered paradigms. It is shown that R&D in the domain of the semantic models of software engineering is currently focused on a new approach - Ontology-Based (-Driven) Software Engineering. Within the framework of this area, ontology engineering tools are developed along with modeling the software development processes. The scientific and technical perspectives of ontology driven software engineering are specified and discussed in the final part of the paper. In particular, it is outlined that the theoretical foundations of ontology-based modeling of software design processes form the solid basis for shifting the focus from the models of compiling the modules to their pattern-based generation from internal specifications. It is noted that the next trend in the field of OBSE-ODSE will be the usage of machine learning methods and tools to generate ontological models of software design.

Key words: software engineering, software product lines paradigm, component-based development, model-driven engineering, generative programming, ontology modeling, ontology-driven software engineering, system of ontologies of designing, ontology-driven applied system.

Введение

Автоматизация проектирования систем программного обеспечения (ПО) имеет более чем 40-летнюю историю и, вместе с тем, остаётся в фокусе современных исследований и разработок. Постановка задачи автоматизации проектирования систем ПО предполагает наличие адекватных моделей всего жизненного цикла (ЖЦ), включая технологии разработки и реализации, модели архитектуры систем и их программных компонент, а также модели генерации ПО и модели предметных областей (ПрО), в которых предполагается функционирование соответствующих систем. Основным трендом в настоящее время является создание и использование семантических моделей автоматизации проектирования ПО.

В работе обсуждаются вопросы проектирования ПО прикладных систем под управлением онтологий. Выполнен ретроспективный обзор используемых в этой ПрО подходов, моделей и методов. Показано, что в настоящее время общим трендом в исследованиях и разработках по автоматизации проектирования систем ПО является использование методов и средств онтологического моделирования как самих процессов проектирования, так и спецификаций разрабатываемых систем. В заключительной части работы указываются перспективы развития рассматриваемого научно-технического направления.

1. Автоматизация проектирования систем ПО

Модели ЖЦ процессов проектирования ПО

В рамках создания технологий программирования разработаны и активно используются на практике различные модели процессов проектирования ПО [1-3], среди которых наиболее известными являются каскадная модель (Waterfall model) [4], спиральная модель Боэма (Boehm Spiral model) [5], модель экстрим-программирования (Extreme programming) [6], модель «проворного» программирования (The Agile Software Process) [7], модель RUP (Rational Unified Process) [8], а также стандарты ISO [9, 10] и др. Каждая из перечисленных моделей обладает достоинствами и недостатками, но общим их несовершенством является то, что все они скорее методологические рекомендации и требования, чем формальные модели ЖЦ, которые могут быть основой для полной автоматизации процессов проектирования ПО. Как показывает анализ публикаций, на современном этапе всё большее внимание исследователей и разработчиков привлекают парадигмы и модели проектирования ПО.

Парадигмы и модели проектирования ПО

Одна из известных парадигм моделирования процессов разработки ПО опирается на понятие ПО-семейства - Software Product Lines (SPLs), которое представляет ПО с общей архитектурой и повторно используемыми компонентами [11], что повышает качество, сокращает время, стоимость и сложность разработки [12]. Основная цель SPLs - отказ от разработок «с нуля» путём реконфигурирования и повторного использования компонент существующих в других проектах SPLs. Разработка на базе SPLs включает два процесса: Domain Engineering (DE) и Application Engineering (AE). Задача DE - разработка общей архитектуры систем семейства и формирование планов для «членов» семейства. Процесс AE ориентирован на создание конкретных продуктов вовремя и с минимальной ценой при высоком качестве.

Сходная с предыдущей парадигма разработки ПО на основе компонент - Component- Based Development (CBD или CBE) - базируется на повторном использовании компонент в стиле «вставил и заработало» (plug-and-play) и направлена на осуществление давней мечты о создании сложных систем ПО из компонент «с полки» (off-the-shelf) [13].

Парадигма инжиниринга ПО под управлением моделей - Model-Driven Engineering (MDE) обращается к модельным абстракциям и автоматической генерации кода. В рамках парадигмы MDE основные свойства проектируемой системы выражаются в соответствующих моделях, а генераторы используются для получения исходного кода ПО для различных объектов модели [14, 15]. Модель представляет собой описание будущей системы, которое рассматривается не как документ спецификации, а как повторно используемый артефакт на всём ЖЦ создания ПО [16]. В MDE используются техники «послойного» проектирования с автоматической трансформацией моделей в исходные коды ПО. В рамках MDE используются три слоя: вычислительно-независимая модель - Computation Independent Model (CIM), специфицирующая структурные аспекты будущей системы; платформенно-независимая модель - Platform Independent Model (PIM), фиксирующая систему как технологически нейтральную виртуальную машину или вычислительную абстракцию; платформенно-зависимая модель - Platform Specific Model (PSM), которая включает модель платформы и модель реализации. В MDE разработчики создают первую версию разрабатываемого ПО на языке спецификаций UML (Unified Modeling Language), а затем путём итераций уточняют её до тех пор, пока она не будет отвечать заданным критериям и не станет достаточно конкретной, чтобы из неё можно было сгенерировать исходные коды ПО разрабатываемой системы.

Общим подходом, поддерживающим рассмотренные выше парадигмы, является программирование через генерацию - Generative Programming (GP) [14]. При этом генератор рассматривается как программа, на вход которой поступают высокоуровневые спецификации фрагментов ПО, а на выходе формируется соответствующий исходный код ПО разрабатываемой системы. GP использует техники DE и может применяться в SPLs AE. Дополнительно к UML-моделированию в подходе GP применяется метод Feature-Oriented Domain Analysis (FODA), который описывает общие и частные свойства моделируемых объектов и связей между ними. Предметная GP-модель фокусируется на отображении «пространства» проблемы в «пространство» решения, а сам генератор использует техники метапрограммирования для чтения, генерации, анализа или трансформации других программ и даже для модификации своего кода в процессе исполнения [12].

Приведённый обзор парадигм, моделей и методов показывает, что они ориентированы на формальную спецификацию процессов проектирования ПО, но остаются в «традиционном» русле автоматизации программирования. В последнее время всё большее внимание исследователей и разработчиков привлекают семантические модели проектирования ПО.

2. Семантические модели проектирования ПО

Исследования и разработки в области создания семантических моделей проектирования ПО развиваются в настоящее время в рамках нового направления - Ontology-Based Software Engineering (OBSE) или Ontology-Driven Software Engineering (ODSE). Иногда это направление называют программной инженерией - Software Engineering 2.0 [17-22].

Так, в работе немецкого специалиста В. Гессе (W. Hesse) [17] даётся сравнительный анализ атрибутов ЖЦ программной инженерии и онтологического инжиниринга (таблица 1).

Таблица 1 - Сравнительный анализ атрибутов ЖЦ программной инженерии и онтологического инжиниринга (адаптировано из [17])

Software Engineering

Ontology Engineering

Длительность

* детерминирована, ограничена рамками одного проекта

* недетерминирована, неограничена

Структура

* фазы,

группировка в итерации и активности

* эволюционные,

группировка в итерации и активности

Подпроцессы

* для компонент,

инкрементные или специальные задачи

* для разработки или ревизии ПрО

Парадигмы

водопадная

инкрементная

на базе компонент

прототипирование, спиральная

инкрементная

на базе компонент

эволюционная

Активности и артефакты

поиск и описание случаев

определение требований

построение концептуальной модели / класса структур

построение архитектуры системы, спецификация компонент и модулей

кодирование: использование / генерация на конкретных языках программирования

тестирование и отладка

интеграция, тестирование подсистем

развёртывание

валидация, адаптация к окружению

получение обратной связи от пользователей

ревизия (при необходимости)

идентификация потенциальных приложений

анализ терминологии

построение таксономий

построение и заполнение глоссариев

определение фактов и правил

сравнение глоссариев, разрешение терминологических конфликтов

формализация: трансляция в формальный язык спецификации онтологий

интеграция:

связывание и валидация под-онтологий, адаптация с онтологиями верхнего / соседнего уровня

публикация онтологий

валидация, получение обратной связи

определение требований для ревизии

Языки /

средства

спецификации

диаграммы случаев

естественный язык

ER-диаграммы, UML

псевдокод

языки программирования

естественный язык

ER-диаграммы, UML

глоссарии, таблицы

семантические сети

тематические карты

логики

концептуальные графы

фреймы, DAML+OIL, OWL

Цтевые

грргыы

пользователи

клиенты

(другие) разработчики

предметные эксперты

разработчики

агенты

Результаты и продукты

ориентация на проект

краткосрочная ориентация

(чаще) не используемые повторно

изолированы,

ограничены конкретными приложениями

охватывающие много проектов

ориентированы на долгосрочную перспективу

повторно используемые

«разделяемые» многими организациями и между многими проектами

В рамках OBSE-ODSE можно выделить несколько тематик исследований и разработок. Наиболее развитым является онтологическое моделирование процессов управления разработками ПО [21], которое исторически имеет своим базисом работы в рамках канадского проекта TOVE (TOronto Virtual Enterprise) и проекта Enterprise Project [23, 24].

С точки зрения целей и задач настоящей работы интересными являются исследования и разработки по созданию онтологий проектирования ПО [25-31], а также по разработке и использованию соответствующих инструментальных средств в конкретных прикладных системах на основе онтологий [32-40].

Семантические модели процессов создания ПО

Как показывает анализ публикаций, все семантические модели процессов создания ПО опираются на ту или иную классификацию используемых моделей.

В работе [26] на основе анализа фаз ЖЦ построения систем ПО предложена следующая классификации системы онтологических моделей для этой ПрО:

- разработка под управлением онтологий - Ontology-driven development (ODD) - предполагает использование онтологий в процессе создания ПО для спецификации ПрО разработки;

- поддержка разработки на основе онтологий - Ontology-enabled development (OED) - тоже использует онтологии в процессе разработки, но здесь они ориентированы на поддержку разработчиков при решении их задач;

- архитектура ПО на базе онтологий - Ontology-based architectures (OBA), здесь онтологии используются как первичные артефакты на этапе исполнения и играют центральную роль в логике приложения;

- поддержка архитектуры на основе онтологий - Ontology-enabled architectures (OEA) - предполагает использование онтологий для обеспечения поддержки инфраструктуры во время работы программной системы (хорошим примером здесь могут быть базы знаний интеллектуальных прикладных систем, где онтологии добавляют семантический слой поверх существующих описаний, расширяя функциональные возможности разработанного ПО).

Отдельные кластеры данной классификации могут перекрываться, а онтологии из этих кластеров - использоваться на разных этапах ЖЦ разработки ПО.

Общепризнанные в области онтологического инжиниринга специалисты Н. Гуарино (N. Guarino См. например: N. Guarino. Formal Ontology and Information Systems. Proc. of FOIS'98, Trento, Italy, 6-8 June 1998. Amsterdam, IOS Press, pp. 3-15. - Прим.ред.) и Д. Фензел (D. Fensel См. например: D. Fensel. Ontologies: Silver Bullet for Knowledge Management and Electronic Commerce, Springer-Verlag, Berlin, 2001.2nd Edition, Springer-Verlag, Berlin, 2003. - Прим.ред.) придерживаются несколько другой классификации онтологий, которая базируется на уровнях общности онтологических моделей:

Источник: https://otherreferats.allbest.ru/download/1301530/