Реклама:

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

Кинг Д. Создание эффективного программного обеспечения

Рис. 7.22. Окончательная принципиальная блок-схема для системы составления отчета по ресторану.

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

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

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

7.6. Заметка о векторах состояний

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

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

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

Ясно, что неудобно хранить 100 версий программы. Требуется всего лишь одна версия программы, 100 переменных состояний и 100 различных наборов других обновляемых переменных, причем каждый набор уникален только для одной «версии» инвертированной программы. В эти наборы входят такие переменные, как счетчики, запомненные записи, значения указателей, регистры и т.д. Иначе говоря, в них включается все, что может сделать одну «версию» инвертированной программы уникальной по сравнению с любой другой «версией». Каждый набор таких переменных вместе с переменной состояния (Эх называется вектором состояний для данной версии инвертированной программы.


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