![]() | |
![]() |
Электронные компоненты Мануалы Жизненный цикл Структурное проектирование ![]() Технические аспекты Рис. 2.1. Классификация новых важных отличительных особенностей языка Ада, отдельно. С помощью этого приема удается удобно представлять внутреннюю структуру сложных модулей, не затемняя сути множеством деталей. Еще одна очень полезная особенность языка - это пакетный ввод-вывод. В языке Ада нет специальных команд или операторов ввода-вывода как таковых: эти процедуры реализуются пакетами. Стандартные пакеты ввода-вывода включаются в систему компилятором, а для специальных целей пользователь может создавать собственные пакеты ввода-вывода. Особую важность с точки зрения структурного проектирования представляет механизм рандеву для организации межзадачных связей в языке Ада. Этот механизм обеспечивает единообразие интерфейсов пакетов и задач. Приведенные пять основных свойств языка Ада лежат в основе предлагаемого в данной книге метода. Особенности языка Ада, имеющие непосредственное отношение к жизненному циклу,- это наличие средств конструировав ния систем, позволяющих контролировать соответствие типов при раздельной компиляции; унифицированные блоки, из которых путем параметрической настройки аналогично макроопределениям создаются экземпляры модулей; спецификации представления, указывающие компилятору структуру аппаратной среды; средства совмещения, благодаря которым один идентификатор может иметь альтернативные значения при условии, что компилятор различает их по контексту. Технические средства обеспечивают организацию прохождения задач и обработку исключительных ситуаций. Организация прохождения задач необходима для обеспечения параллельных процессов в прикладных системах, например при управлении в реальном масштабе времени. И дело здесь не в том, что такая возможность существует в принципе и весьма полезна для структурного проектирования, а в наличии конкретного решения проблемы межзадачных взаимодействий. Что же касается исключительных ситуаций, то они связаны с техническими возможностями контроля сбоев путем обращения вызывающей программы к специальному блоку при возникновении условий, соответствующих предусмотренным ошибкам. В разд. 2.2 дан построенный по нисходящему принципу обзор основных отличительных особенностей языка Ада, представляющих интерес для разработчика систем. Помимо этого, здесь приводится краткая характеристика языка Ада, включающая анализ его противоречивых свойств и степени пригодности для проектирования и реализации систем, 2.2. Нисходящий обзор характерных особенностей языка Ада, важных для разработчика систем Данный раздел посвящен в основном тем свойствам языка Ада, которые, согласно рис. 2.1, ориентированы на процедуры структурного проектирования. Ниже эти свойства перечислены в порядке их последующего рассмотрения: • организация пакетов, • отделение спецификаций от тел пакетов и задач, • механизм рандеву для межзадачных связей, • уточнение сверху вниз, • пакетный ввод-вывод, • организация прерываний. 2.2.1. Организация пакетов и разделение тел и спецификаций Понятие пакета графически проиллюстрировано на рис. 2.2. Пакет - это черный ящик, предоставляющий пользователю услуги через интерфейс, определенный с помощью спецификации па- кета). Спецификация пакета и тело пакета - совершенно раз-: личные компоненты текста Ада-программы, которые можно при желании компилировать раздельно. Тело пакета скрыто от пользователя, который может использовать пакет только так, как определено в спецификации. Спецификация представляет Спецификация пакета; Пользователи внешнее-представление - пакета- . внутренние детали. Данные \ недоступные пользователю ![]() Доступ к пакету: через обращения к процедурам сопряжения Рис. 2.2. Логическая огранизация пакетов. Процедуры сопряжения пакетов - часть тела; видимость извне обеспе-Чивается в специфи;<ации собой видимый раздел пакета и включает определения, описа-* ния и спецификации почти всех возможных элементов Ада< программы. Чаще всего он содержит спецификации подпрограмм, обеспечивающие доступ к выполняемым данным пакетом функциям. В то же время он может содержать определения типов данных, описания информационных объектов, спецификации встроенных пакетов и встроенных задач. Тело -это скрытый раздел пакета. Чаще всего оно состоит из тел подпрограмм, определенных в видимом разделе, и описаний локальных переменных пакета, а также вспомогательных подпрограмм, используемых в видимых подпрограммах. Пакет может включать, кроме того, встроенные пакеты и задачи, а также спецификации инициализации. На рис. 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 |