М.М. ГОРБУНОВ-ПОСАДОВ - Системное обеспечение пакетов прикладных программ (1184225), страница 23
Текст из файла (страница 23)
При выключенном режиме распечатки на листингена месте пункта STORE печатается лишь его заголовок и сообщение орезультате выполнения. Отметим, что печать листинга для пунктов,отличных от STORE, не зависит от режима LIST.3.10. ДокументированиеВажнейшей составной частью любой крупной программной системыявляется документация. Если система развивающаяся, то особуюактуальностьприобретаетзадачаоперативнойкорректировкидокументации в соответствии с вносимыми в систему изменениями.
Такоетрадиционное средстводокументирования, как выпуск печатных руководств, становится в данномслучае неудобным, поскольку руководства, как правило, не отражаюттекущего состояния системы в интервале между публикациями и частоуспевают устареть еще в процессе их подготовки. Тем не менее потребностьв документах, отражающих текущее состояние разработки, очевидна:именно такой документ требуется, в частности, при передаче системы вовнешние организации.Все высказанные выше соображения в полной мере могут быть отнесенык системе Сафра. Как сама система, так и функциональное наполнениесоздаваемых на ее основе пакетов интенсивно развиваются, и,следовательно, подход, связанный с публикацией печатных документов, неможет полностью удовлетворить нужды разработчиков. Основная роль вданном случае отводится оперативным средствам документирования,которые позволяют быстро получать печатные документы, отражающиетекущее состояние пакета, и предоставляют возможность простого и легкоговнесения изменений в тексты существующих документов.Создание средств документирования в Сафре существенно упростилосьблагодаря тому, что к моменту начала работы в составе программногообеспечения ЭВМ БЭСМ-6 уже существовала система АСПИД автоматизированная система подготовки публикаций и документов.АСПИД предоставляет набор команд, позволяющих задавать требуемоерасположение текста публикации на страницах.Средства документирования Сафры разрабатывались с учетомсовместимости с набором команд АСПИД, что позволило, в частности,автоматизировать подготовку документов к публикации.
Однако требованиюоперативного получения документов АСПИД отвечал не в полной мере.Хотя в системе и была предусмотрена выдача документов на АЦПУ, ноназначение такой выдачи было несколько иное - выявление ошибок висходном тексте и отладка расположения текста на страницах. Поэтомудокумент в АСПИДе выдавался в одностраничном формате, мало пригодномдля последующего использования его в качестве справочного материала.В то же время распечатка текущей документации на АЦПУ обладаеттребуемыми свойствами простоты и оперативности. Необходимо лишьорганизовать печать документов в удобном для последующегоиспользования формате - на двух страницах.
Эту возможность предоставляетпункт BOOK, заголовок которого имеет вид<признак> BOOK <список архивных имен>где <список архивных имен> содержит имена распечатываемых модулей.Список может быть продолжен с помощью предложений MODULE.В результате выполнения пункта BOOK формируется задача, котораяраспечатывает на АЦПУ в двухстраничном формате с редактированиемтексты модулей в том порядке, в котором они перечислены в пункте BOOK.Каждый модуль печатается с новой страницы. Распечатываемый текст выравнивается по правому краю страницы, при необходимости выполняетсяперенос слов по правилам орфографии, страницы нумеруются и т.д.Подробные правила оформления текстов документов можно найти в работе[108].3.11.
Операции над архивомЗапуск системы в ОС Диспак. Для работы с системой Сафранеобходимо иметь записанными на некоторых внешних носителяхсистемные программы (в дальнейшем называемые системой) и архивСафры. Система и архив могут быть расположены в произвольных местаходного или различных носителей. Средства указания расположения архиварассматриваются ниже.
Расположение системы задается соответствующимиуправляющими картами ОС Диспак и МС Дубна. Указание о расположенииархива (ARCHIVE) необходимо лишь при нестандартном его расположении.Если же архив располагается стандартно, т.е. непосредственно вслед за системой, указывать его расположение не нужно.Задание текущего архива (ARCHIVE). Операция ARCHIVEиспользуется для указания расположения архива, а также дляпереключения в рамках одного задания с архива на архив. Заголовокпункта ARCHIVE имеет вид<признак> ARCHIVE <том>:<зона>где <том> - номер архивного тома, <зона> - номер зоны, начиная скоторой расположен архив. Тело пункта ARCHIVE пусто.Например, выполнение пункта+ARCHIVE 722:0400приведет к тому, что последующие операции задания будут выполнятьсянад архивом, расположенным на магнитной ленте 722 начиная с 400-йзоны.Если архив размещается не непосредственно вслед за системой, то пунктARCHIVE должен быть первым в задании.
Пункт ARCHIVE, используемыйдля переключения на другой архив, может быть расположен в любом местезадания. После его выполнения текущим становится указанный в нем архив.Копирование архива (COPY) - сравнительно часто выполняемаяоперация. Она служит как для тиражирования содержимого архива, так идля обеспечения надежности хранения информации в архиве. Хотяспециализированный архив Сафры поддерживает целостность информациипри возникновении сбоев ЭВМ, однако если магнитные носителиподвергаются механическим повреждениям, которые на БЭСМ-6 не так ужредки, то единственным источником восстановления информациистановится чтение ее с копии.В качестве параметров операции COPY указывается место, начиная скоторого записывается копия архива. Как текущий архив, так и его копиямогут располагаться в нескольких томах, номера которых записываются втеле пункта COPY.
Архив, расположенный на нескольких томах, можетиспользоваться только в операции COPY. Заголовок пункта COPY имеет вид<признак> COPY <том>:<зона>где <том> и <зона> указывают место, начиная с которого записываетсякопия архива. Если исходный архив или формируемая копия располагаютсяна нескольких томах, номера этих томов перечисляются в теле пункта впредложениях FROM (для исходного архива) и ТО (для копии). Например, врезультате выполнения пункта+COPY 1766:0140ТО 1767начало исходного архива будет записано на ленту 1766 в зоны 140-777, ахвост его - на ленту 1767 с нулевой зоны.Если копирование прошло успешно, на листинге печатаетсясоответствующее сообщение, например+++++ СКОПИРОВАНО 600 БЛОКОВЗаметим, что по операции COPY производится копирование толькофактически занятых архивом блоков и поэтому оно происходит быстрее, чемсплошное копирование через другие системы.Изменение размера архива (SIZE).
При образовании архивапосредством операции CREATE (см. ниже) размер его устанавливаетсяравным 40 зонам. Это означает, что, если объем хранимой в архивеинформации превысит 40 зон, новая информация записана не будет ипоявится распечатка соответствующего диагностического сообщения.Если все же требуется разместить в архиве информацию,занимающую свыше 40 зон, размер архива можно увеличить с помощьюпункта SIZE вида<признак> SIZE <размер>где <размер> - восьмеричное число, кратное 40, задающее новый размерархива в зонах (блоках).
Тело пункта SIZE пусто.Посредством операции SIZE можно и уменьшать размер архива,освобождая часть пространства на внешнем носителе. Уменьшение размера,естественно, возможно лишь в случае, когда хранимая информация можетбыть размещена в архиве нового размера.Копирование системы (SYSTEM). Вообще говоря, предпочтительнееиспользовать систему (системные программы Сафры), записанную насистемный диск Сафры.
Однако иногда требуется скопировать систему назаданный внешний носитель. Это можно сделать посредством пунктаSYSTEM вида<признак> SYSTEM <том>:<зона>где <том> и <зона> задают место, начиная с которого записывается копиясистемы. Тело пункта SYSTEM пусто.Образование нового архива (CREATE).
Образовать новый (пустой)архив на заданном месте внешнего носителя можно с помощью пунктаCREATE вида<признак> CREATE <том>:<зона>где <том> и <зона> задают начало формируемого архива на внешнемносителе. При формировании задается длина архива, равная 40 зонам.Копирование системы по операции CREATE не производится.Перепись модулей из другого архива (SELECT). Выборочная переписьмодулей из заданного архива в текущий выполняется с помощьюоперации SELECT.
Заголовок пункта SELECT имеет вид<признак> SELECT <том>:<зона> <список архивных имен>где <том> и <зона> задают начало архива, из которого производится выбормодулей, а <список архивных имен> и, возможно, предложения MODULEсодержат имена модулей, переписываемых в текущий архив.Например, в результате выполнения пункта+SELECT 2145:1140MODULE OLM101 OLM102MODULE DIA306в текущий архив перепишутся три модуля, расположенных в архиве,начинающемся с 1140-й зоны диска 2145.Если в текущем архиве уже есть модуль с указанным именем, топерепись данного модуля не производится и выдается диагностическоесообщение. Диагностическое сообщение не выдается только в случае, еслитексты модулей идентичны.Глава 4 СИСТЕМА ПНФ И ПАКЕТ ЗАЩИТА4.1.
Конструирование программиз нестандартизированных модулейКаркасный подход к конструированию программ, положенный в основурассмотренной в предыдущей главе системы Сафра, предполагает, вообщеговоря, что все участвующие в конструировании модули разрабатываются врамках единого набора соглашений. Для успешного применения каркасногоподхода такие соглашения должны быть выработаны еще на стадиимодульного анализа предметной области, т.е.
непосредственноепрограммирование начинается только тогда, когда для каждого модуля ужечетко определены все его интерфейсные параметры. Однако на практикенередко требуется организовать совместное выполнение несколькихпрограмм,написанныхнезависимымигруппамиразработчиков,использовавшими различные, непохожие друг на друга интерфейсныесоглашения.Такая ситуация возникла, в частности, при проведении расчетов,связанных с проектированием защиты атомных реакторов.
Несколькоорганизаций долгое время независимо занимались моделированиемразличных областей радиационной защиты реактора. В каждой из этихорганизаций были созданы моделирующие программы объемом порядкасотен тысяч операторов. С функциональной точки зрения накопленныхпрограмм было вполне достаточно для того, чтобы выполнять комплексныерасчеты, охватывающие все области радиационной защиты. Но на путипроведения комплексных расчетов существовало одно серьезноепрепятствие - информационная рассогласованность имеющихся программ.Интерфейсные соглашения этих программ отличались чрезвычайнойпестротой. Для хранения значений одного и того же физического показателяиспользовались то один, то несколько массивов, интерфейсные данныеразличным образом размещались во внешней памяти, некоторые расчетывелись на одномерных моделях, другие - на двумерных и т.д.Конечно, не могло быть и речи о том, чтобы разработать новые единыеинтерфейсные соглашения и заново переписать в соответствии с ними всепрограммы, - такая работа отняла бы долгие годы.
Более того, требовалось,чтобы деятельность, связанная с организацией совместного выполненияпрограмм, велась безболезненно с точки зрения продолжающихсяпроизводственных расчетов, предполагающих автономное использованиекаждой из программ. Другими словами, тексты существующих программ недолжны были подвергаться каким-либо модификациям.При таких ограничениях решение поставленной задачи - организациикомплексных расчетов - становится практически однозначным. Для каждоговыходного параметра некоторого модуля, потребляемого другим модулем,следует написать программу-преобразователь, осуществляющую переводзначения этого параметра из формата модуля-источника в формат,требующийся модулю-получателю.