6.1.3. Инструментальные средства поддержки разработки систем по
Технология программирования в целом и средства поддержки разработки ПО, в частности, развиваются настолько быстро, что даже простое перечисление основных инструментальных систем заняло бы в этой книге слишком много места. Вот почему ниже мы остановимся кратко лишь на нескольких проектах в области технологии программирования, которые интересны в контексте данного издания. Любая развитая технологическая система должна поддерживать все основные этапы создания проектируемого программного комплекса. Для достижения этой цели в общей структуре типовой технологической системы поддержки разработки (рис. 6.3) обычно выделяют базу данных проекта; подсистему автоматизации проектирования и программирования; подсистемы отладки, документирования и сопровождения, а также подсистему управления ходом выполнения проекта.
Рис. 6.3. Общая структура типовой технологической
системы поддержки разработки
Развитые библиотечные системы поддержки разработки используются в настоящее время во всем мире во всех сколько-нибудь серьезных программных проектах. Но в подавляющем большинстве случаев такие системы достигли уровня удобства работы с ними квалифицированных программистов. Нас же, прежде всего, интересуют системы и проекты, в которых имеются тенденции к эксплицитному представлению технологических знаний, даже если они и не базируются на идеях и методах ИИ.
Один из таких проектов — Gandalf [Haberman et al., 1986] — ориентирован на автоматизированную генерацию систем разработки программного обеспечения. Исследования, выполняемые в рамках проекта Gandalf, касаются трех аспектов поддержки проектирования ПО: управление проектом, контроль версий и инкрементное программирование, а также интеграция их в единую среду. Управление в Gandalf-среде базируется на предположении, что разрабатываемый проект должен трактоваться как множество абстрактных типов данных, над которыми могут выполняться лишь определенные операции. Средством, реализующим данную концепцию, явилась система SDC (Software Development Control), представляющая собой набор программ, первоначально реализованных на языке Shell в системе UNIX, а позднее переведенная на язык С.
Исследования в области контроля версий были начаты еще Л. Коопридером на базе проекта FAFOS [Habermann et al., 1976], где изначально анализировались возможности создания семейства операционных систем. Была разработана нотация для описания взаимодействия между подсистемами:, для описания различных версий подсистем (исходного и объектного кода, документации и т. п.) и для описания действующих на этапе разработки механизмов (компиляция, редактирование связей и т. п.). Затем был создан специальный язык Intercol как средство описания взаимосвязи и версий модулей в системе. И наконец, в систему были встроены знания о том, как конструировать систему из частей, не заставляя заниматься этим пользователя. В развитие этих работ была создана система SUCE, в рамках которой отслеживались различия между реализациями (версиями, которые действительно дают код для ряда спецификаций) и композициями (версиями, определяющими новые подсистемы как группы существующих подсистем).
В системе LOIPE (Language-Oriented Incremental Programming Environment) инкрементная компиляция выполняется на уровне отдельной процедуры. Достоинством такого подхода является то, что при коррекции процедуры на уровне локальных объектов или типов перекомпилируется только она. Если же меняется спецификация, то перекомпилируются и все зависящие от нее процедуры. Пользовательский интерфейс с LOIPE-системой базируется на подсистеме синтаксически-ориентированного редактирования ALOE (A Language-Oriented Editor). Целью разработки этой подсистемы было исследование возможности создания и использования синтаксически-ориентированных редакторов в качестве базиса для сред программирования.
Анализ литературы последних лет по технологии программирования показывает, что новой ветвью в технологии промышленной разработки и реализации сложных и значительных по объему систем программного обеспечения является CASE-технология (Computer Aided Software Engineering) [BYTE, 1990].
Первоначально CASE-технология появилась в проектах создания промышленных систем обработки данных. Это обстоятельство наложило свой отпечаток и на инструментальные средства CASE-технологии, где самое серьезное внимание уделялось, по крайней мере в ранних CASE-системах, поддержке проектирования информационных потоков. В настоящее время наблюдается отход от ориентации на системы обработки данных, и инструментальные средства CASE-технологии становятся все более универсальными.
Все средства поддержки CASE-технологии делятся на две большие группы: САSE-ToolKits и CASE-WorkBenches. Хороших русских эквивалентов этим терминам нет. Однако первые часто называют «инструментальными сундучками» (пакетами разработчика, технологическими пакетами), а вторые — «станками для производства программ» (технологическими линиями).
По определению [BYTE, 1990]. CASE-ToolKit — коллекция интегрированных программных средств, обеспечивающих автоматическое ассистирование в решении задач одного типа в процессе создания программ.
Такие пакеты используют общее «хранилище» для всей технической и управляющей информации по проекту (репозиторий), снабжены общим интерфейсом с пользователем и унифицированным интерфейсом между отдельными инструментами пакета. Как правило, CASE-ToolKit концентрируются вокруг поддержки разработки одной фазы производства программ или на одном типе прикладных задач.
Все вышесказанное справедливо и по отношению к CASE-WorkBench. Но здесь, кроме того, обеспечивается автоматизированная поддержка анализа решаемых задач по производству программного обеспечения, которая базируется на общих предположениях о процессе и технологии такой деятельности; поддерживается автоматическая передача результатов работ от одного этапа к другому, начиная со стадии проектирования и кончая отчуждением созданного программного продукта и его сопровождением.
Таким образом, CASE-WorkBench является естественным «замыканием» технологии разработки, реализации и сопровождения программного обеспечения.
В настоящее время «типовая» система поддержки CASE-технологии имеет функциональные возможности, представленные на рис. 6.4.
Как следует из этой Н-диаграммы, в CASE-среде должны поддерживаться все основные этапы разработки и сопровождения процессов создания программных систем. Однако уровень такой поддержки существенно различен. Так, например, если говорить об этапах анализа и проектирования, большинство инструментальных пакетов поддерживает экранные и отчетные формы, создание прототинов, обнаружение ошибок. Значительная часть этих средств предназначена для ПЭВМ. Многие поддерживают такие широко используемые методологии, как структурный анализ DeMarco или Gane/Sarson, структурное проектирование Yourdan/Jackson и некоторые другие. Существуют специализированные пакеты разработчиков для создания информационных систем, например AnaTool (Advanced Logical Software) для Macintosh;-CA-Universe/Prototype (Computer Associates International) для ПЭВМ. Имеются CASE-среды и для поддержки разработки систем реального времени.
Рис. 6.4. Функциональные возможности типовой системы
поддержки CASE-технологии
В среде разработчиков ПО существуют две оценки данного подхода: часть из них считает, что CASE-технология кардинально меняет процессы разработки и эксплуатации ПО, другие отрицают это и оставляют за инструментальными средствами CASE лишь функцию автоматизации рутинных работ [BYTE, 1989]. Однако анализ литературы показывает, что CASE средства все-таки «сдвигают» технологии разработки ПО с управления выполнением проектов в сторону метода ирототипизации. И этот сдвиг, на наш взгляд, чрезвычайно важная тенденция в современной технологии программирования.
- Т. А. Гаврилова в. Ф. Хорошевский
- Санкт-Петербург
- Предисловие
- Об авторах
- 1.1.2. Зарождение нейрокибернетики
- 1.1.3. От кибернетики «черного ящика» к ии
- 1.1.4. История искусственного интеллекта в России
- 1.2. Основные направления исследований в области искусственного интеллекта
- 1.2.1. Представление знаний и разработка систем, основанных на знаниях (knowledge-based
- 1.2.2. Программное обеспечение систем
- 1.2.3. Разработка естественно-языковых интерфейсов и машинный перевод (natural
- 1.2.4. Интеллектуальные роботы (robotics)
- 1.2.5. Обучение и самообучение (machine
- 1.2.6. Распознавание образов (pattern
- 1.2.7. Новые архитектуры компьютеров (new
- 1.2.8. Игры и машинное творчество
- 1.2.9. Другие направления
- 1.3. Представление знаний и вывод на знаниях
- 1.3.1. Данные и знания
- 1.3.2. Модели представления знаний
- Структура фрейма
- 1.3.3. Вывод на знаниях
- 1.4. Нечеткие знания
- 1.4.1. Основы теории нечетких множеств
- 1.4.2. Операции с нечеткими знаниями
- 1.5. Прикладные интеллектуальные системы
- 2.2. Классификация систем, основанных на знаниях
- 2.2.1. Классификация по решаемой задаче
- 2.2.2. Классификация по связи с реальным временем
- 2.2.3. Классификация по типу эвм
- 2.2.4. Классификация по степени интеграции с другими программами
- 2.3. Коллектив разработчиков
- 2.4. Технология проектирования и разработки
- 2.4.1. Проблемы разработки промышленных эс
- 2.4.2. Выбор подходящей проблемы
- 2.4.3. Технология быстрого прототипирования
- 2.4.4. Развитие прототипа до промышленной эс
- 2.4.5. Оценка системы
- 2.4.6. Стыковка системы
- 2.4.7. Поддержка системы
- Теоретические аспекты инженерии знаний
- 3.1. Поле знаний
- 3.1.1. О языке описания поля знаний
- 3.1.2. Семиотическая модель поля знаний
- 3.1.3. «Пирамида» знаний
- 3.2. Стратегии получения знаний
- 3.3. Теоретические аспекты извлечения знаний
- 3.3.1. Психологический аспект
- 3.3.2. Лингвистический аспект
- 3.3.3. Гносеологический аспект извлечения знаний
- 3.4. Теоретические аспекты структурирования знаний
- 3.4.1. Историческая справка
- 3.4.2. Иерархический подход
- 3.4.3. Традиционные методологии структурирования
- 3.4.4. Объектно-структурный подход (осп)
- Технологии инженерии знаний
- 4.1. Классификация методов практического извлечения знаний
- 4.2. Коммуникативные методы
- 4.2.1. Пассивные методы
- Сравнительные характеристики пассивных методов извлечения знаний
- 4.2.2. Активные индивидуальные методы
- Сравнительные характеристики активных индивидуальных методов извлечения
- 4.2.3. Активные групповые методы
- 4.3. Текстологические методы
- 4.4. Простейшие методы структурирования
- 4.4.1. Алгоритм для «чайников»
- 4.4.2. Специальные методы структурирования
- 4.5. Состояние и перспективы автоматизированного приобретения знаний
- 4.5.1. Эволюция систем приобретения знаний
- 4.5.2. Современное состояние автоматизированных систем приобретения знаний
- 4.6.2. Имитация консультаций
- 4.6.3. Интегрированные среды приобретения знаний
- 4.6.4. Приобретение знаний из текстов
- 4.6.5. Инструментарий прямого приобретения
- Формы сообщений
- 5.1.1. Семантические пространства и психологическое шкалирование
- 5.1.2. Методы многомерного шкалирования
- 5.1.3. Использование метафор для выявления «скрытых» структур знаний
- 5.2. Метод репертуарных решеток
- 5.2.1. Основные понятия
- 5.2.2. Методы выявления конструктов
- 5.2.3. Анализ репертуарных решеток
- 5.2.4. Автоматизированные методы
- 5.3. Управление знаниями
- 5.3.1. Что такое «управление знаниями»
- 5.3.2. Управление знаниям и корпоративная память
- 5.3.3. Системы omis
- 5.3.4. Особенности разработки omis
- 5.4. Визуальное проектирование баз знаний как инструмент познания
- 5.4.1. От понятийных карт к семантическим сетям
- 5.4.2. База знаний как познавательный инструмент
- 5.5. Проектирование гипермедиа бд и адаптивных обучающих систем
- 5.5.1. Гипертекстовые системы
- 5.5.2. От мультимедиа к гипермедиа
- 5.5.3. На пути к адаптивным обучающим системам
- 6.1.3. Инструментальные средства поддержки разработки систем по
- 6.2. Методологии создания и модели жизненного цикла интеллектуальных систем
- 6.3. Языки программирования для ии и языки представления знаний
- 6.4. Инструментальные пакеты для ии
- 6.5. WorkBench-системы
- Пример разработки системы, основанной на знаниях
- 7.1. Продукционно-фреймовый япз pilot/2
- 7.1.1. Структура пилот-программ и управление выводом
- 7.1.2. Декларативное представление данных и знаний
- 7.1.3. Процедурные средства языка
- 7.2. Психодиагностика — пример предметной области для построения экспертных систем
- 7.2.1. Особенности предметной области
- 7.2.2. Батарея психодиагностических эс «Ориентир»
- 7.3. Разработка и реализация психодиагностической эс «Cattell»
- 7.3.1. Архитектура системы и ее база знаний
- 7.3.2. Общение с пользователем и опрос испытуемых
- 7.3.3. Вывод портретов и генерация их текстовых представлений
- 7.3.4. Помощь и объяснения в эс «Cattell»
- 8.1.2. Html — язык гипертекстовой разметки Интернет-документов
- 8.1.3. Возможности представления знаний на базе языка html
- 8.2. Онтологии и онтологические системы
- 8.2.1. Основные определения
- 8.2.2. Модели онтологии и онтологической системы
- 8.2.3. Методологии создания и «жизненный цикл» онтологии
- Фрагмент описания аксиомы
- 8.2.4. Примеры онтологии
- 8.3. Системы и средства представления онтологических знаний
- 8.8.1. Основные подходы
- 8.3.2. Инициатива (ка)2 и инструментарий Ontobroker
- 8.3.3. Проект shoe — спецификация онтологии и инструментарий
- 8.3.4. Другие подходы и тенденции
- 9.1.2. Основные понятия
- 9.2.2. Инструментарий AgentBuilder
- 9.2.3. Система Bee-gent
- 9.3. Информационный поиск в среде Интернет
- 9.3.1. Машины поиска
- 9.3.2. Неспециализированные и специализированные поисковые агенты
- 9.3.3. Системы интеллектуальных поисковых агентов
- Заключение
- Литература
- Содержание
- Базы знаний интеллектуальных систем
- 196105, Санкт-Петербург, ул. Благодатная, 67.
- 197110, Санкт-Петербург, Чкаловский пр., 15.