Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПО / Материалы по ТП / tech_pro_lek_IVANOVA.doc
Скачиваний:
587
Добавлен:
12.03.2015
Размер:
19.47 Mб
Скачать

5.3. Структурные карты Константайна

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

Различают четыре типа вершин (рис. 5.7):

  • модуль - подпрограмма,

  • подсистема - программа,

  • библиотека - совокупность подпрограмм, размещенных в отдельном модуле,

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

При этом отдельные части программной системы (программы, подпро­граммы) могут вызываться последовательно, параллельно или как сопро­граммы (рис. 5.8).

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

Под параллельным вызовом понимают распараллеливание вычислений на нескольких вычислителях, когда при активизации другого процесса дан­ный процесс продолжает работу (рис. 5.9, а). На однопроцессорных компью­терах в мультипрограммных средах в этом случае начинается попеременное выполнение соответствующих программ. Параллельные процессы бывают синхронные и асинхронные. Для синхронных процессов определяют точки синхронизации - моменты времени, когда производится обмен информацией

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

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

Если стрелка, изображающая вызов, касается блока, то обращение про­исходит к модулю целиком, а если входит в блок, то - к элементу внутри мо­дуля.

При необходимости на структурной карте можно уточнить особые усло­вия вызова (рис. 5.10): циклический вызов, условный вызов и однократный вызов - при повторном вызове основного модуля однократно вызываемый модуль не активизируется.

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

Структурные карты Константина позволяют наглядно представить ре­зультат декомпозиции программы на модули и оценить ее качество, т. е. со­ответствие рекомендациям структурного программирования (сцепление и связность).

Пример 5.2. Представим в виде структурной карты Константайна пол­ную структурную схему, полученную в предыдущем примере (см. рис. 5.6).

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

Для остальных подпрограмм покажем особые условия вызова и типы связей (рис. 5.12).

Модули Расчет значений функции, Вывод таблицы и Построение графи­ка связаны с основной программой по образцу, так как параметры X и Y структурные (массивы), следовательно программа считается сцепленной по образцу.

Анализ показывает, что количество сцеплений по образцу в программе можно уменьшить, если подпрограмму Расчет значений функции перенести на следующий уровень (рис. 5.13). Однако в этом случае при смене вида ре­зультата таблица значений будет рассчитываться заново.

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

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

В соответствии с требованиями нисходящей разработки (комбинирован­ный подход) можно предложить следующий порядок реализации модулей:

  • Основная программа,

  • Вывод окна с текстом,

  • Вывод заголовка и меню,

  • Разбор функции,

  • Вычисление значений функции,

  • Вывод таблицы,

  • Расчет значений функции,

  • Построение графика.

Структурные карты Джексона будут рассмотрены вместе с предложен­ной им методикой проектирования программ, основанной на декомпозиции данных в § 5.5.