Большой класс задач АП составляют анализ во временной области и параметрическая оптимизация объектов при функциональном проектировании на макроуровне. Большинство таких объектов описывается системами обыкновенных дифференциальных уравнений (ОДУ). Для анализа этих объектов широко используются методы:
1) узловых потенциалов для формирования математической модели системы;
2) неявные численного интегрирования ОДУ;
3) Ньютона для итерационного решения системы нелинейных алгебраических уравнений;
4) Гаусса (или его модификации) для решения систем линейных алгебраических уравнений.
Пакеты функционального проектирования, реализующие данное математическое обеспечение и его современные модификации, — одни из наиболее сложных в САПР. Самыми яркими представителями таких пакетов служат пакеты схемотехнического проектирования, воплощающие в себе, как правило, все передовые достижения в области математического обеспечения анализа и оптимизации и предназначенные для решения задач большой размерности.
Примечание, Далее изложение материала будет ориентировано в основном на такие пакеты. Однако это ни в коей мере не сказывается на его общности.
К основным требованиям, предъявляемым к пакетам функционального проектирования, наряду с рассмотренными выше (см. Введение) также относятся:
приемлемые затраты ресурсов ЭВМ для анализа объектов большой размерности (описываемых жесткими системами ОДУ, содержащих тысячи переменных);
возможность анализа проектируемых технических систем сучетом разнообразия и взаимовлияния протекающих физических процессов, т. е. одновременный анализ процессов различной физической природы;
живучесть пакета, подразумевающая длительный срок его эффективной эксплуатации.
В составе пакета функционального проектирования выделяют три основные части (подсистемы): 1) языковую; 2) обрабатывающую; 3) монитор.
Примечание. Функции монитора пакета функционального проектирования схожи с функциями монитора САПР и описаны в § 1.2.
В пакете может также присутствовать подсистема управления локальными базами данных и диалогового взаимодействия с пользователем. Локальные базы данных организуются наиболее рациональным для данного пакета способом и используются для хранения информации, не подлежащей обобществлению с другими пакетами проектирования. Они могут применяться также в качестве буферов между пакетом проектирования и основной базой данных САПР, если характеристики последней не удовлетворяют данный пакет по какой-либо причине. Наличие в пакете проектирования собственных средств диалога может потребоваться для организации к нему множественного доступа.
Языковая подсистема.Она организует общение пользователя с пакетом функционального проектирования посредством проблемно-ориентированных входных языков, т. е. языков, близких к профессиональным языкам пользователей. При разработке пакета проектирования на макроуровне целесообразно предусмотреть возможность его использования в различных организациях и предметных областях, это способствует широкому внедрению автоматизированных средств в практику проектирования и быстрой окупаемости затрат на разработку программного обеспечения. Такая возможность реализуется, в частности, за счет создания пакета проектирования, открытого по отношению к входным языкам.
Лингвистическая открытость пакета функционального проектирования основывается на концепции использования языков двух уровней. Верхний уровень занимают входные языки, ориентированные на
Рис. 5.1. Схема трансляции на промежуточный язык:
0Bxi — описание объекта проектирования на i-м входном языке; Ti— i-й транслятор; Опр — описание на промежуточном языке
определенные группы пользователей и дающие средства лаконичного и удобного описания ограниченных классов объектов. Нижний уровень составляет единый промежуточный язык, более универсальный, но менее удобный для пользователя.
Для перевода описаний на входных языках в описание на промежуточном языке используются соответствующие трансляторы, как это показано на рис. 5.1.
Входные трансляторы САПР согласно существующей теории машинного перевода формальных языков принято рассматривать состоящими из трех основных блоков: 1) лексического; 2) синтаксического; 3) генератора кода. Все блоки имеют доступ к общему набору массивов и таблиц.
Лексический блок осуществляет распознавание базовых элементов предложений входного языка, т. е. разбивает входные, фразы на отдельные слова, из которых они состоят. Каждому слову в описании на входном языке ставится в соответствие лексема, размещаемая в одном из массивов транслятора. Лексемы состоят из двух частей, называемых классом и значением. Например, имя математической модели элемента проектируемого объекта, задаваемое на входном языке как последовательность русских или латинских букв, преобразуется лексическим блоком в лексему, имеющую класс «имя модели»; значением этой лексемы служит указатель на строку таблицы паспортов математических моделей элементов.
В задачу синтаксического блока входит перевод последовательности лексем, сформированной лексическим блоком, в последовательность атомов. Атомы также
состоят из класса и значения и являются, по сути, лексемами слов того промежуточного языка, на который осуществляется перевод. Одновременно с трансляцией производится проверка правильности построения предложений входного языка (синтаксический контроль). Класс и значение атомов, порядок их следования соответствуют лексике (набору слов) и синтаксису промежуточного языка.
Генератор кода преобразует атомы в слова и фразы промежуточного языка.
Взаимодействие блоков в трансляторе зависит от особенностей входного и промежуточного языков. Так, если эти языки синтаксически близки, то можно построить транслятор по схеме с одним проходом. В таких трансляторах вызов блоков осуществляется циклически: лексический блок вырабатывает лексему; она передается синтаксическому блоку, который порождает один или несколько атомов; генератор кода «развертывает» эти атомы в слова промежуточного языка; затем управление вновь передается лексическому блоку и т. д., пока не будет исчерпано описание на входном языке. Если языки синтаксически различны, то возникает необходимость в организации иной схемы взаимодействия блоков транслятора, при которой они включаются в работу однократно: сначала лексический блок выдает полную цепочку лексем, затем синтаксический блок переводит ее в последовательность атомов, преобразуемую генератором кода на последнем этапе в предложения промежуточного языка. Такой транслятор называется трехпроходным. Многопроходные трансляторы характеризуются большими затратами памяти, необходимой для хранения всей цепочки лексем и (или) атомов.
Внедрение нового, более совершенного программного обеспечения в промышленность обычно связано с необходимостью освоения пользователями новых входных языков, что требует достаточно больших затрат времени. Пакеты функционального проектирования, использующие данную двухуровневую языковую концепцию, могут быть внедрены на предприятия совершенно безболезненно, если будут оснащены трансляторами с входных языков тех программ, которые эксплуатировались раньше.
■ Примечание. Адаптация такого ПО к объектам иной физической природы требует лишь замены библиотеки подпрограмм математических моделей элементов и создания транслятора с нового входного языка, разработанного в соответствии
с терминологией, сокращениями, ГОСТами, соглашениями, принятыми в данной предметной области.
Возможны два подхода к построению пакетов проектирования с двумя языковыми уровнями, различающиеся сложностью разработки трансляторов. Первый подход реализован в программном комплексе КРОСС; в нем универсальность промежуточного языка обеспечивается его построением как языка описания математических моделей в виде систем уравнений. Второй подход в качестве промежуточного языка использует язык описания линейных графов, отображающих структуру динамических объектов с сосредоточенными параметрами, в сочетании со средствами описания произвольных функциональных зависимостей. Перевод описания структуры проектируемого объекта на язык графов проще, чем в систему уравнений, поэтому второй подход следует считать в общем случае предпочтительным при создании проблемно-ориентированных пакетов проектирования, открытых к входным языкам.
Трансляторы с входных языков должны обеспечивать возможность интерактивного режима работы, предоставлять пользователю широкие возможности по редактированию входных данных оперативному обнаружению и исправлению синтаксических ошибок в конструкциях языка. Работы по созданию таких трансляторов могут быть в высокой степени автоматизированы при использовании специальных генераторов трансляторов, включаемых в инструментальную подсистему САПР.
Промежуточный язык пакета проектирования, как и его входные языки, состоит из двухподмножеств: языка описания объекта (ЯОО) и языка описания задания на проектирование (ЯОЗ). Первый является непроцедурным и служит для предоставления пакету сведений о структуре и элементах проектируемой технической системы. Второй необходим для указания пакету задания на расчет и должен быть процедурным. При исследовании физического объекта во временной области ЯОЗ должен содержать, по крайней мере, четыре основных оператора: 1) расчета статического состояния; 2) расчета переходных процессов; 3) многовариантного анализа; 4) оптимизации. Для реализации режима интерактивного взаимодействия пользователя с пакетом не только на этапе подготовки исходного описания, но и на этапе расчета по одному из этих операторов
Рис. 5.2. Схема маршрута взаимодействия подпрограмм пакета функционального проектирования
в ЯОЗ должны быть включены дополнительные операторы прерывания и изменения хода вычислительного процесса, корректировки исходных данных, индикации любых переменных, массивов и трасс, расстановки точек останова и т. п.
■ Примечание. В § 5.3 дано краткое описание промежуточного языка программного комплекса ПЛ-6.
Обрабатывающая подсистема. Она осуществляет непосредственное решение проектных задач. Именно эта подсистема реализует заложенное в пакет математическое обеспечение. На рис. 5.2 схематично представлена структура обрабатывающей подсистемы, отражающая маршрут взаимодействия подпрограмм при решении задачи параметрической оптимизации непрерывного объекта по временной области. Она характеризуется ярко выраженной вложенностью модулей и, следовательно, разной частотой их использования: чем ниже уровень, занимаемый модулем, тем чаще он используется. Так, типовые значения
частот использования модулей уровня 6 относительно уровня 4 имеют порядок 103.
Пакеты функционального проектирования как программы, обрабатывающие предложения и директивы входного языка, являются языковыми процессорами. Существует два типа языковых процессоров: интерпретаторы и трансляторы. Структура пакета проектирования, построенного по принципу интерпретации, укрупненно показана на рис. 5.3. Его языковая подсистема ЯП воспринимает описание проектируемого объекта и задания на его расчет на входном (или промежуточном) языке и порождает (обычно в ОП) структуры данных, содержащих описание объекта и решаемой задачи в удобной для машинной обработки форме ВПД. Эта информация в дальнейшем интерпретируется обрабатывающей подсистемой (ОБрП).
■ Примечание. Важно, что еще до начала работы пакета в нем имеется полностью скомпонованная обрабатывающая подсистема. В ее состав входят универсальные модули, ориентированные на решение всего круга задач, допускаемых пакетом. Вызов необходимых модулей и их настройка на конкретные данные осуществляются непосредственно па этапе счета. Делается это обычно многократно (тем чаще, чем ниже уровень, занимаемый модулем). В дальнейшем такой пакет для краткости будем называть пакетом-интерпретатором.
Пакет функционального проектирования, построенный с использованием принципа трансляции, до начала расчета не имеет полной и скомпонованной обрабатывающей подсистемы. Языковая подсистема такого пакета воспринимает описание на промежуточном (входном) языке и в качестве выхода выдает на объектном языке программу(ы) вычислений в соответствии с входным описанием. Объектным языком может быть любой алгоритмический язык высокого уровня (ПАСКАЛЬ, ФОРТРАН, ПЛ/1 и др.) или язык машинных команд. Если в качестве объектного используется машинный язык, то полученные программы будут сразу готовы к выполнению. Если же объектный язык — язык высокого уровня, то дополнительно необходим перевод объектной программы в машинные команды. Транслятор, выходом которого являются объектные программы в машинных командах, называют компилятором.
Обычно полученные в результате работы транслятора объектные программы реализуют самые важные (наиболее критичные по временным затратам), но не все процедуры и алгоритмы, необходимые для расчета. Тогда
Рис. 5.3.
последние объединяются каким-либо образом с необходимыми для данного конкретного варианта расчета подпрограммами из постоянных библиотек пакета проектирования. Эти подпрограммы реализуют интерпретирующие вычисления и могут быть подпрограммами моделей элементов, методов интегрирования, расчета выходных параметров и т. п. Полученная в результате объединения сгенерированных и библиотечных модулей обрабатывающая подсистема пакета проектирования называется рабочей программой, ее выполнение непосредственно служит получению желаемого результата.
Выбор типа языкового процессора. Внастоящее время при создании пакетов проектирования находят применение оба принципа, хотя чаще используется принцип интерпретации, а пакеты-трансляторы сочетают в себе оба этих принципа, причем в разных пакетах в различной степени. Так, в программе многоуровневого моделирования MACRO генерируется на языке ФОРТРАН только подпрограмма, реализующая алгоритм Гаусса для решения системы линейных алгебраических уравнений, в пакете КРОСС в виде объектной программы на языке ПЛ/1 оформляются уравнения математической модели всей проектируемой системы, в программном комплексе ПА-6 компиляции подлежит большинство модулей нижних уровней структуры обрабатывающей подсистемы. Пакеты-трансляторы, а тем более компиляторы, обычно более сложны в разработке, чем интерпретаторы.
Применение для создания ПО того или иного подхода оказывает ключевое влияние на вычислительную эффективность пакета. Объектные программы, полученные в результате работы языковой подсистемы пакета-транслятора, в большинстве случаев являются значительно более быстродействующими по сравнению с пакетами-интерпретаторами (при условии, конечно, одинаковости используемого математического обеспечения). Объясняется это тем, что объектная программа представляет собой линейную программу, содержащую минимально необходимое количество команд, адресная часть которых настроена непосредственно на используемые элементы данных. Все операции, нужные для определения оптимальной последовательности команд и их операндов, выполняются однократно на этапе трансляции. Разность в быстродействии иллюстрируется рис. 5.4, а, где представлены графики затрат машинного времени Т на однократное выполнение процедуры прямого хода Гаусса интерпретирующей и скомпилированной подпрограммами при учете разреженности матрицы коэффициентов системы линейных алгебраических уравнений (в эксперименте использовался прямой способ кодирования разреженных матриц, среднее количество ненулевых элементов справа от диагонали составляло 2,2), N — порядок решаемой системы ЛАУ. Большие затраты для интерпретирующей подпрограммы обусловливаются накладными расходами, связанными с определением координат элементов разреженной матрицы и преобразованием индексов массивов в действительные адреса. Выбор тех или иных способов кодирования разреженных матриц позволяет
500 1000 N 500 1000 N
а) б)
Рис. 5.4.
сократить количество операций, необходимых для идентификации ненулевых элементов, но не настолько, чтобы значительно сблизить графики.
■ Примечание. Процедура решения системы линейных алгебраических уравнений — одна из наиболее «длительных» и часто используемых при анализе, как во временной, так и в частотной областях.
В общем случае скомпилированный вариант любой процедуры расчета требует большего объема ОП, чем ее интерпретирующий вариант. На рис. 5.4, б даны графики зависимости затрат памяти от порядка решаемой системы уравнений N для скомпилированной и интерпретирующей процедур прямого хода Гаусса. Наклон прямой, характеризующей зависимость затрат памяти от порядка N для скомпилированного варианта, больше наклона прямой, характеризующей ту же зависимость для интерпретирующего варианта. Однако разница в затратах памяти для систем с порядком не более 1000 несущественна для современных ЭВМ.
В задачах большей размерности несложно организовать такую дисциплину обмена с внешней памятью, которая практически не будет сказываться на реальном времени выполнения алгоритма Гаусса. Линейный характер объектной программы способствует ее весьма эффективному выполнению на ЭВМ с виртуальной памятью.
При исследовании затрат ОП необходимо принимать в расчет и архитектурные особенности пакета проектирования, построенного по тому или иному принципу. Пакетом-транслятором в рабочую программу включаются только необходимые для данного конкретного расчета подпрограммы. В пакетах-интерпретаторах обычно все подпрограммы, объединенные в обрабатывающую подсистему, должны находиться в ОП ЭВМ, так как непосредственно до момента обращения к ним неизвестен конкретный набор требуемых подпрограмм. Разнесение модулей по оверлейным сегментам возможно не всегда (случай подпрограмм моделей элементов), а когда это возможно, проблема избыточного объема ОП все равно полностью не решается, поскольку занятым считается объем памяти, требуемый наибольшей из подпрограмм одного уровня оверлейной структуры.
Использование динамической загрузки подпрограмм в ОП не всегда удобно, так как в этом случае исключается возможность использования общих областей и глобальных структур данных. Другой аспект вопроса о затратах ОП — распределение ОП под структуры данных. В пакетах-трансляторах память под структуры данных рабочей программы выделяется статически и строго необходимого размера. В обрабатывающей подсистеме интерпретатора необходимо динамическое распределение памяти, однако его использование связано с увеличением затрат машинного времени.
Рассмотренные факторы объясняют то обстоятельство, что на практике затраты ОП для многофункциональных пакетов-интерпретаторов, состоящих из большого количества модулей, оказываются большими, чем для таких же пакетов-трансляторов.
Важным преимуществом пакетов-трансляторов является следующее. Фаза собственно трансляции описания на промежуточном языке в объектную программу включается однократно и занимает малую долю от всех затрат времени ЭВМ на анализ и параметрическую оптимизацию физического объекта. На этом этапе языковая подсистема пакета, построенного по принципу трансляции, выполняет многие из тех функций и процедур, которые в обрабатывающей подсистеме пакета-интерпретатора выполняются многократно уже на этапе расчета и поэтому являются источником больших «накладных» расходов. Вследствие этого на эффективность пакетов-трансляторов оказывают слабое влияние способы представления
и обработки структур данных, используемых их языковой подсистемой, т. е. относительно мягкие требования, предъявляемые к языковой подсистеме пакета-транслятора, позволяют в ряде случаев использовать более простые алгоритмы и межмодульные интерфейсы по сравнению с теми, которые реализуются в пакетах-интерпретаторах.
Проведенное сравнение двух подходов к построению пакетов функционального проектирования на макроуровне дает возможность сделать вывод о предпочтительности использования принципа трансляции. Но, как отмечалось ранее, трансляторы различаются объектными языками, на которых представляются сгенерированные ими модули рабочей программы. Трансляторы на алгоритмический язык высокого уровня весьма просты и эффективны. В них удобно обрабатывать произвольные функциональные зависимости, описание которых задается пользователем на входе языковой подсистемы на алгоритмическом языке, совпадающем с объектным. К таким описаниям достаточно добавить операторы объявления переменных, пролога и эпилога, реализующие стандартный интерфейс, и полученный текст можно передавать на выход. Использование широко распространенного алгоритмического языка в качестве объектного обеспечивает машинную независимость пакета проектирования. Необходимость дополнительной обработки объектных программ компиляторами из состава используемой ОС и низкая вычислительная эффективность полученной рабочей программы по сравнению с рабочей программой на машинном языке являются недостатками данного подхода. Поэтому при разработке языковой подсистемы пакета-транслятора целесообразно предусмотреть возможность смены набора модулей, ответственных за генерацию текста объектных программ на том или ином языке. При использовании принципа информационной локализованности сделать это несложно.
Пакеты-компиляторы, выходом языковой подсистемы которых являются программы на машинном языке, могут различаться типом загрузки объектной программы в ОП. Например, в пакете ПАРМ используется схема «компиляция— выполнение», в нем генерируемые машинные команды помещаются в специально отведенную область ОП. По окончании генерации всей объектной программы ей передается управление. Такой подход характеризуется большими затратами ОП, так как языковая подсистема пакета и вырабатываемая им объектная программа располагаются в памяти одновременно.
Другой недостаток этого подхода — необходимость разрешения ссылок между сгенерированными модулями и «постоянными» подпрограммами каким-либо образом в самом пакете проектирования. От перечисленных недостатков свободны пакеты-компиляторы, выходом языковых подсистем которых являются объектные программы в виде, пригодном для обработки редактором связей из состава ОС.
Выбор процедур для генерации.Использование принципа трансляции связано с усложнением организации пакета функционального проектирования, но не всегда приводит к заметному увеличению быстродействия. Поэтому имеет смысл подвергать генерации только те процедуры решения, для которых скомпилированный вариант значительно более эффективен, чем интерпретирующий.
На выбор способа построения программы любой процедуры оказывают влияние следующие критерии: 1) частота исполнения процедуры при расчете; 2) способ доступа к данным, используемый в процедуре; 3) степень инвариантности процедуры к структуре и размерности проектируемого объекта.
Затраты машинного времени подпрограммой, редко выполняемой при расчете проектируемого объекта (десятки раз), слабо сказываются на общих затратах на весь расчет (если, конечно, время однократного выполнения такой подпрограммы соизмеримо с временем выполнения большинства остальных подпрограмм), но ее объем может значительно влиять на объем всей памяти, необходимой для расчета объекта.
Сгенерированный вариант процедуры с последовательным доступом к данным требует почти таких же затрат времени ЭВМ, как и ее интерпретирующий вариант, но затраты памяти для обоих вариантов могут различаться многократно. Например, отношение объема скомпилированной программы для процедуры суммирования векторов, не содержащих ненулевые элементы, к объему такой же, но интерпретирующей программы, пропорционально размерности этих векторов.
■ Примечание. Пример же более высокого быстродействия скомпилированных процедур с прямым доступом к данным приведен выше (прямой ход алгоритма Гаусса при решении системы линейных алгебраических уравнений с сильно разреженной матрицей коэффициентов).
Иногда целесообразно, где это возможно, процедуры с прямым доступом к памяти реализовывать в виде модулей интерпретирующего и генерируемого. Собственно алгоритм процедуры воплощается в интерпретирующем модуле, который использует наиболее подходящее для этого представление данных. Единственной функцией генерируемого модуля является создание регулярных структур данных, удобных для интерпретирующего модуля.
В анализе технических систем участвует ряд универсальных процедур, инвариантных к виду и размеру системы, вычисления в которых всегда проводятся по одному и тому же алгоритму для постоянного количества данных и постоянных размеров массивов. К таким процедурам относятся, например, математические модели элементов систем. Генерация, выполняемая при каждом расчете новой проектируемой системы, для таких процедур бессмысленна. Процедуры должны быть однократно тщательно запрограммированы и помещены в постоянную библиотеку пакета.
Рассмотренные выше критерии позволяют, например, выделить в иерархической структуре математического обеспечения пакета функционального проектирования (см. рис. 5.2) элементы, подлежащие генерации (алгоритм Гаусса, расчет матрицы Якоби и вектора невязок, обращение к подпрограммам моделей элементов). Все остальные процедуры и алгоритмы, участвующие в анализе и параметрической оптимизации проектируемого объекта, должны быть реализованы в интерпретирующем виде и храниться в постоянных библиотеках пакета проектирования.
Открытость пакетов функционального проектирования. Важной характеристикой пакетов проектирования, в решающей степени влияющей на живучесть пакета и на затраты по его эксплуатации и сопровождению, является их открытость по отношению к элементам математического обеспечения (методам интегрирования, моделям элементов, алгоритмам расчета внешних воздействий и выходных параметров, методам многовариантного анализа и оптимизации). Степень открытости пакета проектирования характеризуется степенью сложности (а следовательно, и затратами) включения в него новых элементов математического обеспечения.
В зависимости от степени открытости пакетов проектирован ни я их с точки зрения пользователя можно разделить на закрытые, ограниченно-открытые, открытые.
Закрытый пакет проектирования — пакет, реализация в котором нового элемента математического обеспечения требует перепрограммирования большого числа входящих в его состав модулей. Такая модификация пакета под силу только его разработчику, а затраты на нее могут быть соизмеримы с затратами на создание нового пакета.
В ограниченно открытом пакете проектирования реализация нового метода или алгоритма состоит во включении в его состав нового модуля. Все изменения, связанные с подключением новой подпрограммы, локализованы в одном из «старых» модулей и проводятся по формальным правилам, задаваемым соответствующей инструкцией. Такие изменения могут быть выполнены квалифицированным пользователем-программистом самостоятельно. Включение новых модулей в ограниченно открытый пакет проектирования и их отладка связаны с большими накладными расходами, требуют от пользователя глубокого знания структуры ПО и особенностей используемой ОС. Такие пакеты проектирования не защищены от внесения ошибок пользователя.
Открытый пакет проектирования характеризуется тем, что его расширение не требует каких-либо изменений в уже существующих модулях. Связь новых и старых модулей происходит с помощью паспортов, описывающих интерфейсы модулей. Такие паспорта заполняются для каждого вновь включаемого модуля и располагаются в локальной БД пакета проектирования. Создание открытых пакетов проектирования требует предварительной структуризации математического обеспечения, основанной на анализе процедурного состава известных алгоритмов анализа и оптимизации (см. рис. 5.2). Полученная обобщенная структура вычислительного процесса позволяет
140 планировать модульную структуру обрабатывающей подсистемы пакета и связи модулей по информации. Важный принцип создания открытых пакетов — принцип модульности, означающий согласование структуры математического и программного обеспечений, подразумевающее, в частности, воплощение каждого элемента математического обеспечения в отдельном модуле (ограниченном числе модулей).
Так как связь модулей по управлению и информации в открытых пакетах должна осуществляться с помощью системы паспортов, то в паспорте модуля содержатся сведения об информационных массивах и переменных, используемых в нем, о его объеме, значениях параметров, используемых «по умолчанию» и т.п. В открытых пакетах-интерпретаторах вызов в ОП модулей происходит но командам динамической загрузки, обращению к модулю предшествует интерпретация его паспорта, считанного из локальной БД. Но из загруженных таким образом модулей исключается вызов каких-либо подпрограмм, а к ним самим невозможно обращение по команде на языках высокого уровня. В этом основная трудность создания открытых пакетов-интерпретаторов.
В пакетах-трансляторах подобных трудностей не возникает, так как в них объединение сгенерированных и библиотечных модулей в рабочую программу производится системным редактором связей, разрешающим стандартно все необходимые внешние ссылки. Обращение из скомпилированных подпрограмм к библиотечным строится в полном соответствии с интерфейсом последних, описанным в паспорте. Если библиотечной подпрограмме требуются рабочие массивы, то они выделяются в рабочей программе статически и строго необходимого объема.
Пакетный и диалоговый режимы работы пакетов функционального проектирования.На макроуровне пакеты проектирования должны допускать пакетный и диалоговый режимы работы.
Пакетный режим необходим при проектировании сложных технических систем, одновариантный анализ которых может требовать десятков минут машинного времени. Для реализации такого режима функционирования пакетов-интерпретаторов необходим их запуск автономно от монитора САПР средствами ОС в качестве одной из фоновых задач ЭВМ. Любая ошибка, допущенная пользователем во входном описании, приводит к необходимости перезапуска пакета проектирования. В этом
отношении пакет-транслятор предоставляет пользователю больше возможностей.
Диалоговый режим работы входных трансляторов и языковой подсистемы позволяет пользователю оперативно обнаруживать и устранять синтаксические (и даже некоторые смысловые) ошибки в описании на входном (промежуточном) языке. После генерации объектных подпрограмм и их объединения с библиотечными в единую рабочую программу последняя может быть направлена по желанию пользователя в пакетную обработку, а пользователь будет иметь возможность продолжить работу с данным пакетом или с любой другой проектирующей подсистемой САПР. Об окончании пакетного задания монитор САПР уведомляет пользователя, который может средствами выходного языка пакета проектирования обработать необходимым ему образом результаты расчета.
■ Примечание. При необходимости несложно организовать передачу сгенерированных языковой подсистемой пакета-транслятора объектных программ (на языке высокого уровня) для дальнейшей обработки и расчета на мощном вычислительном комплексе. Построение входных трансляторов и языковой подсистемы реентерабельными обеспечивает множественный доступ пользователей в данном режиме работы пакета.
Диалоговый режим функционирования пакетов проектирования необходим при выполнении проектных операций, формализованных в малой степени.
При реализации диалогового режима в пакетах, построенных по принципу трансляции, некоторое неудобство для пользователей представляет временная задержка между этапами ввода исходного описания и началом расчета, связанная с необходимостью двухпроходной трансляции (с входного языка на промежуточный и с промежуточного в объектные подпрограммы) и компоновки рабочей программы. Однако она окупается повышенной скоростью расчета по сравнению с пакетом-интерпретатором.