Технология многомашинной реализации и жизнеобеспечения библиотек подпрограмм вычислительной математики на языке Фортран тема автореферата и диссертации по математике, 01.01.10 ВАК РФ
Волченскова, Надежда Ивановна
АВТОР
|
||||
кандидата физико-математических наук
УЧЕНАЯ СТЕПЕНЬ
|
||||
Москва
МЕСТО ЗАЩИТЫ
|
||||
1984
ГОД ЗАЩИТЫ
|
|
01.01.10
КОД ВАК РФ
|
||
|
ВВЕДЕНИЕ
ГЛАВА I. ОБЩЕ ПРИНЦИПЫ ТЕХНОЛОГИИ СОЗДАНИЯ И
ЖИЗНЕОБЕСПЕЧЕНИЯ БИБЛИОТЕК ПОДПРОГРАММ
1. Систематизированные библиотеки подпрограмм
2. Полный комплекс работ по созданию и .жизнеобеспечению систематизированных библиотек
3. Организационная структура коллектива участников библиотечной разработки.
4. Общее описание технологии многомашинной реализации., и. жизнеобеспечения библиотек подпрограмм вычислительной математики на языке ФОРТРАН.
4.1. Общая-характеристика подхода к разработке технологии.
4.2. Инструментальный аспект технологии.
4.3. Общая функциональная схема инструментального комплекса.
ГЛАВА II. АВТОМАТИЗАЦИЯ СОСТАВЛЕНИЯ БИБЛИОТЕЧНЫХ ПОДПРОГРАММ И ИХ ВЕРСИЙ ДЛЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ РАЗНЫХ ТИПОВ И ОБРАБОТКИ ДАННЫХ РАЗНЫХ ТИПОВ.
I. Анализ возможностей автоматизации создания версий подпрограмм
1.1. Анализ проблемы транспортабельности фортранных подпрограмм
1.2. Систематизация машинно-зависимых констант для подпрограмм вычислительной математики
1.3. Анализ различий родственных версий фортранных подпрограмм для обработки данных разных типов
1.4. Дисциплина программирования на языке ФОРТРАН
2. Языковые средства автоматизации составления библиотечных подпрограмм и их версий
2.1. Языки описания компонент порождающего файла
2.2. Языки запросов на генерацию библиотечных подпрограмм и их версий
3. Описание реализации Версатора - инструментальной программы для генерации и преобразования фортранных подпрограмм
4. Об опыте применения разработанной технологии.
ГЛАВА III. АВТОМАТИЗАЦИЯ ПРОЦЕССА ДОКУМЕНТИРОВАНИЯ
БИБЛИОТЕЧНЫХ ПОДПРОГРАММ И ИХ ВЕРСИЙ
1. Анализ проблемы документирования подпрограмм.
I¿I. Содержание документации.
1.2. Способы подготовки, хранения и размножения документации
1.3. Дисциплина документирования.
2. Макроязык документирования.
3. Описание реализации Комментатора - инструментальной программы для составления документации библиотечных подпрограмм и их версий
Библиотеки подпрограмм создаются и используются уже много лет, однако, и сейчас в этой области существуют еще не решенные проблемы. Одно из самых первых упоминаний в литературе о библиотеках подпрограмм содержится в книге Уилкса М., Уилера Д. и Гилла С., которая в русском переводе вышка в 1953 Г.Г46]. В качестве одной из форм организации вычислений на ЭВМ авторами предлагалось использование библиотеки подпрограмм, и уже тогда была показана эффективность такого метода программирования. Хотя авторы не приводили строгого определения библиотеки подпрограмм, из изложения было ясно, что под библиотекой понимается набор подпрограмм, которые представляют собой "короткие, заранее заготовленные программы для отдельных, часто встречающихся( стандартных) вычислительных операций". Здесь же предлагалась форма хранения и способ использования подпрограмм. Каждая подпрограмма хранилась в виде последовательности пробитых на перфоленте машинных команд. При составлении произвольной программы последняя пробивалась на перфоленте таким образом, что в том месте программы, где необходимо было выполнить операции, реализуемые библиотечной подпрограммой, производилось механическое дублирование команд с библиотечной перфоленты на перфоленту составляемой программы. В этой же работе впервые вводились представления об открытой и закрытой подпрограммах, параметризации подпрограмм, рассматривались вопросы настройки программ по адресам в памяти, был также поднят вопрос о создании объединяющей программы, которая взяла бы на себя выполнение носящих механический характер работ по объединению подпрограмм в более сложные программы".
Последующий прогресс вычислительной техники цривел к включению в состав ЭВМ внешней памяти на магнитных носителях, отли
1авшейся значительно большей емкостью, чем оперативная память, !то естественным образом привело к идее хранения библиотечных юдпрограмм на внешней памяти и возможности эффективной автоматизации процесса включения их в программы. Крупным достижением в развитии метода программирования на основе использования библиотечных подпрограмм была разработка и реализация в начале 60х годов отечественной интерпретирующей системы ИС-2 для машины М-20 под руководством проф. М.Р.Шура-Бура. Система состояла из библиотеки стандартных подпрограмм и истолковывающей программы ИС-2. [1од стандартными подпрограммами понимались включенные в библиотеку подпрограммы, удовлетворяющие некоторым специальным требованиям системы ИС-2. Подпрограммы были организованы в библиотеку таким образом, что сведения о местоположении каждой подпрограммы на внешней памяти хранились в специальном каталоге ИС-2. Истолковывающая программа ИС-2, постоянно находившаяся в оперативной памяти во время исполнения основной программы, выполняла функции загрузчика стандартных подпрограмме с настройкой по месту в памяти) и редактора связей, т.е. автоматизировала включение подпрограмм в процессы обработки данных. В ее функции не входила автоматизация процесса включения подпрограмм в библиотеку. В сборнике [49], содержащем авторское описание ИС-2, не приводится общего определения используемого термина библиотека подпрограмм, а дается конкретное описание ее организации в рамках ИС-2. В других отечественных работах того же периода([33],[34],[35]) приводятся формулировки, хотя и не всегда достаточно четкие понятия библиотеки подпрограмм. Наиболее четкое из этих определений, принадлежит Е.А.Жоголеву и Н.П.Трифонову [28]. Приведем выдержку из этой работы. "Для большего удобства практической работы выбирается определенная система использования подпрограмме способ обращения к подпрограммам, способ их размещения в памяти машины и т.д.), редъявляющая определенше требовашш к подпрограммам как в отно-ении их структуры, так и оформления. Подпрограммы, удовлетворяю-ие всем требованиям выбранной, системы, называются стандартными, меющийся набор стандартных подпрограмм называют библиотекой под-рограмм".
Для рассматриваемых определений библиотек того периода было :арактерно следующее. Эти определения не включали в себя ограниче-.ий на вид материального носителя, на котором представлены библио-ечные подпрограммы. Т.ё. под библиотекой мог пониматься и набор юдпрограмм, представленных в виде последовательностей команд, зассанных на бумаге. Такие подпрограммы могли использоваться при »учном способе составления произвольных программ, т.е. посредством >учного выполнения механических работ по включению подпрограмм в >бщую программу и настройке по конкретным адресам памяти. Поскольку метод использования библиотечных подпрограмм при ручном про-'раммировании не получил сколько-нибудь широкого распространения, [ современные способы организации библиотек всегда ориентированы т размещение библиотечных подпрограмм на внешней памяти ЭВМ, гредставляется, что современное понятие библиотеки подпрограмм гстественным образом должно включать в себя соответствующее ука-5ание на допустимые материальные носители.
Второй характерной чертой используемых прежде определений 5иблиотек было употребление термина "стандартная подпрограмма". Сейчас все чаще пользуются термином "библиотека подпрограмм", опу-;кая определение "стандартных". Употребление термина "стандартный" 5ыло более естественно для того периода, когда программирование зелось на языке машины, используемые типы машин были немногочис-тенны и количество специалистов, разрабатывающих программы для библиотек, предназначенных для общего использования, было невелико, как и количество самих подпрограмм. Термин "стандартный", ис-зользуемый в применении к подпрограммам, нес в себе оттенок и в олыпей мере соответствовал изначальному смыслу слова "стандарт", •е. обязательный, единственно правильныйдля разработчиков под-рограмм, предназначенных дяя общего использования), С введением е в употребление ряда языков программирования высокого уровня езко возросло количество специалистов, занимающихся созданием иблиотечных подпрограмм, и количество самых разных библиотек, находящихся как в общем, так и в локальном использовании, Появи-:ось представление о библиотеках исходных(на языке программировали) , объектных и загрузочных модулей, о библиотеках общих и лич-шх. Подпрограммы из разных библиотек должны были отвечать своим, »тличным от других, требованиям, как в рамках разных систем про-'раммированияССП), так и в рамках одной и той. же СП. Таким образом гзначальный оттенок всеобщей обязательности слова "стандартный" 'тратил свой смысл в применении к подпрограммам многочисленных )азнообразных библиотек, хотя и удовлетворяющих каждая своим конфетным требованиям. На практике этот термин продолжает употребиться в основном лишь в отношении некоторых широко распространен-шх библиотек, которые начали использоваться еще в середине 60х годов(например, дубненских библиотек ОБСП на ФОРТРАНе). Некоторые аз этих библиотек уже прехфатили свое существование, ввиду полной 1ривязки к конкретному типу вычислительных систем, которые были эняты с производства и к настоящему времени почти нигде не используются. К ним относятся библиотеки стандартных подпрограмм ИС-2 и зтандартных процедур транслятора ТА-1М, хотя вплоть до начала 70х годов последняя продолжала пополняться новыми процедурами, составленными на языке машины. В зарубежной литературе термин "стандартный" в отношении библиотек подпрограмм вообще никогда не использовался. В связи с вышесказанным представляется разумным отказ от дальнейшего использования термина "стандартный" в отношении библиотечных подпрограмм.
Некоторые более поздние определения библиотек подпрограмм, зстречающиеся в л итераторе(см., например, статью "Библиотека стандартных подпрограмм" в Энциклопедии Кибернетики [50]), включали в шределение библиотеки подпрограмм не только саму совокупность подпрограмм, но и системы их использования и обслуживания, т.е. про-'раммные средства, выполняющие роль программ-библиотекарей(автоматизирующих включение, исключение и замену подпрограмм в библиотеке I т.п.), загрузчиков и редакторов связей. Однако, такое расширение юнятия библиотеки представляется нежелательным, так как упомянутые программные средства, входящие в современные системы программирования, являются общими для многих разных библиотек, т.е. применяются при формировании на внешней памяти, поддержании и использовании любых библиотек, созданных в рамках кошфетной системы фограммирования. На практике же под отдельной, независимой от других, библиотекой понимается совокупность подпрограмм, объединенных з некую единую структуру общим для них каталогом и/или принадлежностью единому авторскому проекту, изложенному в документации для юльзователей библиотеки.
Некоторые современные определения библиотек подпрограмм, встречающиеся в. иностранной литературе(см., например,[38]), отли-1аются некоторой узостью, допуская организацию библиотек только на устройствах внешней памяти с прямым доступом. В силу всех высказан-аых выше соображений, в настоящей работе автор придерживается следующего, сформулированного ниже, определения понятия библиотеки подпрограмм. Библиотека подпрограмм - это определенным образом эрганизованный набор подпрограмм, представленный на внешней памяти вычислительной системы в соответствии с требованиями системы программирования, которые определяют возможность автоматического включения подпрограмм в процессы обработки данных.
Сделаем 1фаткий ретроспективный обзор библиотечных разрабогок, с целью проследить тенденции в этой области и видоизменение зо временем задач, встающих перед разработчиками библиотек.
В период разработки ИС-2, когда программирование велось в кодах машины и не существовало развитых операционных систем(ОС) и зистем программирования, первоочередной целью создания библиотеки Зыло обеспечить пользователей, набором подпрограмм, самых необходимых всем или подавляющему большинству программистов. Это - подпрограммы, выполняющие операции обмена, печати информации, перевода числовых данных из одной системы счисления в другую, а также производящие вычисления элементарных фушщий(ех, sin х и т.п.) [49]. 1фоме того, в библиотеку ИС-2 первоначально было включено также небольшое количество подпрограмм для решения некоторых часто встречающихся задач численного анализа.
Дальнейший црогресс в развитии программирования был связан с появлением первого получившего широкое распространение в нашей стране языка программирования высокого уровня - АЛГ0Л-60. Однако ввиду небольших размеров оперативной памяти и невысокого быстродействия вычислительных машин того периода, перед разработчиками первых библиотек остро стояла проблема обеспечения максимальной эффективности библиотечных подпрограмм. По этой причине они продолжали составляться в кодах машины, даже после появления транслятора с АЛГ0Л-60.
Быстрый прогресс вычислительной, техники, появление новых более совершенных типов ЭВМ привели к резкому росту числа их пользователей. Началось бурное развитие математического обеспечения ЭШ. Наиболее значительные достижения в разработке средств автоматизации программирования в нашей стране были связаны с появлением ЭВМ БЭСМ-6. Математическое обеспечение ЭШ стало рассматриваться как обязательная часть вычислительной системы, которая всегда должна поставляться пользователям вместе с вычислительной установкой.
3 качестве неотъемлемой составной части общего математического )беспечения ЭВМ в него стали включаться средства, предназначенные уш автоматизации работ с библиотеками подпрограмм. Перед разработ-шками конфетных библиотек теперь уже не стояла задача создания необходимых программных средств обслуживания и использования биб-шотек. Кроме того, можно было считать уже решенной задачу обеспе-гения пользователей ЭВМ программами, составлявшими основу библиотеки ИС-2. Такие подпрограммы уже стали неотъемлемой частью библиотек трансляторов и систем программирования, получивших статус биб-хиотек автовызова(т.е. библиотек, подпрограммы которых загружаются з оперативную память и выполняются, как только при исполнении рабочей программы в этом возникает необходимость, без каких-либо специальных указаний со стороны программиста на необходимость ис-тользования такой библиотеки). Значительное увеличение объема оперативной памяти и быстродействия ЭВМ отодвинуло на второй план задачу минимизации памяти, занимаемой библиотечной подпрограммой,и времени ее выполнения. На первый план выдвинулась задача возможно Золее быстрого обеспечения пользователей как можно большим количеством библиотечных подпрограмм, решающих многочисленные часто встречающиеся на црактике научно-технические задачи. Это давало возможность резко снизить весьма значительные экономические потери, связанные с дублированием работ в программировании. Успешное решение этой задачи могло быть достигнуто лишь на основе широкого использования при создании библиотек подпрограмм языков высокого уровня, которое резко повышало эффективность самого процесса сознания программ. Начало появления первых обширных библиотек на языках программирования высокого уровня, предназначенных для широкого использования, относится к середине 60х годов. Среди них следует отметить получившую широкую известность библиотеку бэр фирмы 1вм [59], вслед за которой появились и более обширные библиотеки других фирм [64],[69],[62],[53]. С этого же времени стало также создаваться большое количество библиотек, мало известных и мало используемых за пределами организаций-разработчиков.
После этого, когда, казалось бы, основные потребности пользователей в библиотечных подпрограммах были удовлетворены, перед разработчиками библиотек встали новые серьезные задачи. Дело в гом, что опыт использования первых библиотек на языках высокого уровня, несмотря на большой положительный эффект, привел к появлению критики в их адрес как со стороны пользователей, так и со стороны самих разработчиков библиотек. Эта критика содержала следующие основные моменты: последние и лучшие алгоритмы не находят достаточно оперативного отражения в библиотеках; правильность работы входящих в них подпрограмм проверена недостаточно; неудовлетворительна диагностика, выдаваемая при выполнении подпрограмм; недостаточно хорошее качество документации; библиотеки далеко не полны, отсутствует единая систематика предметных областей; плохо организовано сопровождение библиотек; библиотечные подпрограммы достаточно тесно привязаны к конфетной вычислительной системе(ВС), чтобы их без значительных затрат можно было использовать в условиях других ВС. В связи с этим, на первый план все больше стали выдвигаться такие проблемы как: разработка методов и средств обеспечения и удостоверения качества библиотечных подпрограмм; обеспечение их качественного оформления и документирования; разработка методов и средств обеспечения легкой переносимости библиотек подпрограмм из одной вычислительной среды в другую; обеспечение четкой систематизации предметных областей, охватываемых библиотеками, и достаточной полноты представленных в них подпрограмм; обеспечение качественного сопровождения библиотек; обеспечение процесса развития библиотек в соответствии с новейшими методами охватываемых предметных областей; разработка методов и средств повышения эффективности выполнения и автоматизации различных процессов, связанных с созданием и жизнеобеспечением библиотек.
Одно только перечисление этих проблем говорит об их многообразии и разноплановости. Весьма важное практическое значение имеет решение этих проблем при создании библиотек, предназначенных для широкого использования, которые удовлетворяют насущные потребности многочисленных пользователей в решении типовых задач предметной области. Самым перспективным в этом отношении является направление, связанное с разработкой современных технологий, обеспечивающих комплексное решение проблем создания и жизнеобеспечения библиотек подпрограмм, гармонично сочетающих в себе не только решение проблем автоматизации работ(инструментальный аспект технологии), но и решение проблем организации и взаимодействия в коллективах участников библиотечных разработок организационный аспект технологии). Важность комплексного промышленного подхода к решению задач создания и использования крупных программных комплексов все больше осознается научной общественностью(см., например ,[25], [14] ). Однако эти идеи не получили пока необходимого развития применительно к библиотечным проектам. Настоящий период характеризуется недостаточностью работ в этом направлении.
Основная масса работ посвящена рассмотрению отдельных перечисленных выше проблем или отдельных аспектов этих проблем. Так, проблема обеспечения качества программ представлена в основном работами, посвященными разработке методов оптимизации программ, которые находят свое основное применение при разработке трансляторов. Ряд появившихся в последнее время работ рассматривает вопросы верификации программ, т.е. проверки их правильности с точки зрения требований, языка программирования, исходя из анализа текста программы. Имеются также работы, посвященные надежности больших программных систем. Все эти направления представлены, например, в докладах на I Всесоюзной конференции по технологии программирования [44]. Однако проблема качества библиотечных подпрорамм имеет еще один весьма важный аспект. Это - получение доста-:очно полных свидетельств правильной работы подпрограмм и объек-жвное определение их функциональных характеристик. Необходимость >ешения и сложность этой проблемы только начинает осознаваться[1б]. (роме того, проблема качества библиотек подпрограмм, предназначениях для широкого использования, имеет еще один аспект, который южно обозначить термином "утилитарный". Он характеризует такое ¡войство библиотеки и входящих в нее подпрограмм, как легкость и удобство их использования и сопровождения.
Проблеме документирования в настоящее время уделяется все юлыпе внимания. Работы в этой области представлены такими налра-шениями как: разработка единых государственных стандартов на документацию программных изделий(ЕСГЩ); разработка общих средств штоматизации подготовки текстов документов к печати на естественна: языках; а также разработка методов и средств документирования $ рамках специализированных систем автоматизации программирования 45].
Проблема переносимости программного обеспечения из одной вычислительной среды в другую также имеет много аспектов и подходов ; решению[41]. Сюда относятся: разработка стандартов для широко »аспространенных языков программирования высокого уровня и средств ¡ерификации программ; создание новых языков со средствами машинно-[езависимого описания данных и выполняемых над ними операций[51]; »азработка единых стандартов на коды внутреннего представления символьной информации и форматы записей и магнитных носителей; азработка средств автоматизации для адаптации программ к условиям ругой вычислительной среды. Поскольку широкое внедрение новейших [ашинно-независимых языков в практику программирования требует ¡есьма значительного периода времени, это не снимает с повестки ;ня актуального вопроса о разработке методов и средств автоматизации переноса в другую вычислительную среду программ на традиционных языках высокого уровня.
В проблеме сопровождения можно выделить два аспекта. Во-первых, вопрос поддержания программного продукта, который подразумевает разработку надежных методов и средств внесения необходимых коррекций или изменений в программы в процессе эксплуатации[45]. И, во-вторых, вопрос организации информационного обеспечения пользователей информация об изменениях, консультирование по использованию и т.п.)'. Часто под термином "сопровождение" понимается лишь первый аспект, а второй - упускается из виду и недооценивается. Однако, для библиотек подпрограмм, предназначенных для широкого использования, второй аспект имеет особенно важное значение.
Как проблема обеспечения качественного сопровождения библиотек, так и проблема обеспечения их развития в соответствии с новейшими методами предметных областей требуют не только использования средств автоматизации внесения в библиотек необходимых изменений, но и принятия четких методических решений, определяющих удобство и эффективность процесса внесения изменений, порядок выполнения этих работ и, особенно, правильную организацию и взаимодействие при этом различных участников библиотечной разработки.
Сделаем врат кий обзор кошфетных библиотечных разработок на языках высокого уровня, приведя примеры нескольких наиболее широко известных в настоящее время библиотек подпрограмм для решения задач вычислительного характера. Среди отечественных разработок сюда следует отнести такие библиотеки как: ОБСП-"Дубна"(ОИЯй) на языке ФОРТРАН [12]; минская библиотека БИМС ИМ АН БССР), называемая также авторами пакетом научных подпрограмм на языке ФОРТРАН[39]; библиотеки алгольных процедур БЭСМ-АЛГОЛ и АЛГСЖ-ГДР, развиваемые усилиями ИСЭП АН СССР и Г0И([7],[36]). Из наиболее известных зарубежных библиотечных проектов можно выделить такие как: библиотека itag , разработанная и развиваемая в Англии [56]; библиотека фирмы imsl , разработанная в США[60]; port - библиотека фирмы Bell Laboratories [58],
Раньше другихСк началу 70х годов) в нашей стране завоевала широкую известность обширная библиотека подпрограмм на языке ФОРТРАН, выполненная в 0ИЯИ(0БСП-"Дубна"). Она была реализована для использования на ЭВМ БЭСМ-6 и в настоящее время содержит около 350 подпрограмм. К 1978 году разработчиками была выпущена новая улучшенная форма документации библиотеки для пользователей, а также произведено более тщательное тестирование библиотечных подпрограмм. !фоме того, была реализована система, позволяющая хранить документацию на магнитных носителях и просматривать ее с экрана дисплея.
В настоящее время широкую известность получила также библиотека БИМ, за основу которой были взяты около 250 подпрограмм библиотеки ssp . Библиотека реализована для использования на машинах ЕС ЭВМ. Она постоянно пополняется новыми подцрограммами, документация к которым выпускается в виде дополнительных сшитых печатных сборников. В библиотеке установлены единые для всех подпрограмм правила, запрещающие использование в них операторов ввода/ вывода, и декларирующие обязательность диагностщювания ошибочных ситуаций при выполнении подпрограммы посредством присвоения определенных числовых значений специально выделенному параметру.
Известные у нас алгольные библиотеки процедур использовали два достаточно различных диалекта языка АЛГ0Л-60: АЛГОЛ-ГДР и БЭСМ-АЛГОЛ. АЛГОЛ-ГДР имеет преимущество перед БЭСМ-АЛГОЛ, поскольку обеспечивает возможность введения модульной структуры программе независимую трансляцию и организацию библиотек процедур). Однако библиотека процедур БЭСМ-АЛГОЛ ко времени появления библиоеки АДГОЛ-ГДР накопила значительно болыпт программный фонд. Это юставило перед разработчиками библиотек задачу переработки и объе-цшения фондов двух библиотек. Эта работа продолжает проводиться. 1ри этом используется перекодировщик, позволяющий, автоматически устранять некоторые различия в диалектах АПГОЛа при пополнении библиотеки АЛГОЛ-ГДР за счет процедур из библиотеки БЭСМ-АЛГОЛ. )бе библиотеки реализованы для использования на ЭВМ БЭСМ-6.
Основной, отличительной, чертой упомянутых выше зарубежных библиотечных проектов является ориентация их на многомашинную реа-шзацию, хотя подходы к решению этой задачи в них несколько раз-хичны. В проекте НАв подпрограммы первоначально реализовывались разработчиками для одной определенной ЭВМ(1СЬ 1906), а затем централизованно передавались в организации, владеющие другими типами ЭВМ, для ручной переработки их в соответствующие версии. Переработанные версии возвращались в Центральное бюро, в котором с помощью автоматизированной системы записывались в общий файл так, чтобы не происходило дублирования операторов, одинаковых для различных версий,. Это позволяло упростить многомашинное поддержание библиотеки.
В библиотеке ШБЬ один и тот же автор разрабатывал все версии подпрограммы для разных ЭВМ, объединяя их в одной программе-прототипе посредством использования для этого специального языка управляющих комментариев. Последующая автоматическая обработка управляющих комментариев позволяла получить из прототипа ту или другую версию подпрограммы. В роит-библиотеке все подпрограммы реализовывались на общем для нескольких ЭШ подмножестве языка
ФОРТРАН с заданием ряда машинно-зависимых констант посредством обращения к специальным служебным подпрограммам-функциям, содержание которых необходимо было изменять при переносе библиотеки на разные ЭВМ. К достоинствам технологии, применявшейся при создании юит-библиотеки, следует отнести разработку II использование про-'рамглы-верификатораСРРСтт [07]) для проверки соответствия подпро-?рамм избранного подмножеству языка.
В заключение обзора современной библиотечной проблематики следует упомянуть о другом развивающемся направлении современного фограммирования, которое имеет ту же общую цель - обеспечить поль-ювателей эффективными программными средствами решения задач в раз-1ичных предметных областях. Это направление - разработка пакетов фикладных программе шш). Проблематика этого направления частично пресекается с проблематикой библиотечных разработок, но, в то же время, имеет свою специфику. Близость этих направлений является )дной из причин имеющего место частого смешения терминов "пакет фограмм" и "библиотека программ". Однако основной отличительной 1ертой ППП, которая позволяет разделить эти два понятия, следует зчитать обязательность наличия в ППП специальных системных средств шанирования процесса решения задач. Т.е. отличительной чертой ППП валяется более высокий уровень автоматизации процесса решения за-хач, когда его планирование осуществляется не пользователем, а зистемными средствами. Это предполагает наличие в пакетах: специального языка постановки или описания задачи(проблемно-ориентированного неалгоритмического языка высокого уровня). Анализу пробле-латики ППП и принципов их разработки посвящен ряд работ [26], [31] , ~65],[52], в которых, в частности, можно найти обзор конкретных разработок в этой области и сравнительный анализ различных подходов. Примерами таких разработок являются система САФРА[42], система ТЕН30Р[П] , Генератор программ ПОЛЕ[37] , система модульного программирования ПРИЗ[32], система НАРЭйСбб] , система рбеъ [55] я др. Пакетное и библиотечное направления взаимно дополняют друг пруга, обеспечивая на практике более полное удовлетворение разно-эбразных потребностей пользователей. Кроме того, хорошо организованные и согласованные библиотеки подпрограмм могут служить базой для последующей реализации на их основе ППП, обеспечивая соответствующее снижение затрат на разработку функционального наполнения пакетов.
Проделанный анализ сложившейся ситуации в области библиотечных разработок показывает актуальность разработки технологий, которые позволили бы устранить существующие недостатки, переработать и развить положительные тенденции в практике создания и жизнеобеспечения библиотек.
Цели, поставленные при выполнении настоящей диссертационной работы, заключались в следующем. Во-первых, разработать комплексную технологию многомашинной реализации и жизнеобеспечения библиотек подпрограмм для решения задач вычислительной математики на языке ФОРТРАН, позволяющую повысить эффективность и качество выполнения работ, а также автоматизировать ряд основных процессов этой деятельности. Во-вторых, предложить и реализовать комплекс инструментальных средств в качестве программной поддержки разработанной технологии. В-третьих, применить разработанную технологию и инструментальные средства при создании и жизнеобеспечении обширной библиотеки фортранных подпрограмм решения типовых задач численного анализа для ЭВМ БЭСМ-6, ЕС ЭВМ и МВК Эльбрус.
Особая актуальность разработки технологии для такого вида библиотек связана с тем, что библиотеки подпрограмм вычислительной математики относятся к наиболее давно и наиболее широко используемому виду библиотек, а язык ФОРТРАН является наиболее популярным языком, применяемым при решении задач вычислительного характера.
ЗАКЛЮЧЕНИЕ В работе получены следующие основные результаты.
1. Предложен новый комплексный подход к разработке технологии создания и жизнеобеспечения библиотек подпрограмм вычислительной математики, заключающийся во всестороннем учете всех звеньев взаимосвязанного комплекса работ с целью обеспечения их эффективного и качественного выполнения.
2. Предложен новый методический подход к обеспечению процесса многомашинного поддержания обширных библиотек подпрограмм.
3. Разработана дисциплина программирования на языке ФОРТРАН, позволяющая обеспечить эффективную автоматизацию процесса преобразования библиотечных подпрограмм вычислительной математики при получении их версий для вычислительных систем разных типов и обработки разных типов данных.
4. Установлен набор преобразований, который необходимо выполнять при получении указанных версий транспортабельных подпрограмм, и разработан удобный язык запросов для формулировки требовании на выполнение преобразований.
5. Разработаны правила документирования библиотечных фортранных подпрограмм, обеспечивающие необходимое качество документации, и макроязык для ее автоматизированного составления.
6. Предложен комплекс инструментальных средств в качестве программной поддержки разработанной технологии.
7. В составе инструментального комплекса реализованы следующие основные компоненты:
- специализированный синтаксически управляемый макропроцессор с набором процедур преобразования, позволяющий осуществлять генерацию подпрограмм из модулей на языке МАШОР и выполнять установленный набор преобразований фортранных подпрограмм при получении их версий;
- программное обеспечение языка запросов анкетного типа на выполнение установленного набора преобразований;
- программное обеспечение макроязыка для автоматизированного составления документации библиотечных подпрограмм и их версий; а также ряд других сервисных блоков, 8. Разработанная технология практически применена при создании, внедрении и поддержании обширной библиотеки фортранных подпрограмм решения типовых задач численного анализа для ЭВМ БЭСМ-6, ЕС ЭВМ и МВК Эльбрус, Библиотека насчитывает к настоящему времени более 900 подпрограмм и внедрена в более чем пятидесяти крупных научных, учебных и промышленных организациях страны. Документально подтвержденный годовой экономический эффект от внедрения библиотеки превышает к настоящему времени 5 млн, руб.
В целом, использование разработанного организационного подхода и предварительная ориентация на многомашинную реализацию библиотеки(в частности, разработка специальной дисциплины программирования), а также использование инструментальных средств позволило добиться экономии трудозатрат при обеспечении достаточного качества работ. На подготовку третьего издания версии библиотеки для исходной ЭВМ БЭСМ-6 в течение трех лет было затрачено около 105 человеко-лет труда, из которых около шести человеко-лет составил труд сотрудников невысокой квалификации Группы комплектации и сопровождения библиотеки. Подготовка третьего издания библиотеки в версии для ЕС ЭВМ в течение одного года потребовала около пяти человеко-лет труда. Из них четыре человеко-года составил труд сотрудников невысокой квалификации и только один человеко-год труд высококвалифицированных сотрудников. Аналогичными цифрами оцениваются трудозатраты на создание версии библиотеки для МВК Эльбрус и других вычислительных систем.
1. Арушанян О.Б., Волченскова Н.И. Система автоматизированных преобразований фортранных программ.- В кн.: Вычислительные методы и программирование. Вып.XXXIII.- М.: Изд-во Моск. ун-та, 1980, с.161-172.
2. Арушанян О.Б., Волченскова Н.И., Комарова Т.Н. Систематизация машинно-зависимых констант для Библиотеки численного анализа и математической статистики НИВЦ МГУ.- В кн.: Вопросы конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1983, с. 96113.
3. З7. Арушанян О.Б., Волченскова Н.И. Общие проблемы транспортабельности фортранных программ.- В кн.: Автоматизация конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1979, с, 3 -22.
4. U Арушанян О.Б. Дисциплина программирования на стандарте языка ФОРТРАН.- В кн.: Вопросы конструирования библиотек программ.-М.: Изд-во Моск. ун-та, 1980, с.3-18.
5. Арушанян О.Б., Гайсарян С.С., Кабанов М.И. МАШОР: языкописания макромодулей Генератора программ.- В кн.: Вычислительные методы и программирование. Вып.XXII.- М.: Изд-во Моск. унта, 1974, с.12-26.
6. Архив системы БЭСМ-АЛГОЛ.- Вильнюс: ВЦ ИФМ АН Литовской ССР, 1972.- 135 с.
7. Балацкова-Подольскова С.И., Булко И.М,, Цагельский В.И. ФОРТРАН ЭВМ "Минск-32".- М.: Статистика, 1975.- 175 с. Банковский Ю.М., Куракин Ю.В., Лузан С.П., Лунькова З.В. ФОРТРАН для ЭВМ типа М-20,- М.: ИПМ АН СССР, 1973.- 68 с.
8. Банковский Ю.М., Мишакова С.Т. Автоматизированная система подготовки публикаций и документов.- М.: Препринт ИПМ АН СССР, ЖЕ9, 1977.- 25 с.
9. Бежанова M.M. Системная программа ТЕНЗОР.- Труды ВКП-2, сек.Н,- Новосибирск: ВЦ СО АН СССР, 1970, с.33-40.
10. Библиотека программ на ФОРТРАНе и автокоде МАДЛЕН для БЭСМ-6, т.т.1,11,III, под ред. Федоровой Р.Н., Б1-П-8722, Б2-П-9877, Б2-Н-9876.-Дубна: ОИЯИ, 1974-1976.
11. Богомолов H.A., Ламзина Т.В. Работа на ФОРТРАНе с двоичной, текстовой и адресной информацией.- В кн.: Вопросы конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1980, с.68-76.
12. Брукс Ф.П. Как проектируются и создаются программные комплексы.- М.: Наука, 1979.- 151 с.
13. Воеводин В.В., Арушанян О.Б. Структура и организация библиотеки численного анализа НИВЦ МГУ.- В кн.: Вычислительные методы и программирование. Вып.XXXIII.- М.: Изд-во Моск. ун-та, 1980, C.I04-II2.
14. Воеводин В.В., Риш Д.Г. Автоматизированная система аттестации программ численного анализа.- В ich. : Численные методы алгебры.- М.: Изд-во Моск. ун-та, 1981, с.27-57.
15. Волков А.И. Автокод МАРЕН. Б4-П-4654.- Дубна: ОИЯИ, 1969.58 с.
16. Волченскова Н.И. Версатор в системе автоматизированных преобразований программ.- В кн.: Автоматизация конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1979, с.47-56.
17. Волченскова Н.И. Комментатор средство автоматизированного построения и преобразования комментариев и документации библиотечных подпрограмм.- В кн.: Вопросы конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1983, с.72-95.
18. Волченскова Н.И. Структура и организация автоматизированной системы построения, поддержания и распространения Библиотеки программ НИЩ МГУ.- В кн.: Вычислительные методы и программирование. Вып.XXXIII.- М.: Изд-во Моек, ун-та, 1980, с.204-2101.
19. Гайсарян С.С., Кабанов М.И, ФЛАН: Промежуточный язык Генератора программ.- В кн.: Вычислительные методы и программирование. Вып.XXII.- М.: Изд-во Моск. ун-та, 1974, с.27-40.
20. Горелик A.M. Синтаксические и семантические отличия некоторых версий языка ФОРТРАН.- М.: Препринт ИПМ АН СССР ,М 26, 1976.22 с.
21. Государственные Стандарты Союза ССР. Языки программирования ФОРТРАН и Базисный ФОРТРАН. Гост 23056-78, Гост 23057-78/Исп.: Александров А.Л., Кауфман В.Ш., Трифонов Н.П.- М.: ГК стандарtob CM СССР, 1978.- 103 с.
22. Грифитс М. Верификаторы и фильтры.- В кн.: Мобильность программного обеспечения. Под ред. Брауна П.- М. : Мир, 1980, с.42-60.
23. Дзержинский Ф.Я. Об общих модулях информационной технологии.-В кн.: Технология программирования. Тезисы докладов I Всесоюзной конференции. Секция Д.- Киев: ИК АН СССР, 1979, с.12-13.
24. Жоголев Е.А., Трифонов Н.П. Курс программирования.- М.: Наука, 1971.- 400с.
25. Залеткин С.Ф. Коллекция дифференциальных уравнений для тестирования вычислительных алгоритмов и программ. В кн.: Вопросы конструирования библиотек программ.- М.: Изд-во Моск. ун-та, 1983, с.54-71.
26. Карпов В.Я. Алгоритмический язык ФОРТРАН.- М. : Наука, 1976.192 с.
27. Карпов В.Я., КЬрягин Д.А., Самарский A.A. Принципы разработки пакетов прикладных программ для задач математической физики.-та и Ш, 1978, т.18, №2, с.458-467.
28. Кахро М.И., Мяннисалу М.А., Саан Ю.П., Тыугу Э.Х. Система программирования ПРИЗ.- Программирование, 1976, M, с.38-46.
29. Китов А.И., Ириницкий H.A. Электронные цифровые машины и программирование.- М.: Физматгиз, 1961.- 572 с.
30. Криницкий H.A., Миронов Г.А., Фролов Г.Д. Программирование.-М.: Наука, 1966.- 599 с,
31. Ляшенко В.Ф. Программирование для цифровых вычислительных машин М-20, БЭСМ-ЗМ, БЭСМ-4, М-220.- М.: Советское радио, 1967.432 с.
32. Макарычева С.С., Рыбаков И.Р., Фаянс Л.И. Общая библиотека алгоритмов на АПГОЛе в мониторной системе "Дубна" для ЭВМ БЭСМ-6.- В кн.: Развитие программного обеспечения БЭСМ-6.-М.: ВЦ АН СССР, 1975, с.17-18.
33. Манько Г.П. Язык директив для Генератора программ "ПОЯЕ-З".-Харьков: Препринт Инст-та проблем машиностроения АН УССР, MI8,1979.- 37 с.
34. Мартин Дж. Организация баз данных в вычислительных системах.-- М.: Мир, 1980.- 662 с.
35. Математическое обеспечение ЕС ЭВМ. Вып.1-4, 10-12, 16-18.-Минск: ИМ АН БССР, 1973-1979.
36. МВК "Эльбрус-Г'. Общее системное программное обеспечение. Система программирования ФОРТРАН. Описание языка. ДПЭ.01003-013501.- М., 1981.- 109 с.
37. Мобильность программного обеспечения. Под ред. Брауна П.-М.: Мир, 1980.- 336 с.
38. Пакет прикладных программ САФРА. Системное наполнение/Горбунов-Посадов М.М., Карпов В.Я., Корягин Д.А. и др.- М.: Препринт ИПМ АН СССР, № 85, 1977.- 27 с.
39. Программное обеспечение СМ ЭЕМ. Операционная система с разделением функций РАФОС. ФОРТРАН. Описание языка, т.5, кн.2, ч.4. 2/Б/4.072.202-35.- М., 1980.- 172 с.
40. Технология программирования. Тезисы докладов I Всесоюзной конференции. Секция К.- Киев: ИК АН УССР, 1979,- 43 с.
41. Технология программирования. Тезисы докладов I Всесоюзной конференции. Секция Д.- Киев: ИК АН УССР, 1979.- 33 с.
42. Уилкс М., Уилер Д., Гилл С. Составление црограмм для электронных счетных машин.- М.: ИЛ, 1953.- 208 с.
43. Форд Б. Эволюция подхода к проблеме переноса программного обеспечения.- В кн.: Мобильность программного обеспечения.-М.: Мир, 1980, с.272-286.
44. Форсайт Дж., Малькольм М., Моулер К. Машинные методы математических вычислений.- М.: Мир, 1980.- 279 с.
45. Шура-Бура М.Р. Интерпретирующая система ИС-2 для М-20.
46. В кн.: Вопросы математической эксплуатации вычислительных машин. Вып.2. Интерпретирующая система и элементарные функции.- М.: ВЦ АН СССР, 1965, с.5-24.
47. Энциклопедия Кибернетики. Киев: Главная редакция украинской советской энциклопедии, 1974, т.1.- 607 с.
48. Язык программирования ДЦА(предварительное описание).- М.: Финансы и статистика, 1981.- 190 с.
49. American national Standard Fortran ANSI X3.9 - 1966, American National Standards Institute, New York, 1966«
50. Cardenas A.F., Karplus W.J. PDEL A language for partial differential equations.- Communications of the ACM, 1970, vol.13, N 3» p.184-191•
51. Ford B., Sayers D.K. Developing a Single Numerical Algorithms Library for Different Machine Ranges.- Ins ACM Transactions on Mathematical Software.- NAG» Oxford University, England, 1976, vol.2, N 2, p.II5-I3I.
52. FORTRAN vs. Basic FORTRAN.- Communications of the ACM, 1964, vol.7, N 10, p.590-625
53. Fox P.A., Hall A.D., SChîryer N.L'. The PORT Mathematical Subroutine Library.- Computing Science Technical Report, Bell Laboratories, Murray Hill, 1976, N 47.
54. IBM System/360 Scientific Subroutine Package(360A-CM-03X) Version II Programmer^ Manual, IBM Systems Reference Library, H20-0205 2. New York, 1967.
55. IMSL Library 1,2,3 Reference Manual, vol.1 and 2, Fifth Edition, IMSL. Houston, Texas, 1975.
56. Kerpelman C. Clarification of FORTRAN Standarts. Second report.- Communications of the ACM, 1972, vol.14, N 10, p.628-642.
57. Los Alamos Library.- Los Alamos Scientific Laboratories, I97I.
58. Macleod I.A. MP/I A FORTRAN macroprocessor.»- The Computer Journal, I97I, vol.14, N 3, p.229-231.
59. Newbery A.C.H. The Boeing Library and Handbook of Mathematical Routinè.- In: Mathematical Software. J.R. Riceed., Academic Press, New York, 1971.
60. Rice J.R. On the Construction of Polialgorithms for Automatic Nimerical Analysis.- Pardue University, Nest Lafayette, Indiana, 1975, p.301-313.
61. Rice J.R., Rosen S. NAPSS A Numerical Analysis Problem Solving System.- In: Proceedings of the ACM 73, Annual Conference, Atlanta, 1973» p.299-303»