FDD로 기능 단위 개발의 흐름과 책임을 설계하는 법
기능 주도 개발 FDD의 도메인 모델링, 기능 목록, 클래스 소유권, 반복 구현 방식을 실무 관점에서 정리한다.
2026-08-14 · 최초 발행 2026-04-17
기능을 중심에 두는 개발 방식
기능 주도 개발(Feature Driven Development, FDD)은 사용자가 실제로 이해하고 가치를 느낄 수 있는 기능을 기준으로 설계와 구축을 진행하는 반복적 소프트웨어 개발 방법론이다. 프로젝트 초기에 도메인 모델을 다듬고, 이후에는 짧은 주기로 기능을 완성해 나간다.
FDD에서 말하는 기능은 작고 가치가 있으며 사용자가 이해할 수 있는 결과물이다. 일반적으로 구현 범위는 두 시간에서 이틀 사이가 되도록 나눈다. 개발자에게는 구현 목표가 분명해지고, 관리자는 진행 상태를 추적할 수 있으며, 고객은 빠르게 결과를 확인할 수 있다.
1990년대 후반 제프 델루카(Jeff De Luca)가 제안한 FDD는 XP나 스크럼과 같은 애자일 방법론과 맞닿아 있으면서도, 설계와 구조화된 공정에 더 큰 비중을 둔다.
모델과 책임을 연결하는 운영 원리
FDD는 비즈니스 목표와 개발 활동이 분리되지 않도록 기능 중심으로 작업을 정렬한다. 기술적 복잡성만 다루는 대신, 각 작업이 사용자에게 어떤 가치를 주는지를 계속 확인할 수 있다.
프로젝트 초기에 도메인 전문가와 함께 도메인 객체 모델을 만들고 시스템 구조를 정의한다. 이 모델은 팀이 전체 구조를 바라보는 공통 기준이 된다.
코드의 각 클래스에는 책임 개발자를 둔다. 개별 클래스 소유권은 코드 품질에 대한 책임을 명확히 하고, 무분별한 변경을 줄이는 역할을 한다. 반면 기능을 구현할 때는 관련 클래스의 소유자들이 기능 팀을 구성해 함께 설계와 구현에 참여한다.
진행 상황 역시 기능 목록의 상태를 기준으로 본다. 설계 중, 구현 중, 완료와 같은 상태를 추적하면 프로젝트의 현재 위치를 객관적인 수치로 파악할 수 있다.
전체 모델에서 기능 구현까지 이어지는 흐름
도메인 모델로 공통 기반을 만든다
시작 단계에서는 도메인 전문가와 개발 팀이 시스템의 전체 형상을 함께 그린다. 도메인의 주요 영역별로 작업 범위를 나누고, 핵심 개념과 관계를 클래스 다이어그램 등의 산출물로 정의한다. 이 과정에서 팀 전체가 공유할 멘탈 모델이 형성된다.
구현할 기능을 목록으로 구체화한다
도메인 모델을 바탕으로 시스템이 제공해야 할 기능을 나열한다. 기능은 “액션(Action) - 결과(Result) - 대상(Object)” 형식으로 표현하며, “사용자의 비밀번호를 확인한다”처럼 구체적으로 작성한다. 완성된 기능은 논리적인 그룹으로 묶어 관리한다.
우선순위와 책임을 기능 단위로 배정한다
기능 목록이 정리되면 우선순위와 의존성을 고려해 개발 순서를 결정한다. 각 기능 그룹에는 책임 개발자(Chief Programmer)를 배정하고, 예상 개발 기간과 자원 할당 계획을 수립한다. 이 계획은 프로젝트 마일스톤을 정의하는 로드맵이 된다.
설계와 구현을 짧게 반복한다
기능 구현에 필요한 클래스 소유자들이 모여 설계 워크루를 진행한다. 설계를 검토한 뒤 코드를 작성하고, 단위 테스트로 해당 기능의 결함 여부를 확인한다.
구현한 기능은 주 단위 또는 더 짧은 주기로 메인 소스 트리에 통합한다. 통합 결과물은 고객에게 시연할 수 있는 수준이어야 하며, 통합 테스트를 통해 시스템 전체의 안정성을 검증한다.
FDD를 선택할 때 확인할 조건
기능 기반 보고는 퍼센트 단위로 진행 상태를 드러내므로, “90% 완료 증후군”처럼 거의 끝난 것처럼 보이지만 마무리되지 않는 상황을 줄이는 데 도움이 된다. 클래스 소유권과 팀 단위 설계를 함께 적용하면 코드 리뷰가 자연스럽게 이루어지고, 견고한 아키텍처를 유지하기 쉬워진다. 체계적인 구조를 갖춘 방식이므로 수백 명 규모의 개발자가 참여하는 대형 프로젝트에도 적용할 수 있다.
다만 초기 도메인 모델링이 부실하면 이후 단계 전반에서 수정 비용이 커질 수 있다. 클래스 소유자가 부재하거나 병목이 생기면 일정 전체가 지연될 위험도 있다. 완전한 경량 애자일 방식보다 관리 요소가 많기 때문에, 팀이 그 운영 방식에 적응할 준비가 되어 있어야 한다.
FDD는 초기 모델링으로 구조적 안정성을 확보하면서도 기능 단위 반복으로 변화에 대응하려는 방법론이다. 기술적 성취와 비즈니스 목표를 함께 관리해야 하는 복잡한 엔터프라이즈 프로젝트에서 특히 유효하다.