ядро новой программной системы численного моделирования

advertisement
ЯДРО НОВОЙ ПРОГРАММНОЙ СИСТЕМЫ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ
С.Г.Орлов
Санкт-Петербургский государственный технический университет, Санкт-Петербург
Тел./факс: (812) 552-77-70, e-mail: nikesh@mail.ru
Несмотря на большое количество систем численного моделирования, мы сочли необходимым создать еще
одну такую систему. Она существенно отличается от других известных нам систем следующим.
Система состоит из ядра и компонентов. Она открыта в том смысле, что сторонние разработчики могут
разрабатывать новые компоненты. Компонент представляет собой набор объектов, предназначенных для
решения задач определенного класса.
Архитектура системы строится таким образом, чтобы заранее не ограничивать круг решаемых задач. В
принципе, можно разработать компонент для решения практически любой задачи. При этом вся система
сохранит целостность, если интерфейсы к объектам будут согласованы и хорошо продуманы.
Наконец, серьезный довод в пользу разработки новой системы – использование кластерных технологий при
интенсивных вычислениях. Системы моделирования, ориентированные на кластерные вычисления, пока
отсутствуют.
В ядре реализованы основные концепции, некоторые базовые алгоритмы и структуры данных. Одна из
основных задач ядра – обеспечивать совместную работу компонентов системы. Каждый компонент
представляет собой набор объектов, работа с которыми производится через строго определенные и хорошо
документированные интерфейсы. Интерфейс представляет собой декларацию некоторого набора функций.
Поддержка интерфейса объектом означает поддержку сразу всех его функций. Объект может поддерживать
любое число интерфейсов. Работа с объектами возможна только через интерфейсы, и в этом смысле объекты
представляют собой "черные ящики". Такое ограничение повышает надежность системы, так как исчезает
возможность использования объекта непредусмотренным в документации способом.
Концепция объектов и интерфейсов напоминает COM или CORBA, однако, мы сочли целесообразным
сделать собственную реализацию. Причины – достичь независимости от платформы и иметь полный контроль
над эффективностью работы через интерфейсы. Плата за эффективность – привязка к языку программирования
C++. Не вдаваясь в подробности, упомянем, что, как и в COM, имеется фабрика объектов, отрывные
интерфейсы, подсчет ссылок (для временных объектов и отрывных интерфейсов), свойства и методы,
доступные через интерфейс диспетчеризации. Компоненты оформлены в виде динамических библиотек,
экспортирующих только функцию регистрации компонента во время выполнения. Экземпляры объектов в памяти
создаются с помощью так называемых производящих функций.
Важной частью ядра является интерпретатор выражений, в котором допускаются числовой, строковый и
объектный типы данных. Допускается использование свойств и методов объектов в выражениях. Выражения
употребляются в процессе редактирования модели.
Все объекты, создаваемые при моделировании, связаны между собой связями типа "предок – потомок",
образуя направленный ацикличный граф. Этот граф автоматически поддерживается ядром и используется для
обновления модели при изменении отдельных объектов. Таким образом, достаточно небольшой ценой
достигается параметрическое задание модели.
Пользователь работает над моделью посредством менеджера объектов, ответственного за ведение
журнала редактирования и некоторой дополнительной информации. Менеджер объектов, в частности,
обеспечивает многошаговый откат/повтор действий пользователя. Редактирование объектов производится
через специальный интерфейс редактирования, который должен поддерживаться почти всеми объектами.
Единственный объект, встроенный непосредственно в ядро – это группа (объект, хранящий список ссылок
на другие объекты). Допускается произвольная группировка: группы могут образовывать ацикличный граф; они
могут пересекаться между собой.
Для повышения гибкости структуры данных модели введена концепция атрибутов, прикрепляемых к
объектам. Каждый атрибут имеет имя и значение (задаваемое при помощи выражения). Действие атрибута,
прикрепленного к группе, распространяется на ее содержимое. Атрибут может быть видимым для всех объектов
(безусловный атрибут) или лишь для определенного объекта или группы объектов (условный атрибут).
Использование кластерных технологий при вычислениях осуществляется путем разработки специальных
компонентов, предназначенных для этого. Часть такого компонента находится на машине клиента, а другая
часть – на сервере (кластере). Клиентская часть передает необходимые для вычислений данные на сервер, а по
окончании расчета забирает результат. Разработчик компонента самостоятельно определяет, какие данные
передаются от клиента к серверу и обратно. Ядро системы устанавливается на клиентской и, при
необходимости, на серверной части.
Related documents
Download