도메인 공학으로 제품군 재사용 자산 설계하기
도메인 공학의 공통성·가변성 분석, 피처 모델링, 참조 아키텍처, 요구공학과 제품군 개발에서의 재사용 자산 구축 방식을 정리한다.
2026-08-15 · 최초 발행 2025-05-23
재사용의 단위는 코드보다 넓다
도메인 공학은 재사용 가능한 소프트웨어 자산을 체계적으로 개발하기 위한 접근법이다. 같은 도메인에 속한 시스템들의 공통점과 달라질 수 있는 부분을 분석해 개발 기반을 만든다.
목표는 코드 조각을 다시 쓰는 데 그치지 않는다. 분석, 설계, 구현, 테스트 전반에서 재사용 가능한 산출물을 마련하며, 소프트웨어 제품군(Product Line) 개발의 핵심 방법론으로 활용된다.
도메인은 특정 지식 분야 또는 서로 관련된 개념의 집합이다. 현장 종사자가 이해하는 용어와 업무 행위로 특징지어지며, 애플리케이션 관점에서는 공통 특성을 공유하는 현재 및 미래 애플리케이션의 집합으로 볼 수 있다. 재사용을 제대로 설계하려면 먼저 이 도메인을 이해해야 한다.
공통점과 변화를 찾아내는 분석 방식
FODA(Feature-Oriented Domain Analysis)는 1990년대 초 SEI(Software Engineering Institute)에서 개발한 기법이다. 시스템 집합에서 주도적이거나 독특한 피처(feature)를 식별한다. 여기서 피처는 구현·테스트·배포·유지되어야 하는 기능적 추상화이며, 피처 모델과 유즈케이스 모델을 함께 만든다.
도메인 분석에는 다음과 같은 접근이 사용된다.
- FODA는 기능을 중심으로 접근하며, 피처 모델로 공통성과 가변성을 식별한다.
- ODM(Organization Domain Modeling)은 아키텍처 기반 접근으로 도메인 아키텍처를 중심에 둔다.
- FAST(Family-Oriented Abstraction, Specification, and Translation)는 추상화와 명세화에 초점을 두고 제품군 개발을 다룬다.
제품군 요구사항은 가변성을 명시한다
도메인 요구공학은 일반 요구공학과 달리 재사용성을 중심에 둔다. 도메인 분석 기법을 이용해 예상되는 가변성을 추출하고, 그 범위를 확정한다. 이 과정에서는 도메인 전문가와의 협업이 필요하다.
분석 단계에서는 공통성과 가변성(Commonality and Variability: C&V)을 명확히 식별한다. 달라질 것으로 예상되는 부분을 표시하고 관리하며, 개별 제품이 아닌 제품군 전체를 기준으로 분석한다.
페르소나(Persona)는 사용자 그룹을 대표하는 가상의 인물을 설정해 사용자 중심, 실무 중심의 요구사항을 도출하는 기법이다. 추상적인 사용자 집단을 구체적인 인물로 표현하면 팀이 같은 사용자상을 공유하기 쉬워지고, 여러 사용자 요구를 수집·분석해 개발자가 사용자 관점에서 판단하도록 돕는다. 사용자 연구에서 인터뷰, 설문조사, 관찰로 실제 사용자 데이터를 수집한 뒤 주요 사용자 그룹을 식별하고, 연령·직업·기술 수준·목표·니즈 같은 속성을 정한다. 이름, 배경, 행동 패턴을 포함한 프로필을 실제 사용자와 비교해 정확성을 검증하고, 검증된 페르소나의 관점에서 제품군의 공통 요구사항과 가변 요구사항을 도출할 수 있다.
명세에는 가변 가능한 부분을 위한 상징적 대체자(symbolic placeholder)를 포함한다. 특정 제품에 맞춰 확장·인스턴스화·구체화할 수 있는 유연한 명세를 작성하는 방식이다. 검증 역시 제품군 전체 요구사항과 개별 시스템 요구사항을 함께 대상으로 하며, 공통성과 가변성이 올바르게 구분됐는지 확인한다.
자산을 만드는 일과 제품을 만드는 일
소프트웨어 제품군 개발은 도메인 공학과 애플리케이션 공학의 활동으로 나뉜다.
도메인 공학은 도메인 모델의 공통성과 가변성을 분석하고, 제품군 전체에서 쓸 핵심 자산을 만든다. 이 자산에는 요구사항 모델, 아키텍처 설계, 재사용 가능한 컴포넌트, 테스트 케이스가 포함된다. 도메인 설계에서는 모든 제품에 적용할 수 있는 기본 구조인 참조 아키텍처(Reference Architecture)를 만들고, 제품별 차이를 다룰 가변성 메커니즘과 재사용 컴포넌트가 연결되는 인터페이스를 설계한다.
개발된 핵심 자산은 검색·관리 가능한 저장소에 축적한다. 애플리케이션 공학은 이 저장소의 자산을 사용해 특정 제품을 개발하며, 제품 구성에 맞는 자산을 조합하고 필요한 가변성을 적용한다. 동일 기능의 산출물은 재사용하고, 제품별로 필요한 신규 기능은 개발·통합한다. 자산 자체뿐 아니라 이를 제품 개발에 연결하는 운영 체계가 제품군 개발의 기반이 된다.
피처 모델로 제품 구성을 표현한다
피처 모델은 제품군에 속한 시스템들이 공유하는 부분과 차이 나는 부분을 표현한다. 피처는 필수 피처, 선택적 피처, 대안 피처로 구분할 수 있고, 피처 사이의 의존성과 제약조건도 나타낼 수 있다. 제품을 구성할 때 어떤 자산을 재사용할지 결정하는 기준이 된다.
정확성을 다루는 정형 방법론
도메인 자산의 정확성을 확보하기 위해 정형 방법론을 활용할 수 있다. 정형 명세(Formal Specification)에는 연산과 공리로 시스템을 나타내는 대수학적 명세, 수학적 모델로 시스템 상태와 동작을 표현하는 모형 기반 명세가 있다. 두 방식은 모호성을 줄이고 요구사항을 정확하게 표현하는 데 쓰인다.
정형 검증(Formal Verification)에서는 정리 증명(Theorem Proving)으로 수학적 증명을 통해 시스템 속성을 검증하거나, 모델 체킹(Model Checking)으로 시스템 상태 공간을 탐색해 속성을 검증한다. 이는 도메인 자산의 신뢰성을 확보하는 수단이다.
서로 다른 도메인에서의 가변성 관리
자동차 소프트웨어에서는 여러 차종에 적용할 공통 인포테인먼트 시스템을 만들고, 고급형·기본형처럼 차종별 특성에 따른 가변성을 관리할 수 있다. 현대/기아자동차의 통합 인포테인먼트 플랫폼이 예시다.
모바일 애플리케이션에서는 기기와 OS 버전의 차이를 다룬다. 화면 크기, 해상도, 센서 유무 등이 가변성 대상이며, 크로스 플랫폼 모바일 앱 프레임워크가 이에 해당하는 예시다.
금융 시스템에서는 은행·증권·보험 서비스 사이의 공통 기능을 식별하고, 국가별 법규와 정책 차이에서 생기는 가변성을 관리한다. 글로벌 금융 기관의 핵심 뱅킹 시스템이 예시로 제시될 수 있다.
재사용 체계를 운영할 때의 조건
도메인 공학은 개발 시간과 비용을 줄이고, 일관된 사용자 경험과 품질 향상, 결함 감소를 지원한다. 유지보수 효율성을 높이고 신제품 출시 시간을 줄이는 효과도 기대할 수 있다.
다만 초기 투자 비용이 늘 수 있으며, 도메인 전문가를 확보하기 어렵다. 가변성 관리 자체가 복잡하고 적절한 추상화 수준을 정해야 한다. 조직 문화와 프로세스의 변화도 함께 요구된다.
도메인 전문성과 소프트웨어 공학 방법론을 결합해, 요구사항부터 테스트까지 재사용 가능한 자산을 축적하는 것이 도메인 공학의 중심이다.