Метод BDD можно применить при создании любой системы. Основная идея метода заключается в создании точного описания какого-то типа поведения системы еще до того, как система создается.
Предположим, что мы хотим создать систему, которая будет производить уборку в жилом помещении, в квартире. Называем такую систему - уборщик, а основная функция - уборка.
Без применения подхода BDD, мы бы начинали думать об описании функции уборки, возможно так:
- Создать модель квартиры, которую нужно убрать;
- Создать стратегию уборки квартиры;
- Декомпозировать стратегию до тактических действий;
- Начать уборку, выполняя тактические действия, корректируя план работ;
- Вернуться в начальное состояние после завершения уборки.
С применением подхода BDD, мы бы направили свое внимание на окружение системы и стали бы описывать примеры выполнения функции, то есть стали бы описывать ожидаемый результат, возможно так:
- Когда получает команду запуска, тогда показывает стратегию выполнения уборки;
- Когда получает подтверждение стратегии, тогда показывает варианты разложения стратегии на альтернативы и на детальные действия (план работ);
- Когда получает подтверждение плана работ, тогда начинает выполнение уборки;
- Когда не может выполнить работу по плану, тогда корректирует план и уведомляет пользователя об изменении.
Подход BDD это декларативное описание функции системы, как результата применения этой функции, без описания того “как” система будет выполнять свою функцию.
Применение подхода, это итеративное уточнение каждого сценария до вида, достаточного для проверки ожидаемого поведения. Один из общих сценариев выше, мы можем уточнить так:
- Когда получает команду запуска
| Тип уборки | Быстрая |
| Желаемое время выполнения уборки | 30 минут |
| Примерный объем помещения | 15 кв. м. | - Тогда показывает стратегию выполнения выполнения уборки
| Номер шага | Название действия | Примерное время выполнения |
| 1 | Подмести | 5 минут |
| 2 | Пропылесосить | 10 минут |
| 3 | Влажная уборка | 15 минут |
Применение BDD при разработке программного обеспечения выглядит схожим образом, например:
- Сценарий: Перевод денег между счетами внутри банка
- Допустим, у Тесс есть следующие счета:
| счет | баланс |
| текущий | 1000 |
| сберегательный | 2000 | - Когда она переводит 500.00 с текущего счета на сберегательный
- Тогда её счета должны выглядеть так:
| счет | баланс |
| текущий | 500 |
| сберегательный | 2500 |
Главное преимущество подхода BDD это описание сценариев выполнения функции системы, которые будут понятны всем участникам создания системы. Они однозначно понимаемы и не могут быть по-разному интерпретированы участниками, а это уменьшит переделки, снизит затраты и ускорит создание системы.