ISSN 0236-235X (P)
ISSN 2311-2735 (E)
4

09 Сентября 2024

Кросс-система автоматизации разработки программного обеспечения на базе языка высокого уровня Рада


Штрик А.А. () - , Липаев В.В. () - , Мессих И.Г. () -
Ключевое слово:
Ключевое слово:


     

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

САРПО предназначена для инструментального обеспечения комплексом средств автоматизации промышленной ПРОМЕТЕЙ-технологии проектирования сложных КП для различных типов специализированных, мини- и микроЭВМ. Система базируется на старших моделях ЕС ЭВМ (ЕС 1045 н выше), поддерживает и контролирует стадии технического, рабочего проектирования, стендовых испытаний и сопровождения КП для встраиваемых ЭВМ, функционирующих в реальном масштабе времени. Система ориентирована на создание сложных КП объемом 104—106 команд коллективами специалистов различной квалификации (с разделением труда с учетом сложности и особенностей выполняемых работ). Использование в качестве аппаратньн средств автоматизации мощных универсальных ЭВМ обеспечивает хорошие условия труда за счет применения многотерминального диалогового режима работы, развитых систем управления базами данных и других эффективных средств повышения производительности труда больших коллективов программистов.

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

Основные концепции ПРОМЕТЕЙ-технологии, поддержанные САРПО.

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

САРПО базируется на результатах теоретических и экспериментальны»; исследований характеристик сложных КП как объекта разработки и «игровождения, а также на исследованиях и опыте применения методов и средств автоматизированного проектирования КП крупными коллективами специалистов. Это позволило сосредоточить в системе наиболее эффективные современные методы и средства авто-

матизации разработки и контроля качества программ. Использованные в этой системе концепции ПРО-МЕТЕЙ-технологии ранее апробированы и развиты при проектировании и эксплуатации нескольких типов САРПО, разработаны на ее основе и сопровождаются программные средства общим объемом в несколько десятков миллионов команд.

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

Автоматизированному проектированию на базе методов и средств САРПО подлежат:

структура КП, включая разделение его на программные и информационные компоненты и организацию связей между ннми;

программное компоненты и комплекс программ, пригодные для корректного и надежного функционирования на реализующей встроенной ЭВМ;

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

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

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

Особенности языков проектирования в системе.

В САРПО применяется система языков проектирования, поддерживающая все этапы технологического процесса:

язык управления системой и ее инструментальными средствами;

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

язык настройки технологических средств на характеристики встроенных ЭВМ и проектируемых комплексов программ;

языки программирования (разработки программ) — автокод с макросредствами (Рада-А) и алгоритмический язык высокого уровня (Рада-О);

языки автономной и динамической комплексной отладки.

Все языки имеют общую лексическую основу русского языка и Рада-О, который является русифицированным подмножеством алгоритмического языка Ада. Его использование обусловлено тем, что в нем наиболее полно сконцентрированы современные достижения в области языков программирования, а также в области проектирования сложных комплексов программ реального времени.

Язык управления системой и ее инструментальными средствами обеспечивает диалог пользователей со средствами автоматизации. Диалог построен по системе меню, иерархически развивающих функциональные возможности компонент САРПО. Для каждой крупной первичной функции системы во вторичном меню пользователю подробно расшифровываются все возможности детальной реализации этой функции соответствующей подсистемой и предоставляются трафареты, подлежащие заполнению управляющей информацией. Тем самым сокращается объем вводимой с клавиатуры дисплея управляющей информации и снижается вероятность ошибки при вводе исходных данных. Для реализации выбранных функций (из предлагаемых в меню) автоматически формируется задание и осуществляется вызов подсистем САРПО.

Элементом языка управления являются диагностические сообщения результатов выполнения заданий и выявленных подсистемами ошибок. Структура сообщений выбрана с учетом их удобочитаемости на русском языке и простоты привязки к исходному тексту программ или заданий САРПО.

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

Язык настройки технологических средств на характеристики встроенных ЭВМ и проектируемых комплексов программ позволяет осуществлять подготовку версии системы для конкретного применения. В описании реализующей ЭВМ средствами языка задается структура ее памяти, состав и имена регистров, система адресации и подробные характеристики всех машинных команд. Для настройки транслятора с макроязыка Рада-А предусмотрены описания символического .представления автокодных ко-

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

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

Язык спецификаций требовании предназначен для оформлевшя решений, принятых при функциональном и структурном проектировании КП. Он построен с учетом особенностей языков Рада-0 и Ра-да-А, по существу как их подмножество. Спецификация требований на программный модуль определяет его назначение, функции, характеристики входных и выходных глобальных данных, а также вызываемых модулей. В спецификациях на информационные модули содержатся описания глобальных переменных, используемых всем КП или группой программ. Форма и структура' описаний спецификаций программных и информационных модулей очень близки и отличаются только отсутствием описания функций у спецификаций на информационные модули. Ряд разделов спецификаций полностью соответствует по структуре и содержанию текстам программ и пакетов данных на языках Рада-О и Рада-А. Спецификации требований на группы и комплексы программ по структуре аналогичны спецификациям на программные модули и позволяют контролировать корректность взаимодействия по управлению и информации между компонентами КП.

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

Язык Рада-О является чистым подмножеством языка Ада с точностью до русифицированной лексики (зарезервированные слова и предопределенные идентификаторы). Имеется вариант языка Рада-ОА, в котором сохранена английская лексика. В него включены апробированные средства, необходимые и достаточные для разработки широкого класса КП встроенных ЭВМ. По ряду основных показателей язык Ада и его модификация Рада-О имеет значительные преимущества при создании крупных КП реального времени по сравнению с языками ФОРТРАН, ГОШ, Алгол-60, Си.

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

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

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

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

Структура и фуакцнн САРПО.

Система построена как единый законченный пакет прикладных программ, функционирующий на ЕС ЭВМ. Все ее компоненты разработаны на языках про!раммирования ПЛЛ и ассемблера. Она построена по модульно-иерархическому принципу из ряда крупных компонент, объединяемых и управляемых единой системой управления автоматизированными средствами (см. рисунок).

Управление системами унифицировано и осуществляется в диалоговом режиме но принципам безбумажной технологии. Для накопления и хранения данных о разрабатываемом КП применяется единая база данных проектирования.

База данных проектирования построена нэ основе СУБД СПЕКТР и является единой для всех систем, входящих в САРПО. Она служит для накопления и упорядоченного хранения всей исходной, про-

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

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

Система управления автоматизированными средствами обеспечивает диалоговое общение пользователей с компонентами САРПО и контроль выполнения заданий системами. Через систему управления осуществляется вызов всех систем, входящих в САРПО и функционирующих на технологической ЭВМ. Для организации диалога использована штатная для ОС ЕС система ПРИМУС, дополненная рядом компонент. Обеспечен ввод и редактирование исходных текстов, выдача на дисплей справочной информации, меню, трафаретов и диагностических сообщений о результатах выполнения заданий системами, входящими в СДРПО. Обобщенные результаты выполнения заданий фиксируются, накапливаются и обрабатываются для анализа статистики работы пользователей с САРПО.

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

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

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

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

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

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

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

Специфическим является генератор кода виртуальной машины, его функции значительно проще, чем

в трансляторе Рада-О, так как на него текст программы поступает в форме, структурированной но операторам и операндам. Генератор объектного кода практически аналогичен имеющемуся в трансляторе с языка Рада-О. В обоих трансляторах совпадают макрокоманды взаимодействия программных модулей и описания пакетов данных. Это обеспечивает возможность комплексирования групп программ из моду-

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

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

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

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

Вторая модификация системы ориентирована на отладку программ реализующих ЭВМ, не совместимых но системе команд с ЕС ЭВМ. Отладочные задания и тесты по содержанию и языку практически идентичны первой модификации. Основная особенность состоит в необходимости обеспечения исполнения отлаживаемых программ в режимах интерпретации Это приводит к значительному замедлению при исполнении программ и соответствующему сокращению возможного объема тестирования. Однако отлаживаемая программа не подвергается деформации за счет инструментирования. и трансляция отладочного задания может производиться независимо от трансляции отлаживаемых программ.

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

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

Особенности реализации САРПО,

Система размещается на двух 100 Мб магнитных дисках. На первом диске расположена база данных, а на втором — программы системы. При разработке относительно небольших КП (в пределах 20 тыс. команд) возможно размещение бааы данных проектирования и программ САРПО на одном диске.

При работе САРПО на ЭВМ ЕС 1045 с ОС ЕС 6.1 наиболее медленным процессом является трансляция программ с языка Рада-О, средняя скорость которой составляет 1—1,5 оператора в секунду. При этих условиях программный модуль на языке Рада-О, составляющий в среднем около 50 операторов языка, транслируется в обьектный код за одиу-полторы минуты. Таким образом, программы на языке Рада-А транслируются значительно быстрее.

Для оценки расширения npoipaMM в объектном коде при трансляции с языка Рада-О одновременно получался промежуточный текст программы на иллюстративном ассемблере. По этому тексту выявлялись дополнительные операторы, которые можно было бы исключить, если бы эти программы непосредственно разрабатывались на ассемблере. Эти дополнительные операторы в основном связаны с нерациональными записями на регистры, некоторыми избыточными операторами в макрокоманда* и неоптимальной последовательностью команд после трансляции. До исключения основной массы таких избыточных операторов программы после трансляции с языка Рада-О были в 1,6-—1,8 раза длиннее тех. которые можно получить после их исключения. Частичная локальная оптимизация н трансляторе путем автоматического исключения избыточных записей на регистры и повторных операций в макрокомандах позволила улучшить коэффициент расширения до величины 1,3.

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



http://swsys.ru/index.php?id=1346&lang=%29&page=article


Perhaps, you might be interested in the following articles of similar topics: