4. Пользователи могут перепутать библиотеки и, записав свой модуль в одну из них, ожидать его появления в другой. Прибавьте теперь сюда еще и то, что необходимо поддерживать пары библиотек, то есть обеспечивать синхронную замену в одной библиотеке исходного модуля, а в другой — загрузочного (объектного). Прибавьте сюда и то, что библиотек не две пары, а больше, и в некоторых из них имена модулей могут совпадать, что особенно неприятно при их замене с "перепутыванием" библиотеки. Добавьте сюда и то, что иногда "хороший" модуль меняется на "плохой", после чего "хороший" требуется восстанавливать с дампа, если он еще там существует. После всего этого вы можете подсчитать, сколько требуется парасистемных программистов на поддержание работоспособности всей этой системы. Быть может, существуют системы поддержания всего этого хозяйства в среде ОС ес? Максимум, на что способны такие системы — это красиво исправить и распечатать текст вашей программы. Вся рутина останется людям. Давайте же в качестве следующего этюда рассмотрим некоторую гипотетическую систему поддержания программного хозяйства (ППП "пирамида").
Этюд. ППП "Пирамида".
1. Нижний уровень пирамиды — средства для индивидуальной отладки модулей пользователя. Эти и только эти средства (здесь не нужен системный подход) в изобилии имеются в распоряжении любого вц. Требуется только составить ряд каталогизированных процедур языка управления заданиями. Элементом этого уровня является группа поколений последовательного набора данных. Hа каждого пользователя-программиста приходится несколько таких групп.
2. Второй уровень пирамиды — это небольшие библиотеки программ (точнее, пары из исходной и загрузочной библиотек). Одна такая библиотека выделяется на бригаду программистов. Она нужна для комплексной отладки программ. Ввиду прямой заинтересованности небольшого коллектива (один — пятеро) пользователей такой библиотеке особые неприятности не грозят. Ответственность за нее несет бригадир. Системные программисты только выполняют копирование всех библиотек второго уровня на случай сбоев. Копирование выполняется по принципу "все библиотеки одной процедурой". Забытых библиотек не бывает, так как поиск их ведется автоматически через каталог. Если бы не система ответственности, то этот второй уровень был бы не отличим от описанной в предыдущем этюде системы. Дело все как раз в этой системе ответственности. Именно прямая заинтересованность хозяина и обозримость границ владения обеспечивают общественные рефлексы на этом уровне. Благодаря этому, второй уровень пирамиды также может быть обеспечен существующими средствами почти без доработок. За основу может быть принята, например, прекрасная система офап угольной промышленности (перегудов). Требуется, правда, разработка интерфейса между первыми двумя уровнями — несколько каталогизировнных процедур языка управления заданиями.
3. Третий уровень пирамиды — это "предбанник", который должен компенсировать существенный недостаток библиотечного набора данных — возможность гибели при записи в него. В предбанник — библиотеку небольших размеров — свои модули записывают сами программисты-пользователи. После записи в такую библиотеку модуль оказывается включенным в эксплуатацию. При этом, в основной библиотеке еще существует "вытесненный" из эксплуатации одноименный модуль, который еще не поздно снова задействовать, уничтожив одноименный ему модуль в предбаннике. По просьбе пользователей или периодически, либо все содержимое предбанника, либо часть его "выливается" в основную библиотеку. Одновременно с этим (в той же процедуре) содержимое этого предбанника "выливается" еще в одну библиотеку, где все такие "добавки" накапливаются до следующего страхового копирования. Ответственность за правильность записи в предбанник несут пользователи. Предбанник невелик по размерам. Пользователям предписано хранить у себя экземпляры своих модулей до тех пор, пока они не получат официальное уведомление (в виде листинга, а не "испорченного телефона") о том, что их модуль "вылит" в основную библиотеку.
4. Четвертый уровень пирамиды состоит из следующих составных частей: — Основные библиотеки; — "Копилки предбанников", по одной на каждую основную библиотеку; — Группы поколений резерва, по одной группе на каждую основную библиотеку. Каждая группа поколений резерва — это несколько томов мл, одинаковых по структуре и содержащих следующие наборы данных: — Копия основной библиотеки; — Копия "копилки предбанников", в которой накоплено то, чем эта копия основной библиотеки отличается от предыдущей; — Копия следующей "копилки предбанников". Все это хозяйство защищено от несанкционированного доступа. За него отвечает системный программист. Смена поколений резерва (новое поколение резерва на МЛ самого старого) выполняется автоматически. Создание нового поколения резерва и опустошение "копилки предбанников" воможно лишь при успешном завершении формирования нового тома мл. Опишем подробнее алгоритм выполнения процедуры REZAPAS, которая создает новые поколения резерва.