автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Объектно-ориентированная методология эволюционной разработки математического обеспечения

доктора физико-математических наук
Семенов, Виталий Адольфович
город
Москва
год
1998
специальность ВАК РФ
05.13.11
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Объектно-ориентированная методология эволюционной разработки математического обеспечения»

Автореферат диссертации по теме "Объектно-ориентированная методология эволюционной разработки математического обеспечения"

РОССИЙСКАЯ АКАДЕМИЯ НАУК ИНСТИТУТ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ

гТБОД

- о : - - На правах рукописи

•г. ит УДК 681.3

СЕМЕНОВ Виталии Адольфович

ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МЕТОДОЛОГИЯ ЭВОЛЮЦИОННОЙ РАЗРАБОТКИ

МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ

Специальность 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей

Автореферат диссертации на соискание ученой степени доктора фтико-матсматичсских наук

Москва - 1998

Работа выполнена в Институте системного программирования Российской Академии наук.

ОФИЦИАЛЬНЫЕ ОППОНЕНТЫ:

Доктор физико-математических наук, профессор Любимский Эдуард Зиновьевич

Доктор физико-математических наук, профессор Арлазаров Владимир Львович

Доктор физико-математических наук, профессор Третьяков Алексей Анатольевич

ВЕДУЩАЯ ОРГАНИЗАЦИЯ:

Научно-исследовательский вычислительный центр Московского государственного университета им. М. В. Ломоносова

Защита состоится "_"_ 1998 г. в _ часов на

заседании Специализированного Совета Д.200.50.01 по защите диссертаций на соискание ученой степени доктора наук при Институте системного программирования РАН по адресу:

109004, Москва, ул. Б. Коммунистическая, д. 25.

С диссертацией можно ознакомиться в библиотеке Института системного программирования РАН.

Автореферат разослан "_"_1998 г.

Ученый секретарь

Специализированного Совета Д.200.50.01 кандидат физико-математических наук доцент

С.П. Прохоров

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Объектно-ориентированный подход (ООП), получивший широкое распространение как мощная программная технология, составляет в настоящее время весомую альтернативу традиционным процедурным методам. Популярность ООП во многом обусловлена концептуальной целостностью и более сильной формой структуризации программного обеспечения (ПО), разрабатываемого нл его основе. В конечном итоге использование ООП выражается в более быстрой и надежной разработке программ, а также в широких эволюционных возможностях разрабатываемого ПО при создании новых приложений. Данные обстоятельства оказываются решающими в условиях динамично развивающихся отраслей программирования.

С конца 1960-х - начала 1970-х годов ведутся достаточно интенсивные исследования в области создания объектно-ориентированных операционных систем, баз данных, графических интерфейсов. В значительно меньшей мере внимания уделяется вопросам применения объектных технологий к математическому и прикладному 110, предназначенному для решения задач вычислительного характера.

До сих пор наиболее употребительным языком для вычислительных приложений считается Фортран. Значимое многообразие высокоинтеллектуальных математических библиотек, созданных на этом языке в гечение трех последних десятилетий, а также несомненные традиции прикладной пакетной деятельности являются существенными факторами, сдерживающими широкое внедрение объектных технологий в данную область.

Настоящая диссертационная работа посвящена научным и практическим аспектам создания численного математического и прикладного ПО на основе объектно-ориенгированной технологии. Работа носит многоплановый характер и охватывает как теоретические методологические вопросы создания математического обеспечения (МО), так и практические результаты разработки конкретных программных систем: математической объектно-ориентированной библиотеки общего назначения и инструментальной объектно-ориентированной среды для построения систем автоматизированного проектирования и моделирования (САБ/САМ) в различных предметных областях науки и техники.

Целью диссертационной работы является выработка общей объектно- ориентированной методологии программирования

вычислительных задач и методов их решения, а также апробация методологии при построении конкретных функционально законченных вычислительных интерактивных графических приложений. В определенном смысле работа представляет собой попытку развития ООП на широкие и практически важные классы численного математического и прикладного ПО.

Актуальность работы определяется прежде всего возрастающими потребностями системных и прикладных программистов в современном МО, которое наряду с общепринятыми требованиями функциональности, эффективности, мобильности удовлетворяло бы также условиям множественного использования, обеспечивающим его широкие эволюционные возможности. Данный аспект является принципиальным для МО, которое обычно претерпевает значительные изменения в ходе своего развития и уже на стадии проектирования должно предусматривать необходимые инструментальные возможности, которые бы позволили в дальнейшем относительно просто расширять проблемный и алгоритмический репертуар, модифицировать и адаптировать его к новым задачам и предметным областям, легко интегрировать математические средства между собой и с другими программами при создании функционально законченных приложений.

Распространенные в настоящее время математические библиотеки и пакеты прикладных программ представляют собой в основном результат процедурно-ориентированной технологии, которая в значительной степени способствовала их узкой специализации — специализации как по видам задач и методам их решения, так и по типам данных, используемых при постановке и решении задач.

Подобная специализация существенно затрудняет дальнейшее развитие этих программ, а главное — использование программ в прикладных системах. Переход к более общим универсальным библиотекам, подобным NAG или IMSL, также не решает эту проблему. Ввиду чрезвычайно широкого многообразия прикладных задач и алгоритмических вариантов их решения, развитие и использование таких библиотек путем включения в них все новых и новых процедурных модулей являются нереалистичными и тупиковыми.

Решение проблемы универсальности в данном случае мы связываем с привлечением идей ООП и обеспечением широких инструментальных возможностей МО. Инструмеитальиость рассматривается нами как важнейший принцип построения МО, претендующего на эффективное множественное применение.

Анализ возможностей применения ООП к МО и выработка общей объектно-ориентированной методологии программирования,

охватывающей такую развитую фундаментальную научную область, какой является вычислительная математика, позволила бы придать проводимым в настоящее время многочисленным исследовательским и коммерческим проектам систематизированный характер и обеспечить их необходимой методологической основой.

Разработанные с использованием предложенной методологии математическая библиотека и инструментальная среда моделирования также отражают наметившуюся в последнее время тенденцию создания ПО на основе выделения и использования базовых объектно-ориентированных средств, оформленных в виде систем или библиотек классов и допускающих унифицированную разработку разнообразных программных приложений на единой концептуальной и инструментально» основе.

Полученные в работе результаты связаны главным образом с обобщением, систематизацией и комплексным использованием ООП применительно к численному математическому и прикладному ПО. К наиболее значимым новым научным результатам следует отнести следующие;

в предложена и формализована общая объектно-ориентированная методология эволюционной разработки численного МО, которая основывается на оригинальной объектной модели рассматриваемой предметной области и связанной с ней выделенной системой методик программирования,

• проведен объектный анализ типовых задач вычислительной математики, для которых предложена и разработана единая объектная классификация, служащая систематизированным представлением рассмотренных разделов математики и являющаяся конструктивной основой для реализации разнообразного МО,

« спроектирована и разработана математическая библиотека общего назначения с объектной архитектурой, сочетающей естественность организации, должный уровень эффективности и мобильности, а также широкие инструментальные возможности,

• на основе предложенной обобщенной объектной концепции численного моделирования, применимой к широкому спектру физических явлений и технических систем, спроектирована и разработана объектно-ориентированная инструментальная среда для создания CAD/CAM приложений в различных предметных областях науки и техники,

• предложенная методология, разработанное МО апробированы при создании рабочих прототипов CAD/CAM систем с открытой объектной архитектурой для параметрического геометрического проектирования и моделирования течении в трубопропроводных сетях,

® проанализированы проблемы, намечены пути исследований и развития разработанного МО как в направлении расширения его проблемного и методического репертуара, так и в направлении создания новых программных приложений.

Практическая значимость работы состоит в возможности использования предложенной методологии, а также разработанного на ее основе МО при создании разнообразных вычислительных приложений, включая научные и промышленные CAD/CAM системы. Принцип множественного использования, превалирующий в работе, существенно расширяет круг потенциальных практически значимых приложений, допускающих унифицированную разработку на основе предложенной методологии программирования. Особое значение имеют также доступность разработанного МО вместе с исходными текстами и документацией.

Апробация работы и публикации. Предложенная методология была успешно апробирована при реализации проектов Российского фонда фундаментальных исследований и федеральной целевой научно-технической программы "Информатизация России". Результаты диссертационной работы опубликованы в научной печати и докладывались на различных конференциях и семинарах: международной конференции "САПР" (г. Гурзуф, 1995), международной конференции "Новые информационные технологии в науке, образовании и бизнесе" (г. Гурзуф, 1996), семинарах Института системного программирования РАН, Института автоматизации проектирования РАН, Института прикладной математики РАН. Материалы диссертации использовались в учебных курсах, прочитанных автором в Московском государственном институте радиотехники, электроники и автоматики.

Структура и объем диссертации. Диссертация состоит из введения, трех глав, заключения и двух приложений. Работа изложена на 246 стр. и содержит 47 рисунков. Список литературы включает 142 наименования.

СОДЕРЖАНИЕ ДИССЕРТАЦИОННОЙ РАБОТЫ

В первой главе рассматриваются существующие математические библиотеки и распространенные методологии проектирования ПО, обосновывается перспективность применения объектной технологии к вычислительным программам и необходимость развития ООП на данный широкий и важный класс программ. В главе подробно излагаются основные идеи и принципы предложенной формализованной объектно-ориентировашюй методологии эволюционной разработки численного МО.

В первом разделе дается общая характеристика исследовательской и коммерческой деятельности в данной области, а также приводится развернутый обзор существующих математических объектно-ориентированных библиотек. Обсуждаются достоинства и недостатки конкретных программ, разработанных на основе ООП. Отмечается необходимость выработки единой объектно-ориентированной методологии

проектирования МО, охватывающей широкую вычислительную проблематику.

Во втором разделе обсуждаются наиболее распространенные методологии объектно-орнентированного анализа и проектирования ПО. Выделяется проблема объектной классификации как необходимый ключевой элемент применения любой подобной методологии. Более подробно освещаются основные идеи пионерской работы Г. Буча в силу ее особой важности для теории и практики программирования.

Несмотря на ценность рассмотренных работ, большинством авторов подчеркивается важность сочетания формальных способов проектирования с неформальными концептуальными подходами, учитывающими специфику конкретных предметных областей и прикладных задач. Во многом процесс объектно-ориентированного анализа и проектировать является творческой деятельностью и определяется субъективным представлением разработчика о роли выделенных абстракций, важности установленных классификационных отношений между ними и используемых механизмах взаимодействия объектов.

В третьем разделе проводится общий объектный анализ вычислительной проблематики. Обсуждаются вопросы интерпретации и конструктивного применения принципов ООП к численному МО. Отмечается предметная содержательность данных принципов и указываются эволюционные преимущества объектно-ориентированного МО.

Четвертый раздел посвящен рассмотрению предложенной объектной модели вычислительной математики. Модель определяет основные виды объектов и способы их информационного взаимодействия в рамках вычислительных приложений. Существенно, что входные и выходные данные задач, сами задачи и, наконец, алгоритмы их решения рассматриваются в качестве самостоятельных объектов приложений. Четверка понятий "раздел математики — математический объект — численная проблема —■ вычислительный алгоритм", реализуемая соответствующими классами модели Mathematics, Object, Problem и Algorithm, выбрана в качестве базовой и обеспечивает систематизированное и адекватное представление обсуждаемой предметной области.

Таким образом, предлагаемая объектная модель представляет собой систему четырех независимых суперклассов и их производных:

Model = {Mathematics,Object,Problem, Algorithm,

Sect„...,Sectk ,Obj},...,Obj„Prob„...,Probn,,Alg1,..„Alg„}' Производные классы модели строятся в результате множественного наследования от базовых и образуют развитую классификационную иерархию.

Суперкласс Mathematics является вершиной иерархии, которая продолжается наследуемыми классами разделов математики Sect. -< Mathematics. Проблемные и алгоритмические классы Probt < Problem, AIgj (Prob f)< Algorithm имеют строгую предметную

принадлежность и поэтому определяются в соответствующих разделах Probj -< Sect,, Algj -< Secti. Классы математических объектов

Objj ■< Object не несут строгую предметную нагрузку и могут

определяться в любом месте иерархии Obj. < Mathematics, включая

разделы.

Математические, проблемные и алгоритмические классы образуют собственные развитые иерархии, причем в качестве классификационных признаков могут выступать как математические и вычислительные свойства объектов, так и особенности их программной реализации. В любом случае отношения наследования между классами возникают при установлении между их объектами отношений типа "общее-частное" или "целое-часть*'.

На основе проведенного объектного анализа типовых задач вычислительной математики была разработана единая объектная классификация, фрагмент которой приведен на рис. 1. Классификационная иерархия определяет основные отношения наследования между классами вычислительной математики. В скобках указаны возможные дополнительные отношения наследования. Интересно отметить, что б ней сочетается три различных классификационных подхода. Концептуальное объединение, прототипирование и классическое распределение по категориям применяются соответственно на верхних, средних и нижних уровнях классификационной иерархии.

Для наглядности принципов объектной классификации раздел линейной алгебры в приведенном фрагменте представлен подробно. Разработанная же общая классификация насчитывает более пяти сотен классов и охватывает разные разделы вычислительной математики, такие как анализ функций, безусловную оптимизацию, дифференциальные уравнения.

С выделенными классами объектов в рамках модели связывается несколько характерных видов сообщений, которыми обмениваются объекты в вычислительных приложениях и которые определяют общий механизм их взаимодействия. Сообщения вида

g(obj,OPERA ТЕ_OBJECT,obj,,obj2,...,aig), obj eObject g(prob,SET_PROBLEM,obj\,obj2,...), prob eProblem g(prob, SOL VE _ PR OBL EM, alg, objx ,obj2,...), prob e Problem g(alg, A PPL Y _AL GOR IT HM, prob, obj obj 2,...), alg eA Igorithm

посылаются соответствующим математическим, проблемным и алгоритмическим объектам с целью активизации методов постановки и решения задач, инкапсулируемых их классами. Входными и выходными параметрами сообщений являются ссылки на объекты, участвующие в постановке и чнспенном решении задач. Например, в сообщениях первого айда указываются математические объекты, являющиеся операндами и результатами выполняемой операции, а также возможный вспомогательный алгоритмический объект, определяющий способ выполнения операции.

В пятом разделе обсуждаются принципы обьекпш-ориентированного программирования задач и методов вычислительной математики. Положения ООП — принципы инкапсуляции, наследования и полиморфных! примет телыю к предложенной объектной модели обнаруживают ряд методик программирования, которые носят непротиворечивый характер и составляют единый конструктивный подход к реализации МО. Выделенные и формализованные методики программирования отражают концептуальные и методологические принципы вычислительной математики и по существу представляют собой парадигмы осмысления и описания самой вычислительной математики как области знаний со своей системой понятий, проблематикой, подходами, идеями, которые в данном случае интерпретируются в терминах ООП и моделируются системой классов объектов.

Например, принцип предметной систематизации, принятый в математике, может быть положен в основу практической методики организации объектно-ориентированного МО. Методика предусматривает использование отношений наследования между проблемными, алгоритмическими классами и классами предметных разделов, в которых данные задачи возникают. Существенно, что при этом компоненты МО оказываются организованными и структурированными тем же самым образом, каким систематизированы сами задачи п методы вычислительной математики.

Другим содержательным принципом вычислительной математики является принцип объектной классификации. Обычно классификация объектов возникает в тех случаях, когда требуется проанализировать близкие постановки задач, отличающиеся типами участвующих в них родственных математических объектов. Идея классификации естественно реализуется с использованием ООП, который позволяет представить этношения общности между объектами отношениями наследования между IX классами. При этом производные классы наследуют поведение эазового, конкретизируя свойства его объектов и расширяя набор эпераций, применимых к ним (см. рис. 1).

* Mathematics

4 LinearAlgebra

4 Vector (Object)

4 DenseVector •

* BandVector 4 ListVector

4 IndexVector 4 Matrix (Object)

* GsneralMatrix

4 NonSymmetricMatrix

4 DenseFilllnMatrix

4 DenseMatrix 4 M3trix2 4 Matrix3 4 Matrix4

4 VectorBasedRowMatrix<DenseVector> 4 VectorBasedColumnMatrix<DenseVector> 4 BandFilllnMatrix

4 BandMatrix 4 TriDiagonalMatrix 4 LowerTriangularMstrix 4 UpperTnangularMatrix 4 UpperHessenhergMatrix 4 VectorBasedRowMatrix<BandVector> 4 VectorBasedColumnMatrix<BandVector> 4 VectorBasedDiagonalMatrix<DenseVector> 4 FrontalMatrix 4 BlockFilllnMatrix 4 ChaoticFilllnMatrix

4 CoordinateMatrix 4 RowMatrix 4 ColumnMatrix ' 4 KnutMatrix

4 VectorBasedRowMatrix<ndexVector> 4 VectorBasedColumnMatrix<indexVector> 4 VectorBasedRowMatrix<LisfVector> 4 VectorBasedColumnMatrix<UstVector> 4 SpecialNonSymmetricMatrix 4 CirculantMatrix 4 VandermondeMatrix 4 TocplitzMatrix 4 JordanMatrix 4 SymmetricMatrix(Hermitian)

4 SpecialSymmetricMatiix 4 ElementaryMatrix

4 IdentityMatrix 4 BackwardldenticyMatrix 4 DiagonalMatrix

4 ScalingMatrix 4 PermutationMatrix

4 TranspositionMatrix 4 MultiRankModificationMatrix 4 FrobeniusMatrix

4 Frobenius ColumnMatrix

4 FrobeniusColumnUpMatrix 4 FrobeniusColumnDownMatrix 4 FrobeniusRowMatrix

* FrobeniusRowLefiMatrix

ф FrabeniusRowRightMatrix

* OithogonalElementaryMatrix

Ф Unussholder,Matrix Ф GivensRofrtionMatrix

* JacobiRotationMitrix

* BasicCirculant

Ф ForwanfToeplitz

* BackvardToeplitz

* LinearSystem (Problem)

* LinearSystemAlgorithm (Algorithm)

* EigenValocProblem (Problem}

* Finer)VnliipAlgor'-lhrn (Algorithm)

ф FaciorizationAlgoriUim (Algorithm)

* NonSymmetricFactorizationAlgorithm

* LUAlyoiithm

* LURowL'pAlgorithtn

* LURowDowri Algorithm

* LUColumnUpAlgorithm

* LUColumnOownAlgorithm ф LDUAIgorithm

* GaussJordanAlgorithm

* OrthogonalFactorizationAlgortthm

* QRFactorizationAlgorithm

Ф HouseholderQRAIgorithm * GivensQRAIgorithm

* LQFactorizztion Algorithm ) SymmetricFactorizationAlgorittim

* LLTCholeskyAlgorithm

* LDLTCholsskyAlgonthm

t OrthogonalSymmetricFactorizationAlgorithm

* JacobiQRAIgorithm

4 FunctionAnalysis ф Optimization

* OrdinaryDifferentialEquations

* ScientificDomain

ф Chemistry

* Physics

Ф DiscreteSystzmSimulation

* CircuitSimulation

* ParametricGeometricModeling

* PipingSystem

* FiniteElementAnalysis

* FluidA eroDynamics ф HeatTransfer

* SttessAmlysis

i Resource (Object) t Tolerance (Object)

* Object

ф Problem

* Algorithm

ф DirectAlgorithm ф IterativcAlgorithm

Рис.1 Фрагмент математической объектной классификации

Заметим, что конкретизация свойств математических объектов приводит обычно к специализации алгоритмов, реализующих операции над ними более эффективным образом. Да1шая возможность обеспечивается полиморфностью методов, которые могут переопределяться в производных классах с учетом математических, вычислительных свойств частных объектов, особенностей представления их данных и деталей программной реализации. В случае неоднозначного задания типа математического объекта выбор необходимой реализационной версии операции осуществляется автоматически.

Далее подробно обсуждаются выделенные методики программирования, соответствующие следующим принципам вычислительной математики:

• предметная систематизация,

• объектная классификация,

• проблемная классификация,

• алгоритмическая классификация,

• проблемная специализация вычислительных алгоритмов,

• сочетание численных и аналитических методов,

• построение многопараметрических семейств,

• применение алгоритмической редукции,

• построение декомпозиционных методов,

• организация комбинированных стратегий.

При рассмотрении методик приводится их формальное описание с использованием введенной объектной модели. Практическое применение методик иллюстрируется примерами объектно-ориентированного программирования конкретных вычислительных задач.

Наконец, в заключительном шестом разделе приводится возможная поэтапная схема разработки МО на основе предложенной методологии, а также обсуждаются некоторые практические аспекты ее применения. В частости, рассматриваются вопросы ведения библиотечной деятельности в контексте эволюции МО. Внимание уделяется также проблемам эффективности и универсальности МО, вопросам тестирования, организации экспертных средств и информационного обеспечения.

Вторая глава посвящена результатам исследований, проведенных в рамках проекта по разработке математической объектно-ориентированной библиотеки общего назначения.

Проект преследовал собой сразу несколько целей: во-первых, апробировать предложенную методологию на широких классах задач, взятых существенно из разных разделов вычислительной математики, во-вторых, выработать практические методики программирования конкретных вычислительных задач и, в-третьих, разработать математическую библиотеку на языке Си++, которая, кроме своего непосредственного

назначения — решения стандартных математических задач стандартными методами, могла бы служить базовой инструментальной средой для разработки самого разнообразного математического и прикладного ПО. В проект? тс ставилась цель охватить наибольшее число вычислительных задач и реализовать наиболее полный перечень численных методов для их решения. Главное внимание уделялось широким инструментальным возможностям, которые позволили бы развивать библиотеку в любом необходимом направлении.

В первом разделе рассматриваются назначение и общие принципы организации математической библиотеки. Реализованная версия библиотеки предназначена для решения стандартных вычислительных задач линейной алгебры, анализа ф>нкций и нелинейной безусловной оптимизация. Библиотека представляет собой систематизированную коллекцию программных классов на языке Си < f и строится как единая иерархия наследуемых математических, алгоритмических и проблемных классов в соответствии с разработанной объектной классификацией.

Во втором разделе описываются основные компоненты библиотеки. Суперкласс Mathematics реализует общесистемные функции, связанные с обеспечением доступа к математическим и машинно-зависимым константам, анализом и обработкой ошибок, управлением потоками ввода/вывода, сбором статистики и информационной помощью. Наследуемые классы разделов IJnearAlgebra, I?unctionAnalysis, Optimization конкретизируют их, обеспечивая предметную систематизацию компонентов библиотеки.

К системным отнесены также классы Tolerance, Resource, которые используются для представления и оперирования вычислительной точностью и ресурсами на основе некоторых обобщенных критериев. Так, класс Tolerance позволяет манипулировать одновременно со значениями абсолютной, относительной и пороговой точности.

Несмотря на многообразие вычислительных алгоритмов, часто они строятся аналогичным образом, генерируя некоторую последовательность приближений или вспомогательных редуцируемых представлений задачи вплоть до удовлетворения условий останова. Отмеченная общность обусловила организацию самостоятельного абстрактного класса вычислительных алгоритмов Algorithm и реализацию конкретных алгоритмов на его основе.

Поскольку точность и затраты на решение задачи являются неотъемлемыми атрибутами любого вычислительного процесса, класс инкапсулирует объекты, определяющие требуемую и достигнутую точность, а также ресурсы, отведенные на решение задачи и реально затраченные. Класс реализует необходимые методы доступа к указанным членам-данным и методы их совместного анализа.

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

Наследуемые классы DirectAlgorithm, IterativeAlgorithm конкретизируют понятие абстрактного алгоритма как прямого или итерационного, реализуя специфическим образом методы останова. Прямые алгоритмы завершаются после выполнения фиксированного числа шагов, зависящего от размерности исходной задачи, или же в случае возникновения какой-либо ошибочной ситуации. В итерационных алгоритмах останов осуществляется при условии достижении заданной точности, исчерпании отведенных задаче ресурсов или невозможности обеспечить сходимость итераций.

Использование рассмотренных системных классов позволяет унифицировать программирование различных видов задач и алгоритмов и придать модулям библиотеки единый стиль. Для наглядности рассмотрение основных системных классов библиотеки сопровождается фрагментами текстов программ.

Третий раздел посвящен описанию раздела библиотеки, предназначенного для постановки и решения задач линейной алгебры. Применение ООП в данном случае рассматривается как попытка унификации и интеграции матричного ПО, результатом которой должна стать единая среда программирования, допускающая работу с матрицами существенно различных видов при использовании всего арсенала методов линейной алгебры. Особое внимание уделяется практическим методикам программирования, которые были использованы при реализации данного раздела.

Центральными понятиями теории линейной алгебры являются вектор и матрица, поэтому выбор их в качестве основных программных объектов является достаточно естественным. Организация векторных и матричных классов с использованием механизма наследования, а также полиморфная реализация инкапсулируемых ими базовых операций (BLAS) и методов линейной алгебры составляют общий подход к разработке объектно-ориентированного матричного ПО.

Поскольку в приложениях могут встретиться вектора и матрицы различных видов, библиотека обеспечивает оперирование разнотипными объектами и предусматривает возможность реализации и включения в нее новых классов. С этой целью векторные и матричные классы организованы в виде самостоятельных иерархий с суперклассами Vector, Matrix, специфицирующими наиболее общие методы данных объектов. В частных наследуемых классах набор методов расширяется, а их реализация конкретизируется.

Например, абстрактный класс несимметричных матриц общего вида NonSymmetricMatrix, реализующий понятие произвольной вещественной матрицы А е/,(Ii",R "'), определяет следующие группы методов:

• получение и задание размерности матрицы,

« доступ и оперирование ненулевыми элементами матрицы,

• переехановха строк и столбцов матрицы,

» конструирование матрицы и и тератора эквивалентных типов, унарные и бинарные алгебраические операции,

" простые и арифметические операции присваивания,

в базовые операции линейной алгебры BLAS 2, 3,

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

В подразделах подробно обсуждаются принципы матричной классификации, охватывающей широкие семейства произвольных, специальных и элементарных матриц, и вопросы организации иерархий векторных и матричных классов. Значительная часть классов спроектированных иерархий программно реализована и включена в состав библиотеки, остальная часть может быть непосредственно реализована на основе базовых с использованием возможностей, предоставляемых ООП в целом и предложенной методологией в частности.

Библиотека предоставляет возможность оперирования векторами различных видов DenseVector, BandVector, IndexVeclor, ListVector, поддерживающих различные модели разреженности и отличающихся друг от друга способами организации данных для представления ненулевых элементов. В состав библиотеки включены также специализированные классы Vector2, VeclorS и Vector4, предназначенные для эффективной работы с векторами фиксированной низкой размерности, часто используемыми, например, в приложениях вычислительной геометрии.

Библиотека предоставляет также широкую коллекцию матричных классов для работы с плотными матрицами типа DenseFilllnMatrix, с ленточными матрицами BandFitllnMatrix и хаотически разреженными матрицами ChaoticFilUnMatrix. Последние, в частности, представлены в библиотеке конкретными классами CoordinateMatrix, RowMatrix, ColvmnMatrix и KnutMatrix, поддерживающими наиболее распространенные разреженные матричные форматы, а именно: координатный, строчный, столбцовый формата и формат Кнута.

Далее обсуждаются возможные способы объектной реализации эпераций BLAS, служащих алгоритмическим ядром большинства методов тинейной алгебры.

При описанной организации операции BLAS и использующие их методы линейной алгебры реализуются на верхних уровнях классовых

иерархий и автоматически наследуются всеми производными классами. Поэтому для поддержки нового вида вектора или матрицы достаточно построить производный класс и доопределить в нем простейшие операции доступа к элементам, являющиеся базовыми для BLAS. Однако такой способ может приводить к низкой эффективности кода из-за частого по отношению к числу арифметических операций виртуального использования простых операций индексирования элементов векторных й матричных операндов.

При необходимости BLAS всегда может быть переопределен более эффективным образом на более низких уровнях иерархии с учетом математических и вычислительных свойств частных объектов и особенностей представления конкретных данных. В этом случае высокая эффективность достигается за счет использования непосредственной адресации к элементарным операндам и исключения лишних вызовов функций.

Важно отметить, что данные способы не исключают, а дополняют друг друга. Обеспечение гибкого компромисса между эффективностью, универсальностью и трудоемкостью может рассматриваться в данном случае как одно из преимуществ эволюционной разработки МО. Однако принимая во внимание низкую эффективность первого способа и высокую трудоемкость второго, надежная разработка развитой матричной библиотеки только таким образом выглядит проблематичной.

В разделах работы рассматриваются два альтернативных подхода. При минимальных издержках по эффективности они обеспечивают относительно простую и унифицированную реализацию методов линейной алгебры для произвольных матричных и векторных типов. Результаты проведенного временного тестирования подтверждают это.

Первый подход основан на представлении произвольной матрицы массивом векторов и возможности алгоритмической редукции методов линейной алгебры к соответствующим векторным операциям. Поскольку методы линейной алгебры могут быть реализованы без конкретизации типов составляющих векторов, возникает возможность обобщенной матричной реализации с использованием механизма шаблонов классов, параметризуемых векторным типом. В приведенном фрагменте классификации VectorBasedRowMatrix, VectorBasedColumnMatrix и VectorBasedDiagonalMatrtx — шаблоны матричных классов, организованных из векторов по строкам, столбцам и диагоналям. Интересно, что при использовании небольшого набора типов векторов библиотеки удается эмулировать наиболее распространенные разрежешше матричные форматы.

Во втором подходе вместо операций индексирования используются более экономичные операции итерирования ненулевых элементов в портретах произвольных векторных и матричных объектов. Для матриц

такие операции обеспечивают навигацию по ненулевым элементам вдоль

строк, столбцов и диагоналей и могут служить базовыми для реализации пакета BLAS в виде библиотеки шаблонов функций, параметризуемых типами скалярных, векторных и матричных операндов. Заметим, что при этом исключается виртуальное использование операций итерирования, а сами операции просто и эффективно реализуются для каждого конкретного класса с учетом особенностей представления данных. В конкретных векторных и матричных классах методы BLAS реализуются через вызов соответствующего шаблона с указанием конкретных типов операндов.

Описанные подходы обладают рядом достоинств с точки зрения программирования родственных классов задач, отличающихся друг от друга только типами участвующих в них векторов и матриц. Однако они не упрощают программирование в тех случаях, когда требуется реализовать новый алгоритм или изменить уже запрограммированный алгоритм.

В подразделах обсуждаются возможности объектной интерпретации, классификации и реализации методов линейной алгебры. Следуя предложенной методологии алгоритмы линейной алгебры рассматриваются в качестве самостоятельных программных объектов и реализуются в виде иерархий наследуемых классов, определенных для каждого вида задач Основные алгоритмические компоненты при этом оформляются в виде методов, переопределяемых в производных классах в соответствии с особенностями частных алгоритмических семейств. Существенно, что при этом не требуется строгая конкретизация типов векторных и матричных объектов и алгоритмы допускают обобщенную реализацию.

Хотя идея объектной классификации применима в равной степени как к прямым, так и к итерационным методам линейной алгебры, главное внимание в работе уделяется объектной реализации прямых методов и прежде всего методов матричной факторизации, составляющих методическую основу решения СЛАУ, проблем собственных значений и задач о наименьших квадратах.

Как известно, прямые методы теоретически базируются на тех или иных элементарных матричных преобразованиях. Причем набор типов преобразований, необходимый для реализации большинства прямых методов, оказывается относительно небольшим. Данное обстоятельство послужило отправной точкой для объектной реализации прямых алгоритмов как композиций элементарных и сложных матричных преобразований. Преобразования представляются объектами классов элементарных и произвольных матриц, включенных в единую иерархию.

Для представления матричных факторизации и композиций преобразований разработан специальный контейнерный класс, который, кроме матричных данных, хранит дополнительную информацию о порядке

и способе воздействия соответствующими преобразованиями на объекты задачи.

Реализация прямых методов осуществляется путем организации алгоритмических классов, специфицирующих виртуальные методы конструирования матричных преобразований. В наследуемых классах данные методы конкретизируются в соответствии принципами построения конкретных алгоритмов линейной алгебры.

Разработанная объектная классификация включает в себя различные алгоритмические варианты методов Ш-, (¿11-, ЬО-разложения, разложения Холесского. Значительная часть методов факторизации программно реализована и включена в состав математической библиотеки. В библиотеку включены также алгоритмические классы для решения СЛАУ прямыми методами и методами, использующими предварительную факторизацию. Разработка классов для решения других видов задач линейной алгебры может быть осуществлена непосредственно на основе базовых.

Предмет четвертого раздела составляют результаты применения предложенной методологии программирования к задачам и методам другого раздела математики — анализа функций одной и нескольких переменных. Проводимый объектный анализ, проектирование и разработка МО охватывают задачи приближения функций, численного дифференцирования и интегрирования.

В подразделах подробно освещаются вопросы объектной интерпретации, классификации и реализации математических функций. Математические функции рассматриваются в качестве классифицированных программных объектов, для которых определены базовые операция их вычисления, а также методы решения некоторых связанных с ними вычислительных задач.

Обсуждаются принципы классификации математических функций. Обосновывается целесообразность выделения суперклассов скалярных и векторных функций одной и нескольких переменных в рамках единой иерархии функциональных классов. Подобная организация позволяет специфицировать интерфейсы функциональных объектов наиболее полным и содержательным образом, позволяя при этом реализовать некоторые методы уже на верхних уровнях классовой иерархии.

Например, суперкласс 8са1агМи1ИУагШеРипсИоп, соответствующий понятию скалярной функции нескольких переменных /(д предусматривает следующий набор базовых операций и методов:

• получение масштаба аргумента функции х 5 еЯ",

• определение точности вычислений,

• проверка принадлежности аргумента области определения функции х еЯсЯ",

» вычисление функции в заданной точке /(х),

* конструирование и вычисление граднеггта функции в заданной точке Vf(x), вычисление заданного элемента градиента,

« конструирование и вычисление матрицы Гессе функции в заданной точке V2 /'(.x), вычисление заданного элемента, строки матрицы Гессе,

«■ нычисление кратного интеграла j f(x)dx ,

Dcit'

• безусловная минимизация функционата min |/(.г) :д е R ' }.

Методы вычисления производных, интегралов, безусловной оптимизации реализуются уже в данном суперклассе Поэтому при создании конкретных классов с полным функциональным интерфейсом достаточно реализовать лишь простейшие операции вычисления самой функции. В некоторых случаях удается переопределить методы на нижних уровнях классовой иерахии более эффективным или точным способом с учетом особенностей частных функциональных семейств.

Отметим, что консТфуирбвшше и вычисление производных функции осуществляется по ссылкам на абстрактные типы. Это- позволяет не конкретизировать модели векторной и матричной разреженности для производных функций, которые могут встретиться в конкретных приложениях.

Аналогичным образом строятся интерфейсы других функциональных суперклассов. Главные отличия связаны со способами представления производных и постановками задач, в которых участвуют функции соответствующих типов.

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

Особое внимание уделяется организации классов многочленов, имеющих важное теоретическое и практическое значение для численного анализа. Многочлены рассматриваются в качестве специфических функциональных объектов класса Polynomial, наследуемого от ScalarUniVariateFunction, для которых определены дополнительные методы интерполяции и аппроксимации. Сами задачи приближения интерпретируются при этом как задачи конструирования полиномиальных объектов соответствующих типов по заданной сеточной функции.

Ввиду многообразия многочленов, встречаемых в приложениях, их классы также организуются в виде иерархии с вершиной в Polynomial. Разработанная иерархия включает в себя семейства канонических степенных многочленов, классических интерполяционных многочленов, систем ортогональных многочленов, сплайнов, тригонометрических и специальных геометрических многочленов. Например, семейство

классических интерполяционных многочленов представлено классами многочленов Лагранжа, Ньютона, Эрмита, Гаусса, Стерлинга, Бесселя.

В подразделах обсуждаются вопросы реализации конкретных полиномиальных классов, включенных в состав библиотеки. Указываются возможности более эффективной и точной реализации методов данных классов с учетом математических, вычислительных свойств частных семейств многочленов и особенностей их параметризации.

Определенное внимание в работе уделяется построению специальных классов интерпретации функций, позволяющих аналитически вычислять производные по заданному выражению функции. Для этого используются классы элементарных функций и вспомогательные классы функций-операций, в которых методы вычисления производных основаны на правилах дифференцирования суммы, разности, произведения, частного, композиции двух функций, а также обратной функции. Правила просто формализуются и программно поддерживаются классами интерпретации функций.

Далее проводится сравнение различных реализаций функциональных классов по времени выполнения базовых операций вычисления функций и производных. Проведенное временное тестирование подтверждает важность выделения сложных вычислительных операций в качестве базовых с целью минимизации затрат на виртуальный вызов методов и целесообразность объектной реализации сложных математических функций, встречаемых в приложениях.

В следующих подразделах рассматриваются вопросы объектного программирования методов численного дифференцирования и интегрирования функций. Особенностью применяемого подхода является включение в объектную систему алгоритмов численного дифференцирования и интегрирования, а также используемых ими многочленов, разностных схем и квадратурных формул. Данные объекты представляются в библиотеке соответствующими классами, организованными в самостоятельные иерархии.

Интерфейсы алгоритмических классов предусматривают соответствующие методы для вычисления производных и определенных интегралов, априорной (теоретической) и апостериорной (практической) оценки порядка метода и погрешности результата. Апостериорные оценки основываются на известных формулах Рунге и Эйткена. Существенно, что классы алгоритмов дифференцирования и интегрирования разработаны таким образом, чтобы обеспечить возможность проведения вычислений без какой-либо конкретизации типа приближающего многочлена, используемой разностной схемы или квадратурной формулы. Для последних, кроме методов вычисления, определены необходимые методы получения узлов и весовых коэффициентов, а также методы оценки главного члена погрешности.

Далее обсуждаются детали реализации классов разностных схем и квадратурных формул, наиболее часто используемых в приложениях и включенных в математическую библиотеку. К их числу относится реализованное семейство квадратур Кчотона-Котеса, основанное на равномерной интерполяции подынтегральной функции многочленами Лагранжа. Семейство включает классы квадратур, соответствующие классическим методам прямоугольников, трапеций, Симпсона, Ньютона. Другое реализованное семейство составляют квадратурные формулы гауссовского типа, основанные на выборе узлов в нулях ортогональных многочленов и обеспечивающие высокую алгебраическую точность.

В работе описывается обобщенная реализация квадратур Гаусса-Кристоффеля по типу заданного фундаментального ортогонального многочлена. При подобной реализации частные семейства известных квадратур Гаусса и Эрмита получаются автоматически при конкретизации типа заданного ортогонального многочлена как многочлена Лежачдра и Чебышева соответственно.

В пятом разделе описываются принципы организации и основные программные компоненты раздела математической библиотеки для решения задач нелинейной безусловной оптимизации и нелинейных систем алгебраических уравнений. Особое внимание уделяется вопросам применения объектно-ориентированной методологии программирования и инструментальным возможностям разрабатываемого МО.

Формулируются принципы проектирования оптимизационного МО, которые с одной стороны предусматривают различные способы задания функциональных отображений в прикладных задачах, а с другой стороны — унифицированную программную реализацию различных численных методов на единой инструментальной основе.

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

Как правило, практическая реализация методов оптимизации сопровождается многими алгоритмическими деталями, позволяющими повысить эффективность и надежность программ при решении конкретных классов задач. На основе проведенного анализа был выделен ряд инструментальных требований к разрабатываемым программам эптимизации, предусматривающих модификацию базовых математических средств. К ним относятся возможность применения различных глобальных стратегий, комбинирование методов линейного поиска с различными шгоритмами одномерной минимизации, включая алгоритмы экономичного

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

Сформулированные принципы в значительной степени обобщают алгоритмические варианты численной оптимизации. Несмотря на сложность программных обобщений, привлечение ООП в данном случае оказывается достаточно плодотворным. Описываемые в работе построения и реализованная версия библиотеки подтверждают это.

Раздел оптимизации включает в себя алгоритмические классы для решения задач нелинейной безусловной оптимизации, нелинейных задач о наименьших квадратах, одномерной оптимизации, нелинейных систем алгебраических уравнений общего вида и нелинейных уравнений. Поскольку алгоритмы решения данных задач являются итерационными, реализующие их классы строятся в результате множественного наследования от соответствующего раздела библиотеки и от базового класса итерационных алгоритмов. Выделение самостоятельных алгоритмических суперклассов для каждого из перечисленных видов задач связано с особенностями их постановки и решения, выражающимися в определении своих специфических данных и методов.

Заметим, что значительная часть методов, связанная с организацией всего вычислительного итерационного процесса, оценкой и контролем точности, анализом сходимости, контролем ресурсов, непосредственно реализуется в данных суперклассах. Остальные методы, к которым относятся метод вычисления самой итерации и метод сложностной оценки ресурсов, нуждается в уточнении в наследуемых классах.

В следующих разделах проводится объектная классификация методов оптимизации и решения нелинейных систем уравнений, а также обсуждаются особенности реализации конкретных алгоритмических семейств в виде иерархий наследуемых классов.

Разработанные иерархии охватывают широкие семейства численных методов. В частности, иерархия методов оптимизации включает в себя классы градиентных, релаксационных методов, методов сопряженных направлений и методов ньютоновского типа. Последние представлены в иерархии классами дискретных и квазиньютоновских методов.

Наследуемые классы последовательно уточняют отдельные алгоритмические компоненты, реализуя известные вычислительные методы.

Например, класс методов сопряженных нагсравпений реализует общую для методов данного семейства рекуррентную формулу вычисления направления спуска на основе предшествующего направления и текущего направления антиградиента. При этом чисто виртуально специфицируется лишь правило расчета коэффициента формулы. Поэтому реализация методов Флетчера-Ривза, Полака-Рибьера и Дэнюла, принадлежащих этому семейству, сводится к построению конкретных производных классов с единственным доопределенным методом расчета коэффициента формулы.

Аналсп"шым образом организованы классы методов ньютоновского типа с виртуально определенным методом вычисления матрицы Гессе. В наследуемых классах дискретных алгоритмов данный метод переопределяется в соответствии с используемым способом конечно-разностной аппроксимации данной матрицы, а в классах квазиныотоновских алгоритмов — в соответствии с используемой формулой пересчета по секущим. При описанной организации известные квазиньютоновские методы Пауэляа-Бройдена, Давидона-Флетчера-Пауэлла, Бройдена-Флетчера-Гольдфарба-Шанно, а также метод симметричной одноранговой модификации реализуются автоматически при определении в их классах единственного метода пересчета по секущим.

На аналогичных принципах строятся алгоритмические классы для решения других рассматриваемых видов задач. Классы для одномерной оптимизации и решения нелинейных уравнений, кроме непосредственного назначения, могут использоваться при решении многомерных задач в рамках подходов, известных как методы линейного поиска и методы доверительных областей. Поэтому разработанные иерархии включают в себя также специфические классы методов экономичного поиска с переопределенными правилами оценки точности решения. Практическая реализация данных правил основывается на известных принципах Гольдетейна, Армийо и Вольфе-Пауэлла.

В заключительном шестом разделе обсуждаются инструментальные возможности разработанной математической библиотеки, обеспечивающие дальнейшее расширение проблемного и методического репертуара и адаптацию его к различным прикладным задачам.

Отмечаются возможности обобщенной программной реализации сложных алгоритмических стратегий с использовагшем механизма абстрактных типов данных. Рассматривается пример программирования комбинированного ньютоновского алгоритма для решения нелинейных систем алгебраических уравнений. Алгоритм конструируется на основе заданных вспомогательных алгоритмов экономичного линейного поиска и решения СЛАУ. Прямой метод решения СЛАУ в свою очередь может основываться на заданных алгоритмах матричной факторизации и выбора

главного элемента и применяться к задачам с произвольным видом матриц. С учетом возможности изменения стандартных версий алгоритмов и используемых ими типов данных путем построения производных классов, достигается важная программная общность в реализации сложных алгоритмических стратегий.

Указывается также, что объектная архитектура библиотеки обеспечивает довольно естественную . разработку на ее основе функционально законченных интерактивных графических приложений. В качестве примера рассматривается разработанная математическая графическая система, предназначенная для решения стандартных вычислительных задач в интерактивном режиме. Принципы функционирования системы, особенности построения пользовательского интерфейса и организации интерактивного сценария в значительной степени отражают объектную архитектуру используемых математических средств.

Третья глава посвящена вопросам применения предложенной методологии к прикладному HQ, связанному с решением задач численного моделирования, а также результатам проектирования и разработки объектно-ориентированной инструментальной среды для создания систем CAD/CAM в различных научных и технических областях.

В первом разделе дается сравнительный анализ процедурной и объектно-ориентированной технологий применительно к прикладному ПО. Отмечаются недостатки традиционной пакетной . организации программ моделирования и отмечаются важные преимущества объектной организации прикладного ПО в виде систем и библиотек классов, обусловленные широкими инструментальными возможностями и эволюционном характером разработки. Обсуждаются возможности привлечения ООП и предложенной методологии для унифицированной разработки программ моделирования в различных.предметных областях.

Распространенные в настоящее время программы численного моделирования с успехом применяются при анализе сложных физических явлений и проектировании разнообразных технических систем. Как правило, программы имеют узко специализированный характер и обычно разрабатываются отдельно для каждой предметной области, а иногда и для каждого конкретного вида задач. Создание специализированных программ обычно мотивируется наличием особенностей в постановках задач, существованием частных решений, спецификой применения численных методов, алгоритмов и связанными с ними различными способами программной реализации.

Разработанная математическая объектно-ориентированная библиотека обеспечивает решение вычислительных задач, представленных в стандартной математической форме. Однако она не предусматривает возможность постановки вычислительной задачи в терминологии

конечного пользователя — прикладного программиста или инженера, оперирующего не математическими понятиями, а понятиями конкретной предметной области.

Проект создания инструментальной среды моделирования, являющийся логическим продолжением первого проекта, преследовал собой цель упростить разработку программных средств постановки вычислительных задач моделирования, составляющих ядро научных и промышленных CAD/CAM систем. Разработка таких средств обычно требует больших ресурсов и представляет собой серьезную проблему.

I лавпое препятствие возникает б связи с необходимостью унифицировать средства постановки задач моделирования, возникающих в различных предметных областях и обычно имеющих свою специфику. Применение какой-либо обобщенной концепции моделирования в данном случае позволило бы формализовать этапы постановки и решения задач моделирования и специфицировать необходимые программные средства инструментальной среды.

Во втором разделе строится концепция чиеяенного моделирования, применимая к широкому кругу задач. В определенном смысле концепция опирается на идеи диакоптики Крона.

Моделируемое физическое явление или техническая система рассматривается как система взаимосвязанных компонентов и представляется конечным множеством компонентов и их связей. Компонентом системы может быть либо элемент, либо подсистема, состоящая из элементов или подсистем более низкого уровня. Тем самым допускается, что система может иметь сложную многоуровневую иерархическую структуру.

Каждый компонент имеет определенное число внешних соединений, через которые осуществляется его связь с другими компонентами в системе. Каждая связь объединяет произвольное число соединений компонентов.

Каждый элемент системы классифицируется з соответствии с видом математической модели и, возможно, со значениями ее параметров. Моделью элемента являются простейшие алгебраические или дифференциальные соотношения, связывающие внутреннее состояние элемента со значениями переменных его внешних связей и параметрами модели.

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

Далее рассматриваются некоторые возможные способы формирования математических моделей физических систем. Указывается, что несмотря на

разнообразие задач, встречаемых в приложениях, можно выделить несколько характерных и наиболее распространенных способов формирования моделей.

Один из них заключается в формировании модели на основе элементных уравнений, выражающих функциональные свойства отдельных элементов, и топологических уравнений, отражающих способ вхождения отдельных компонентов в моделируемую систему. Довольно часто в приложениях топологические уравнения выражают фундаментальные законы сохранения величин, соответствующих переменным состояния. В таких случаях переменные состояния обычно задают патоки сохраняемых величин через соединения элементов и топологические уравнения могут быть представлены в аддитивной алгебраической форме. Возможны аналогии с законами Кирхгофа в теории цепей и с консервативными разностными методами для уравнений математической физики.

В разделе рассматриваются и некоторые другие варианты формирования моделей, связанные главным образом с выбором базиса переменных состояния. Описанные способы являются достаточно общими и могут быть применены к широким классам задач моделирования, включая электрические схемы, механические, гидравлические, энергетические системы, нейронные сети, дискретные варианты задач математической физики.

Будучи формализованной для нелинейных статических систем, концепция допускает обобщение на случай динамических стохастических систем. В этом случае математическая формализация приводит к системам нелинейных обыкновенных дифференциальных уравнений со случайно распределенными параметрами.

В третьем разделе строится объектная модель физической системы и описываются основные компоненты разработанной объектно-ориентированной инструментальной среды моделирования.

Среда представляет собой систему классов объектов System, Component, Element, Subsystem, Connection, Link, Simulation, Model, Analysis, выражающих ключевые понятия рассмотренной концепции моделирования и реализующих некоторые методы формирования математических моделей физических систем. Будучи надстроенной над классами математической библиотеки, среда предоставляет необходимые програмные средства для унифицированного представления разнообразных физических систем и реализации наиболее общих методов постановки и решения задач моделирования в рамках описанной концепции.

Класс Component реализует понятие компонента системы. С каждым компонентом связызается набор атрибутов, включающий его идентификатор, параметры, переменные состояния, внешние соединения.

Рис. 2 Концептуальное представление моделируемой системы

Для компонента определены методы оперирования данными атрибутами, а также методы представления статической, динамической и часто/ной характеристик как функциональных отображений соответствующих типов.

Включение компонента з систему осуществляется в результате задания его соединений класса Link через ссылки на объекты класса C.onnc.tion. Каждая, связь имеет идентификатор, вектор переменных и в свою очередь может содержать список соединений, которые она объединяет. Допустима классификация связей и соединений, которая может использоваться для тсотпроля топологической корректности описания системы.

Классы Element, Subsystem конкретизируют понятие компонента системы как элемента или подсистемы и определяются как производные от Component. В отличие от элементов подсистемы хранят дополнительную ссылку на соответствующее им представление класса System. Тем самым, подсистемы рассматриваются и как компоненты и как самостоятельные системы со своими внутренними представлениями (см. рис 2). Подобная двойственность обеспечивает возможность применения как обычных, гак и диаконгических методов моделирования.

Класс Element является базовым для конкретных классов моделей элементов, участвующих в приложениях. Обычно число таких моделей значительно и классификация элементов для конкретного приложения приобретает развернутый вид. Класс System поддерживает представление

моделируемой системы в виде множеств компонентов и их связей. Класс реализует методы описания и редактирования физической системы.

Класс Analysis предназначен для постановки задач моделирования, которая включает указание вида анализа, задание начальных условий или начального приближения, варьируемых параметров, а также указание искомых переменных, которые подлежат постобработке и выводу пользователю. Производные классы уточняют возможные виды анализа как статический, динамический или частотный, определяя дополнительные специфические параметры моделирования.

Проведение данных видов анализа связано с решением ряда вычислительных задач. Чтобы воспользоваться средствами математической библиотеки, необходимо представить задачи в стандартной математической форме. С этой целью классы моделей строятся в результате множественного наследования от соответствующих классов математической библиотеки и от базового класса Model. В результате они приобретают необходимый интерфейс математических классов и получают доступ к представлению моделируемой системы System через соответствующую ссылку в Model. Классификация моделей связана с тем, что каждая физическая система может моделироваться различным образом в соответствии с видом проводимого анализа и способом формирования математической модели.

Основным классом, соответствующим самому программному приложению и объединяющим все рассмотренные выше компоненты среды моделирования, является Simulation. Класс реализует методы задания моделируемой системы, ее моделей, алгоритмов решения возникающих математических задач, условий моделирования, а также методов проведения моделирования, постобработки результатов и вывода их пользователю.

Четвертый раздел посвящен вопросам разработки функционально законченных приложений моделирования на основе разработанной инструментальной среды.

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

специфического способа математической формализации этот набор всег да может быть расширен.

Далее рассматриваются основные особенности разработанной объектно-ориентированной среды моделирования, связанные с ее инструментальными возможностями.

Предметная адаптируемость является ключевой чертой среды. Разработка приложения моделирования сводится к построению производных классов и реализации в них относительно небольшой части методов. Существенно, что ¡необходимые добавления и изменения носят локальный характер и не нарушают целостности всей среды программирования. В конечном итоге это обеспечивает минимальные затраты на разработку новых приложений и возможность создания целых серий программных продуктов в различных предметных областях, разработанных на единой концептуальной и инструментальной основе.

Проблемная адаптируемость заключается в возможности определения новых видов анализа для моделируемой системы и обеспечивается базовым классом Analysis. Задание новых способов формирования модели системы осуществляется в результате конструирования производных классов Model, хотя в большинстве случаев удается воспользоваться уже реализованными стандартными вариантами. Включение новых видов элементов обеспечивается организацией специализированной библиотек!! классов элементов и сводится также к построению производных классов на основе базового Element.

Наконец, алгоритмическая адаптируемость является наиболее важным и сложным аспектом создания и применения среды, поскольку любая попытка использования универсального математического и прикладного ПО межет приводить к низкой его эффективности при решении частных классов задач. Решение данной проблемы мы связываем с использованием математической объектно-ориентированной библиотеки,

предусматривающей необходимые инструментальные средства для расширения алгоритмического репертуара и его адаптации к конкретным прикладным проблемам.

При создании законченных пользовательских систем разработанная среда относительно просто интегрируется с необходимыми средствами интерактивной графики и базами данных. Для этого выделенным базовым понятиям физической системы и элемента следует придать дополнительный графический и информационный смысл и создать соответствующие производные классы с расширенным набором методов. Как показал опыт практических разработок, в ряде случаев целесообразно надстроить среду моделирования на имеющейся графической библиотеке, поскольку при этом удается унифицировать не только средства моделирования, но и средства пользовательского оконного интерфейса и графического редактора.

В пятом и шестом разделах рассматриваются примеры фунционалыю законченных интерактивных графических CAD/CAM систем, разработанных на основе данной инструментальной среды.

Программы параметрического геометрического моделирования составляют неотъемлемую часть современных развитых систем автоматизированного конструкторского проектирования. Данные программы позволяют автоматически перестраивать геометрическую модель проектируемого изделия при изменении каких-либо ее параметров. Под параметрическим моделированием понимается построение геометрической сцены, представленной каркасной, конструктивной твердотельной или граничной моделью, на основе заданных геометрических, размерных и алгебраических ограничений.

Разработка приложения моделирования в данной области достаточно естественно осуществляется средствами среды. Параметризованная геометрическая сцена рассматривается в качестве моделируемой системы, а геометрические примитивы и заданные ограничения — в качестве ее элементов. Элементы классифицируются по типам алгебраических соотношений, связывающих координаты точек и параметры отдельных элементов. Проведение моделирования связано с формированием и решением системы нелинейных алгебраических уравнений, составленной из соотношений отдельных ограничений сцены.

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

Далее рассматриваются функциональные возможности и основные компоненты разработанной графической интерактивной системы параметрического моделирования с открытой объектно-ориентированной архитектурой. Отмечается возможность развития системы путем включения в нее новых видов элементов и реализации методов для решения новых инженерных задач, таких как эскизное проектирование, вариационная геометрия, моделирование сборок, размещение компонентов конструкций.

Другим рассматриваемым в работе приложением является система моделирования течений в трубопроводных сетях. Система предназначена для расчета различных инженерных сетей, осуществляющих централизованное снабжение рассредоточенных потребителей какой-нибудь транспортируемой средой. Класс задач расчета таких сооружений чрезвычайно широк и включает в себя моделирование магистральных

1ефте- и газопроводов, систем электро-, тепло-, водо- и газоснабжения ородов и промышленных центров, систем отопления, вентиляции.

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

Под гидравлической цепью понимается совокупность устройств, ключая насосные или компрессорные станции, аккумулирующие емкости, ютребитсли, и соединяющих их трубопроводов или открытых каналов. Ree стронства и соединения классифицируются б зависимости от их значения и вида применяемых математических моделей. Состояние идравличсской цепп определяется вектором переменных состояния, оторый включает в себя значения давления и температуры в узлах оединения компонентов и потоки транспортируемой среды через них. Зормирование модели цепи осуществляется на основе моделей омпонентов и топологических уравнений Кирхгофа для суммарных отоков через соединения цепи.

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

В заключительном разделе отмечается общность используемой онцепции моделирования и разработанных инструментальных средств, буславливающая их применение для создания CAD/CAM систем в других редметных областях. Указываются возможные направления дальнейших сследований.

Заключение содержит краткую сводку основных результатов работы.

В приложении 3 приводятся рисунки, иллюстрирующие принципы |ункционирования математической интерактивной графической системы, азработанной на основе математической объектно-ориентированной иблиотеки.

Иллюстрации приложении 2 дают общее представление о рабочих рототипах CAD/CAM систем для параметрического геометрического роектирования и моделирования течений в трубопроводных сетях, азработанных на основе инструментальной объектно-ориентированной реды моделирования.

Автор выражает искреннюю благодарность профессору, чл.-корр. РАН Иванникову Виктору Петровичу, определившему научную судьбу настоящей работы и обеспечившему благоприятные условия для ее выполнения, а также своим коллегам: аспирантам Морозову Сергею Вячеславовичу, Тарлапану Олегу Анатольевичу и младшему научному сотруднику Ширяевой Екатерине Юрьевне, без энтузиазма и усердия которых многие идеи не смогли бы быть воплощены в реальность.

Заключение

В диссертационной работе получены следующие основные результаты:

1. Предложена и формализована общая объектно-ориентированная методология эволюционной разработки численного МО, которая основывается на оригинальной объектной модели рассматриваемой предметной области и связанной с ней выделенной системой методик программирования. Методология успешно апробирована при создании функционально законченных вычислительных интерактивных графически} приложений.

2. Проведен объектный анализ типовых задач вычислительно* математики, для которых предложена и разработана единая объектная классификация. Классификация служит систематизированныл представлением рассмотренных разделов математики и являете; конструктивной основой для реализации МО.

3. Спроектирована и реализована математическая библиотека общеп назначения с объектной архитектурой, сочетающей естественност: организации, должный уровень эффективности и мобильности, а такж широкие инструментальные возможности. Классы математичсско: библиотеки, кроме своего непосредственного назначения — постановки : решения вычислительных задач линейной алгебры, анализа функций безусловной оптимизации, могут служить базовыми инструментальным средствами для разработки разнообразных вычислительных приложений.

4. На основе предложенной обобщенной объектной концепци численного моделирования, применимой к широкому спектру физически явлений и технических систем, спроектирована и разработана объекта« ориентированная инструментальная среда для создания САО/СА1 приложений в различных предметных областях науки и техники.

5. В качестве примеров прикладных программ реализованы рабочие трототипы CAD/CAM систем с открытой объектной архитектурой для 1 арам егр и ч се ко го геометрического проектирования и моделирования течений в трубонропроводных сетях. Данные системы, являясь прямым эезультатом применения представленной методологии, наглядно юлюстрирутот вычислительные и инструментальные возможности эазработанного МО.

6. Проанализированы проблемы, намечены пути исследований и мзвития разработанного МО как в направлении расширения его троблемното и методического репертуара, так и в направлении создания говых программных приложений.

Основные результаты диссертации опубликованы в следующих »аботах:

1. Рогов Ю.Н., Семенов В. А. Система схемотехнического моделирования БИС в САПР. //В кн. «Логическое управление с использованием ЭВМ» —M.: НСК АН СССР, 1987, с. 127-129.

2. Семенов В.А. Разработка математического обеспечения систем автоматизации статического моделирования нелинейных схем. Диссертация на соискание ученой степени канд. физ.-мат. наук. М/ НСК АН СССР, 1989.

3. Семенов В.А. Об объектно-ориентированном подходе к разработке численного математического обеспечения. //В сб. «Вопросы кибернетики. Приложения системного программирования»--М.: ИСК РАИ, 1995, с. 140-163.

4. Семенов В.А., Морозов C.B. Объектно-ориентированное программирование задач численного анализа. //В сб. «Вопросы кибернетики. Приложения системного программирования» — М.: НСК РАН, 1995, с. 189-211.

5. Семенов В.А., ТарлапанО.А. Технологии реализации разреженных

матричных классов. IfB сб. «Вопросы кибернетики. Приложения системного программирования» — М.: НСК РАН, 1995, с. 164- 183.

6. Семенов В.А., Ширяева E.IO. Объектная классификация задач и методов нелинейной безусловной оптимизации. У/В сб. «Вопросы кибернетики. Приложения системного программирования»—-М.: НСК РАН, 1996, с. 86-119.

7. Семенов В.А., Морозов C.B. Объектно-ориентированное программирование квадратурных методов. //В сб. «Вопросы

кибернетики. Приложения системного программирования» — М.: ИСК РАН, 1996, с. 120-146.

8. Семенов В.А., Тарлапан O.A. Объектно-ориентированный подход к программированию прямых методов линейной алгебры. //В сб. «Вопросы кибернетики. Приложения системного программирования» — M.: НСК РАН, 1996, с. 147-170.

9. Семенов В.А., Морозов C.B., Тарлапан O.A., Ширяева Е.Ю. Объектно-ориентированная среда для разработки вычислительных приложений. // Материалы XXIII международной конференции конференции "Новые информационные технологии в науке, образовании и бизнесе", Украина, Крым, 15-24 мая 1996 г., с. 63-66.

Ю.Семенов В. А. Объектная систематизация и парадигмы вычислительной математики. // Программирование. 1997, № 4, с. 1425.

11.Семенов ВА., Морозов C.B., Тарлапан O.A., Ширяева Е.Ю. Объектно-ориентированная инструментальная среда для разработки систем численного моделирования. //В сб. «Вопроси кибернетики. Приложения системного программирования» — М.: НСК РАН, 1997, с. 205-226.

12.Семенов В.А., Тарлапан O.A. Методика разработки библиотеки шаблонов BLAS для разреженных матриц. //В сб. «Вопросы кибернетики. Приложения системного программирования» — М.: НСК РАН, 1997, с. 227-239.

Текст работы Семенов, Виталий Адольфович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

. ' у^ямуу ангина» эму ДЦЦИн

Президиум ВАК Росск#.

«дога»*» ст"¿0^" Г., N6 ^^

ученую степень ДОКТОРА'

¿^¿¿И __

¿ии- у

У

¡/Начальникуправления ВАК Россш г

п

! ' / . /

РОССИЙСКАЯ АКАДЕМИЯ НАУК ИНСТИТУТ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ

На правах рукописи УДК 681.3

СЕМЕНОВ Виталий Адольфович

ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МЕТОДОЛОГИЯ ЭВОЛЮЦИОННОЙ РАЗРАБОТКИ МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ

Специальность 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей

Диссертация на соискание ученой степени доктора физико-математических наук

Москва - 1998

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ......................................................................................................4

1. ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МЕТОДОЛОГИЯ РАЗРАБОТКИ ЧИСЛЕННОГО МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ............................................................................................9

1.1 Обзор объектно-ориентированного математического и прикладного

программного обеспечения........................................................................................ 10

1.2 Объектно-ориентированные методологии программирования.......................15

1.3 Объектный анализ вычислительной математики..............................................19

1.4 Формальная объектная модель вычислительной математики........................22

1.5 Принципы объектного программирования задач и методов вычислительной математики...................................................................................................................27

1.6 Систематизированный подход к эволюционной разработке математического обеспечения..................................................................................33

2. МАТЕМАТИЧЕСКАЯ ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ БИБЛИОТЕКА ОБЩЕГО НАЗНАЧЕНИЯ..............................................39

2.1 Общие принципы создания математической библиотеки.................................40

2.2 Базовые системные классы математической библиотеки...............................45

2.3 Линейная алгебра...................................................................................................55

2.3.1 Объектные технологии реализации матричного обеспечения.....................................56

2.3.2 Оргапизаг^ия векторных классов....................................................................................61

2.3.3 Векторные итераторы..................................................................................................66

2.3.4 Организаг^ия матричных классов...................................................................................71

2.3.4.1 Принципы объектной классификации матриц.......................................................................71

2.3.4.2 Матрицы общего вида............................................................................................................74

2.3.4.3 Специальные матрицы...........................................................................................................79

2.3.4.4 Элементарные матрицы.........................................................................................................80

2.3.5 Векторно-оргапизованные матричные классы.............................................................85

2.3.6 Методика программирования шаблонов BIAS.............................................................88

2.3.7 Временное тестирование матричных реализаций........................................................97

2.3.8 Объектная реализация методов линейной алгебры....................................................100

2.4 Анализ функции....................................................................................................116

2.4.1 Математические функции как объекты.....................................................................116

2.4.2 Организация классов математических функций одной и нескольких переменных.... 118

2.4.2.1 Принципы объектной классификации математических функций........................................118

2.4.2.2 Классы математических функций общего вида...................................................................121

2.4.2.3 Элементарные функции........................................................................................................128

2.4.2.4 Специальные функции..........................................................................................................129

2.4.2.5 Многочлены..........................................................................................................................133

2.4.2.5.1 Канонические полиномы...............................................................................................135

2.4.2.5.2 Классические интерполяционные полиномы................................................................138

2.4.2.5.3 Системы ортогональных полиномов.............................................................................141

2.4.2.5.4 Специальные полиномы................................................................................................143

2.4.3 Классы интерпретации функций.................................................................................143

2.4.4 Временное тестирование функциональных реализаций.............................................146

2.4.5 Объектная реализация методов численного дифференцирования и интегрирования.....................................................................................................................149

2.4.5.1 Классы методов численного дифференцирования...............................................................151

2.4.5.2 Классы методов численного интегрирования.....................................................................152

2.4.5.3 Объектная классификация квадратурных формул...............................................................157

2.5 Безусловная оптимизация и решение нелинейных систем алгебраических уравнений.....................................................................................................................165

2.5.1 Назначение и принципы организации раздела оптимизации......................................165

2.5.2 Объектная классификация и реализация методов одномерной оптимизации и решения нелинейных уравнений............................................................................................174

2.5.3 Объектная классификация и реализация методов безусловной оптимизации и решения нелинейных систем.................................................................................................177

2.5.4 Библиотека классов тестовых функций.....................................................................185

2.6 Инструментальные возможности математической библиотеки...................187

3. ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ ИНСТРУМЕНТАЛЬНАЯ СРЕДА ДЛЯ РАЗРАБОТКИ СИСТЕМ АВТОМАТИЗИРОВАННОГО МОДЕЛИРОВАНИЯ И ПРОЕКТИРОВАНИЯ (CAD/CAM)...............195

3.1 Системы классов вместо пакетов прикладных программ.............................196

3.2 Обобщенная концепция численного моделирования......................................200

3.3 Объектная модель физической системы и сис тема классов среды..............203

3.4 Разработка приложений на основе среды и ее инструментальные возможности...............................................................................................................209

3.5 Система параметрического геометрического проектирования....................211

3.5.1 Постановка задач параметрического моделирования...............................................212

3.5.2 Специализированная библиотека классов геометрических элементов и ограничении ............................................... ..........................................................................212

3.5.3 Реализация системы моделирования...........................................................................215

3.6 Система моделирования течений в трубопроводных сетях...........................216

3. б. 1 Постановка задач моделирования течений................................................................217

3.6.2 Специализированная библиотека классов элементов.................................................218

3.6.3 Реализация системы моделирования...........................................................................219

3.7 Направления далы шйших исследований.........................................................219

ЗАКЛЮЧЕНИЕ..........................................................................................221

ЛИТЕРАТУРА............................................................................................223

ПРИЛОЖЕНИЕ 1. ПРИМЕРЫ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ В ГРАФИЧЕСКОЙ ИНТЕРАКТИВНОЙ СИСТЕМЕ............232

ПРИЛОЖЕНИЕ 2 ПРИМЕРЫ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ В САБ/САМ СИСТЕМАХ............................................................................240

ВВЕДЕНИЕ

Объектно-ориентированный подход (ООП), получивший широкое распространение как мощная программная технология, составляет в настоящее время весомую альтернативу традиционным процедурным методам. Популярность ООП во многом обусловлена концептуальной целостностью и более сильной формой структуризации программного обеспечения (ПО), разрабатываемого на его основе. В конечном итоге использование ООП выражается в более быстрой и надежной разработке программ, а также в широких эволюционных возможностях разрабатываемого ПО при создании новых приложений. Данные обстоятельства оказываются решающими в условиях динамично развивающихся отраслей программирования.

С конца 1960-х - начала 1970-х годов ведутся достаточно интенсивные исследования в области создания объектно-ориентированных операционных систем, баз данных, графических интерфейсов. В значительно меньшей мере внимания уделяется вопросам применения объектных технологий к математическому и прикладному ПО, предназначенному для решения задач вычислительного характера.

До сих пор наиболее употребительным языком для вычислительных приложений считается Фортран. Значимое многообразие высокоинтеллектуальных математических библиотек, созданных на этом языке в течение трех последних десятилетий, а также несомненные традиции прикладной пакетной деятельности являются существенными факторами, сдерживающими широкое внедрение объектных технологий в данную область.

Настоящая диссертационная работа посвящена научным и практическим аспектам создания численного математического и прикладного ПО на основе объектно-ориентированной технологии. Работа носит многоплановый характер и охватывает как теоретические методологические вопросы создания математического обеспечения (МО), так и практические результаты разработки конкретных программных систем: математической объектно-ориентированной библиотеки общего назначения и инструментальной объектно-ориентированной среды для построения систем автоматизированного проектирования и моделирования (CAD/CAM) в различных предметных областях науки и техники.

Целью диссертационной работы является выработка общей объектно-ориентированной методологии программирования вычислительных задач и методов их решения, а также апробация методологии при построении конкретных функционально законченных вычислительных интерактивных графических приложений. В определенном смысле работа представляет собой попытку развития ООП на широкие и практически важные классы численного математического и прикладного ПО.

Актуальность работы определяется прежде всего возрастающими потребностями системных и прикладных программистов в современном МО, которое наряду с общепринятыми требованиями функциональности, эффективности, мобильности удовлетворяло бы также условиям множественного использования, обеспечивающим его широкие эволюционные возможности. Данный аспект является принципиальным для МО, которое обычно претерпевает значительные изменения в ходе своего развития и уже на стадии проектирования должно предусматривать необходимые инструментальные возможности, которые бы позволили в дальнейшем относительно просто расширять проблемный и алгоритмический репертуар, модифицировать и адаптировать его к новым задачам и предметным областям, легко интегрировать математические средства между собой и с другими программами при создании функционально законченных приложений.

Распространенные в настоящее время математические библиотеки и пакеты прикладных программ представляют собой в основном результат процедурно-ориентированной технологии, которая в значительной степени способствовала их узкой специализации — специализации как по видам задач и методам их решения, так и по типам данных, используемых при постановке и решении задач.

Подобная специализация существенно затрудняет дальнейшее развитие этих программ, а главное — использование программ в прикладных системах. Переход к более общим универсальным библиотекам, подобным NAG или IMSL, также не решает эту проблему. Ввиду чрезвычайно широкого многообразия прикладных задач и алгоритмических вариантов их решения, развитие и использование таких библиотек путем включения в них все новых и новых процедурных модулей являются нереалистичными и тупиковыми.

Решение проблемы универсальности в данном случае мы связываем с привлечением идей ООП и обеспечением широких инструментальных возможностей

МО. Инструментальность рассматривается нами как важнейший принцип построения МО, претендующего на эффективное множественное применение.

Анализ возможностей применения ООП к МО и выработка общей объектно-ориентированной методологии программирования, охватывающей такую развитую фундаментальную научную область, какой является вычислительная математика, позволила бы придать проводимым в настоящее время многочисленным исследовательским и коммерческим проектам систематизированный характер и обеспечить их необходимой методологической основой.

Разработанные с использованием предложенной методологии математическая библиотека и инструментальная среда моделирования также отражают наметившуюся в последнее время тенденцию создания ПО на основе выделения и использования базовых объектно-ориентированных средств, оформленных в виде систем или библиотек классов и допускающих унифицированную разработку разнообразных программных приложений на единой концептуальной и инструментальной основе.

Полученные в работе результаты связаны главным образом с обобщением, систематизацией и комплексным использованием ООП применительно к численному математическому и прикладному ПО. К наиболее значимым новым научным результатам следует отнести следующие:

• предложена и формализована общая объектно-ориентированная методология эволюционной разработки численного МО, которая основывается на оригинальной объектной модели рассматриваемой предметной области и связанной с ней выделенной системой методик программирования,

• проведен объектный анализ типовых задач вычислительной математики, для которых предложена и разработана единая объектная классификация, служащая систематизированным представлением рассмотренных разделов математики и являющаяся конструктивной основой для реализации разнообразного МО,

• спроектирована и разработана математическая библиотека общего назначения с объектной архитектурой, сочетающей естественность организации, должный уровень эффективности и мобильности, а также широкие инструментальные возможности,

• на основе предложенной обобщенной объектной концепции численного моделирования, применимой к широкому спектру физических явлений и технических систем, спроектирована и разработана объектно-ориентированная инструментальная

б

среда для создания CAD/CAM приложений в различных предметных областях науки и техники,

• предложенная методология, разработанное МО апробированы при создании рабочих прототипов CAD/CAM систем с открытой объектной архитектурой для параметрического геометрического проектирования и моделирования течений в трубопропроводных сетях,

• проанализированы проблемы, намечены пути исследований и развития разработанного МО как в направлении расширения его проблемного и методического репертуара, так и в направлении создания новых программных приложений.

Практическая значимость работы состоит в возможности использования предложенной методологии, а также разработанного на ее основе МО при создании разнообразных вычислительных приложений, включая научные и промышленные CAD/CAM системы. Принцип множественного использования, превалирующий в работе, существенно расширяет круг потенциальных практически значимых приложений, допускающих унифицированную разработку на основе предложенной методологии программирования. Особое значение имеют также доступность разработанного МО вместе с исходными текстами и документацией.

Апробация работы и публикации. Предложенная методология была успешно апробирована при реализации проектов Российского фонда фундаментальных исследований и федеральной целевой научно-технической программы "Информатизация России". Результаты диссертационной работы опубликованы в научной печати и докладывались на различных конференциях и семинарах: международной конференции "САПР" (г. Гурзуф, 1995), международной конференции "Новые информационные технологии в науке, образовании и бизнесе" (г. Гурзуф, 1996), семинарах Института системного программирования РАН, Института автоматизации проектирования РАН, Института прикладной математики РАН. Материалы диссертации использовались в учебных курсах, прочитанных автором в Московском государственном институте радиотехники, электроники и автоматики.

В первой главе рассматриваются существующие математические библиотеки и распространенные методологии проектирования ПО, обосновывается перспективность применения объектной технологии к вычислительным программам и необходимость развития ООП на данный широкий и важный класс программ. В главе подробно

излагаются основные идеи и принципы предложенной формализованной объектно-ориентированной методологии эволюционной разработки численного МО.

Вторая глава посвящена результатам исследований, проведенных в рамках проекта по разработке математической объектно-ориентированной библиотеки общего назначения.Проект преследовал собой сразу несколько целей: во-первых, апробировать предложенную методологию на широких классах задач, взятых существенно из разных разделов вычислительной математики, во-вторых, выработать практические методики программирования конкретных вычислительных задач и, в-третьих, разработать математическую библиотеку на языке Си++, которая, кроме своего непосредственного назначения — решения стандартных математических задач ста