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

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

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Дюбко Г. Ф., Жеребкина О. С.

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

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

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

обнаружены при анализе первых посвященных им web-новостей. Этот алгоритм будет включать в себя все шаги алгоритма CMU дополненные шагами, предназначенными для контроля соответствия между фазой освещенности известных событий и тем как анализируемая web-новость освещает события:

■ создание образа web-новости с использованием метрики TFIDF и вычисление фазы (фаз) освещенности события (событий) которым она посвящена;

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

■ в соответствии с формулой 3 и экспериментально выбранным пороговым значением функции SIM, а также сопоставлением фаз освещенности известных событий и событий, освещаемых новостью, анализируемая web-новость отмечается как посвященная одному или нескольким отдельным событиям;

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

4. Выводы

Предложенный алгоритм с одной стороны базируется на давно используемом алгоритме CMU, а с другой содержит элементы анализа смысла текста, характерные

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

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

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

Литература

1. http://ru.wikipedia.org/wiki/

2. Д. В. Ландэ. Основы интеграции информационных потоков. Монография. — К.: Инжиниринг, 2006. — 240 с.

3. Д. В. Ландэ и др. Основы моделирования и оценки электронных информационных потоков. Монография. — К.: Инжиниринг, 2006. — 176 с.

4. http://www.cs.bilkent.edu.tr/tech-reports/2001/BU-CE-0110.ps.gz

5. http://www.i-teco.ru/article104.html

УДК 519.713

ПРИЛОЖЕНИЕ ЭКСПЕРТНОЙ СИСТЕМЫ К АВТОМАТИЧЕСКОЙ ГЕНЕРАЦИИ КОДА ПРИ РАЗРАБОТКЕ ПРОГРАММНЫХ

СИСТЕМ

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

Г. Ф. Дюбко

кандидат технических наук Профессор кафедры программного обеспечения электронно-

вычислительных машин* Контактный тел.: 8 (057) 70-21-446

О. С. Жеребки на

магистрант* E-mail: sainthelly@gmail.com

*Харьковский национальный университет радиоэлектроники пр. Ленина, 14, г. Харьков, Украина, 61166

1. Введение

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

Большое значение в процессе разработки программ имеют средства спецификации проектов. Существует ряд способов представления моделей. Практически все способы функциональных спецификаций имеют следующие общие черты: модель имеет иерархическую структуру, представляемую в виде диаграмм нескольких уровней; элементарной частью диаграммы каждого уровня является конструкция «вход — функция — выход».

Для представления модели, в каждой области проектирования разработан язык проектировщика. При проектировании информационных систем используются CASE-средства BPwin, ERwin, которые в качестве языка проектирования используют диаграммы (IDEF0, IDEF3, DFD). Автоматической реализации проекта в BPwin нет, что не позволяет произвести полное тестирование программы. Применяемый в разработке программного обеспечения объектно-ориентированный подход и поддерживающий процесс проектирования язык UML позволяют описать структуру, интерфейсы проекта, поведение компонентов в виде соответствующих диаграмм. В системах UML-проектирования предполагается генерация программного кода, однако генерируются лишь заголовки методов, сами же методы необходимо дописывать вручную. Проектирование цифровых устройств, которое предусматривает получение программной модели для тестирования проекта, использует языки моделирования HDL, VHDL.

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

2. Постановка задачи

Прикладные интеллектуальные системы (ИС) применяются для решения задач в конкретной предметной области, где основная сложность заключается в слабой формализации знаний и где логическая обработка превалирует над вычислительной [1]. Успешное решение задачи автоматической генерации программного кода может быть получено путем применения для этой цели системы интеллектуального проектирования, а именно экспертной системы (ЭС) [2]. Традиционно ЭС строят-

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

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

Для преобразований предлагается использовать ЭС с комбинированной базой знаний (БЗ). В такую БЗ входят модели знаний в виде граматики, продукционной системы и исчисления предикатов. Для реализации такой ЭС разработана трехкомпонентная модель представления знаний, компонентами которой являются: распознавание языковых конструкций, формирование фактов и целей и логический вывод.

В статье представлена реализация компонента формирование фактов и целей, а также уделяется внимание представлению приложения в виде графа.

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

3. Язык описания проектов

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

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

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

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

Примером приложения, для которого строится проектная схема, является «Телефонная книга». В приложении телефонной книги хранятся введенные пользователями телефонные номера, которые можно просматривать. Входные и выходные потоки этого приложения показаны на рис. 1.

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

■ PhoneBookModel управляет записями телефонной книги и регистрирует состояние приложения. При изменении состояния уведомляется класс PhoneBookView, который затем на основании состояния приложения обновляет пользовательский интерфейс;

■ PhoneBookView управляет графическим или текстовым интерфейсом пользователя на основании состояния приложения, и уведомляет класс PhoneBookControl-кг при приеме входных данных;

■ PhoneBookControUer управляет работой приложения. Изменяет состояние модели приложения и обновляет модель данных на основе ввода пользователей.

Каждый класс необходимо представить как отдельный компонент схемы. Пусть, визуально, примитив представляется, так как показано на рис. 2.

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

Числа 1, 2, 3 обозначают точки сочленения данного компонента с другими компонентами, out и in — внешние и внутренние источники данных, а названия переменных — данные, типы которых могут описываться непосредственно на компоненте.

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

Для удобства построения графа были введены обозначения: К — название схемы, К1 — класс PhoneBookView, К2 — PhoneBookController, КЗ — PhoneBookModel, X1-X4 — потоки, яляющиеся входными для всего приложения, Y1-Y3 — выходные потоки приложения, А1-А9 — внутренние потоки.

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

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

Графовая продукция, соответствующая проектной схеме:

K(X1:1 = 1-in; X2:2 = 2-in; X3:3 = 3-in; X4:4 = 4-in;

Y1:5 = 5-in; Y2:6 = 6-in; Y3:7 = 16-in) ^

^ K1, K2, K3 (X1: W, K1-1-in; X2: W, K1-2-in;

X3: W, K1-3-in; X4: W, K1-4-in; Y1: W, K1-5-out;

Y2: W, K1-6-out; A1: K1-7-out, K2-1-in;

A2: K1-8-out, K2-2-in; A3: K1-9-out, K2-3-in;

A4: K1-10-in, K3-2-out; A5: K1-11-in, K3-1-out;

A6: K3-3-out, K2-4-in; A7: K3-4-in, K5-5-out;

A8: K3-5-in, K2-6-out; A9: K3-6-in, K2-7-out;

Y3: W, K3-7-out) <поведение> (1)

команды пользователя

нмя, телефон

поиск нменн

чтение из файла.

изменение с о стояния приложения

результат поиска

запись е файл

Рисунок 1. Общий вид проектируемого приложения

in: input_command in, паше, phone in, searchname in, file

3,search_res 3. state

Имя: PhoneB о oik View (Kl) Поведение: <конечный азтомат>

2, name, phone 2._ searchname 2, iiiput_commaiid out, seai"ch_res out. state

Рисунок 2. Представление визуальным компонентом примитива PhoneBookView

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

При помощи таких графовых продукций можно осуществлять дальнейшие процедуры автоматического построения модели в программном коде.

Факты, соответствующие графовой продукции:

вход (К, К1[Х1, Х2, Х3, Х4, А4, А5]), вход (К, К2[А1, А2, А3, А6]), вход (К, К3[А7, А8, А9]); выход (К, К1^1, Y2, А1, А2, А3]), выход (К, К2[А7, А8, А9]), выход (К, К3[А4, А5, А6, Y3]); поведение (К, К1, Р1, Т1), поведение (К, К2, Р2, Т2),

поведение (к, К3, Р3, Т3) (2)

Цель, которая должна быть сформирована после разбора схемы:

код_схема (К, [К1, К2, К3], S), (3)

где S — композированное поведение.

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

4. Разработка системы

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

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

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

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

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

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

Дерево синтаксического разбора строится на основании проектной схемы, представленной в виде нейпа. Корень дерева помечен в соответствии с названием схемы, каждому внутреннему узлу дерева соответствует название модулей, входящих в схему. Листьями являются конечные модули (подмодули), на которые разбита структура программной системы (рис. 4).

Рисунок 4. Синтаксическое дерево для абстрактной схемы проекта

Узлы дерева имеют следующую структуру: если Ю — примитив, то для него формируются входы, выходы, поведение. Если Ю — схема (по аналогии с К), то для нее формируется предикат код-схема.

Для обработки узлов синтаксического дерева (вычисления атрибутов или выполнения процедур) необходимо определенным образом исследовать дерево, то есть пройти его. При обходе дерева необходимо выбрать такой алгоритм, который бы не был затратным по времени памяти. Использование рекурсивных алгоритмов обхода дерева в определенных случаях позволяет получить хорошие временные характеристики алгоритмов. Рассмотрим более подробно этот вопрос для деревьев различной структуры.

Позиционным деревом называют корневое дерево, в котором дети любой вершины помечены номерами. K-ичным деревом называется позиционное дерево, не имеющее вершин с номерами больше к Полное к-ичное дерево — это к-ичное дерево, в котором все листья имеют одинаковую глубину. Для полного Личного дерева высоты Ь имеем кЬ листьев, а высота такого дерева с п листьями определяется как ^кП. Построенное дерево разбора является к-ичным деревом, где к <= 10.

Существует два самых известных способа обхода для синтаксического дерева: «прямой» и «концевой». Прямой метод обхода заключается в следующем: сначала просмат-

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

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

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

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

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

Для задания в базе знаний продукций в виде предикатов введем следующие обозначения: 1(Х) — имя модуля (узла синтаксического дерева); Р(Х, Y) — принадлежность, Х е ^ Ш([Х|Ц) — список входов; ОиТ([Х|Ц) — список выходов; BHV([X|L]) — список переменных поведения.

Таким образом, сформированные продукции можно представить в виде:

1(К) л Р(К1, К) л Ш(^]) ^ #pгoceduгe1,

что означает: если имя схемы К И К1 е К И [Х|Ц е входы ТО выполняется процедура 1.

Объявленная процедура задана программно в реализации алгоритма обхода дерева, и, таким образом, при ее выполнении формируются факты и цели.

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

Выводы

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

Разработанная система представляет собой приложение, которое предназначено для дальнейшего использования как в реализации логического вывода, с целью -□ □-

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

■а о

1. Постановка задачи

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

формирования кода проектируемого программного продукта, так и экспертами в области проектирования программных систем.

Литература

1. Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. СПб: Питер, 2000. 384 с.

2. Д. И. Муромцев. Введение в технологию экспертных систем. СПб: СПб ГУ ИТМО, 2005. 93 с.

3. Джордж Люгер Искусственный интеллект: стратегии и методы решения сложных проблем, 4-е издание.: Пер. с англ. — М.: Изд. дом «Вильямс», 2003. 807 а

4. Джозеф Джарратано, Гари Райли. Экспертные системы: принципы разработки и программирование 4-е издание. М.: Изд. дом «Вильямс», 2006. 1152 с.

УДК 004.925

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

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

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

И. Н. Егорова

кандидат технических наук, доцент доцент кафедры Инженерной и компьютерной графики*

Контактный тел.: 70-21-378 E-mail: irinateacher@list.ru

М. А. Потемин

студент*

E-mail: hedgehog_2k@mail.ru

*Харьковский национальный университет радиоэлектроники пр. Ленина, 14, г. Харьков, Украина, 61166

уз

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