- •Отчет по домашнему заданию
- •Описание программного продукта
- •Требования к программному продукту
- •Функциональные требования
- •Требования надежности и производительности
- •Требования безопасности и конфиденциальности
- •Требования масштабируемости
- •Требования производительности
- •Показатели оценки Link Tracker
- •Проведение измерений показателей качества Link Tracker
- •Соответствие требованиям технического задания:
- •2. Выявленные проблемные области
- •2.2. Серьезные проблемы (оценка 0,6–0,65)
- •2.3. Области, требующие внимания (оценка 0,65–0,75)
- •3. Рекомендации по устранению выявленных проблем
- •3.1. Приоритет 1 (Критический) — срок: 1-2 спринта
- •3.2. Приоритет 2 (Высокий) — срок: 2-3 спринта
- •3.3. Приоритет 3 (Средний) — срок: 3-4 спринта
- •4. Оценка целесообразности устранения проблем Технико-экономическое обоснование:
- •5. Оценка сложности и трудоемкости проведенной экспертизы
- •5.1. Сложность экспертизы
Соответствие требованиям технического задания:
Функциональные требования: выполнены на 75% — реализован основной функционал мониторинга ссылок, интеграция с Telegram, управление пользователями и уведомления
Требования надежности: выполнены на 68% — присутствуют механизмы восстановления и обработки ошибок, но система требует доработки в части устойчивости
Требования производительности: выполнены на 58% — времена отклика соответствуют требованиям (< 500 мс), однако использование ресурсов требует оптимизации
Требования безопасности: критерий не полностью измерен в рамках данной экспертизы, но предусмотрены базовые механизмы защиты
2. Выявленные проблемные области
2.1. Критические проблемы (оценка < 0,6)
Эффективность использования ресурсов (0,36)
Проявление:
Высокое потребление оперативной памяти JVM (оценка 0,4)
Избыточная загрузка процессора (оценка 0,3)
Возможные причины:
Отсутствие оптимизации запросов к БД PostgreSQL
Недостаточно эффективное использование кэширования Redis
Возможные утечки памяти при длительной работе сервисов
Неоптимальная конфигурация пула потоков в Spring Boot
Избыточное логирование в production-режиме
Последствия:
Ограничение масштабируемости системы
Повышенные инфраструктурные затраты
Риск деградации производительности при росте нагрузки
2.2. Серьезные проблемы (оценка 0,6–0,65)
Надежность системы (0,68)
Проявление:
Устойчивость к дефектам — 0,64
Восстанавливаемость — 0,64
Недостаточная автоматизация обхода ошибочных ситуаций (0,5)
Возможные причины:
Неполная реализация retry-механизмов для внешних API
Отсутствие circuit breaker паттернов для отказоустойчивости
Недостаточное покрытие граничных случаев в обработке исключений
Ограниченные возможности graceful degradation
Сопровождаемость (0,645)
Проявление:
Низкая тестируемость кода — 0,5
Стабильность при внесении изменений — 0,6
Возможные причины:
Недостаточное покрытие unit и integration тестами
Сложность кодирования отдельных модулей
Неполное документирование бизнес-логики
Возможное нарушение принципов SOLID в некоторых компонентах
Производительность (0,58)
Проявление:
Критическая проблема с использованием ресурсов (см. выше)
2.3. Области, требующие внимания (оценка 0,65–0,75)
Корректность функциональности (0,62)
Проблемы:
Неполное оформление документации (0,5)
Частичная реализация функций спецификации (0,6)
Причины:
Технический долг, накопленный в процессе быстрой разработки
Недостаточная синхронизация документации с кодом
Возможные пропуски в требованиях
3. Рекомендации по устранению выявленных проблем
3.1. Приоритет 1 (Критический) — срок: 1-2 спринта
Оптимизация использования ресурсов:
Профилирование и оптимизация памяти
Провести анализ с использованием JProfiler или VisualVM
Выявить и устранить утечки памяти
Оптимизировать размеры пулов подключений к БД и Kafka
Настроить параметры JVM GC для микросервисной архитектуры
Оптимизация процессорной нагрузки
Провести анализ "горячих точек" в коде
Оптимизировать алгоритмы парсинга и сканирования ссылок
Внедрить асинхронную обработку для тяжелых операций
Пересмотреть конфигурацию thread pools
Улучшение кэширования
Расширить использование Redis для часто запрашиваемых данных
Внедрить многоуровневое кэширование (L1/L2 cache)
Оптимизировать стратегии инвалидации кэша
Ожидаемый результат: повышение оценки с 0,36 до 0,7+, снижение затрат на инфраструктуру на 30-40%
