Главная  Радио и связь 

0 1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Жизненный цикл

Структурное проектирование


Технические аспекты

Рис. 2.1. Классификация новых важных отличительных особенностей языка Ада,

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

Особенности языка Ада, имеющие непосредственное отношение к жизненному циклу,- это наличие средств конструировав



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

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

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

2.2. Нисходящий обзор характерных особенностей языка Ада, важных для разработчика систем

Данный раздел посвящен в основном тем свойствам языка Ада, которые, согласно рис. 2.1, ориентированы на процедуры структурного проектирования. Ниже эти свойства перечислены в порядке их последующего рассмотрения:

• организация пакетов,

• отделение спецификаций от тел пакетов и задач,

• механизм рандеву для межзадачных связей,

• уточнение сверху вниз,

• пакетный ввод-вывод,

• организация прерываний,

2.2.1. Организация пакетов и разделение тел и спецификаций

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



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

Спецификация пакета; Пользователи внешнее-представление тело пакета-

. внутренние детали.

Данные \ недоступные пользователю


Доступ к пакету: через обращения к процедурам сопряжения

Рис. 2.2. Логическая огранизация пакетов.

Процедуры сопряжения пакетов - часть тела; видимость извне обеспе-Чивается в специфи;<ации

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

На рис. 2.3 приведен характерный пример представления простого пакета STACK (СТЕК) как черного ящика. Это несколько видоизмененный пример аналогичного пакета из справочного руководства по языку Ада. В пакете имеются доступные извне процедуры PUSH (ПРОТОЛКНУТЬ) и POP (ВЫТОЛКНУТЬ) для элементов фиксированных, заранее определенных типов. Эти процедуры инициируют флажки, указывающие

) Фактически речь идет о пакете программ в обычном смысле этого термина. - Яр«л1. ред.



0 1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104


0.0056