М.М. ГОРБУНОВ-ПОСАДОВ - Системное обеспечение пакетов прикладных программ (1184225), страница 14
Текст из файла (страница 14)
стремится охватить возможно более широкий круг задач,и, следовательно, не должно, вообще говоря, включать в себя специальныесредства, учитывающие особенности вычислительного эксперимента,связанные, в частности, с уже упоминавшимися многомодельностью имноговариантностью.Отмеченные сложности организации программирования задачвычислительного эксперимента на базе средств штатного программногообеспечения закономерно подводят нас к мысли о создании специальныхсистемных средств. Такие средства должны обеспечивать хранение,пополнение и модификацию программного фонда, а также простой, гибкий ибыстрый механизм сборки из отдельных модулей фонда различныхвариантов программ для конкретных расчетов.Среди других задач, которые могли бы быть решены с помощьюспециальных системных средств, можно указать поддержку использованиянестандартизированного программного фондаиинформационноеобслуживание.Проведение вычислительного эксперимента нередко начинается не «снуля», а в условиях, когда определенная часть программного фонда ужесуществует.
Эту частьсоставляют программы, созданные в ходе предшествовавших расчетныхработ. Среди них могут встретиться нестандартизированные программы, т.е.программы, для которых не планировалось совместное использование врамках решения одной сложной задачи. Системные средства могли бы облегчить использование в расчетах подобных программ.Поскольку объем и сложность программного фонда весьма велики,проводящему эксперимент прикладному программисту приходится иметьдело с большим количеством различных характеризующих этот фондданных. В частности, ему требуются сведения о составе и особенностяхверсий расчетных программ, использовавшихся на различных «витках»цикла вычислительного эксперимента, функционально-эксплуатационныехарактеристики отдельных входящих в фонд модулей, значения параметров,задававшиеся при проведениии того или иного расчета, и т.д.
Специальныесистемные средства могли бы, с одной стороны, обеспечивать пользователяинформацией о составе и характеристиках программного фонда, а с другойстороны, - поддерживать целостность пары «программы - документация»,стимулируя и облегчая коррекцию документации по мере внесенияизменений в программы. Трудно переоценить важность такого рода услуг всреде вычислительного эксперимента, где непрерывно идет пополнение иизменение программного фонда.И все же главная проблема программирования задач вычислительногоэксперимента - организация конструирования расчетных версий программ.Одно из наиболее убедительных решений этой проблемы предлагает проектOLYMPUS, которому посвящен следующий раздел.2.4. Проект OLYMPUSИстория решения с помощью ЭВМ задач вычислительногоэксперимента насчитывает уже свыше трех десятилетий.
За это времянакоплен весьма значительный опыт организации их программирования,позволяющий говорить о существовании технологии программированиязадач вычислительного эксперимента. Многие особенности этой технологиибыли обобщены и развиты в проекте OLYMPUS [63,64].Проект OLYMPUS представляет собой набор соглашений,регламентирующих оформление, документирование и организациювзаимодействия и использования программ. Можно выделить следующиеосновные цели, которые преследуют эти соглашения: повышениенаглядности программ; упрощениеэксплуатации сложного программного фонда; расширение возможностейобмена программным материалом. Рассмотрим, какие средства предлагаетпроект OLYMPUS для достижения этих целей.Повышению наглядности служат прежде всего соглашения, связанные соформлениемидокументированиемпрограмм.Впрограммах,разрабатываемых в рамках проекта OLYMPUS, строго фиксированы форма иместо комментариев, определяющих назначение программы, используемые вней алгоритмы и т.д.
Предусмотрены средства наглядного представлениявнутренней рубрикации программы, четко разграничивающие относительносамостоятельные ее фрагменты. Разработаны методы классификации всехприменяемых в эксперименте программ. Существуют соглашения о формеиспользуемых в программах идентификаторов: по первой букве идентификатора можно определить не только тип, но и некоторые функциональныехарактеристики соответствующей переменной.Эти, а также некоторые другие соглашения по оформлению идокументированию дают возможность пользователю, знакомому с проектом,легко ориентироваться в своих и чужих программах, без труда определятьназначение любой программы, быстро отыскивать и разбирать необходимыеему фрагменты алгоритмов и т.д. Кроме того, разработаны средствасистемной поддержки документирования, позволяющие собрать в одномформируемом документе все комментарии определенного вида,«рассыпанные» по многочисленным программам.
Тем самым текстыпрограмм превращаются в основу документации, благодаря чему во многихслучаях удается избежать часто встречающейся рассогласованности междупрограммами и сопровождающими их документами.Вторая цель проекта OLYMPUS, наиболее существенная с точки зрениясистемного программного обеспечения вычислительного эксперимента, упрощение эксплуатации сложного программного фонда. Она достигается спомощью соглашений об организации взаимодействия и использованияхранящихся в фонде программ.Эти соглашения могут служить убедительной иллюстрацией примененияописанного в предыдущей главе каркасного подхода к конструированиюпрограмм из модулей. Программа, выполняющая конкретный расчет,моделирующий исследуемое физическое явление, представляется в видефиксированного набора составных функциональных частей, образующихкаркас программы, называемый здесь схемой счета.
За каждой из такихчастей закрепляется строго определеннаячасть работы по расчету и характеризующее ее имя, называемоефункциональным именем. Например, ENERGY - часть, обеспечивающаярасчет энергии, STEPON - основной шаг вычислений и т.д. Кроме того,детально прорабатываются и фиксируются способы взаимодействия междувыделенными таким образом частями. После этого для любой изфункциональных частей может быть написано, вообще говоря, несколькоразличных реализации, или модулей, из которых в любом конкретномрасчете будет участвовать лишь один.В результате переход к следующему витку цикла вычислительногоэксперимента сводится, с точки зрения программной реализации, к подменеопределенного модуля (модулей), использовавшегося на предыдущихвитках.
Если принятое на данном витке цикла решение реализуется впервые,соответствующий модуль должен быть написан заново; если же требуетсяприменявшийся ранее метод, можно воспользоваться модулем, написаннымдля него в свое время и хранящемся в программном фонде.Предлагаемая дисциплина работы требует, безусловно, определенныхтрудозатрат, связанных с тщательной разработкой каркаса программы наранней стадии программирования вычислительного эксперимента. Но этитрудозатраты в полной мере окупаются простотой последующегорасширения и использования программного фонда.
Ведь развитие фондаидет здесь безболезненно, не затрагивая текстов написанных ранеепрограмм!Третья цель проекта OLYMPUS - расширение возможностей обменапрограммным материалом между различными лицами и организациями,занимающимися задачами вычислительного эксперимента в одной и той жеили близких областях. Дело в том, что до появления этого проекта вкачестве объектов обмена выступали, в основном, либо большиезаконченные программы, решающие конкретную задачу или класс задач,либо подпрограммы и составленные из них библиотеки, реализующиеотдельные математические методы.
Применение соглашений OLYMPUSдает возможность обмениваться практически произвольными фрагментамипрограмм, конечно, при условии, что и производитель, и потребительиспользуют один и тот же каркас. Так, например, объектом обмена могутбыть модули, обеспечивающие ввод и начальную обработку исходныхданных, расчет уравнения энергии, и вообще реализации любых частей,предусмотренных каркасом. При этом изменения, требующиеся дляадаптации полученных частей к уже существующим у потребителяпрограммам, минимальны и не затрагивают программ потребителя.Простота адаптации достигается, прежде всего за счет применения всемиучастниками обменов программным материалом единого каркаса программы- схемы счета. Кроме того, все работающие в системе соглашений OLYMPUSпрограммы пишутся на диалекте Фортрана, воспринимаемом большинствомсуществующих трансляторов.