https://github.com/gogosan1/odesolverservice
Выпускная квалификационная работа бакалавра. Разработка программного обеспечения для расчета поведения динамических и гибридных систем.
https://github.com/gogosan1/odesolverservice
cmake cpp docker-compose env java julia maven spring-boot
Last synced: 3 months ago
JSON representation
Выпускная квалификационная работа бакалавра. Разработка программного обеспечения для расчета поведения динамических и гибридных систем.
- Host: GitHub
- URL: https://github.com/gogosan1/odesolverservice
- Owner: Gogosan1
- Created: 2025-01-31T06:59:54.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-04T05:15:28.000Z (over 1 year ago)
- Last Synced: 2025-03-04T06:22:43.852Z (over 1 year ago)
- Topics: cmake, cpp, docker-compose, env, java, julia, maven, spring-boot
- Language: C++
- Homepage:
- Size: 210 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README








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

> [!NOTE]
>
> - **Цветом выделена та часть системы, которая реализована мной**
> - Зеленым на схеме отображен сам модуль
> - Желтым отображены подключенные численные решатели
При разработке программного обеспечения было принято решение делать его через **микросервисную архитектуру**.
В качестве брокера сообщений используется rabbitMQ сконфигурированный на api шлюзе.
**Структура проекта:**
```
ODESolverService/
├── API_gateway/ #Содержит код шлюза API, написанный на Java с использованием Spring Boot.
│ ├── src/
│ │ ├── main/ #Основной код шлюза
│ │ └── test/ #Тесты для шлюза
│ ├── pom.xml #Maven файл для конфигурации
| |── Dockerfile #Докер образ для шлюза
|
├── Julia_server/
│ ├── server.jl #Основной код решателя ОДУ на julia
│ └── Dockerfile #Докер образ для julia server
|
├── cpp_GSL_server/
│ ├── src/ #Исходный код сервера решателя на C++
│ ├── CMakeLists.txt #Файл конфигурации для сборки проекта с помощью CMake.
│ └── Dockerfile #Докер образ для C++ server
|
├── .env.example #Пример файла окружения с переменными среды.
├── README.md
├── compose.yaml #Файл конфигурации для Docker Compose, описывающий, как запускать многоконтейнерное приложение.
```
## Сборка и запуск
1. Установите Docker на свое устройство.
2. Клонируйте репозиторий с кодом приложения.
3. Откройте терминал в папке приложения и выполните команду:
```bash
docker compose up --build
```
Сборка занимает значительное время, минут 30-40. Основное время, 25-30 минут, собирается образ для сервера на языке julia.
## Описание API шлюза
**spring boot server (API GATEWAY)**
- [ ] добавить описание api
- [ ] добавить описание json шаблонов для отправки по api
- [ ] добавить мониторинг взаимодействия микросервисов
- [x] ~~создать docker image~~
- [x] ~~Внедрить .env файл для общей конфигурации подключений и названия очередей~~
## Описание доступных методов решения систем ОДУ CPP сервера и корректного JSON файла
**CPP server (GSL)**
- [x] ~~написать функцию решателя~~
- [x] ~~реализовать выбор возможных методов решения~~
- [x] ~~реализовать парсер, для извлечения уравнений из строкового формата~~
- [x] ~~реализовать асинхронную обработку задач~~
- [ ] реализовать отправку решения частями
- [ ] реализовать механизм отладки (возвращения на предыдущий шаг) через сохранение состояний в промежутках
- [x] ~~создать docker image~~
- [x] ~~написать CMake~~
## Описание доступных методов решения систем ОДУ Julia сервера и корректного JSON файла
**julia server (DifferentialEquations)**
- [x] ~~написать функцию решателя~~
- [x] ~~реализовать выбор возможных методов решения~~
- [x] ~~реализовать парсер, для извлечения уравнений из строкового формата~~
- [x] ~~реализовать асинхронную обработку задач~~ реализована многопроцессорная обработка
- [ ] реализовать отправку решения частями через callback функцию
- [x] ~~создать docker image~~
**Selfwrite solver server**
- [ ] интегрировать в систему код сервера Алексея
- [ ] возможно добавить в код логику парсера из CPP server
## Рекомендации по применению методов (Руководство пользователя)