Знаний на основе программного обеспечения помощник (KBSA) была исследовательская программа финансируется ВВС США . Целью программы было применить концепции искусственного интеллекта к проблеме разработки и внедрения компьютерного программного обеспечения . Программное обеспечение будет описываться моделями на языках очень высокого уровня (по сути, эквивалентно логике первого порядка ), а затем правила преобразования преобразовывают спецификацию в эффективный код. Военно-воздушные силы надеялись создать программное обеспечение для управления системами вооружения и другими средствами управления и контроля.системы, использующие этот метод. Поскольку программное обеспечение становилось все более важным для систем вооружения ВВС США, стало ясно, что повышение качества и производительности процесса разработки программного обеспечения может иметь значительные преимущества для военных, а также для информационных технологий в других крупных отраслях промышленности США.
История
В начале 1980-х годов ВВС США осознали, что они получили значительные преимущества от применения технологий искусственного интеллекта для решения экспертных задач, таких как диагностика неисправностей в самолетах. Военно-воздушные силы поручили группе исследователей из сообществ искусственного интеллекта и формальных методов разработать отчет о том, как такие технологии могут быть использованы для решения более общей проблемы разработки программного обеспечения.
В отчете описывается видение нового подхода к разработке программного обеспечения. Вместо того, чтобы определять спецификации с помощью диаграмм и вручную преобразовывать их в код, как это было в текущем процессе, видение программного обеспечения, основанного на знаниях (KBSA), заключалось в определении спецификаций на языках очень высокого уровня, а затем в использовании правил преобразования для постепенного преобразования спецификации в эффективный код. на разнородных платформах.
Каждый шаг в разработке и усовершенствовании системы будет записываться как часть интегрированного репозитория. В дополнение к артефактам разработки программного обеспечения, процессы, различные определения и преобразования также будут записаны таким образом, чтобы их можно было анализировать и воспроизводить позже по мере необходимости. Идея заключалась в том, что каждый шаг будет трансформацией, учитывающей различные нефункциональные требования к внедренной системе. Например, требования использовать определенные языки программирования, такие как Ada, или усилить код для обеспечения критически важной отказоустойчивости в реальном времени. [1]
Военно-воздушные силы решили профинансировать дальнейшие исследования этого видения через лабораторию Римского центра развития авиации на базе ВВС Гриффис в Нью-Йорке. Большинство ранних исследований проводилось в Институте пустельги в Северной Калифорнии (со Стэнфордским университетом ) и Институтом информационных наук (ISI) в Южной Калифорнии (с USC и UCLA ). Kestrel Institute сосредоточился в первую очередь на доказуемо правильном преобразовании логических моделей в эффективный код. ISI сосредоточилась в первую очередь на начальной стадии процесса по определению спецификаций, которые могли отображаться в логический формализм, но имели форматы, которые были интуитивно понятны и знакомы системным аналитикам. Кроме того, Raytheon выполнила проект по исследованию неформального сбора требований, а Honeywell и Гарвардский университет работали над базовыми структурами, интеграцией и координацией действий.
Хотя проект MIT Programmer's Apprentice не финансировался в первую очередь программой KBSA, он также преследовал те же цели и использовал те же методы, что и KBSA. [2]
На более поздних этапах программы KBSA (начиная с 1991 г.) исследователи разработали прототипы, которые использовались при решении средних и крупных задач разработки программного обеспечения. Кроме того, на этих более поздних этапах акцент сместился с чистого подхода KBSA на более общие вопросы о том, как использовать технологии, основанные на знаниях, для дополнения существующих и будущих инструментов компьютерной инженерии программного обеспечения (CASE). На этих более поздних стадиях наблюдалось значительное взаимодействие между сообществом KBSA и сообществами объектно-ориентированного программирования и разработчиков программного обеспечения. Например, концепции и исследователи KBSA играли важную роль в мегапрограммировании и программах разработки программного обеспечения, ориентированных на пользователя, спонсируемых Агентством перспективных исследовательских проектов Министерства обороны США (DARPA). [3] На этих более поздних этапах программа сменила название на «Разработка программного обеспечения, основанного на знаниях» (KBSE). Изменение названия отразило иную исследовательскую цель, заключающуюся уже не в создании совершенно нового всеобъемлющего инструмента, который бы охватывал полный жизненный цикл программного обеспечения, а в постепенном внедрении технологий, основанных на знаниях, в существующие инструменты. Такие компании, как Andersen Consulting (один из крупнейших системных интеграторов и в то время поставщик собственных инструментов CASE), сыграли важную роль в программе на этих более поздних этапах.
Ключевые идеи
Правила трансформации
Правила преобразования, которые использовала KBSA, отличались от традиционных правил для экспертных систем. Правила преобразования согласовывались с языками спецификации и реализации, а не с фактами в мире. Можно было указать преобразования с помощью шаблонов, подстановочных знаков и рекурсии как с правой, так и с левой стороны правила. Левое выражение будет определять шаблоны в существующей базе знаний для поиска. Правое выражение может указывать новый образец, в который нужно преобразовать левую часть. Например, преобразовать теоретико-множественный тип данных в код с помощью библиотеки множеств Ada. [4]
Первоначальной целью правил преобразования было преобразование логической спецификации высокого уровня в хорошо разработанный код для конкретной аппаратной и программной платформы. Это было вдохновлено ранними работами по доказательству теорем и автоматическому программированию. Однако исследователи из Института информатики (ISI) разработали концепцию эволюционных преобразований . [5] Вместо преобразования спецификации в код, эволюционное преобразование предназначалось для автоматизации различных стереотипных изменений на уровне спецификации, например, разработки нового суперкласса путем извлечения различных возможностей из существующего класса, которые можно использовать в более общем плане. Эволюционные преобразования были разработаны примерно в то же время, когда возникло сообщество шаблонов программного обеспечения, и обе группы разделили концепции и технологии. Преобразования эволюции были, по сути, тем, что в сообществе объектно-ориентированных шаблонов программного обеспечения называется рефакторингом . [6]
Репозиторий, основанный на знаниях
Ключевой концепцией KBSA было то, что все артефакты: требования, спецификации, преобразования, проекты, код, модели процессов и т. Д. Были представлены как объекты в хранилище, основанном на знаниях . В исходном отчете KBSA описывается то, что называлось языком широкого спектра. Требовалось наличие структуры представления знаний, которая могла бы поддерживать весь жизненный цикл : требования, спецификацию и код, а также сам программный процесс. Основное представление базы знаний предназначалось для использования той же структуры, хотя можно было добавлять различные уровни для поддержки конкретных презентаций и реализаций.
Эти ранние структуры базы знаний были разработаны в основном ISI и Kestrel, построенными на основе машинных сред Lisp и Lisp . В конечном итоге среда Kestrel была превращена в коммерческий продукт под названием Refine, который был разработан и поддержан дочерней компанией Kestrel под названием Reasoning Systems Incorporated.
Язык и среда Refine также доказали свою применимость к проблеме обратного проектирования программного обеспечения: взятие унаследованного кода, критически важного для бизнеса, но не имеющего надлежащей документации, и использование инструментов для его анализа и преобразования в более удобную для сопровождения форму. В связи с растущим беспокойством по поводу проблемы 2000 года реверс-инжиниринг был основным бизнес-направлением для многих крупных корпораций США, и он был в центре внимания исследований KBSA в 1990-х годах. [7] [8]
Было значительное взаимодействие между сообществами KBSA, языком Frame и объектно-ориентированными сообществами. Ранние базы знаний 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]
Рекомендации
- ^ Грин, Корделл; Д. Лакхэм; Р. Бальцер; Т. Читэм; К. Рич (август 1983 г.). «Отчет о программном помощнике, основанном на знаниях» (PDF) . Институт пустельги . A996431: 78 . Проверено 4 января 2014 года .
- ^ Рич, Чарльз; Ричард С. Уотерс (ноябрь 1988 г.). «Проект ученика программиста: обзор исследования» (PDF) . Компьютер . 21 (11): 10–25. DOI : 10.1109 / 2.86782 . ЛВП : 1721,1 / 6054 . Проверено 26 декабря 2013 года .
- ^ ДеБеллис, Майкл; Кристин Хаапала (февраль 1995 г.). «Разработка программного обеспечения, ориентированного на пользователя». Эксперт IEEE . 10 (1): 34–41. DOI : 10.1109 / 64.391959 .
- ^ Смит, Дуг (1991). «KIDS - система разработки программного обеспечения, основанная на знаниях». В Майкле Лоури, Роберте Маккартни (ред.). Автоматизация проектирования программного обеспечения . AAAI / MIT Нажмите. С. 483–514. CiteSeerX 10.1.1.54.6955 . ISBN 978-0262620802.
- ^ Джонсон, Льюис; МС Перо (1991). «Использование эволюционных преобразований для построения спецификаций». Автоматизация проектирования программного обеспечения . AAAI Press: 65–92.
- ^ Фаулер, Мартин (1999). Рефакторинг: улучшение дизайна существующего кода . Эддисон Уэсли. ISBN 0201485672.
- ^ Бем, Барри; Прасанта Бозе (1998-08-15). «Оценка жизненного цикла KBSA: окончательный технический отчет» (PDF) . Номер контракта: F30602-96-C-0274 . Центр разработки программного обеспечения USC. Я . Проверено 4 января 2014 года .
По мере того, как программа продвигалась к своим конечным целям, она породила ряд дополнительных продуктов, повышающих производительность, таких как инструменты реинжиниринга и тестирования программного обеспечения на основе Refine.
- ^ Велти, Крис. "Резюме KBSE-93: Восьмой ежегодной конференции по разработке программного обеспечения, основанной на знаниях" . ase-conferences.org . Проверено 4 января 2014 года .
REFINE / COBOL Object Modeling Workbench предоставляет набор инструментов для реинжиниринга, Refine - это язык демонстрации концепции KBSA.
- ^ Харрис, Дэйв; А. Чухри (1988). «Помощник по требованиям, основанным на знаниях». Эксперт IEEE . 3 (4).
- ^ Джонсон, Льюис; Дэвид Р. Харрис; Кевин М. Беннер; Мартин С. Фезер (октябрь 1992 г.). «Овен: аспекты требований / спецификаций для KBSA». Заключительный технический отчет Римской лаборатории . RL-TR-92-248.
- ^ ДеБеллис, Майкл; Кант Мирияла; Судин Бхат; Уильям С. Сассо; Оуэн Рэмбо (апрель 1993 г.). «Демонстрация концепции KBSA: окончательный технический отчет» . Технический отчет Римской лаборатории USAF . RL-TR-93-38 . Проверено 4 января 2014 года .