DESERT: Программирования на основе фрагментов

Оригинал статьи: cs.brown.edu

Обзор

DESERT – это среда программирования, которая пытается достичь недорогой интеграции данных в дополнение к интеграции управления, обеспечиваемой такими средами, как FIELD. Интеграция управления предполагает взаимодействие инструментов между собой. Интеграция данных предполагает, что инструменты фактически обмениваются данными. Классически интеграция данных осуществлялась за счет наличия центрального хранилища, которое содержало все абстрактные синтаксические деревья и другую информацию из системы (например, представление Diana для Ada), и использование инструментов этого хранилища. Это оказывается непрактичным (по крайней мере, это было примерно в 1990 году, когда мы начали этот проект), поскольку размер базы данных, количество необходимых дополнительных обновлений и скорость доступа, необходимого для инструментов, намного превышали размер базы данных систем или машин в то время. Таким образом, системы, которые пытались интегрировать данные, работали слишком медленно. Другим фактором было то, что представления данных были довольно сложными, и было трудно найти подходящее представление, которое можно было бы легко обновить и использовать с помощью самых разных инструментов.

DESERT попытался предоставить преимущества интеграции данных без дополнительных затрат. Он поддерживал минимальное центральное хранилище, содержащее только ту информацию, которая действительно должна была быть разделена между инструментами. По большей части это была просто глобальная таблица символов с информацией о типе, данных, которые легко извлечь из компилятора и относительно легко поддерживать. Затем он разделил реальную программу на логические части, называемые фрагментами, и поддержал базу данных с информацией о фрагментах. Фрагменты представляли классы, методы, объявления и т.д. – по сути, они были логическими единицами, которые программист считал в терминах.

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

Помимо использования фрагментов, DESERT показал, что вы можете предоставлять высококачественные просмотры программ во время редактирования. Основываясь на предыдущем исследовании Беккера и Маркуса о том, как наиболее эффективно представлять программы, DESERT использовал Adobe FrameMaker в качестве редактора программ, автоматически конвертируя исходный текст обычной программы в форматированный документ, который приближался к результатам Беккера-Маркуса. Более того, документ поддерживался динамически, поскольку пользователь вводил его по нажатию клавиши.

В DESERT мы также продолжили нашу предыдущую работу по визуализации программного обеспечения. DESERT включал систему 3D-визуализации, которая могла извлекать данные из различных баз данных и из других источников, таких как gprof. Первоначальная версия этой системы называлась CACTI, которая в конечном итоге эволюционировала в VALLEY.

Статьи

Framents: механизм низкозатратной интеграции данных

Упрощение интеграции данных: дизайн среды разработки программного обеспечения Desert

Редактирование программ в среде разработки программного обеспечения

Динамическое определение программных визуализаций

Управление конфигурацией с помощью логических структур

Формальная модель объектно-ориентированного управления конфигурациями

Визуализация программного обеспечения в пустынной среде

Пустынная среда

DESERT Изображения

http://cs.brown.edu/~spr/research/desert/fred01.xwd.jpg
http://cs.brown.edu/~spr/research/desert/fred02.xwd.jpg
http://cs.brown.edu/~spr/research/desert/fred03.xwd.jpg
http://cs.brown.edu/~spr/research/desert/fred04.xwd.jpg

Редактор программ на основе FrameMaker

http://cs.brown.edu/~spr/research/desert/fragedit.xwd.jpg
Редактирование фрагментов
http://cs.brown.edu/~spr/research/desert/fins.xwd.jpg
Динамическое встраивание фрагмента UML в редактор
http://cs.brown.edu/~spr/research/desert/food.xwd.jpg
Инструмент для поиска классов и методов-кандидатов посредством анализа части речи
http://cs.brown.edu/~spr/research/desert/litp.xwd.jpg
Расширение грамотного программирования до редактора
http://cs.brown.edu/~spr/research/desert/cacti01.xwd.jpg
Инструмент для определения новых визуализаций
http://cs.brown.edu/~spr/research/desert/cacti03.xwd.jpg
http://cs.brown.edu/~spr/research/desert/cacti07.xwd.jpg
http://cs.brown.edu/~spr/research/desert/cacti09.xwd.jpg
http://cs.brown.edu/~spr/research/desert/cacti10.xwd.jpg
http://cs.brown.edu/~spr/research/desert/cacti11.xwd.jpg

Примеры визуализации

http://cs.brown.edu/~spr/research/desert/mirage01.xwd.jpg
http://cs.brown.edu/~spr/research/desert/mirage02.xwd.jpg
http://cs.brown.edu/~spr/research/desert/mirage03.xwd.jpg
http://cs.brown.edu/~spr/research/desert/mirage04.xwd.jpg
http://cs.brown.edu/~spr/research/desert/mirage07.xwd.jpg

Больше визуализаций

Видео DESERT

http://streamod.cs.brown.edu:8801/J/n/mdres.mp4

http://streamod.cs.brown.edu:8801/J/l/mdres.mp4

Получить программное обеспечение

Программное обеспечение Desert по-прежнему компилируется и иногда даже работает на платформе Solaris. Тем не менее, я бы не ожидал, что это будет так полезно, поскольку он не был обновлен довольно давно, и компиляторы (он использует исходные возможности браузера Sun) и FrameMaker немного изменились с момента последнего тестирования. Я смог дать ограниченные демонстрации текущего программного обеспечения в Brown, но не был бы оптимистичен в отношении его использования в других местах.

Desert источник