Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1846

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
949.61 Кб
Скачать

3.5.2. Метод расширения ядра

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

Спецификация модуля

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

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

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

101

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

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

1)дальнейшее определение составных частей решающих проблем, позволяющих найти проблемы более низкого уровня;

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

иметоды доступа, связи между модулями перестраиваются с целью

• объединить структуры данных и методы доступа к ним с обслуживающими процедурами;

• связать функциональные элементы с процессами подготовки их активации;

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

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

102

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

Метод иерархического проектирования модулей

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

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

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

103

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

 

Файл

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

файла

 

Запись*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управляющее

 

 

 

 

Поля

 

 

 

 

 

 

 

поле

 

а)

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отчет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заголовок отчета

 

 

Строка*

 

 

 

 

Окончание отчета

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заголовок группы

 

 

 

Данные*

 

 

 

Окончание группы

 

б)

Рис. 3.8. Структуры данных для программы генерации отчетов: а – входные данные, б – выходной отчет

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

104

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

Генерация отчета

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало отчета

 

 

 

 

 

Обработка группы

 

Конец отчета

 

 

 

 

 

 

 

 

 

 

 

 

записей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало первой

 

 

Обработка записей

 

Конец группы

 

группы записей

 

 

 

 

 

 

 

 

 

 

 

записей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переход к обработке

 

 

 

 

Обработка данных

 

 

другой группы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец группы

 

 

 

 

 

Начало груп-

 

 

 

 

 

 

 

 

записей

 

 

пы записей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.9. Схема Джексона

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

105

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

Инфор-

Генератор

От-

Генератор

Постра-

мация

отчетов

чет

страниц

ничный

Рис. 3.10. Декомпозиция программы генерации отчетов с формированием страниц

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

Распределения по группам записей и по страницам, хотя внешне не зависят друг от друга, являются взаимосвязанными. Эти виды группирования информации одинаково важны, но, поскольку принадлежат к различным уровням описания данных, нельзя построить схему Джексона, используя одновременно оба эти вида группирования. Чтобы лучше понять это различие, представим оба типа распределения информации в виде независимых процессов (рис. 3.10). Первый из них превращает входную структуру в отчет, игнорируя при этом распределение по страницам. Выходная информация этого процесса является входной для второго, который распределяет отчет по страницам. Логическая структура отчета преобладает над физической. Входные и выходные структуры, приведенные на рис. 3.8, представляют собой структуры данных для процесса генерации отчета.

106

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

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

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

107

3.5.3. Метод восходящего проектирования

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

Разместить

Читать

 

Писать

Конец

 

 

 

 

файла

 

 

 

 

 

 

 

Главный файл

 

Рис. 3.11. Описание файла на общем уровне

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

108

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

3.6. Схемы Варнье-Орра

Ещё один широко известный тип схем – схемы ВарньеОрра – описан ниже как алгоритм проектирования систем. Его применение для проектирования программ подобно использованию схем Джексона, и поэтому его нельзя рассматривать как отдельный метод проектирования. Описания данных и программ на этих схемах такие же, как на схемах Джексона, но в отличие от них строятся в первую очередь не по вертикали, а по горизонтали. На рис. 3.12 показана схема Варнье-Орра, по содержанию аналогичная схеме Джексона, приведенной на рис. 3.9.

Рис. 3.12. Схема Варнье-Орра для информации, используемой при генерации отчета

На рис. 3.13 показано как атрибуты схем Варнье-Орра в отличие от схем Джексона объединяются вместе (а), и как по-

109

лучаются из рассмотренной структуры соответствующие ей модули (б). Структура программы аналогична объединенной структуре данных. Следует отметить, что благодаря такому объединению структур возможна детализация источников выходной информации и входных условий, инициализирующих эти источники. При построении схемы для программы информационные единицы могут быть подвергнуты расширению, что позволяет учитывать обработку данных. Применяемый в этом методе способ записи отражает этапы функциональной декомпозиции программы. Каждый столбец следует понимать как описание программы, являющееся уточнением предыдущего столбца [2].

Рис. 3.13. Схема Варнье-Орра с учетом переходов обработки во время смены групп записей

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]