Реклама:

Писать «ЗАКУСКИ: », Содержимое входного буфера

Все программы РА, РШп и РБ относительно просты и взятые вместе, как показано в системной блок-схеме на рис. 7.16, реализуют исходные требования к программе статистического отчета, который желает получать администрация ресторана. Программа РА станет строить файлы \Уп по мере того, как она будет обрабатывать вводимые в систему записи элементов заказов. Однако при выбранном нами варианте конструирования программы РШп смогут приступить к обработке файлов Шп только после того, как закончится файл заказов или поступит требование прервать накопление данных. Это свойство является незначительным недостатком системы, но ситуацию можно улучшить, ускорив работу системы, если воспользоваться инвертированием программ, описываемым в последующих разделах этой главы.

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

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

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

7.4. Инвертирование программ

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

Рассмотрим еще раз стандартное разрешение граничного столкновения и разберемся с тем, как можно преодолевать эти трудности.

Общее решение граничного столкновения проиллюстрировано на рис. 7.9.

В этом процессе программа Р1 читает входные данные и пишет в файл ПФ. Когда файл ПФ заполнен, программа Р2 читает ПФ, а затем составляет отчет. Вся процедура оказалась бы гораздо более эффективной, если бы как только программа Р1 сгенерировала запись для ПФ, она могла бы передать эту запись прямо программе Р2, которая могла бы тут же начать составлять отчет. Если бы в этом процессе нам сопутствовал успех с каждой записью из ПФ, то к моменту получения всех записей из ПФ был бы завершен и отчет. Если бы входной файл представлял собой поток оперативных транзакций, то этот метод реализации оказался бы особенно ценным!


⇐ Предыдущая страница| |Следующая страница ⇒