В этом документе описаны требования к продукту — приложению для показа прогноза погоды в консоли.
- Входные данные представляет собой аргументы командной строки, отвечающие за выбор конфигурационного файла, частоты обновления etc., конфигурационный файл, содержащий значения по умолчанию и набор городов.
- Также входные данные получаются во время работы программы - результаты HTTP-запросов и вводимые пользователем команды.
- Выходные данные — периодически меняющееся ASCII-изображение в терминале, отображающее прогноз погоды.
- Приложение должно корректно отображать прогноз погоды для выбранного города.
- Приложение должно иметь визуально приятный интерфейс.
- Приложение должно иметь "оффлайн-режим" — при отсутствии Интернет-соединения программа не должна завершаться с ошибкой.
- Отображать прогноз погоды на несколько дней вперед (значение по умолчанию задается конфигом)
- Обновлять с некоторой частотой (задается конфигом)
- Переключаться между городами с помощью клавиш "n", "p"
- Заканчивать работу программы по Esc
- Увеличивать\уменьшать количество дней прогноза по нажатие клавиш "+", "-"
- Требования к быстродействию средние: запросы должны обрабатываться достаточно оптимально, однако, исходя из специфики работы с Интернетом, быстродействие программы ограничено скоростью получения ответа на запрос.
- Требования к безопасности ограничены валидацией HTTP-запросов на отсутствие попыток атаки.
- Масштабируемость не требуется исходя из специфики программы для показа погоды. Однако требуется как можно меньшее количество запросов к API в силу ограничений на их количество.
- Продукт должен обладать гибкой архитектурой с возможностью доработки и внесения нового функционала.