Cтраница 2
Здесь представлены отдельные модули для создания ( CREATE), уничтожения ( DESTROY), чтения-записи ( READ-WRITE) и управления устройствами. Программа, выполняющаяся под управлением операционной системы, может независимо обращаться к существующим модулям ( вводится функциональная иерархия), а модули более высокого уровня могут обращаться друг к другу. Расслоение подводит к вопросу о составе операционной системы. [16]
Случается, что на этапе реализации, когда начинается подробное программирование, модули в этой схеме могут объединяться или разделяться на модули меньшего размера. Пусть, например, при программировании обнаружилось, что необходимо поместить на нижний уровень модули ЧИТАТЬ СТАРЫЙ ГЛАВНЫЙ и ПИСАТЬ НОВЫЙ ГЛАВНЫЙ, поскольку они могут активизироваться только модулями более высокого уровня. На самом деле эти модули будут реализованы, конечно, только один раз, поскольку одна из задач схемы иерархии - показать подчиненность модулей; именно эта подчиненность и отражена с помощью повторного изображения модулей. [17]
Средства сетевого взаимодействия также могут быть представлены в виде иерархически организованного множества модулей. При этом модули нижнего уровня могут, например, решать все вопросы, связанные с надежной передачей электрических сигналов между двумя соседними узлами. Модули более высокого уровня организуют транспортировку сообщений в пределах всей сети, пользуясь для этого средствами упомянутого нижележащего уровня. [18]
При этом необходимо учесть следующее обстоятельство. Для одновременного программирования модулей связи между ними по горизонтали должны быть независимыми, зависимость должна быть только в вертикальном направлении. Каждый модуль зависит только от одного или нескольких модулей более высокого уровня, следовательно, разработку и отладку модулей низкого уровня можно начинать одновременно и двигаться вверх, ограничиваясь связями по вертикали, а горизонтальные связи организует модуль верхнего уровня. [19]
Существуют две основные стратегии тестирования: сверху вниз и снизу вверх. Стратегия снизу вверх является более традиционной. При ее реализации сначала проверяются модули низшего уровня, связи между ними, а затем модули более высокого уровня и др. В стратегии сверху вниз тестирование проводится параллельно с разработкой программного обеспечения. При реализации данной стратегии тесты делятся на макротесты и микротесты. Макротестирование реализуется на стадии разработки технического задания и технического проекта. [20]
При использовании принципа сверху вниз первым разрабатывается модуль самого верхнего уровня. Причем для его отладки не обязательно иметь модули более низкого уровня. Их можно заменить фиктивными модулями ( в литературе встречается термин программа-имитатор, или заглушка), которые либо возвращают управление модулю более высокого уровня, либо имитируют работу модулей более низкого уровня с получением результатов их работы. Таким образом, становится возможным отладка логики работы модуля верхнего уровня задолго до создания модулей более низкого уровня. [21]
Например, модуль нижнего уровня может читать сообщение с терминала и проверять правильность его типа и формата. Вначале он может быть реализован как заглушка с сообщением в виде пустой записи. Эта запись передается в вызывающую подпрограмму. Обработка пустой записи осуществляется модулем более высокого уровня, он может, в частности, определить правильность переданной записи. [22]
При проверке программы снизу вверх предполагается, что уже проверены модули, подчиненные проверяемому. При этом часть среды, которую составляют связи с этими модулями, имитировать не требуется, так как можно использовать сами проверенные модули. В нее входят связи с модулями более высокого уровня и данные, причем для большинства модулей это и входные, и выходные данные. [23]
![]() |
Структурная схема пакета программ оптимизации. - - - - - - - - - - информационные связи. - - - - - - - - - - - - управляющие связи. [24] |
В комплексе программ каждая программа играет роль подпрограммы и оформляется в виде программного модуля, имеющего информационные и управляющие связи с другими модулями. Модули оптимизации и анализа имеют одинаковый уровень старшинства. В модуле оптимизации или анализа происходит вызов модуля расчета выходных параметров и передача в него того значения вектора внутренних параметров X, с которым надо выполнить расчет. Структура дальнейших вызовов ясна из рис. 14.7. После завершения работы модуля более низкого уровня происходит возврат в модуль более высокого уровня с необходимыми для продолжения его работы данными, рассчитанными в подчиненном модуле. [25]
При этом подходе порядок программирования и тестирования модулей определяется их расположением в схеме иерархии. Сначала программируются и тестируются все модули одного уровня, после чего происходит переход на уровень ниже. На рис. 3.1 этот подход иллюстрируется на примере обработки запросов ( операции), о котором уже шла речь в гл. Числа над прямоугольниками указывают порядок разработки модулей. В этом поуровневом методе сначала программируется и тестируется головной модуль с применением заглушек для модулей второго уровня. Каждая заглушка - это упрощенная схема будущего модуля, содержащая все необходимое для того, чтобы было возможно пропустить полный тест модуля более высокого уровня. [26]