Архитектурные требования
2018-08-29 12:52:36 +0600 +0600
This is meta description
Какие бывают требования к Архитектуре? Как мы говорили ранее требования можно делить на функциональные и нефункциональные требования. Функциональные требования собираются (предоставляются) бизнесом. Точнее будет сказать, что главная задача бизнес аналитика заключается в том, чтобы собрать функциональные требования. К функциональным требованиям можно отнести все требования которое подпадают под “Сценарии выполнения системы” или “Поведенческие сценарии”. Например: - Пользователь заходит в систему, логинится и видит список товаров, которые он может добавить в корзину. Это очень похоже на поведенческий сценарий.
То есть сценарий показывает, как система должна работать или реагировать на какие-то действия.
Важно понимать что сценарии являются на мой взгляд самой важной частью сбора требований, без сценариев архитектуру и продукт построить нельзя. Но без архитектуры вполне себе можно построить продукт. Диаграмма продукта будет выглядеть как один большой квадрат в котором будут хранится каша из кода, но оно вполне может работать.
Далее следуют нефункциональные требования. Нефункциональные требования - это все требования, которые подпадают под одну из двух групп:
-
то что можно измерить или посчитать
-
то что является прямой пожеланием заказчика.
Для чего нужны нефункциональные требования?
Они определяют сложность и стоимость системы.
Ниже приведены две картинки, которые демонстрируют разницу в нефункциональных требованиях
Оба телефона отлично работают с функциональными требованиями от бизнеса (звонить, слать смс, будильник). Но разница в цене и других характеристиках очень велика.
Разумеется что нефункциональные требования должны быть максимально детализированы. Ниже приведена картинка, которая показывает уровень детализации для различных видов требований.
Я не раз говорил, что нефункциональные требования самые тяжкие в получении. Дело в том, что бизнес, как правило, очень далек от технологий. И они не знают ответы на такие вопросы как. За какое время должна отрабатывать транзакция в базе ? Какой средний размер дампа базы данных у вас есть, если вы хотите делать миграцию в клауд?
Получение нефункциональных требований является одной из самых важных частей работы архитектора.
Как же их получать ? - Да как хотите!
Можете читать письма, изучать порталы и документы, которые вам заказчик передает.
Можете просить доступы к энвайронменту технического отдела.
Можете так же ходить на кофе или в стрип клуб с архитектором заказчика (и такой опыт бывает).
Хотя конечно существует и формальный подход к сбору требований. Но о нем мы будем говорить в следующих публикациях.
Очень важно отметить, что заказчик не всегда готов делиться такой информацией.
Причин тому может быть много:
NDA, боязнь утечек информации, или просто кому-то стыдно признаваться, что у них фиговенький продукт.
Так же бывают ситуации, когда заказчик сознательно не обговаривает те или иные нефункциональные требования. Для того, чтобы сэкономить бюджет.
Хотя самая распространенная причина - заказчик просто не знает технических деталей.
Спросите у любого вашего знакомого предпринимателя, который занимается не айти бизнесом -
какой уровень покрытия нагрузочным или юнит тестированием он хочет чтобы был у него на сайте ?
Я таки думаю, что он немного подвиснет, а потом скажет что-то невнятное
или просто скажет: я человек от бизнеса поговори с ребятами которые мне делают сайт.
Примеры нефункциональных требований
-
Performance – производительность (Система должна выдерживать 50000 запросов в секунду)
-
Scalability - масштабируемость (система должна быть разбита на 5 сервисов)
-
Data Integrity - целостность данных (В случае поломки, система не должна терять информацию)
-
Testability - тестируемость (заказчик хочет получить 90% покрытия тестами кода)
Видов этих требований огромное множество - больше примеров можно найти на вики https://en.wikipedia.org/wiki/Non-functional_requirement
Как же узнать какие требования нам нужны для построения архитектуры? Какие полезные, а какие нет? Как приоритезировать и валидировать требования? об этом мы поговорим в следующей статье…