В этом документе описаны требования к продукту — парсеру аргументов командной строки.
Поскольку необходимо разработать библиотеку, подразумевающую дальнейшее использование в качестве компонента других программ, требования не подразумевают прямо некий формат UI, а описывают взаимодействие программистов, использующих библиотеку с ней.
- Входные данные должны представлять собой строки, несущие всю необходимую информацию об аргументах, которые надо распарсить, а также непосредственно строку вызова программы.
- Входные данные могут быть представлены в разных форматах: как вектор строк, так и динамический массив C-style строк.
- Формат входных данных должен соответствовать тестам из соответствующего файла. То есть должны быть реализованы все функции из тестов со всеми возможными комбинациями аргументов функций из представленных.
- Выходные данные — исключительно возвращаемые значения функций библиотеки.
- Формат выходных данных должен соответствовать тестам из соответствующего файла. То есть должны быть реализованы все функции из тестов с необходимыми типами возвращаемых значений.
- Итоговый продукт должен проходить все тесты — главный приоритет. Первые 15 — строго обязательно.
- Кроме того, должна корректно работать программа, описанная в main.cpp.
- Продукт должен настолько, насколько это возможно, соответствовать стандарту POSIX.
- К предоставленным тестам должны быть добавлены дополнительные, проверяющие соответствие стандарту POSIX.
- Полученные значения аргументов должны валидироваться (на корректность).
- Должна быть реализована поддержка "сложного аргумента" — например, имени файла с пробелами (последнее опционально).
- Требования к быстродействию отсутствуют исходя из специфики проблемы. Парсер аргументов командной строки — модуль, который запускается всего один раз за всё время работы программы, и всегда получает небольшое количество данных. Значит, его быстродействие слабо влияет на быстродействие системы.
- Требования безопасности ограничены валидацией значений аргументов на корректность, поскольку выявление угроз безопасности не относится к зоне ответственности парсера аргументов командной строки.
- Масштабируемость не требуется исходя из специфики парсера аргументов командной строки.
- Продукт должен обладать гибкой архитектурой с возможностью доработки и внесения нового функционала.