ГЛАВА 5. Системы программирования 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

ГЛАВА 5. Системы программирования



ГЛАВА 5. Системы программирования

В этой главе мы подробно поговорим о нескольких группах инструментов, которые относятся к системам программирования.

  • Инструментарий поддержки технологических процессов. Мы выделим инструменты, ориентированные на один процесс и применяемые только в нем, и универсальные (независимые от процесса).
  • Инструментальные системы (инструментальные среды программирования, средства автоматизации разработки программ, интегрированные среды и репозитории проекта).
  • Инструментарий поддержки коллективной разработки.

Глава включает обзор систем поддержки естественно-языкового интерфейса.

Введение в системы программирования

5.1.1. Основные понятия и определения

Система программирования - часть базового программного обеспечения, поддерживающая процесс программирования. Системы программирования представляют собой единство средств статической (инструментальной) и динамической (исполнительной) поддержки.

К настоящему моменту сложилось представление о традиционном составе системы программирования, в который входят следующие программные инструменты и библиотеки:

  • редактор для построения программ;
  • транслятор для перевода программ с языка программирования на машинный язык;
  • отладчик для проверочных запусков программ и исправления ошибок;
  • библиотеки периода трансляции и периода исполнения;
  • средства управления компиляцией и построением программного проекта;
  • монитор, интегрирующий в себе вышеперечисленные средства и организующий функционирование системы программирования в целом

Этот минимум, позволяющий достаточно эффективно вести процесс создания программ, был представлен еще в начале 70-х годов XX века. Однако настоящую популярность такой интегрированный набор инструментов приобрел в середине 1980-х годов благодаря компании Borland Inc. (http://www.borland.com/). Пакет Turbo Pascal впервые появился в 1983 году для операционной системы СР/М, а в начале 1984 года был перенесен в MS-DOS. Практически все начало истории персональных компьютеров IBM PC связано с системой Turbo Pascal - наиболее популярной средой разработок.

Программный инструмент - это программа, предназначенная для поддержки разработки программных продуктов. Например, отладчик, облегчающий программисту выполнение отладки продукта.

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

Библиотеки процедур - наборы процедур различного назначения, упрощающие разработку приложений. Например, библиотека функций ввода-вывода или математических функций.

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

О связи систем программирования и операционных систем
Очень часто многие компоненты систем программирования вводятся производителями операционных систем в качестве вспомогательных модулей операционной системы.

История и эволюция

Некоторые важные даты

Вот некоторые вехи истории систем программирования.

  • 1952 г. - Грейс Мюррей Хоппер (Grace Murray Hopper) разработала "А-О" - первый компилятор.
  • 1957 г. - Джон Бэкус (John Backus) и его сотрудники установили в IBM первый компилятор языка FORTRAN.
  • 1986 г. - Статья в Wall Street Journal сыграла большую роль в популяризации понятия CASE (Computer-Aided Software Engineering). На русский язык этот термин обычно переводится как "средства автоматизации разработки программ".

Классификация

Классификация по категориям

Классификация систем программирования по категориям [Калянов 1996] определяет уровень их интегрированности по выполняемым функциям и включает:

  • вспомогательные программы (tools) - пакеты, решающие небольшую автономную задачу, принадлежащую проблеме более широкого масштаба;
  • пакеты разработчика (toolkit) - совокупность интегрированных программных средств, обеспечивающих помощь для одного из классов программных задач;
  • инструментальные средства (workbench) - интеграция программных средств, которые поддерживают системный анализ, проектирование и разработку программного обеспечения. При этом используется репозиторий, содержащий всю техническую и управляющую информацию о проекте.

Рекомендации по литературе

Читайте книги - некоторые из них специально для этого написаны.
Михаил Генин

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

Следующие книги:

  • "Теория синтаксического анализа, перевода и компиляции" [Ахо, Ульман 1978] и "Компиляторы: принципы, технологии и инструменты" [Ахо, Сети, Ульман 2001], содержащие теоретические основы конструирования компиляторов;
  • "Конструирование компиляторов для цифровых вычислительных машин" [Грис 1975], в которой рассматриваются практические вопросы реализации компиляторов;
  • "Как Паскаль и Оберон попадают на "Самсон", или искусство создания трансляторов" [Кожохарь, Евстюнин, Терехов, Уфнаровский 1992], в которой приведены примеры практически готовых трансляторов для отечественной ЭВМ "Самсон";
  • "Языки и методы программирования в системе "Эльбрус" [Сафонов 1989], в которой приведены практические сведения об использовании систем программирования, реализованных на вычислительных комплексах "Эльбрус";
  • "Текущее состояние российских исследований и разработок в области трансляции" [Поттосин 1995]. Эта работа дает представление об отечественных разработках последних лет и содержит ссылки на российские коллективы и центры, занимающиеся разработкой систем программирования.

Ссылки на литературу по другим системам программирования будут приводиться в тех разделах, где эти системы рассматриваются. Обратим внимание, что программисту всегда следует ориентироваться на два основных документа, сопровождающих каждый программный продукт - руководство пользователя и справочное руководство.

Управление

Сильный действует рукой, мудрый - умом, а хитрый - кем-то еще.
Владислав Гжегорчик

Инструментарий поддержки процесса управления разделим на три группы.

  • Системы управления проектами.
  • Организационные средства.
  • Средства оценки качества.

Организационные средства

К организационным средствам относятся:

  • электронная почта;
  • электронный календарь;
  • интранет.

Электронная почта

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

Электронный календарь

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

Интранет

Термином интранет обозначают корпоративные информационные системы, построенные на принципах, заимствованных из сети Интернет. По сути, интранет - это перенос хорошо известных сетевых технологий во внутрикорпоративные сети. Внутренняя сеть позволяет создать целостный портрет организации и обрести радикально новую систему внутренних коммуникаций и доступа к информационным ресурсам. Интранет может быть значительно "умнее" Интернета, потому что он контролируем, и в него можно инвестировать значительно больше знаний и средств. В качестве серверов итранета можно использовать хорошо известные серверы Интернета, например Apache (http://www.apache.org/).

Средства оценки качества

Для сравнения качества программных продуктов применяются количественные методы оценки. Среди программ оценки качества отметим Metricate компании Software Productivity Centre (http://www.spc.ca/)), которая анализирует все аспекты деятельности компаний по производству программного обеспечения. Это - эффективность технологических процессов, качество программного кода, уровень управления проектами, стоимость выполнения различных этапов, производительность получаемой системы, продуктивность труда разработчиков и качество готовых изделий.

5.2.3. Анализ требований и проектирование

Трансляторы

Диван был транслятором. Он создавал вокруг себя поле, преобразующее,
говоря просто, реальность действительную в реальность сказочную.
Аркадий и Борис Стругацкие. "Понедельник начинается в субботу"

Транслятор - программный инструмент, предназначенный для перевода (трансляции) программ с одного формального языка на другой. Существует несколько основных видов трансляторов:

  • компиляторы;
  • декомпиляторы;
  • интерпретаторы.

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

 

Обратим внимание на то, что многие другие программные инструменты могут рассматриваться как языковые трансляторы, например:

  • текстовые редакторы (транслируют текст и специфические команды форматирования в некоторый образ);
  • процессоры запросов (транслируют высокоуровневый язык запросов в реляционный язык (например, SQL));
  • программы доказательства теорем (преобразуют спецификацию теоремы в некоторый метаязык).

Компиляторы

Компиляторы в некотором смысле подобны зубным врачам: они требуются каждому программисту, но общение с ними редко приносит полное удовольствие.
Майк Балл

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

 

Далее мы расскажем об основных программах, входящих в состав компилятора. В сети Интернет подробный обзор таких программ можно найти на сайте Compiler Construction Tools (http://catalog.compilertools.net/).

  • Драйвер (диспетчер, монитор) - это программа, последовательно вызывающая все остальные компоненты компилятора.
  • Препроцессор - программа, которая выполняет модификацию данных с целью их подготовки для ввода в другую программу. Модификация может заключаться в простом переформатировании или применении макрорасширений.
  • Анализатор - компонент компилятора, осуществляющий последовательно:
    • лексический анализ, на котором входная программа, представляющая собой поток символов, разбивается на лексемы - конструкции (слова) языка;
    • синтаксический анализ, в процессе которого происходит разбор структуры программы;
    • контекстный анализ, во время которого выявляются зависимости между частями программы, включая анализ типов, областей видимости, соответствие параметров и т. п.
  • Оптимизатор - компонент, выполняющий преобразования программы (как правило, на основе промежуточного представления) с целью улучшения ее характеристик (оптимизации) по одному или ряду параметров. Как правило, оптимизацию проводят по времени исполнения с целью получения более эффективной программы или по пространству - месту, которое файл с откомпилированной программой будет занимать. На рис. 5.4 представлено три основных подхода к оптимизации.
  • Кодогенератор - компонент, завершающий компиляцию и порождающий на основании промежуточного представления программы либо ассемблер, либо объектный код.

 

Интерпретаторы

Не существует фактов, есть лишь их интерпретация.
Ф. Ницше

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

Декомпиляторы

Декомпилятор - программа, позволяющая по программе на языке низкого уровня (обычно это коды некоторой машины) получить программу на высокоуровневом языке, в некотором смысле ей эквивалентную. Под эквивалентностью чаще всего понимают эквивалентность внешних проявлений работы исходной программы и декомпилированной

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

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

Теория анализа потоков управления появилась давно, т. к. анализ активно применялся в компиляторах практически с момента их появления. Однако анализ потоков управления при компиляции имеет свою специфику - он используется в основном для целей оптимизации. Большинство алгоритмов анализа потоков управления, которые ориентированы на декомпиляцию, ставят своей целью уменьшение количества goto-выражений посредством введения новых логических переменных, дублирования кода (code replication) или использования конструкций высокого уровня, недоступных в большинстве широко используемых языков, таких как Pascal, С или C++.

В работах Кристины Цифуентес (Cristina Cifuentes) представлены алгоритмы, использующие минимальный набор инструкций высокого уровня: циклы типов while и do...while, if- и case-выражения. Управление выполнением объемлющих конструкций из вложенных не допускается. Причем эти алгоритмы используют оператор goto лишь тогда, когда граф управления не может быть структурирован никаким иным способом в пределах перечисленных конструкций.

Анализ практических достижений в области декомпиляции языка Java выполнил Дэйв Дайер (Dave Dyer) (http://www.javaworld.com/). Он сравнил между собой три наиболее известных к середине 1997 года декомпилятора: DejaVu, Mocha и WingDis. Дайер предложил систему тестирования декомпиляторов, основанную на интересной классификации допускаемых ими ошибок. В соответствии с этой системой все ошибки делятся на шесть категорий. "Тяжесть" ошибки возрастает с номером категории. Ошибки, в результате которых декомпилированная программа перестает собираться, но которые могут быть легко исправлены (например, отсутствие явного приведения типов там, где оно с очевидностью должно быть), относятся к первой, самой легкой категории, тогда как генерация правильного, но нечитаемого текста на Java считается ошибкой третьей категории. Заметим, что некоторые ошибки, проявляясь у одних декомпиляторов, полностью отсутствуют у других. Это свидетельствует о жизнеспособности такой классификации - она позволяет определить области, в которых одни декомпиляторы имеют преимущество над другими.

В настоящее время наиболее известны следующие декомпиляторы:

  • Mocha и Crema входят в состав программного продукта Jbuilder компании Borland Inc. (http://www.borland.com/));
  • Source Tee Java Decompiler (компании SourceTee Software Co.
  • Jad (авторская разработка Павла Кузнецова (http://www.sai.msu.su/sal/F/1/JAD.html)).

Листинг 5.1. Пример файла с инструкциями для утилиты make

BASE_DIR = /usr

BIN_DIR = $(BASE_DIR)/bin

LIB_DIR = $(BASE_DIR)/lib

# В результате такого описания получится, что значение
# переменной BIN_DIR стало равным /usr/bin, a LIB_DIR - /usr/lib.

OBJS = main.о classa.o classb.o

LIBS = libCstd.a libCrun.a

main: clean $(OBJS)

$(CCC) -o $@ $(OBJS) -L $(LIB_DIR) $(LIBS)

# Разыменование переменной ССС, которая у нас не присутствует,
# но может присутствовать в окружении.
# Использование $@ после параметра -о приводит к тому, что результирующий файл будет
# называться тоже main.

clean:

rm -f *.o main core

# Удаление всех объектных файлов и core-файла, который может быть
# создан в результате некорректного завершения предыдущей компиляции.

classa.o: classa.h

# Указывает зависимость - т. е. когда будет изменен файл classa.h,
# файл classa.o потребует перекомпиляции.

Система make может работать в нескольких режимах, задаваемых при старте системы, следующими параметрами:

  • -n - только печатать команды, не исполняя их. То есть если make примет решение на исполнение команд, то система, не передавая их интерпретатору команд, напечатает их на экране;
  • -p - напечатать все макроопределения. То есть после разбора файла определений (makefile) напечатать все найденные там определения макросов и продолжить работу;
  • -s - не печатать команды. Без указания этой опции make при передаче команд интерпретатору команд печатает их на экран;
  • -m - обновить только цель. С этой опцией make, произведя разбор файла определений, выполняет только команды, необходимые для обновления главной цели, и никаких других команд в интерпретатор команд более не передает. Причем команды для обновления главной цели выполняются обязательно, вне зависимости от необходимости.

Также при старте make может получить в качестве параметров имя файла определений и имя главной цели его работы. Если имя файла определений не указано, то в текущем каталоге ищется файл с именем makefile, а если он не находится, то make прекращает работу с сообщением об ошибке. Если не указано имя главной цели, то make по умолчанию берет в качестве главной цели первую цель, найденную ею в файле определений.

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

Тестирование и отладка

Заблуждения, заключающие в себе некоторую долю правды, самые опасные.
Адам Смит

Мы будем изучать вместе инструментарий, применяемый как на этапе тестирования, так и на этапе отладки. Очень часто оказывается, что один и тот же инструмент может указать на факт наличия ошибки, одновременно локализовать место ее возникновения и указать причину. Большая часть инструментов связана с технической стороной вопроса (http://www.softwareqatest.com/qatweb1.html).

Тестовые мониторы

Тестовый монитор состоит из трех основных компонентов.

  • Ядро системы, содержащее основные программы тестирования и оформления результатов.
  • Собственно тестовая база, включающая исходный тест и эталонные результаты пропуска тестов.
  • Тестовое пространство, обычно содержащее специфический настроечный файл.

В результате запуска тестового монитора в тестовом пространстве начинают исполняться заданные сюиты из тестовой базы. На основе результатов тестирования можно сделать выводы об изменении качества программного продукта.

Отладчики

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

Кроме классических отладчиков существуют еще несколько групп инструментов.

  • Средства динамической отладки распределения памяти — специальный инструментарий, позволяющий анализировать распределение памяти в процессе исполнения программы.
  • Средства отладки многопоточных и параллельных приложений. Это те приложения, которые в некоторой точке могут разветвиться для выполнения параллельной работы, потом попадают в точку ожидания и опять выполняются последовательно. Примеры — средства компании Sun Microsystems Inc. (http://www.sun.com/):
    • thd (Thread Analiser) — нитевой анализатор, который исполняется для того, чтобы отслеживать многопоточные приложения;
    • locklint - анализатор корректности взаимных исключений;
    • looptool - анализатор распараллеливания программ.

Ввод в действие

Основная группа систем данного процесса - это системы инсталляции. Укажем самые популярные инсталляторы для операционной системы Windows

  • MindVision's Installer VISE - мощнейший профессиональный инсталлятор, используемый даже крупными корпорациями;
  • WISE - известен самым маленьким размером получающегося дистрибутива. Имеет богатый язык скриптов;
  • InstallShleld Professional/Express - старейший продукт, обладающий всеми необходимыми возможностями для создания сколь угодно сложных сценариев установки;
  • CreateInstall - простой, легкий в освоении и компактный инсталлятор.

Сопровождение

Можно выделить следующие основные группы инструментов, используемых при сопровождении программ:

  • связанные с технической стороной сопровождения (трансляторы, отладчики, системы управления версиями текстов и т. п.). Поскольку сопровождение представляет мини-модель жизненного цикла, то инструменты, применяемые во всех процессах жизненного цикла, могут понадобиться и здесь;
  • связанные с анализом и пониманием кода. Это специальные средства реинжиниринга и обратной инженерии. Также сюда мы относим средства восстановления спецификаций, конверторы и другие системы;
  • связанные с организационной стороной сопровождения. Эти средства дают возможность выполнения административных функций (например, ведения базы данных ошибок) сопровождающему программный продукт.

Завершение эксплуатации

Основная группа систем данного процесса - это системы деинсталляции. Такие системы выполняют действие, обратное действию инсталляции, и, как правило, входят в инсталляционный пакет.

Средства поиска различий

Средства поиска различий предназначены для обнаружения разницы между файлами. Такая необходимость возникает достаточно часто. Например, для сравнения старой и новой версии одного файла или сравнения изменений, внесенными двумя разными людьми на основе одной исходной версии. Стандартным результатом работы таких средств являются строки файлов, которые нужно изменить для того, чтобы привести файлы в соответствие друг с другом. В большинстве случаев находится минимальный достаточный набор различий.

Примеры таких систем:

  • diff (компании Sun Microsystems Inc. (http://www.sun.com/)) входит в состав операционной системы Solaris;
  • GNU diff (организации Free Software Foundations (http://www.gnu.org/software/diff/diffutils/)) представляет собой совокупность нескольких утилит:
    • diff - основная утилита для нахождения различий между двумя файлами;
    • cmp - утилита, выдающая информацию о номерах строк, в которых в файлах есть различия;
    • diff3 - утилита, находящая различия между тремя файлами;
    • sdiff - утилита для интерактивного объединения двух файлов в один.

Текстовые редакторы

Текстовый редактор - программа, позволяющая вводить в файл символьную информацию и модифицировать ее. Можно выделить несколько разновидностей текстовых редакторов.

  • Строковые редакторы, позволяющие смотреть и редактировать текст только на одной строке. При этом текст воспринимается как последовательность строк, разделенных символом "конец строки".
  • Потоковые редакторы, позволяющие воспринимать текст в виде потока символов. При этом признаки конца строки также являются символами.
  • Экранные редакторы, позволяющие перемещать по тексту окно, в котором можно передвигать курсор и устанавливать его в нужные позиции. Многие экранные текстовые редакторы позволяют видеть на экране текст в том виде, в котором он будет напечатан (концепция What You See Is What You Get - WYSIWYG).

Сейчас распространены универсальные текстовые редакторы, которые избыточны для большинства конкретных задач. Рассмотрим несколько уровней текстовых редакторов, каждый из которых обладает дополнительными возможностями по сравнению с предыдущими:

1. Редакторы для составления программ. Их основные возможности - поддержка средств работы с блоками текста, поиск и замена по файлу.

2. Редакторы для подготовки статей без графики и сложных формул. Добавляются возможности форматирования абзацев, расстановки переносов и разбиения текста на страницы.

3. Редакторы для подготовки статей со сложными рисунками и формулами. Добавляются возможности включения графики в текст, поддержки многих кодировок и управления шрифтами.

4. Редакторы для подготовки книг и журналов. Добавляются возможности работы с большими файлами и сбор оглавления.

5. Редакторы для подготовки научно-технической документации. Добавляются возможности поддержки" листов изменений, колонтитулов и предметных указателей.

Редакторы для составления программ могут учитывать синтаксическую структуру обрабатываемой программы и выполнять дополнительный анализ и проверку (см. разд. 5.3.1.7).

Вот несколько наиболее известных и популярных текстовых редакторов:

  • Microsoft Word (компании Microsoft (http://www.microsoft.com/)) в операционной системе Windows и аналогичный ему по возможностям редактор StarOffice (компании Sun Microsystems Inc. (http://www.sun.com/staroffice/)) в Unix;
  • Биллом Джоем (Bill Joy) был разработан полноэкранный текстовый редактор для Unix - vi. Этот редактор до сих пор является одним из самых используемых стандартных текстовых редакторов на компьютерах с операционной системой Unix.

Гипертекстовые средства

Средства исследования и просмотра с гипертекстовыми возможностями позволяют просматривать и редактировать текст (обычно - программный код), используя специальные средства браузеров, такие как выделение цветом, стилем, гипертекст и т. п. Разработаны и продолжают разрабатываться системы, целью которых является исследование и просмотр исходного текста крупных проектов с открытым исходным текстом. В качестве средства просмотра используется обычный html-браузер. Примеры средств:

  • Linux Cross-Reference - LXR (http://lxr.linux.no/) - было создано как средство просмотра ядра операционной системы Linux;
  • Mozilla Cross-Reference (http://lxr.mozilla.org/) - средство просмотра исходных текстов браузера Mozilla;
  • FreeBSD Unix Cross-Reference (http://lxr.linux.no/freebsd/source/) - средство просмотра текстов операционной системы FreeBSD Unix.

Системы документирования

Существуют различные генераторы документации, большинство из которых основано на различных принципах сбора информации по исходным текстам программ. Примеры таких программ:

  • javadoc (компании Sun Microsystems, Inc. (http://www.sun.com/)) - генератор документации Java. Он считывает исходные тексты программ на языке Java, ищет комментарии специального вида и сопоставляет их с классами и методами, которые они описывают. Собрав все элементы, генератор придает им вид HTML-структуры и сохраняет в виде файла. Комментарии для генератора похожи на блочные комментарии в языке С, но имеют две звездочки после первой наклонной черты. Существует несколько ярлыков - символов, имеющих специальное значение (например, знак @). Так, комбинация символа и слова - @author заставит программу использовать специальные команды HTML, выделяющие имя автора в программе;
  • ToolBook - инструментальная система разработки информационных приложений, создания гипермедиа-приложений (электронной документации, словарей, справочников и энциклопедий) и интерактивных обучающих программ. Отличительная особенность данной системы - использование метафоры книги в качестве основы создаваемых приложений. Приложение называется книгой, состоит из страниц и обладает всеми свойствами Windows-приложений [Смирнов, Керов, Дерюшев 1998].

Неточный вывод на знаниях

Данные и знания в экспертных системах могут иметь неопределенность, причем для ее описания применяются разнообразные средства.

Рассмотрим один из типов неопределенности - неточность. Неточное высказывание - высказывание, истинность которого не может быть установлена с определенностью. Модель оперирования с неточными данными и знаниями включает две составляющие.

  • Язык представления неточности.
  • Механизм вывода на неточных знаниях.

Для построения языка необходимо выбрать форму представления неточности. Это может быть скаляр, интервал, распределение, лингвистическое выражение или множество. Также надо предусмотреть возможность приписывания всем высказываниям меры неточности. Из подходов к описанию неопределенности можно выделить вероятностный и алгебраический. Механизмы оперирования с неточными высказываниями можно разделить на два типа.

  • Присоединенный механизм, сопровождающий процесс вывода на точных высказываниях. При этом для вывода на продукционных правилах надо определить следующие функции пересчета:
    • меру неточности посылки правила по мерам неточностей составляющих его высказываний;
    • меру неточности заключения правила по мерам неточности правила и посылки правила;
    • объединенную меру неточности высказывания, полученного из нескольких правил.
  • Специально-ориентированный механизм, для которого характерно наличие схем вывода, настроенных на используемый язык представления неточностей.

В качестве примеров систем, применяющих аппарат неточного вывода на знаниях, приведем:

  • CubiCalc (компании HyperLogic (http://www.hyperlogic.com/))
  • FuziCalc (компании FuziWare Inc.).

Базы данных в Интернете

Среди информационных ресурсов Интернета особый интерес вызывают базы данных, которые подразделяются на [Краснослободцев, Смирнов, Лиходедов 1998]:

  • текстовые (полнотекстовые, реферативные, библиографические);
  • содержащие изображения и использующие средства мультимедиа;
  • числовые и табличные;
  • содержащие программное обеспечение.

Базы данных в Интернете рассчитаны как на массового, так и на профессионального потребителя. Баз данных первого типа - большинство. Ко второй группе относятся профессиональные информационные системы, представляющие собой специализированные базы данных и поисковые программы. Например, крупнейший мировой продавец информации - компания Questel-Orbit, разместила в Интернете базу данных патентов (http://www.qpat.com/). Специализированные базы данных, как правило, имеют свой узкоспециальный интерфейс и собственную уникальную структуру. В последние годы появилась тенденция к интеграции и стандартизации профессиональных баз данных.

Таблица 5.1. Приоритеты логических операций

Приоритет Обозначение Назначение
0 "" Поиск по точному соответствию
1 ! Исключение лексемы
2 & Логическое И
  | Логическое ИЛИ

Текстовый редактор предполагает возможность фильтрации и сортировки логических абзацев. Сортировка может производиться по следующим принципам:

  • по релевантности логических абзацев;
  • по приоритету документов;
  • по рассматриваемым поисковым серверам;
  • по частоте появления документа на серверах;
  • по заголовкам документов.

Таким образом, на вход генератора итогового документа подается набор логических абзацев со списками атрибутов. Синтезировать отчет можно в нескольких формах, различающихся порядком следования логических абзацев, с предоставлением пользователю возможности переключаться из одного режима в другой.

Инструментальные системы

Целое - это больше, чем сумма частей.
Аристотель

Инструментальной системой будем называть некоторую логически связанную совокупность программных инструментов, поддерживающую разработку и сопровождение программных систем на данном языке программирования или ориентированных на какую-либо конкретную предметную область.

Эту группу характеризует в первую очередь интеграция нескольких инструментов под единой оболочкой и использование общего репозитория.

Выделяют три группы инструментальных систем.

  • Инструментальные среды программирования.
  • Средства автоматизации разработки программ.
  • Интегрированные среды.

В идеальном варианте инструментальные системы должны распространяться на максимально возможное количество процессов и покрывать максимум стадий жизненного цикла. Однако исторически сложилось так, что инструментальные среды в большей степени связаны с процессами программирования, тестирования и отладки, а средства автоматизации разработки программ - с анализом и проектированием (рис. 5.6).

 

Интегрированные среды

Интегрированная среда - совокупность программных инструментов, поддерживающая все процессы жизненного цикла программного обеспечения в рамках определенной технологии. Компонентами интегрированных сред являются:

  • инструменты управления процессами;
  • инструменты управления проектом;
  • инструменты конфигурационного управления;
  • инструменты верификации;
  • инструменты поддержки разработки документации.

Выделяют три уровня интеграции инструментов в интегрированных средах.



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 153; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.44.108 (0.071 с.)