Программный помощник, основанный на знаниях
Knowledge Based Software Assistant (KBSA) — исследовательская программа, финансируемая ВВС США . Целью программы было применение концепций искусственного интеллекта к проблеме проектирования и внедрения компьютерного программного обеспечения . Программное обеспечение будет описываться моделями на языках очень высокого уровня (по сути, эквивалентными логике первого порядка ), а затем правила преобразования преобразуют спецификацию в эффективный код. Военно-воздушные силы надеялись, что смогут создать с помощью этого метода программное обеспечение для управления системами вооружения и другими системами управления . Поскольку программное обеспечение становилось все более важным для систем вооружения ВВС США, стало понятно, что повышение качества и производительности процесса разработки программного обеспечения может принести значительную пользу военным, а также информационным технологиям в других крупных отраслях промышленности США.
История [ править ]
В начале 1980-х годов в ВВС США осознали, что они получили значительные выгоды от применения технологий искусственного интеллекта для решения экспертных задач, таких как диагностика неисправностей самолетов. Военно-воздушные силы поручили группе исследователей из сообществ искусственного интеллекта и формальных методов разработать отчет о том, как такие технологии могут быть использованы для решения более общей проблемы разработки программного обеспечения.
В отчете описывалось видение нового подхода к разработке программного обеспечения. Вместо того, чтобы определять спецификации с помощью диаграмм и вручную преобразовывать их в код, как это было в настоящее время, концепция Knowledge Based Software Assistant (KBSA) заключалась в том, чтобы определить спецификации на языках очень высокого уровня, а затем использовать правила преобразования для постепенного преобразования спецификации в эффективный код. на гетерогенных платформах.
Каждый шаг проектирования и усовершенствования системы будет регистрироваться как часть интегрированного хранилища. Помимо артефактов разработки программного обеспечения, процессы, различные определения и преобразования также будут записываться таким образом, чтобы их можно было проанализировать и воспроизвести позже по мере необходимости. Идея заключалась в том, что каждый шаг будет представлять собой трансформацию, учитывающую различные нефункциональные требования к внедряемой системе. Например, требования к использованию определенных языков программирования, таких как Ada, или к усилению кода для обеспечения отказоустойчивости в реальном времени. [1]
Военно-воздушные силы решили профинансировать дальнейшие исследования этой концепции через свою Римского центра развития авиации лабораторию на базе ВВС Гриффисс в Нью-Йорке. Большая часть ранних исследований проводилась в Институте Кестрел в Северной Калифорнии (совместно со Стэнфордским университетом ) и Институте информационных наук (ISI) в Южной Калифорнии (совместно с Университетом Южной Калифорнии и Калифорнийским университетом в Лос-Анджелесе ). Институт Кестрел сосредоточился в первую очередь на доказуемо правильном преобразовании логических моделей в эффективный код. ISI сосредоточилась в первую очередь на начальной стадии процесса определения спецификаций, которые могли быть отображены в логические формализмы, но были в форматах, интуитивно понятных и знакомых системным аналитикам. Кроме того, компания Raytheon реализовала проект по исследованию сбора неофициальных требований, а компания Honeywell и Гарвардский университет работали над базовыми структурами, интеграцией и координацией деятельности.
Programmer's Apprentice не финансировался в первую очередь программой KBSA, Хотя проект MIT он также преследовал многие из тех же целей и использовал те же методы, что и 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) . Институт Пустельги . А996431:78 . Проверено 4 января 2014 г.
- ^ Рич, Чарльз; Ричард К. Уотерс (ноябрь 1988 г.). «Проект ученика программиста: обзор исследования» (PDF) . Компьютер . 21 (11): 10–25. дои : 10.1109/2.86782 . hdl : 1721.1/6054 . S2CID 18925917 . Архивировано из оригинала (PDF) 6 июля 2017 г. Проверено 26 декабря 2013 г.
- ^ ДеБеллис, Майкл; Кристин Хаапала (февраль 1995 г.). «Пользовательско-ориентированная программная инженерия». Эксперт IEEE . 10 (1): 34–41. дои : 10.1109/64.391959 .
- ^ Смит, Дуг (1991). «KIDS - система разработки программного обеспечения, основанная на знаниях». У Майкла Лоури, Роберта Маккартни (ред.). Автоматизация проектирования программного обеспечения . AAAI/MIT Press. стр. 483–514. CiteSeerX 10.1.1.54.6955 . ISBN 978-0262620802 .
- ^ Джонсон, Льюис; М. С. Перо (1991). «Использование эволюционных преобразований для построения спецификаций». Автоматизация проектирования программного обеспечения . АААИ Пресс: 65–92.
- ^ Фаулер, Мартин (1999). Рефакторинг: улучшение дизайна существующего кода . Эддисон Уэсли. ISBN 0201485672 .
- ^ Бём, Барри; Прашанта Бос (15 августа 1998 г.). «Оценка жизненного цикла KBSA: итоговый технический отчет» (PDF) . Контракт №: F30602-96-C-0274 . Я. Центр разработки программного обеспечения Университета Южной Калифорнии . Проверено 4 января 2014 г.
По мере продвижения программы к своим конечным целям она породила ряд дополнительных продуктов, повышающих производительность, таких как инструменты реинжиниринга и тестирования программного обеспечения на базе Refine.
- ^ Уэлти, Крис. «Краткое содержание KBSE-93: Восьмая ежегодная конференция по разработке программного обеспечения, основанного на знаниях» . ase-conferences.org . Проверено 4 января 2014 г.
REFINE/COBOL Object Modeling Workbench предоставляет набор инструментов для реинжиниринга. Refine — это язык демонстрационной концепции KBSA.
- ^ Харрис, Дэйв; А. Зухри (1988). «Помощник по требованиям, основанным на знаниях». Эксперт IEEE . 3 (4).
- ^ Джонсон, Льюис; Дэвид Р. Харрис; Кевин М. Беннер; Мартин С. Физер (октябрь 1992 г.). «Овен: аспекты требований/спецификаций для KBSA». Заключительный технический отчет Римской лаборатории . РЛ-ТР-92-248.
- ^ ДеБеллис, Майкл; Кант Мирияла; Судин Бхат; Уильям С. Сассо; Оуэн Рэмбо (апрель 1993 г.). «Демо-версия концепции KBSA: итоговый технический отчет» . Технический отчет Римской лаборатории ВВС США . РЛ-ТР-93-38 . Проверено 25 октября 2021 г.