Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опрос 21.03.2013.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
295.85 Кб
Скачать

3-уровень

функциональные

программы

ВАВ

ВАА

ВСА

4-уровень

функциональные

программы

ЗОНА

ОБМЕННЫХ ПЕРЕМЕННЫХ

ВААВ

5-уровень

стандартные

ЗОНА ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ

программы

управление

информация

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

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

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

2.2.2 Функциональная иерархия данных

Функциональная иерархия данных показывает условное расстояние между расчетом переменной и ее использованием.

Переменные, которые рассчитываются и используются внутри программного модуля, называются локальными.

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

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

2.2.3. Иерархия программных компонентов

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

  • уровень операторов и операндов, который соответствует компонентам текста программы на ЯП,

  • уровень программных модулей, оформленных, как законченные компоненты текста программ ,

  • уровень функциональных групп программ (может быть от нескольких уровней до нескольких десятков уровней в зависимости от сложности решаемой задачи),

  • уровень комплекса, оформленного, как завершенное ПО.

Графически это можно представить следующим образом:

КП

Уровень

ФГ n

ФГ2

ФГ1

комплекса

Уровень

функциональных

групп

программ

М n

М2

М1

Уровень

Программных

модулей

уровень

Oпn

Оп2

Оп1

операторов и

операндов

С повышением уровня увеличивается количество реализующих его машинных команд и количество обрабатываемых переменных, а т.ж. количество типов, обрабатываемых переменных.

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

      1. Восходящее и нисходящее проектирование

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

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

Такой подход обеспечивает концептуальное единство системы и рациональное распределение ресурсов проектирования по мере декомпозиции компонентов.

В этом случае легко привлечь к проектированию и разработке системы достаточно большую группу специалистов.

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

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

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

      1. Элементарные базовые конструкции, используемые при создании структурированной программы

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

  • простой вычислительной последовательности,

  • выбора или альтернативы,

  • повторения или итерации.

Простая вычислительная последовательность

заключается в последовательном преобразовании

исходных данных. При этом операторы конструк-

ции следуют один за другим, причем конец предыдущего

оператора замыкается на начало следующего.

Итерация представляет

собой конструкцию, в которой

оператор или группа операторов

повторяется боле одного раза.

Для структурированной программы

число итераций должно быть задано

до входа в цикл.

Альтернатива состоит в

проверке некоторого

условия и в выборе одного

из двух операторов пре-

образования данных. При

ветвлении происходит

однократный проход по

одной из ветвей решения

задачи.

Существуют программные конструкции, использование которых рекомендуется максимально ограничивать. При искажении исходных данных они могут привести к непредсказуемым последствиям. Наиболее неустойчивой и трудно контролируемой конструкцией является безусловный переход по содержимому ячейки оперативной памяти (GO TO).

. Структурированной считается программа, которая:

  • не имеет переходов внутрь циклов или условных операторов,

  • не имеет выходов из внутренней части циклов и условных операторов,

- число итераций должно быть задано до входа в цикл.

  • ограничено использование оператора GO TO.

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

2.2.6 Типовая структура программного комплекса

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

Независимо от профиля решаемых задач каждый программный комплекс включает четыре группы программ:

  • решения функциональных задач,

  • обмена с внешними абонентами,

  • организации вычислительного процесса,

  • контроля и обеспечения надежности.

Графически это можно представить следующим образом:

Диспетчер прерываний

Программы обмена

Прог-ма выдачи сообщений

Прог-ма приема сообщений

Прог-ма анализа сбоев

Программы организации вычислительного процесса

Прог-мы контроля

и

обеспече-ния

надежности

Прог-мы тактировки

периодических

вычислений

Прог-мы начального пуска

Центральный диспетчер

Прог-мы взаимодействия в комплексе ПК

Прог-мы взаимодействия с внешн. накопителями

Местные диспетчеры

Программы решения функц. задач

S3

S7

S6

S5

S4

S1

Программы решения функциональных задач

      1. Модульное программирование

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

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

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

  • программы легче проектировать и разрабатывать,

  • легче читать, проверять и модифицировать,

  • появляется возможность создать библиотеку из универсальных модулей, которые будут использоваться во многих программах системы, что очень важно с точки зрения надежности.

Как правило модули выполняются как отдельно компилируемые или внешние подпрограммы. Важное значение имеет связь модулей с данными. Наиболее распространенной формой такой связи является список параметров.

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

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

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

  • помещать комментарии в начале каждого модуля, а т.ж. при их вызове в вызывающей программе,

  • помещать комментарии в начале блоков, имеющих принципиальное значение для решения поставленной задачи,

  • помещать комментарии при описании переменных,

  • имена переменных должны соответствовать внутреннему содержанию.

  • скобки ( begin … end) ставить на одном уровне,

  • условные и циклические блоки смещать вправо