Cтраница 1
Модули нижнего уровня нужно детализировать только после определения всех подфункций модулей высшего уровня. Например, модуль ПОДГОТОВИТЬ на рис. 2.5 нужно делить только после выявления всех подфункций модуля ОБРАБОТАТЬ. Это помогает свести к минимуму пропуски или неполный анализ в функциях высшего уровня. [1]
Каждый модуль нижнего уровня, который программируется вначале как заглушка и содержит I - или М - элементы, должен, конечно, поставлять эти данные. Данные категории I можно читать с внешнего файла или просто запасать в заглушке в качестве констант. [2]
Например, модуль нижнего уровня может читать сообщение с терминала и проверять правильность его типа и формата. Вначале он может быть реализован как заглушка с сообщением в виде пустой записи. Эта запись передается в вызывающую подпрограмму. Обработка пустой записи осуществляется модулем более высокого уровня, он может, в частности, определить правильность переданной записи. [3]
Суть методики проверки и отладки программы снизу вверх состоит в том, что сначала проверяются и отлаживаются модули нижнего уровня, а среда их функционирования имитируется. Постепенно среда модифицируется, в нее вводятся модули более высоких уровней, пока программная составляющая среды не окажется полностью заменена реальными модулями. [4]
Разбиение схемы на уровни включает в себя выбор: оптимальных размеров модулей различных уровней, иерархии этих уровней, числа внешних выводов модулей и конкретного назначения модулей нижнего уровня в модули высшего ( следующего) уровня. [5]
Модуль ВВОДА проверяют, используя процедуры нижнего уровня, которые при взаимодействии с аппаратурой вырабатывают определенные входные величины, а также исследуя значения внутренних системных параметров, зависящих от входных величин. Модули нижнего уровня являются работоспособными, поскольку они уже использовались во время отладки аппаратуры. Для проверки модуля ВЫВОДА необходимо предусмотреть такие входные величины, в зависимости от которых на выходе можно получить заранее предсказанные значения. После этого исследуются выходы системы либо непосредственно, либо путем наблюдения за выполнением некоторых действий, управляемых выходами. [6]
Любой программный модуль верхнего уровня может вызывать и инициировать работу модуля более низкого уровня. Модуль нижнего уровня никогда не может обращаться и вызывать модуль более высокого уровня. Количество вложений модулей ограничено конструктивными особенностями микропрограммного механизма ЭВМ и не может превышать четырех. [7]
Средства сетевого взаимодействия также могут быть представлены в виде иерархически организованного множества модулей. При этом модули нижнего уровня могут, например, решать все вопросы, связанные с надежной передачей электрических сигналов между двумя соседними узлами. Модули более высокого уровня организуют транспортировку сообщений в пределах всей сети, пользуясь для этого средствами упомянутого нижележащего уровня. [8]
Кроме того, часто в процессе отладки выявляются дополнительные требования к остальным модулям. Например, часто вообще модули нижнего уровня пишут только после того, как отладили предыдущие. [9]
Бывают и исключения из этого правила. Например, для двух модулей нижнего уровня, не связанных друг с другом и находящихся на разных ветвях схемы иерархии, можно скомбинировать тестовые данные так, чтобы один тест проверял сразу оба модуля. Другое исключение - когда присоединяется модуль, требующий нетривиальной заглушки. Проблема в том, что заглушка сложна и ее программирование может потребовать таких же усилий, как и программирование полного модуля. [10]
Вначале кодируются, тестируются и отлаживаются модули самого верхнего уровня. Для проведения тестирования вместо еще не закодированных модулей нижнего уровня должны быть использованы заглушки, которые соответствуют спецификациям входа и выхода замещаемых модулей, но гораздо проще их по выполняемым функциям. [11]
В созданных программах со сложной иерархической структурой час-го приходится работать с переменными, общими для нескольких модулей, находящихся на разных уровнях иерархии. При этом часто бывает так; что модуль нижнего уровня вычисляет значение какой-то перемен - НЬй, а модули верхнего уровня используют это значение для расчетов. [12]
![]() |
Основные логические структуры. а - последовательная. б - выбора. в, г - повторения. [13] |
Необходимо сохранить лишь вертикальные связи между модулями и максимально сократить горизонтальные за счет объединения модулей с горизонтальными связями. Таким образом, модуль верхнего уровня может обращаться к подчиненному модулю нижнего уровня, и как только процесс решения в этом нижнем модуле заканчивается, результат решения и функция управления передаются в верхний модуль. [14]
Программные модули могут быть простыми ( с одной вертикальной чертой) и сложными ( с несколькими вертикальными чертами), образованными по принципу вложения. Таким путем могут формироваться иерархические структуры программных модулей с соподчиненными модулями нижнего уровня и последовательностью модулей более высокого уровня. Именно такие структуры программных модулей применяются при реализации итеративных ( циклических) процедур. [15]