Требования к системам моделирования и Актуариум

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


Требование

Реализация в Актуариум

применение простых проблемно-ориентированных языков

Язык является средством описания, в данном случае – средством описания математической модели. Как и в аналогичных системах, используется декларативный (дескриптивный) язык моделирования. Модель строится из связанных друг с другом компонент; сами компоненты могут описывать контракты страхования, перестрахование, выплаты по ним, случайные величины для других компонент, отчеты и т.п. Сам процесс моделирования состоит в описании свойств компонент, связывании их друг с другом и указания внешних входных данных.

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

удобство использования (наличие интуитивно-понятного графического интерфейса пользователя)

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

наличие средств диагностики ошибок пользователя

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

надежность и правильность получения результатов моделирования

В Актуариум есть системы тестов (которые вводятся прямо в интерфейсе приложения) по отдельным компонентам и по сценариям.

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

экономичность (эффективность по быстродействию и затратам памяти)

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

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

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

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

На данный момент моделирование ограничено компонентной моделью с прямым счетом (т.е. не должно быть систем уравнений и пр.). Сами компоненты внутри своей логики могут содержать не только прямой счет, но и задачи фиттинга и пр, например, подбор параметров распределений.

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

открытость (адаптируемость) относительно внесения изменений в процессе эксплуатации программ

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

Безопасность / разделение прав доступа

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

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

Сопровождаемость

 

  Анализируемость

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

 

При моделировании ведется журнал и ведется профилирование. Компоненты могут создавать файлы в рабочем каталоге (для каждого запуска моделирования он свой), а также создавать/использовать таблицы SQLite для записи дополнительной информации. Есть возможность скачивания как скрипта моделирования, так и всей рабочей папки для анализа/отладки

  Изменяемость

Используемый стек – PHP, Python, PostgreSql, js.

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

 

  Стабильность

Использование PHP не предполагает каких-либо серверных процессов для работы приложения через WEB кроме собственно WEB-сервера (Apache или nginx). Количество пользователей систем моделирования, как правило, относительно небольшое – поэтому сбой самого приложения маловероятен.

 

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

  Тестируемость

Есть возможность ведения модульных (по компонентам) тестов, и сценарных тестов, в которых используется множество связанных компонент.

мобильность

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