Содержание к диссертации
Введение
I. ОБЗОР СИСТЕМ АВТОМАТИЗАЦИИ ПРОГРАММИРОВАНИЯ ... 8
I. Сравнительная характеристика системы САВРАС . .. 8
2. Архивная служба и проблемы надежности 19
ГЛАВА 2. ЯЗЫКОВЫЕ СРЕДСТВА СИСТЕМЫ САВРАС 24
I. Основные понятия. Область приложения системы ... 24
2. Модули, архивы, директивы 29
3. Текстовая макрозаготовка 31
4. Описание семантической модели предметной области . 33
5. Схема 40
6. Другие директивы 44
7. Дисциплина раббты и дополнительные возможности системы 52
ГЛАВА 3. НЕКОТОРЫЕ АСПЕКТЫ РЕАЛИЗАЦИИ СИСТЕМЫ 57
I. Общие сведения 57
2. Реализация директивы ОПИС 59
3. Реализация директивы СХЕМА бб
4. Реализация директивы СБОРКА 71
5. Ограничения на размеры заданий 77
ГЛАВА 4. АВТОМАТИЗАЦИЯ РАСЧЕТОВ ГАЗОДИНАМИЧЕСКИХ
ПРОЦЕССОВ В РАЗВЕТВЛЕННЫХ ТРУБОПРОВОДАХ 79
I. Постановка задачи 80
2. Описание ПС-языка 82
3. Организация работы ПС-системы в пакетном
режиме 88
4. Организация диалога в ПС-системе 90
ЗАКЛЮЧЕНИЕ 92
Литература . . . 94
Приложение I. Временные характеристики работы систеш.
Приложение 2. Пример задания для системы САВРАС.
Приложение 3. Пример собранной программы.
Приложение 4. Перечень ошибок, обнаруживаемых системой САВРАС.
- Сравнительная характеристика системы САВРАС .
- Основные понятия. Область приложения системы
- Реализация директивы ОПИС
- Описание ПС-языка
Введение к работе
Актуальным направлением современного программирования, как прикладного, так и системного, является создание программных средств, позволяющих решать на ЭВМ большие научные, инженерные, экономические и другие задачи, программы для которых состоят из большого числа машинных инструкций и используют, как правило, известные запрограммированные и отлаженные алгоритмы. В то же время желательно, чтобы решение таких задач не требовало от пользователя специальных программистских знаний. Одним из распространенных подходов к решению этой проблемы стало создание систем автоматической генерации программ fl ] и пакетов прикладных программ (ППП) ["2-3] , а также средств автоматизации проектирования (САПР) [4] . Среди требований, предъявляемых к программному обеспечению такого рода, подчеркивается простота и удобство для пользователя входного языка пакета или языка интерактивного взаимодействия пользователя с системой. Другим требованием (и атрибутом большинства известных пакетов прикладных программ) является принцип модульности, согласно которому функциональное наполнение ППП представлено в виде библиотек модулей. Модуль, как правило, является программой или подпрограммой, допускающей автономную трансляцию, и снабжен перечнем входных и выходных параметров, а также входных точек.
В настоящее время в ВЦ АН СССР совместно с Институтом машиноведения им. А.А. Благонравова разработан комплекс программ для расчета нестационарных газодинамических процессов в разветвленных газопроводах с местными сопротивлениями и исполнительными элементами. Для того чтобы смоделировать процесс в конкретном трубопроводе, пользователь должен прежде всего построить приближенную модель трубопровода, используя существующие функциональные элементы (ресиверы, трубы, сопротивления, разветвления, камеры и т.д.), а затем в соответствии с полученной моделью написать, отладить и просчитать управляющую программу, реализующую обращения к подпрограммам созданного комплекса в последовательности, соответствующей модели трубопровода. Ручное написание управляющей программы осложняется тем, что подпрограмма, моделирующая состояние газа в некотором функциональном элементе в очередной момент времени, использует параметры газа с предыдущего временного слоя не только в данном элементе, но и в соседних с ним. Как показала практика, полный цикл изготовления управляющей программы для модели трубопровода, состоящей из 20-25 функциональных элементов, занимает 2-3 недели рабочего времени квалифицированного программиста. Поэтому встала задача дополнить комплекс программ системными средствами, превратив его в ПТШ с входным языком, удобным для описания модели трубопровода и для задания начальных значений.
Была предпринята попытка погрузить комплекс программ в систему САФРА 5J, но в силу специфики построения управляющей программы попытка не удалась. Встал вопрос о создании новой системы сборки управляющих программ, в которой была бы возможна работа в рамках как модульного, так и немодульного программирования. Первый опыт такой системы ej описан в главе 4 данной диссертации.
Главным недостатком системы оказалась ее закрытость для пополнения и модификации. Кроме того, предложенный подход мог быть использован при моделировании некоторых объектов другой природы (в частности, возможности системы сборки, описываемые в - о -
Сравнительная характеристика системы САВРАС
Во многих современных инструментальных системах предметная область, то есть класс задач в рамках той или иной научной проблемы, для решения которых данная система применяется, может варьироваться путем изменения функционального наполнения системы, либо путем изменения информационной базы системы. Введем термин "область приложения системы", обозначающий совокупность всех задач, которые решаются или могут быть решены с помощью ее системных средств, то есть совокупность всех предметных областей, к которым может быть применена данная система.
А.С. Стукало в ["8] классифицирует современные пакеты прикладных программ по способам организации связи с пользователем: "чёрные ящики", препроцессоры, адаптивные диалоговые системы. Под "черным ящиком" понимается замкнутый многопараметрический и многовариантный универсальный процессор со скрытыми для пользователя механизмами организации управления и практически недоступный для модификации. Удобство такой структуры заключается в не-процедурности постановки задачи пользователем. Работа с такой системой происходит в режиме "вопрос-ответ": пользователь задает перечень входов "черного ящика" и их значений; система выдает перечень выходов и их значений. По этому принципу работает, в частности, система "РАДУГА". Элементы такой организации связи наблюдаются в системах ПРИЗ [э] и ФЙХАР fio] .
Препроцессор объединяет модули на языках высокого уровня в единые программы (при этом пользователь так или иначе указывает требуемые модули и последовательность их сборки), а затем передает их в базовую систему программирования. К препроцессорам можно отнести системы САФРА [5] , BEKTOP-I [її] , РАДУГА-б [12].
Адаптивные диалоговые системы имеют развитые средства для интерактивной работы, за счет которой достигается гибкое взаимодействие системных средств пакета, с пользователем, с одной стороны, и с функциональным наполнением - с другой.
В рамках приведенной классификации САВРАС является системой препроцессорного типа. В отличие от большинства ППП, САВРАС не имеет собственных системных средств для вызова того или иного модуля (не является системой интерпретирующего типа), а также средств информационного обмена между модулями, хотя содержит планировщик и средства работы с архивами, содержащими элементы функционального наполнения. Как указывалось во Введении, система представляет собой двухуровневый макрогенератор. На нижнем уровне при распланированной последовательности вычислений и при определенных фактических макропараметрах макрогенерация состоит в обычной обработке макроопределений, последовательность и имена которых извлекаются из описания семантической модели предметной области. Назначением верхнего уровня макрогенерации является планирование обработки функциональных элементов объекта и, возможно, подстановка в описание объекта тел его макроэлементов, также являющихся описаниями некоторых подобъектов, подвергнутых обработке верхнего уровня.
Основные понятия. Область приложения системы
Для описания области приложения системы введем абстрактные понятия семантической модели предметной области и разветвленного объекта на семантической модели. Реальные объекты могут рассматриваться как конкретные реализации этих абстрактных понятий. Семантической моделью предметной области будем называть тройку ( $ , 6 , М ), где: М - множество макроопределений, используемых при генерации программ; G= (Е, С) - информационная схема модели, содержащая описания номенклатуры элементов Е и множества С допустимых связей элементов; jS шаблон генерации кода программы, состоящий из списка X поименованных разделов. Рассмотрим компоненты семантической модели более подробно. Номенклатура элементов Е={Е;};= Л - упорядоченное множество допустимых типов элементов. Допустимый тип элемента Ej, представляет собой пару (//7} , Р ), где NT і - название типа элемента, а Р- = fP/i3 = /7?; конечное упорядоченное множество граничных точек элемента. Граничные точки элементов разных типов будем различать: Р; П Р s 0 при ii j . Множество допустимых связей С= {(Р і Pjt і $ )J соответствует множеству ребер частично ориентированного графа, построенного на множестве U Р- как на вер-шинах; в тройке (Р , Р ,Я ) указаны граничные вершины Р и Р: ребра, а также его ориентация , если ребро направлено от Pi.с к Pj\t ; 11- J-I, если ребро направлено от Р; кРи ;
( 0, если ребро не ориентировано. В этом случае допустимым значением граничной точки Ріс будем называть граничную точку jC , имея в виду какую-либо величину, идентифицирующую ее сорт, например, порядковый номер граничной точки Р; в сквозной нумерации (Р , ... , Р , Pz , ... , Рг/иг, ... , Рл/ , ... , P/t, ). Соответственно граничная точка Р будет допустимым значением граничной точки Ру . Областью определения ij граничной точки Р ij. назовем, совокупность ее допустимых значений.
Содержательно тип элемента Е является определением вектора отображений Рі =(РІ±, fit J f ГдЄ /г л осуществляет отображение из множества / г г ... t imi в множество текстовых строк. Возможные текстовые значения отображений содержатся в множестве М макроопределений; в процессе сборки конкретной программы текстовое значение отображения Fee должно быть использовано при формировании -го раздела программы по шаблону $ . Конкретная форма определения отображений будет обсуждаться в 4 этой главы.
Реализация директивы опис
Директива ОПИС выполняется в пять этапов (рис. 6). На первом этапе система получает таблицу шаблона генерации кода программы (последовательное перечисление имен разделов со ссылками на имена текстовых заготовок, содержащих "начальные" значения разделов). На втором этапе описание семантической модели предметной области, взятое из входного потока, преобразуется в списочную структуру в соответствии с рис. 7 (см. также рис. 3). Одновременно создается каталог элементов КАТЭЛ, который содержит названия типов элементов в последовательности их описаний, информацию о числе граничных точек каждого элемента, о необходимости его индексирования и о том, может ли встречаться данный элемент в описаниях схем, или он должен упоминаться только в описаниях интерфейсов других элементов.
На следующем этапе имена элементов как в списках допустимых соседей, так и в условиях условных порций элементарных заданий заменяются их порядковыми номерами в КАТЭЛ, после чего происходит упорядочение списка по убыванию номеров элементов и их граничных точек на первом и втором уровнях иерархии и по возрастанию номеров соседей и их граничных точек на третьем и четвертом уровнях. Это необходимо для следующего, четвертого этапа, программы и номер приоритета. Списки порций элементарных заданий отделяются друг от друга нулевыми ячейками. Условная порция элементарных заданий состоит из списка расширенных отношений -образов отношений в записи условия, за которым следует набор элементарных заданий. Расширенное отношение занимает полуячейку (24- двоичных разряда) и содержит отношение, признак отрицания, если он есть, код операции, следующей за отношением в записи условия, и уровень вложенности символа этой операции. Пример 10. Условие
Описание ПС-языка
В отличие от общего случая системы САВРАС, ПС-система предназначена для обработки объектов, функциональные элементы которых, за исключением разветвлений, "линейны", т.е. содержат не более одной входной и не более одной выходной граничной точки, которые соответствуют входному и выходному отверстиям для газового потока через этот элемент. Это позволяет объединять последовательности "линейных" элементов в линейные участки. Таким образом, входной язык описания конфигурации пневмосети (ПС-язык) позволяет посредством простого перечисления сначала разветвлений, а затем элементов линейных участков в последовательности, соответствующей их расположению, задать конфигурацию трубопровода.
Приведем синтаксис ПС-языка: ПС-задание ::= (указания о выводе (указания о возобновлении счета указания о сохранении данных (описание конфигурации пневмосети /Указания о выводе ::= ВЫВ: (порция выдачи , ... ; Кпусто (порция выдачи ::= (Т= (момент выдачи , ... : идентификатор , ...) (момент выдачи) ::= (число,) \ ( (число ШАГ: число ДО: (число ) (указания о возобновлении счета) ::= НОВ: (НУ,) (НАЧЗОН І (пусто) (указания о сохранении данных ::= ОТЛ: (ОСТВР , (НУ,) НАЧ30Н) Пусто (ОСТВР ::= (делое без знака) (НУ) ::= /восьмеричное целое без знака) (НАЧЗОН) ::= (восьмеричное целое без знака)
В указаниях о выводе идентификаторы соответствуют объектам вывода; имеется возможность запросить вывод при определенном значении временной координаты или в ряде временных точек, определяемых циклически посредством второй альтернативы. Параметры (НУ/ (НАЧЗОН) определяют место на МЛ, начиная с которого запоминается вся числовая информация при необходимости отложить счет и откуда она читается при возобновлении счета. Магнитная лента должна быть заказана в паспорте задачи по виртуальному направлению (НУ . Параметр ОСТВР определяет время (в секундах), оставшееся до конца задачи, при котором расчет должен быть прерван, а числовая информация записывается на МЛ. (Описание конфигурации сети ::= описание разветвления ... ;
(описание линейного участка ) ... (описание линейного участка ::= описание линейного элемента {описание разветвления ::= РАЗВ ( целое без знака, нестандартные действия и определение параметров описание интерфейса) {описание интерфейса ::= сосед слева , {сосед снизу/ , (сосед справа, , сосед сверху (сосед слева/снизу /справа/сверху У ::= граничный элемент пусто (граничные элемент ) ::= СОПР / целое без знака ТРУБА (целое без знака {описание линейного элемента) ::= (имя линейного элемента) індекс ) (нестандартные действия и определение параметров,) {имя линейного элемента) ::= ТРУБА ЗАГЛ ЗАГЛ, СОПР КАМ ПОРШ БАЛЛ {индекс) ::= {целое без знака))
Все элементы, кроме заглушек (ЗАГЛ и ЗАГЛ,) должны быть снабжены непустыми индексами. {Нестандартные действия и определение параметров) ::= (пусто)
( {атрибут ),...) (атрибут) ::= ( {нестандартные действия {неполный идентификатор {неполный идентификатор = (арифметическое выражение (нестандартные действия) ::= (описание) ... (операторы) (описание) ::= { тип ) список переменных) ; тип ::= REAL ) Х-ГА/TEG-ER BOOLEAN {операторы) ::= (список операторов на Алголе-60)