Программный помощник на основе знаний - Knowledge Based Software Assistant

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

История

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

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

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

Военно-воздушные силы решили профинансировать дальнейшие исследования этого видения за счет своих Римский центр развития воздуха лаборатория в База ВВС Гриффис в Нью-Йорке. Большинство ранних исследований было проведено в Институте пустельги в Северной Калифорнии (с Стэндфордский Университет ) и Институт информационных наук (ISI) в Южной Калифорнии (с USC и UCLA ). Институт Kestrel занимался прежде всего доказуемо правильным преобразованием логических моделей в эффективный код. ISI сосредоточилась в первую очередь на начальной стадии процесса определения спецификаций, которые могли отображаться в логический формализм, но имели форматы, которые были интуитивно понятны и знакомы системным аналитикам. Кроме того, Raytheon выполнила проект по исследованию неформального сбора требований, а Honeywell и Гарвардский университет работали над базовыми структурами, интеграцией и координацией деятельности.

Хотя в первую очередь не финансируется программой KBSA, Массачусетский технологический институт Проект Programmer's Apprentice также преследовал те же цели и использовал те же методы, что и KBSA.[2]

На более поздних этапах программы KBSA (начиная с 1991 г.) исследователи разработали прототипы, которые использовались для задач разработки программного обеспечения среднего и крупного масштаба. Кроме того, на этих более поздних этапах акцент сместился с чистого подхода KBSA на более общие вопросы о том, как использовать технологии, основанные на знаниях, для дополнения и расширения существующих и будущих компьютерная разработка программного обеспечения (CASE) инструменты. На этих более поздних этапах наблюдалось значительное взаимодействие между сообществом KBSA и сообществами объектно-ориентированного программирования и разработчиков программного обеспечения. Например, концепции и исследователи KBSA сыграли важную роль в мегапрограммировании и программах разработки программного обеспечения, ориентированных на пользователя, спонсируемых Агентство перспективных оборонных исследовательских проектов (DARPA).[3] На этих более поздних этапах программа сменила название на «Разработка программного обеспечения, основанного на знаниях» (KBSE). Изменение названия отразило иную исследовательскую цель, заключающуюся уже не в создании совершенно нового всеобъемлющего инструмента, охватывающего полный жизненный цикл программного обеспечения, а в постепенном внедрении технологий, основанных на знаниях, в существующие инструменты. Такие компании как Андерсен Консалтинг (один из крупнейших системных интеграторов и в то время поставщик собственных инструментов CASE) играл важную роль в программе на этих более поздних этапах.

Ключевые идеи

Правила трансформации

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

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

Репозиторий на основе знаний

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

Эти ранние структуры базы знаний были разработаны в основном ISI и Kestrel, построенными на основе Лисп и Лисп-машина среды. В конечном итоге среда Kestrel была превращена в коммерческий продукт под названием Refine, который был разработан и поддержан дочерней компанией Kestrel под названием Reasoning Systems Incorporated.

Язык и среда Refine также доказали свою применимость к проблеме обратного проектирования программного обеспечения: взятие унаследованного кода, критически важного для бизнеса, но не имеющего надлежащей документации, и использование инструментов для его анализа и преобразования в более удобную для обслуживания форму. С растущей озабоченностью Проблема 2000 года Обратный инжиниринг был основным бизнес-направлением для многих крупных корпораций США, и он был в центре внимания исследований KBSA в 1990-х годах.[7][8]

Между сообществами KBSA и Язык рамки и объектно-ориентированный сообщества. Ранние базы знаний KBSA были внедрены в объектно-ориентированный языки, а не объектно-ориентированный. Объекты были представлены как классы и подклассы, но было невозможно определить методы для объектов. В более поздних версиях KBSA, таких как Andersen Consulting Concept Demo, язык спецификации был расширен для поддержки передачи сообщений.

Интеллектуальный помощник

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

Примером сотрудничества между объектно-ориентированным сообществом и KBSA была архитектура, используемая для пользовательских интерфейсов KBSA. Системы KBSA использовали пользовательский интерфейс модель-представление-контроллер (MVC). Эта идея была взята из среды Smalltalk.[9] Архитектура MVC особенно хорошо подходила для пользовательского интерфейса KBSA. Среды KBSA содержали несколько разнородных представлений базы знаний. Было бы полезно взглянуть на появляющуюся модель с точки зрения сущностей и отношений, взаимодействия объектов, иерархий классов, потока данных и многих других возможных представлений. Архитектура MVC облегчила это. В архитектуре MVC базовой моделью всегда была база знаний, которая была метамодель описание языков спецификации и реализации. Когда аналитик вносил какие-либо изменения в конкретную диаграмму (например, добавлял класс в иерархию классов), это изменение производилось на уровне базовой модели, и все различные представления модели обновлялись автоматически.[10]

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

Другой концепцией интеллектуальной помощи было автоматическое создание текста. Ранние исследования в ISI изучали возможность извлечения формальных спецификаций из неформальных текстовых документов на естественном языке. Они определили, что такой подход нежизнеспособен. Естественный язык по своей природе слишком неоднозначен, чтобы служить хорошим форматом для определения системы. Однако создание естественного языка считалось возможным как способ создания текстовых описаний, которые могли бы читать менеджеры и нетехнический персонал. Это было особенно привлекательно для ВВС, поскольку по закону они требовали, чтобы все подрядчики составляли различные отчеты, описывающие систему с разных точек зрения. Исследователи из ISI, а затем из Cogentext и Andersen Consulting продемонстрировали жизнеспособность этого подхода, используя свои собственные технологии для создания документации, необходимой для их контрактов с ВВС.[11]

Рекомендации

  1. ^ Грин, Корделл; Д. Лакхэм; Р. Бальцер; Т. Читхэм; К. Рич (август 1983 г.). «Отчет о программном помощнике, основанном на знаниях» (PDF). Институт пустельги. A996431: 78. Получено 4 января 2014.
  2. ^ Рич, Чарльз; Ричард С. Уотерс (ноябрь 1988 г.). "Ученик программиста: обзор исследования" (PDF). Компьютер. 21 (11): 10–25. Дои:10.1109/2.86782. HDL:1721.1/6054. Получено 26 декабря 2013.
  3. ^ ДеБеллис, Майкл; Кристин Хаапала (февраль 1995 г.). «Разработка программного обеспечения, ориентированного на пользователя». Эксперт IEEE. 10 (1): 34–41. Дои:10.1109/64.391959.
  4. ^ Смит, Дуг (1991). «KIDS - система разработки программного обеспечения, основанная на знаниях». В Майкле Лоури, Роберте Маккартни (ред.). Автоматизация проектирования программного обеспечения. AAAI / MIT Нажмите. С. 483–514. CiteSeerX  10.1.1.54.6955. ISBN  978-0262620802.
  5. ^ Джонсон, Льюис; РС. Перо (1991). «Использование эволюционных преобразований для построения спецификаций». Автоматизация проектирования программного обеспечения. AAAI Press: 65–92.
  6. ^ Фаулер, Мартин (1999). Рефакторинг: улучшение дизайна существующего кода. Эддисон Уэсли. ISBN  0201485672.
  7. ^ Бем, Барри; Прасанта Бозе (1998-08-15). «Оценка жизненного цикла KBSA: окончательный технический отчет» (PDF). № контракта: F30602-96-C-0274. Центр разработки программного обеспечения USC. я. Получено 4 января 2014. По мере того, как программа приближалась к своим конечным целям, она породила ряд дополнительных продуктов, повышающих производительность, таких как инструменты реинжиниринга и тестирования программного обеспечения на основе Refine.
  8. ^ Велти, Крис. "Резюме KBSE-93: Восьмой ежегодной конференции по разработке программного обеспечения, основанной на знаниях". ase-conferences.org. Получено 4 января 2014. REFINE / COBOL Object Modeling Workbench предоставляет набор инструментов для реинжиниринга, Refine - это язык демонстрации концепции KBSA.
  9. ^ Харрис, Дэйв; А. Чухри (1988). «Помощник по требованиям, основанным на знаниях». Эксперт IEEE. 3 (4).
  10. ^ Джонсон, Льюис; Дэвид Р. Харрис; Кевин М. Беннер; Мартин С. Фезер (октябрь 1992 г.). «Овен: аспекты требований / спецификаций для KBSA». Заключительный технический отчет Римской лаборатории. RL-TR-92-248.
  11. ^ ДеБеллис, Майкл; Кант Мирияла; Судин Бхат; Уильям С. Сассо; Оуэн Рэмбо (апрель 1993 г.). «Демонстрация концепции KBSA: окончательный технический отчет». Технический отчет лаборатории USAF в Риме. RL-TR-93-38. Получено 4 января 2014.