Назад Оглавление Вперед
На головную страницу М.М.Горбунов-Посадов
 
РАСШИРЯЕМЫЕ ПРОГРАММЫ
 

 Г л а в а  4
МНОГОВАРИАНТНОСТЬ
 
4.6. Задание конфигурации, подчиненное сборке
 

 

4.6. Задание конфигурации, подчиненное сборке

      Каким образом задается совокупность назначений сменных модулей, определяющая формируемую конкретную конфигурацию многовариантной программы? Конечно, можно явно выписать одно за другим все требующиеся назначения. Тем самым задача будет решена, однако решение это весьма нетехнологично. Вновь напомним, что в реальных программах число вариантных гнезд часто достигает нескольких десятков, а то и сотен. Работа по заданию содержимого столь внушительного количества гнезд безусловно заслуживает системной поддержки.
      Но прежде чем перейти к последовательному изучению средств поддержки задания конкретных конфигураций многовариантной программы, рассмотрим одну простую схему, в известной мере облегчающую отдельные этапы такого задания. Разобравшись в довольно очевидных слабостях этой схемы, легче будет двигаться дальше, к более совершенным решениям.
      В основе схемы лежит наблюдение о том, что потребителем описания конкретной конфигурации является в конечном итоге алгоритм сборки выполняемой программы. Предлагается решительно сократить дистанцию между заданием конфигурации и выполнением алгоритма сборки, подчинив этому алгоритму диалог с задающим конфигурацию пользователем.
      Можно считать, что сборка текста конкретной конфигурации многовариантной программы выполняется следующим образом. Алгоритм сборки просматривает предложение за предложением текст некоторого программного модуля. Основная масса предложений механически переносится в формируемую программу. Однако, встретив среди просматриваемых предложений вариантное гнездо, алгоритм должен вставить на его место сменный модуль, назначенный данному гнезду. Для этого необходимо прежде всего выяснить имя вставляемого сменного модуля.
      Вот в этот момент и включается диалог с пользователем. На экран выводится имя заполняемого вариантного гнезда и, возможно, список имен созданных для данного гнезда сменных модулей. Пользователю предлагается так или иначе указать сменный модуль, который, по его мнению, должен занять предъявленное вариантное гнездо.
      Узнав от пользователя имя сменного модуля, алгоритм сборки продолжает работу, добирается до очередного вариантного гнезда, запрашивает для него сменный модуль и т. д. Таким образом в ходе сборки текста выясняются все необходимые сведения о требуемой конкретной конфигурации.
      Практически единственное, хотя и немаловажное достоинство рассмотренной схемы задания конфигурации — простота реализации. Но этому достоинству, к сожалению, противостоит внушительное множество недостатков.
      Пользователю навязывается определенная последовательность задания конфигурации. С навязываемой последовательностью можно было бы скрепя сердце смириться, если бы ее проектировал разработчик программы, стремящийся к тематической близости вводимых друг за другом значений. Но здесь пользователь вынужден заполнять вариантные гнезда в хаотическом (с точки зрения их функционального назначения) порядке, определяемом не разработчиком, а особенностями алгоритма сборки.
      Значительные сложности вызывает откат, реализация которого лишила бы данную схему ее главного преимущества — простоты. Дело в том, что после ввода, скажем, десяти имен сменных модулей пользователь может захотеть изменить пятое имя, оставив в силе остальные девять. Такие манипуляции очень непросто вписать в рассматриваемый механизм диалога.
      Список недостатков схемы можно продолжать довольно долго. Мы ограничимся упоминанием лишь еще одного, наиболее серьезного из них: с точки зрения пользователя чрезвычайно неудобно неявно подразумеваемое здесь выделение задания конкретной конфигурации в самостоятельный, изолированный этап подготовки выполнения программы. Как будет видно из последующего изложения, особенно неприятен совершенно неестественный разрыв между заданием конфигурации и вводом исходных данных.

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

Далее

Рейтинг@Mail.ru