🎥 видео в TikTok.
Хорошо поставленная задача содержит требования. Что должно получиться, чтобы мы поняли, что достигли цели? Давайте разберемся какие бывают требования.
1️⃣ Функциональные требования или functional requirements
Чаще всего, когда мы разрабатываем программное обеспечение, мы знаем что оно должно делать. Еще лучше, когда мы знаем почему оно должно это делать. Для решения какой бизнес задачи мы пишем эту программу?
Например, мы пишем новый Телеграм, нужно сделать так, чтобы если пользователь шлет в чат картинку, мы ее где-то сохраняли, и показывали другим участникам чата.
Это функциональное требование для нашего приложения и бэк-энда. Если мы это не сделаем, наш продукт не будет решать бизнес задачу.
2️⃣ Нефункциональные требования или non-functional requirements
С другой стороны, когда мы разрабатываем что-то, мы не всегда сразу знаем КАК мы это будем делать. Многие вещи, которые непосредственно не относятся к бизнес процессам, могут повлиять на пользовательский опыт или на сложность поддержки программы в будущем.
Например, есть множество вариантов куда сохранять картинки в нашем мессенджере — мы можем сложить их прямо на диск на сервере, а можем положить в
S3. Но только вариант с S3 обеспечит хорошую долговечность этих картинок (99.999999999%).Большинство нефункциональных требований можно отнести к таким категориям:
1.
Performance (производительность)2.
Security and compliance (безопасность и соблюдение правил)3.
Recoverability (возможность восстановления)4.
Maintainability (удобство в обслуживании)5.
Reliability (надежность)6.
Availability (доступность)7.
Scalability (масштабируемость)8.
Usability (удобство использования)⬛️ Еще раз - требования которые напрямую относятся к решению бизнес задачи — функциональные. А нефункциональные это требования которые могут напрямую быть не видны пользователю или клиенту, но могут сильно повлиять на их опыт.
Дальше мы подробно рассмотрим категории нефункциональных требований.