- •«Московский технический университет связи и информатики»
- •Документация на разработку мультимедийной информационной системы «ImageHub»
- •1. Описание предметной области
- •2. Требования к системе
- •2.1. Требования к структуре и функционированию системы
- •2.2. Функциональные требования
- •2.3. Нефункциональные требования
- •База данных
- •3.1. Архитектура бизнес-процесса получения контента
- •3.2. Процедура авторизации
- •4. База данных
- •4.1. Сущности мультимедийной информационной системы
- •4.2. Атрибуты сущностей
- •4.3. Приведение таблицы к первой нормальной форме
- •4.4. Приведение таблицы ко второй нормальной форме
- •4.5. Приведение таблицы к третьей нормальной форме
- •4.6. Примеры запросов
- •5. Серверная часть системы
- •5.1. Основные компоненты
- •5.2. Ролевая модель и запросы
- •5.3. Приоритетная система очередей
- •5.4. Обработка запросов
- •5.5. Расчет максимальной нагрузки
- •5.6. Механизмы обработки ошибок
- •6. Пользовательский интерфейс
- •7. Результат работы
2.3. Нефункциональные требования
В таблице 5 указаны нефункциональные требования к производительности.
Таблица 5 - Требования к производительности
Параметр |
Значение |
Комментарий |
Время отклика UI |
≤ 2 секунд |
Для 95% запросов |
Время загрузки изображения |
≤ 5 секунд |
При скорости интернета 5 Мбит/с |
Одновременных пользователей |
100 |
На бесплатном тарифе PythonAnywhere |
Пропускная способность |
1000 запросов/час |
Максимальная нагрузка |
Время обработки запроса |
≤ 200 мс |
Для API endpoints |
Требования к надежности:
Доступность системы: 98.5% в рабочее время (9:00-21:00)
Время восстановления после сбоя: ≤ 30 минут
Сохранность данных: 100% (резервное копирование раз в сутки)
Потеря данных при сбое: 0
Требования к безопасности:
Аутентификация: логин/пароль, хэширование
Защита от атак: встроенная защита Django
Валидация файлов: проверка MIME-типа и расширения
Ограничение загрузок: не более 10 файлов в минуту с одного IP
Требования к удобству использования (UX):
Обучение новичка: ≤ 5 минут
Интуитивный интерфейс: Bootstrap 5 компоненты
Адаптивность: поддержка мобильных устройств (≥ 320px)
Поддержка браузеров: Chrome 80+, Firefox 75+, Safari 14+
2.4. Бизнес-требования
Целевая аудитория:
Фотографы-любители
Дизайнеры для портфолио
Студенты для учебных проектов
Блогеры для хранения медиа
Экономические показатели:
Стоимость эксплуатации: 0 (бесплатный хостинг)
Масштабируемость: до 1000 пользователей без изменения архитектуры
2.5. Технические требования
Требования к программному обеспечению
Серверная часть:
Python 3.9 или выше
Django 4.2.7
Pillow 10.0.0
PostgreSQL
Клиентская часть:
Bootstrap 5.1.3
Современный браузер с поддержкой HTML5
JavaScript
2.6. Требования к аппаратному обеспечению
Минимальная конфигурация для разработки:
Процессор: 2 ядра, 2 ГГц
ОЗУ: 4 ГБ
Диск: 10 ГБ свободного места
Интернет: 10 Мбит/с
Конфигурация для хостинга (PythonAnywhere бесплатный тариф):
Дисковое пространство: 512 МБ
ОЗУ: 512 МБ
CPU: ограничено 100 операций в секунду
2.7. Требования к интерфейсам
Внешние интерфейсы:
REST API
SMTP для отправки email (восстановление пароля)
Внутренние интерфейсы:
База данных через Django ORM
Файловая система для хранения изображений
Кэширование через локальную память
2.8. Требования к данным
Форматы данных:
Изображения: PNG
Метаданные: JSON в базе данных
Логи: текстовые файлы, ротация ежедневно
3. Архитектура системы
Для начала составим бизнес процесс нашей системы (рисунок 1).
Рисунок 1 – Бизнес-процесс
Используем трехуровневую клиент-серверную архитектуру. На рисунке 2 представлены основные компоненты архитектуры.
Рисунок 2 – Компоненты архитектуры системы
Система построена на основе трёхуровневой (трехзвенной) клиент-серверной архитектуры, что обеспечивает логическое разделение уровней представления, бизнес-логики и данных. Такое разделение упрощает разработку, масштабирование, сопровождение и обеспечение безопасности системы.
Ниже представлена визуальная схема архитектуры (рисунок 3) и описание каждого уровня.
Рисунок 3 – Архитектура системы
Уровень представления (Presentation Layer)
Пользователь взаимодействует с системой через веб-браузер или мобильное приложение.
Пользовательский интерфейс предоставляет следующие функциональные возможности:
просмотр ленты изображений;
поиск изображений по ключевым словам, категориям и тегам;
добавление изображений в избранное;
публикация собственных изображений;
взаимодействие с контентом (лайки, комментарии).
Уровень представления не содержит бизнес-логики и взаимодействует с системой исключительно через HTTP-запросы к серверу бизнес-логики (backend).
Уровень бизнес-логики (Business Logic)
Уровень бизнес-логики представлен серверным приложением (Backend Web API), которое обрабатывает все запросы от клиентов.
Функции уровня бизнес-логики включают:
аутентификацию и авторизацию пользователей (логин, пароль);
обработку пользовательских запросов;
управление изображениями и пользовательским контентом;
взаимодействие с базой данных;
загрузку медиафайлов в объектное хранилище.
При запросе контента сервер бизнес-логики выполняет поиск и обработку метаданных изображений, включая их описание, категории, теги и URL медиафайлов. Сервер бизнес-логики передаёт медиафайлы напрямую.
Уровень данных (Data Layer)
Уровень данных включает в себя следующие компоненты:
