Это итерационный и инкрементальный процесс разработки программного обеспечения, который фокусируется на "фичах".
Ключевые этапы:
- Разработка общей модели функциональности: Создание высокоуровневой объектной модели предметной области.
- Построение списка функциональности: Определение "фич" (функциональностей), которые должны быть реализованы. Каждая фича — это мелкозернистая пользовательская функциональность, ценная для клиента. Формат фичи часто "Действие над результатом, используя объект".
- Планирование по функциональности: Распределение фич между итерациями (спринтами) и командами.
- Проектирование по функциональности: Проектирование каждой фичи. Включает разработку детальных диаграмм и документирование.
- Построение по функциональности: Реализация, тестирование и интеграция фич.
Преимущества FDD:
- Визуализация прогресса: Легко отслеживать процент завершенных фич.
- Ранний и частый выпуск: Позволяет получать работающий продукт на ранних стадиях.
- Фокус на ценности для клиента: Разработка ориентирована на пользовательские потребности.
- Снижение рисков: Раннее выявление проблем за счет частой интеграции.
Недостатки FDD:
- Требует опытных архитекторов: Создание правильной объектной модели критически важно.
- Сложность для крупных проектов: Управление большим количеством мелких фич может быть затруднительным.
- Риск неопределенности требований: Если требования меняются часто, это может нарушить план.
FDD хорошо сочетается с Agile-подходами и часто используется в проектах с четко определенными бизнес-процессами.