Научная статья на тему 'Метод онтологического инжиниринга в гибком процессе разработки программного обеспечения'

Метод онтологического инжиниринга в гибком процессе разработки программного обеспечения Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
404
78
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОНТОЛОГИЯ / ОНТОЛОГИЧЕСКЙ ИНЖИНИРИНГ / ГИБКИЕ МЕТОДОЛОГИИ / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / ONTOLOGY / ONTOLOGICAL ENGINEERING / AGILE METHODOLOGIES / SOFTWARE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кошкидько А. В.

Проектирование и разработка онтологий, т.е. онтологический инжиниринг, не является тривиальной задачей. Он требует от разработчиков профессионального владения технологиями инженерии знаний от методов извлечения знаний до структурирования и формализации. Однократное решение всех подзадач задачи онтологического инжиниринга с имеющимися входными данными, известными о продукте на стадии инициации проекта, позволяет получить только грубые результаты в виде онтологии с большим количеством неточностей. Более того, для проектов, которые включают в себя значительный программный компонент, традиционный метод управления проектом, который подразумевает однократный проход всех этапов проекта, может быть неэффективным, поскольку требования могут оказаться смутными, изменчивыми. В настоящее время в сфере разработки программного обеспечения очень популярно понятие гибкой методологии разработки (англ. Agile software development). Гибкая методология представляет собой серию подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки и динамическое формирование требований. Гибкий метод разработки состоит из множества скорых итеративных циклов планирования и разработки, позволяя команде разработчиков постоянно оценивать развивающийся продукт и получать мгновенные отзывы от пользователей и участников проекта. Такой подход позволяет совершать мгновенные изменения как онтологии программного продукта, так и непосредственно продукта при поступлении новых требований. Внедрение метода онтологического инжиниринга в итеративный процесс разработки программного обеспечения позволит последовательно решать обозначенные подзадачи общей задачи онтологического инжиниринга с использованием обновленных входных данных, появившихся в рамках очередной итерации. Таким образом, на выходе из каждой итерации разработки программного обеспечения мы получаем все более полную и точную онтологию программного продукта. Это, в свою очередь, позволяет разрешить вышеописанные проблемы и достичь поставленной цели в составлении онтологии комплексного программного продукта в проектах с высокой степенью неопределенности.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Design and development of ontologies, i.e, ontological engineering, is not a trivial task. It requires the development of professional knowledge engineering technology ownership from knowledge extraction methods to the structuring and formalization. A single solution to all problems of ontological engineering subtasks with available input data known about the product at the stage of initiation of the project, allows you to get only the results in the form of rough ontology with a large number of inaccuracies. Moreover, for projects that include a significant software component that traditional project management method, which involves a single pass all the stages of the project, can be inefficient, because the requirements may be vague, changeable. Currently in the field of software development is very popular concept of Agile Development Methodologies. Agile is a series of approaches to software development-oriented use of iterative development and dynamic formation requirements. Agile Development Method consists of a set of fast iterative planning and development cycles, allowing the development team to continuously assess the evolving product and receive instant feedback from users and stakeholders. This approach allows you to make instant changes in both software product ontology and the product itself when new requirements. Introduction of ontological engineering in an iterative software development process allows consistently solve certain subtasks of the general problem of the ontological engineering using updated input data that have emerged in the framework of the next iteration. Thus, the output from each iteration of the software development we get a more accurate ontology software. This, in turn, allows to solve the above problems and to achieve this goal in the preparation of complex ontology software projects with a high degree of uncertainty.

Текст научной работы на тему «Метод онтологического инжиниринга в гибком процессе разработки программного обеспечения»

«рабочий стол», на котором он видит документы, которые он должен обработать, просроченные документы и общий список документов.

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

Литература

1. Гущин, А.Н. Базы данных: учебно-методическое пособие / А.Н. Гущин. - 2-е изд., испр. и доп. - М.; Берлин : Директ-Медиа, 2015. - 311 с.

2. Мухин, Н.П. Компьютерные системы управления документооборотом / Н.П. Мухин. - М. : Лаборатория книги, 2010. - 58 с.

3. Шафоростова Е.Н., Квашина С.В. «Автоматизация учета товаров на АГЗС «Северного объединения по эксплуатации газового хозяйства», СТИ НИТУ «МИСиС», 2009.

УДК 004.9

МЕТОД ОНТОЛОГИЧЕСКОГО ИНЖИНИРИНГА В ГИБКОМ ПРОЦЕССЕ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ7

Кошкидько Алексей Владимирович, аспирант кафедры Математического обеспечения и применения ЭВМ, Инженерно-технологическая академия Южного федерального университета,

Россия, г. Таганрог, a.koshkidko@gmail.com

Онтология (в информатике) — это попытка всеобъемлющей и детальной формализации некоторой области знаний. Это структурная спецификация некоторой предметной области, ее формализованное представление, которое включает словарь (или имена) указателей на термины предметной области и логические выражения, которые описывают, как они соотносятся друг с другом. Онтологии обеспечивают словарь для представления и обмена знаниями о некоторой предметной области и множество связей, установленных между терминами в этом словаре. Онтологии используются для построения концептуальных моделей. Концептуальная модель — модель предметной области, состоящей из перечня взаимосвязанных понятий, используемых для описания этой области, вместе со свойствами и характеристиками, классификацией этих понятий, по типам, ситуациям, признакам в данной области и законов протекания процессов в ней.

Онтологический инжиниринг — ядро концепции «управления знаниями» (Knowledge Management), которое появилось в середине 90-ых годов в крупных корпорациях, где проблемы обработки информация приобрели особую остроту и стали критическими [2]. При этом стало очевидным, что основным узким местом является обработка знаний, накопленных специалистами компании, так как именно знания обеспечивают преимущество перед конкурентами.

Существуют различные подходы, модели и языки описания данных и знаний. Однако все большую популярность последнее время приобретают онтологии. Онтология - по

7 Статья рекомендована к опубликованию в журнале "Прикладная информатика"

14

определению Грубера [1], есть спецификация концептуализации, формализованное представление основных понятий и связей между ними. Ранее этот философский термин означал учение о бытии, затем он переместился в область точных наук, где полуформализованные концептуальные модели всегда сопутствовали математически строгим определениям. Под определение онтологии подпадают многие понятийные структуры: иерархия классов в объектно-ориентированном программировании, концептуальные карты, семантические сети, и т. п. Можно еще шире трактовать онтологию -например, как сценарий или процесс, как нечто структурирующее хаос.

Томас Грубер рассматривал вопросы взаимодействия интеллектуальных систем между собой, а также с человеком. Идея Грубера состояла в том, чтобы позволить интеллектуальным системам обмениваться между собой заложенными в них знаниями о мирах задач. Если внутри интеллектуальной системы знания о мире могут быть закодированы как угодно, то для обмена этими знаниями с другой интеллектуальной системой необходимо предоставить описание этих знаний. Это описание должно быть в достаточной степени формальным, чтобы быть понятным другой системе, а также должен быть известен язык этого описания. Кроме того, описание должно быть понятно и человеку. Для этого Грубер предложил описывать знания двумя способами:

1. В канонической форме, которая представляет собой описание знаний на языке логики предикатов (например, в виде фактов языка Prolog).

2. В форме онтологии, которая представляет собой множество классов, связанных между собой отношением обобщения (это обратное отношение для отношения наследования).

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

Онтологический инжиниринг должен и может стать «путеводной нитью» для всего процесса структурирования комплексных программных продуктов, так как он объединяет две основные технологии проектирования больших систем - объектно-ориентированный и структурный анализ.

Для описания онтологий существуют различные языки и системы. Наиболее перспективным представляется визуальный подход, позволяющий специалистам непосредственно «рисовать» онтологии, что помогает наглядно сформулировать и объяснить природу и структуру явлений. Визуальные модели, - например, графы, - обладают особенной когнитивной (т.е. познавательной) силой. Любой программный графический пакет можно использовать как первичный инструмент описания онтологий.

Однако, проектирование и разработка онтологий, т.е. онтологический инжиниринг, не является тривиальной задачей. Он требует от разработчиков профессионального владения технологиями инженерии знаний - от методов извлечения знаний до структурирования и формализации [3].

В связи с этим задачу онтологического инжиниринга программного продукта следует декомпозировать на несколько подзадач:

1. Выделение концептов — базовых понятий данной предметной области.

2. Определение «высоты дерева онтологий» - числа уровней абстракции.

3. Распределение концептов по уровням.

4. Построение связей между концептами — определение отношений и взаимодействий базовых понятий;

5. Исключения противоречий и неточностей.

С помощью декомпозиции мы получаем план решения задачи, в котором подзадачи могут быть решены последовательно. Тем не менее, для программных проектов с высокой степенью неопределенности специфичны следующие проблемы:

1. Отсутствие полного представления о требованиях к продукту, обусловленное динамически изменяющейся предметной областью, для которой создается программный продукт.

2. Слабая структурированность теоретических и фактических знаний о программных проектах, а также организационные сложности на стороне заказчика.

3. Неполнота информации, обусловленная игнорированием имеющегося большого опыта проектных организаций: реальные технико-экономические показатели удачно выполненных программных проектов не обобщаются и не используются в качестве исходной базы для управления новыми программными проектами [4].

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

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

В настоящее время в сфере разработки программного обеспечения очень популярно понятие гибкой методологии разработки (англ. Agile software development). Гибкая методология представляет собой серию подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки, динамическое формирование требований [5] и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля.

Гибкие методы используются тогда, когда присутствуют следующие условия:

1. значение проекта четко обозначено;

2. клиент активно участвует на протяжении всего проекта;

3. возможна пошаговая разработка, основанная на функциях;

4. допустима визуальная документация (карточки на стене в противоположность формальной документации).

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

Основная команда обычно состоит из разработчиков, которые занимаются написанием кода попарно (полноценное управление качеством), клиента/пользователя, архитектора (-ов) в области ИТ, бизнес-аналитика и руководителя проекта. Работы выполняются на протяжении серии сессий, где команда пишет код, затем тестирует рабочие модули системы, и затем процесс повторяется. Гибкая методология разработки основана на сотрудничестве

среди всех участников команды для получения хороших результатов, объективных мнений и реализации всех полученных знаний на следующем этапе разработки. Это одно из преимуществ данного метода - постоянные объективные мнения и улучшения. Руководитель проекта завершает начальное планирование, а бизнес-аналитик определяет и дает приоритеты элементам разрабатываемого продукта вместе с клиентом и специалистами.

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

Внедрение метода онтологического инжиниринга в итеративный процесс разработки программного обеспечения позволит последовательно решать обозначенные подзадачи общей задачи онтологического инжиниринга с использованием обновленных входных данных, появившихся в рамках очередной итерации. Таким образом, на выходе из каждой итерации разработки программного обеспечения мы получаем все более полную и точную онтологию программного продукта. Это, в свою очередь, позволяет разрешить вышеописанные проблемы и достичь поставленной цели в составлении онтологии комплексного программного продукта в проектах с высокой степенью неопределенности.

Литература

1. Gruber T.R. A translation approach to portable ontologies / Knowledge Acquisition, 5(2):199-220,1993.

2. Wiig К. Knowledge management is no illusion! / Proc. of the First International Conference on Practical Aspects of Knowledge Management. - Zurich, Switzerland: Swiss Information Society, 1996.

3. Гаврилова ТА., Хорошевский В.Ф., 2000. Базы знаний интеллектуальных систем / Учебник для вузов. - СПб, Изд-во «Питер», 2000.

4. Колоденкова А.Е. Задачи программного инжиниринга сложных систем на основе критерия жизнеспособности проекта / Журнал Вестник Уфимского государственного авиационного технического университета. - г. Уфа, 2011

5. Кошкидько А.В. «Метод контрольных точек в гибких методологиях разработки программного обеспечения» / Материалы десятой юбилейной ежегодной научной конференции студентов и аспирантов базовых кафедр Южного научного центра РАН. - г. Таганрог, 2014 г.

УДК 004.94

ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ РЕАЛИЗАЦИЯ СВЯЗНОЙ СТРУКТУРЫ ДАННЫХ ДЛЯ ОПТИМИЗАЦИОННЫХ ЗАДАЧ УПАКОВКИ

Чеканин Владислав Александрович, к.т.н., доцент, ФГБОУ ВО «МГТУ «СТАНКИН», Москва,

Россия, vladchekanin@rambler.ru Чеканин Александр Васильевич, д.т.н., профессор, ФГБОУ ВО «МГТУ «СТАНКИН», Москва,

Россия, avchekanin@rambler.ru

Введение

Задачи упаковки объединяют широкий набор оптимизационных задач, заключающихся в поиске наиболее плотного размещения объектов в контейнерах. К решению задач упаковки сводится решение большого числа практических задач

i Надоели баннеры? Вы всегда можете отключить рекламу.