29 Авг

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ФОРМИРОВАНИЯ ОНТОЛОГИИ ДЛЯ МОДЕРНИЗАЦИИ И СОПРОВОЖДЕНИЯ КОМПЛЕКСА ПРОГРАММ




Номер части:
Оглавление
Содержание
Журнал
Выходные данные


Науки и перечень статей вошедших в журнал:

Введение

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

  1. Онтологически-ориентированная разработка ПО

Разработка ПО с использованием онтологии (ontology-drivey development soft) исследовалось в ряде работ [1]. Элементы такого подхода содержит и парадигма порождающего программирования [2]. В аспекте эквивалентных преобразований с опорой на содержательную сторону программ дан анализ проблемы в [3]. Экспресс-анализ работ в данном направлении показывает, что основные трудности концентрируются в проблеме эффективного отображения онтологических концептов в программные кода, а также в слабом развитии инструментальных средств, позволяющих анализировать тексты крупных комплексов программ и представлять их в виде онтологических структур.    Предельным вариантом высокоуровневой разработки ПО является синтез программ по описаниям на технически-ориентированном естественном языке (ЕЯ). Эта проблема пока находится в стадии становления, отдельные результаты носят в основном рекламный характер [4 Пегас]. Тем не менее работы в данном направлении представляются весьма перспективными.  В настоящей статье предлагается частное решение общей проблемы разработки ПО с использованием онтологии, а именно разработка и реализация инструментальных средства формирования онтологии для поддержки решений программиста в рамках достаточно крупного комплекса программ.

  1. Общие сведения о предметной области

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

Конкретно для тестирования использовалась программная система gestori [5], являющаяся оболочкой, настраиваемой для реальных предприятий. В процессе настройки учитывается специфика торгового предприятия: иерархия товаров и подразделений предприятия, сведения о поставщиках и заказчиках, взаимодействие с кассовыми аппаратами, организация складского учета, особенности формирования нормативно-справочной и отчетной документации и многое другое. Концептуальная специфика предметной области во многом зафиксирована в программах и базе данных системы, поэтому основное внимание при разработке инструментальных средств было уделено отнологическому представлению собственно программам и базе данных системы. Концептами такого представления являются: <модуль>, <процедура> , <функция>,  <параметр>, <таблица>, <поле> и т.п., а отношениями, например, <вызывает>, <входит_в>, <использует> и т.д.

  1. Логика разработки инструментальных средств и программная реализация

Общая логика построения онтологии, хранящей знания о программной системе и  предметной области, описана в [6].  В рамках данной работы эта логика развивается и детализируется по следующим пунктам:

  • элементы аксиоматики предметной области;
  • элементы аксиоматики программ системы;
  • фильтры онтологии и элементы визуализации;
  • сервисные функции поддержки программиста (поиск и локализация в текстах программ);
  • элементы сервиса для генерации программ.

Аксиоматика предметной области, как уже отмечалось, в основном неявно фиксирована в программах gestori и схеме базы данных. Известно, что в явном виде отношения между объектами предметной области представляются в концептуальной модели базы данных [https://ru.wikipedia.org/wiki/проектирование_баз_данных], которая естественно отображается в онтологии. Вопросы создания такой модели получили достаточное развитие и в рамках данной работы не рассматриваются. Дополнительные элементы аксиоматики относятся к бизнес-логике системы, например,  <приход товара> увеличивает общее количество товара в системе, а <расход> — уменьшает. Важным элементом аксиоматики является фиксированный в системе метод учета цены по среднему значению, в отличие от учета по партиям. Это позволяет при организации с помощью онтологии высокоуровневого интерфейса (в отличие от стандартного интерфейса gestori) объяснить пользователю неудачу при формулировке запроса, противоречащего принятому в системе методу учета.

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

  • Почему отсутствует диагностическое сообщение в недавно измененном тексте?
  • Где объявлена некоторая переменная и какова ее область действия?
  • Выполняет ли данный модуль запись в базу данных?
  • Каковы предполагаемые места изменений текстов программ по заданному на естественном языке тексту технического задания?

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

Сервисные функции поддержки программиста используют лингвистические средства онтологии, позволяющих формировать по ЕЯ-описаниям  шаблоны регулярных выражений для поиска в текстах программ. Переход от естественно-языковых описаний к формальным структурам регулярных выражений описан в [7] для английского языка и в [8] для русского. В первой работе делается акцент на эквивалентные преобразования регулярного выражения, во второй — на использование метапеременных онтологического уровня. В используемых лингвистических средствах акцент сделан на русский язык с возможностью перифразирования ЕЯ-описания поискового запроса и получения канонической структуры шаблона для поиска регулярного выражения.

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

Предполагается, что после вычленения может быть сгенерирована программа, интегрирующая работу модулей, в данном случае через концепт <дата>. Отметим, что  данная ситуация аналогична организации представления (view), но отличается сложной бизнес логикой, реализуемой модулями <остатки_товара> и  <продажа_на_кассах>, которая не представляется непосредственно конструкциями SQL.

По каждому из перечисленных пунктов были разработаны и программно реализованы модули,  воплощающие логику декларируемых инструментальных средств. Технические результаты разработки отражены на HTML-странице [9].

  1. Тестирование

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

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

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

  1. Заключение

В отличие от макетного варианта [6], данные инструментальные средства непосредственно ориентированы на поддержку программиста, модернизирующего и сопровождающего комплекс достаточно крупных программ. Дальнейшее развитие этих средств связано с выявлением и снятием ограничений как в лингвистическом, так и в алгоритмическом компонентах онтологии. Большой корпус ЕЯ-описаний реальных ТЗ приведен на HTML-странице [9]. Предполагается использование этого корпуса для более масштабного тестирования инструментальных средств.

Работа выполнена при финансовой поддержке Российского Фонда Фундаментальных Исследований (РФФИ), проект №15-07-03847. Благодарим разработчиков выбранной для экспериментального исследования системы управления сетевой торговлей за консультации и ценные советы по улучшению интерфейса с онтологией.

Литература:

  1. Jeff Z. Pan, Steffen Staab, Uwe Aßmann, JurgenEbert, Yuting Zhao Ontology-Driven Software Development, Springer-Verlag Berlin Heidelberg, 2013
  2. Чернецки К., Айзенекер У. Порождающее программирование: методы, инструменты, применение / Пер. с англ. СПб: Питер, 2005.
  3. Саберфельд В.К., Автореферат диссертации по теме «Анализ свойств и эквивалентные преобразования на моделях программ», Новосибирск 1994.
  4. Пегас, http://www.pegasus-project.org/ru/Teoria___Tehnika.html
  5. http://www.fit.ru/solutions/software/gestori/
  6. Курбатов С.С., Лобзин А.П., Хахалин Г.К. Онтология для автоматизированного синтеза программ по описанию на предметно-ориентированном естественном языке // Труды IV Всероссийской конференции с международным участием «Знания – Онтологии – Теории» (ЗОНT-13). –Новосибирск: Институт математики СО РАН, 2013.
  7. Kushman Nate, Barzilay Regina. Using Semantic Unification to Generate Regular Expressions from Natural Language // Computer Science and Artificial Intelligence Laboratory  Massachusetts Institute of Technology – 2013.
  8. Мерзляков Д.А. Генерация регулярных выражений для автоматизации проверки текстов открытого характера. Пермский государственный национальный исследовательский университет, 2010.
  9. http://www.eia—dostup.ru/RFFI-15-17.htm
  10. Фаулер М., Рефакторинг: улучшение существующего кода, Пер. с англ. СПб: Символ — Плюс, 2003, 432 с.
    ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ФОРМИРОВАНИЯ ОНТОЛОГИИ ДЛЯ МОДЕРНИЗАЦИИ И СОПРОВОЖДЕНИЯ КОМПЛЕКСА ПРОГРАММ
    В статье описаны предложенные и реализованные инструментальные средства взаимодействия с онтологией для поддержки решений программиста. Решения относятся к модернизации и сопровождению достаточно крупного комплекса программ. Инструментальные средства протестированы в предметной области автоматизации предприятий сетевой торговли (ритейл). Онтология предполагает существенное упрощение и ускорение работы программиста в данной предметной области.
    Written by: Курбатов Сергей Сергеевич, Красовицкий Иван
    Published by: БАСАРАНОВИЧ ЕКАТЕРИНА
    Date Published: 02/07/2017
    Edition: ЕВРАЗИЙСКИЙ СОЮЗ УЧЕНЫХ_29.08.15_08(17)
    Available in: Ebook