도메인 요구공학의 주요 목표는 다음과 같습니다.
- 공통성과 가변성을 체계적으로 식별/관리: 이를 통해 제품 라인에서 재사용 가능한 요구사항을 정의하고, 다양한 제품이 요구사항을 공유할 수 있도록 하는 것이 핵심입니다. 이를 통해 제품 라인에서 개발될 예측 가능한 제품의 요구사항을 사전에 정의할 수 있습니다. 그러나 모든 예측 가능 제품의 요구사항을 개발하는 것은 불가능하고, 떄로는 계획되지 않은 제품이 개발되기도 하는 것은 불가피합니다.
- 재사용 가능성 극대화: 여러 제품에서 공통적으로 사용되는 요구사항을 식별하고, 이를 재사용할 수 있는 구조로 만듭니다.
- 가변성 관리: 제품별로 달라지는 요구사항을 효율적으로 관리하여, 각 제품의 특성을 반영할 수 있도록 합니다.
도메인 요구공학의 주요 활동으로는:
- 도메인 분석: 특정 도메인에서 반복적으로 사용되는 요구사항과 기능을 식별합니다. 이를 통해 공통 요구사항과 가변 요구사항을 구분합니다.
- 공통성 및 가변성 분석: 다양한 제품 간에 공통적으로 사용되는 요구사항과 변경 가능한 요구사항을 분석합니다. 이를 통해 제품군 내에서 재사용할 부분과 맞춤화할 부분을 명확히 정의합니다.
- 도메인 요구사항 명세화: 분석된 가변성 중 외부 가변성을 식별하여 요구사항을 명세화하여 문서로 정리합니다. 이를 통해 공통적으로 사용할 요구사항과 각 제품에 맞는 요구사항이 명확히 정의됩니다.
- 요구사항 재사용 구조 설계: 공통 요구사항을 재사용 가능한 구조로 설계하고, 가변 요구사항을 효율적으로 관리할 수 있는 메커니즘을 설계합니다.
- PL Scoping에 피드백 제공: 피처 집합이 변경되는 경우, 제품 로드맵에 대한 변경을 요구할 수 있습니다.
그림 1에서 보는 바와 같이 도메인 요구공학은 PL Scoping의 결과를 입력으로 하여 제품 관리에 필요한 피처의 정제와 추가적인 피처와 피처 수정에 관한 피드백을 제공하게 됩니다. 또한 제품 라인 가변성을 정의한 가변성 모델을 이용하여 도메인 설계에 반영하며, 반복적인 피드백을 통해 도메인 아키텍처가 점진적으로 모습을 갖추어 가면서 상세화 됩니다. 이때 가변성 모델은 외부 가변성과 제품 라인의 일부 내부 가변성으로 구분되며, 도메인 요구사항은 이러한 공통 요구사항과 가변 요구사항을 모두 포함하게 됩니다.
다음 그림은 요구사항과 아키텍처간 피드백 구조를 통해 상세화 단계가 강화되는 모습을 나타내고 있습니다.
또한 도메인 요구공학은 어플리케이션 요구공학과도 관계가 정의됩니다. 이때 도메인 요구공학은 전체 제품군에 대한 공통 요구사항과 가변 요구사항을 정의하는 기반을 제공합니다. 반면 어플리케이션 요구공학은 도메인 요구공학에서 정의된 공통 및 가변 요구사항을 구체적인 어플리케이션에 맞춰 세부화하는 역할을 합니다. 즉, 도메인 요구공학이 상위 레벨에서 요구사항을 관리하고 정의하면, 어플리케이션 요구공학이 이를 바탕으로 개별 제품에 맞는 요구사항을 추가 및 수정하여 최종 요구사항을 완성하는 관계를 가집니다.
이는 도메인 요구공학이 재사용성을 극대화하는데 중점을 두고, 어플리케이션 요구공학은 이를 특정 제품에 맞게 맞춤화 하는 역할을 합니다.
도메인 요구공학 프로세스
1. 도메인 요구사항 추출
도메인 요구사항 추출 단계에서는 공통 요구사항 식별하는 것이 핵심입니다. 가능한 많은 공통성을 가지도록 해서 가변성 규모를 가능한 최소화하는 것이 중요합니다.
도메인 요구사항 추출을 위한 주요 활동
주요 활동 | 설명 |
도메인 분석 | • 도메인 전문가와 협력하여 해당 도메인의 특성과 규칙을 파악합니다. • 도메인 내에서 반복적으로 사용되는 공통 기능과 프로세스를 식별합니다. |
기존 시스템 분석 | • 동일 도메인 내의 기존 애플리케이션이나 시스템에서 사용된 요구사항을 분석합니다. • 이미 구현된 시스템의 요구사항을 통해 재사용 가능한 요구사항을 추출합니다. |
공통성과 가변성 식별 | • 도메인 내 여러 시스템에서 공통으로 적용되는 요구사항과 각 시스템마다 달라질 수 있는 요구사항을 구분합니다. • 공통 요구사항은 재사용 가능성을 높이고, 가변 요구사항은 다양한 제품에서 적용할 수 있도록 관리합니다. |
도메인 요구사항 추출 vs. 소프트웨어 요구사항 추출
도메인 요구사항 추출 | 소프트웨어 요구사항 추출 | |
목적 | 여러 제품군에 적용될 수 있는 재사용성 있는 요구사항 도출 | 개별 프로젝트의 특정 요구사항 도출 |
범위 | 개별 프로젝트의 특정 요구사항 도출 | 단일 시스템이나 프로젝트 요구사항 |
재사용성과 가변성 |
재사용 가능한 공통 요구사항과 가변 요구사항 도출 | 재사용성보다는 해당 프로젝트의 요구 충족 |
참여자 | 도메인 전문가, 여러 제품의 이해관계자 | 특정 프로젝트의 이해관계자, 사용자 |
산출물 | 공통/가변 요구사항 목록, 가변성 모델 | 기능 요구사항, 비기능 요구사항, 요구사항 명세서 |
2. 도메인 요구사항 분석
도메인 요구사항 분석은 도메인 내에서 여러 애플리케이션에 공통적으로 적용될 수 있는 요구사항과, 애플리케이션마다 달라질 수 있는 가변 요구사항을 명확히 구분하여 모델화하는 것이 목표입니다. 제품군의 다양한 변형을 체계적으로 관리하고, 재사용 가능한 공통 요구사항과 맞춤형 요구사항 간의 관계를 효율적으로 정의합니다. 요구사항을 모델로 표현하여 체계적이고 일관된 방식으로 관리할 수 있도록 돕습니다.
도메인 요구사항 분석을 위한 주요 활동
주요 활동 | 설명 |
공통 요구사항 분석 | • 도메인 내 여러 애플리케이션이나 제품에서 반복적으로 적용되는 요구사항을 분석합니다. • 이를 통해 재사용 가능한 공통 요구사항을 도출합니다. • 공통 요구사항은 다양한 제품군에서 동일하게 적용되는 기능이나 비즈니스 로직, 규칙 등을 포함합니다. |
가변 요구사항 분석 | • 각 제품이나 애플리케이션에서 달라질 수 있는 요구사항을 분석합니다. • 가변 요구사항은 시스템의 일부 특성이나 기능이 달라질 수 있는 부분을 식별하는 데 중점을 둡니다. • 예) 자동차 도메인에서는 각 차종마다 다른 엔진 유형을 지원할 수 있으며, 이를 가변 요구사항으로 식별합니다. |
가변성 모델링 | • 가변성 모델은 제품군 내의 가변 요구사항을 효율적으로 관리하고, 각 제품이 요구하는 변형을 체계적으로 표현합니다. • 가변점(variation points)과 가변부(variants)를 정의하여, 각 제품에서 가변성이 어떻게 나타나는지 표현합니다. • 이를 통해 요구사항을 설계 및 개발 단계로 연결하여, 다양한 제품에서 공통된 부분과 가변성을 명확하게 구분합니다. |
공통/가변 요구사항 분석 모델링 |
• 공통/가변 요구사항 분석 모델은 요구사항 간의 관계를 시각적으로 표현하여, 각 요구사항이 어떻게 재사용되며, 가변성이 어떻게 적용되는지 명확히 보여줍니다. • 이 모델은 시스템 설계 및 구현 단계에서 중요한 가이드 역할을 하며, 요구사항이 설계와 어떻게 연결되는지 파악할 수 있도록 돕습니다. |
도메인 요구사항 분석 vs. 소프트웨어 요구사항 분석
도메인 요구사항 분석 | 소프트웨어 요구사항 분석 | |
목적 | 여러 제품에서 공통으로 재사용 가능한 요구사항 분석 | 특정 프로젝트나 시스템의 요구사항 분석 |
범위 | 도메인 내의 다양한 제품군을 포괄하는 요구사항 분석 | 단일 시스템에 초점을 맞춘 요구사항 분석 |
재사용성과 가변성 |
재사용 가능한 공통 요구사항과 가변 요구사항을 관리 | 재사용성이나 가변성보다는 특정 시스템 요구 충족에 중점 |
참여자 | 도메인 전문가, 다양한 제품의 이해관계자 | 특정 시스템의 이해관계자, 사용자 |
산출물 | 공통 요구사항 목록, 가변 요구사항 목록, 가변성 모델 | 기능 요구사항, 비기능 요구사항, 요구사항 명세서 |
3. 도메인 요구사항 명세
도메인 내에서 도출된 공통 요구사항과 가변 요구사항을 정확하고 명확하게 문서화하여, 시스템 설계와 개발에 필요한 기초 정보를 제공합니다. 또한 공통 요구사항과 가변 요구사항을 체계적으로 정리하여, 제품군 내에서의 재사용성을 극대화합니다. 마지막으로 도출된 요구사항을 바탕으로 시스템이 기대하는 동작을 확인할 수 있는 테스트 케이스를 정의하여, 시스템이 요구사항을 충족하는지 검증할 수 있도록 합니다.
도메인 요구사항 명세를 위한 주요 활동
주요 활동 | 설명 |
도메인 요구사항 명세서 작성 |
공통 요구사항과 가변 요구사항을 체계적으로 문서화하여 도메인 요구사항 명세서를 작성합니다. 이 명세서는 도메인 내 모든 시스템이 공유할 수 있는 요구사항뿐만 아니라, 각 제품에 맞춰 달라질 수 있는 요구사항을 명확히 정의합니다. |
가변성 모델 활용 | 가변성 모델을 활용하여 각 제품군에서 요구사항이 어떻게 달라지는지 명확히 정의합니다. 가변성 모델을 통해 특정 상황에서 어떤 요구사항이 적용될지 결정하며, 가변성 모델은 시각적으로 각 가변부(variants)를 표현하여 개발팀이 명확하게 이해할 수 있도록 돕습니다. |
시스템 테스트 케이스 작성 |
도메인 요구사항 명세서를 기반으로 시스템 테스트 케이스를 작성합니다. 테스트 케이스는 도출된 요구사항을 바탕으로, 시스템이 기대한 대로 동작하는지 확인할 수 있는 시나리오를 포함합니다. 각 요구사항이 명확히 검증될 수 있도록 테스트 케이스를 설계하며, 공통 요구사항에 대한 테스트와 가변 요구사항에 대한 테스트를 구분하여 작성합니다. |
도메인 요구사항 명세서 검토 및 수정 |
작성된 도메인 요구사항 명세서와 테스트 케이스를 검토하고, 요구사항이 명확하게 정의되었는지, 누락된 부분이 없는지 확인합니다. 요구사항과 테스트 케이스 간의 추적성을 유지하여, 모든 요구사항이 테스트 케이스로 검증될 수 있도록 보장합니다. |
4. 도메인 요구사항 검증
도메인 요구사항 검증은 도출된 도메인 요구사항이 정확하게 표현되었는지, 시스템이 구현 가능한 수준으로 정의되었는지 검토합니다. 또한도메인 내 다양한 요구사항 간의 일관성을 확인하고, 상충되거나 모호한 부분이 없는지 검증합니다.
이를 통해 가변 요구사항이 명확히 정의되어 다양한 제품에 대해 올바르게 적용될 수 있는지 확인합니다. 시스템 테스트케이스를 기반으로 요구사항이 올바르게 검증될 수 있는지 확인하고, 테스트가 충분한지 평가합니다.
도메인 요구사항 검증을 위한 주요 활동
주요 활동 | 설명 |
도메인 요구사항 명세서 검토 |
• 도메인 요구사항 명세서의 내용을 검토하여, 모든 요구사항이 정확하게 정의되었는지 확인합니다. • 공통 요구사항과 가변 요구사항이 명확하게 구분되고, 도메인 내의 다양한 제품군에 대해 올바르게 적용될 수 있는지 평가합니다. |
시스템 테스트 케이스 검토 |
• 작성된 시스템 테스트케이스를 검토하여, 각 요구사항이 테스트 가능한지 확인합니다. • 모든 요구사항이 테스트케이스로 검증될 수 있도록 테스트가 충분히 작성되었는지 평가하고, 테스트 커버리지를 확인합니다. |
요구사항 추적성 확인 | • 요구사항과 테스트케이스 간의 추적성 매트릭스를 사용하여, 모든 요구사항이 테스트 케이스로 검증될 수 있도록 연결되어 있는지 확인합니다. • 추적성을 통해 누락된 요구사항이 없는지, 혹은 잘못된 연결이 있는지 검토합니다. |
요구사항 변경 관리 및 수정 | • 검토 과정에서 발견된 오류나 불명확한 부분을 요구사항 명세서에 반영하고, 필요에 따라 요구사항을 수정합니다. • 변경 사항이 다른 요구사항에 영향을 미치지 않는지 확인하고, 요구사항 간의 연관성을 검토합니다. |
가변성 모델 검토 | • 가변성 모델을 검토하여, 가변 요구사항이 명확히 정의되고, 가변 요소(variation points)와 선택지(variants)가 체계적으로 관리되고 있는지 확인합니다. • 각 제품이 요구하는 가변성을 처리할 수 있도록, 가변성 모델이 제대로 설계되었는지 평가합니다. |
검토 회의 및 피드백 수집 |
• 검토 회의를 통해 다양한 이해관계자(도메인 전문가, 개발자, 테스트 엔지니어 등)로부터 피드백을 수집하고, 검토 과정에서 발견된 문제를 논의합니다. • 모든 이해관계자가 요구사항에 대해 동의하고, 추가적으로 고려해야 할 사항이 없는지 확인합니다. |
5. 도메인 요구사항 관리
요구사항이 프로젝트 진행 과정에서 변경될 경우 그 변경 사항이 어디에서 발생했는지 그리고 시스템에 어떤 영향을 미치는지를 추적하는 것이 목적입니다. 또한 여러 제품군에서 공통으로 적용될 수 있는 요구사항과 가변 요구사항을 일관되게 관리하여, 도메인 내 다양한 시스템에서 통일된 기준으로 요구사항을 유지합니다.
이를 통해 이미 정의된 공통 요구사항을 재사용 가능한 상태로 유지하며, 다양한 프로젝트나 제품에 맞게 적절한 변경을 관리합니다. 또한 도메인 요구사항이 변경될 때 이를 체계적으로 관리하고, 모든 이해관계자가 동의하고 명확하게 이해할 수 있도록 변경 사항을 조정합니다.
도메인 요구사항 관리를 위한 주요 활동
주요 활동 | 설명 |
요구사항 버전 관리 | • 도메인 요구사항은 버전 관리 시스템을 통해 지속적으로 업데이트되며, 각 요구사항의 변경 사항을 추적할 수 있습니다. • 요구사항 명세서가 수정될 때마다 새로운 버전이 생성되며, 이전 버전과 비교하여 어떤 변경이 발생했는지 기록됩니다. • 요구사항의 수정 이력과 변경 사유를 문서화하고, 이를 통해 과거와 현재의 요구사항을 비교할 수 있습니다. |
요구사항 변경 관리 | • 요구사항 변경이 발생할 경우, 이를 분석하고 영향을 평가한 후, 승인 절차를 통해 변경 사항을 적용합니다. • 요구사항 변경이 다른 요구사항 또는 시스템 전반에 미치는 영향을 파악하고, 변경이 필요할 경우 다른 관련된 요구사항도 함께 수정하거나 조정합니다. • 변경된 요구사항은 검토 보고서를 기반으로 다시 검토하여, 일관성 있게 수정이 이루어졌는지 확인합니다. |
요구사항 우선순위 관리 |
• 도메인 내의 여러 요구사항을 중요도, 비용, 위험 등에 따라 우선순위를 설정하여 관리합니다. • 이는 제한된 리소스와 시간 내에서 가장 중요한 요구사항부터 우선적으로 처리할 수 있게 해 주며, 요구사항 변경 시 우선순위에 따라 대응할 수 있도록 합니다. |
추적성 매트릭스 업데이트 |
• 요구사항 추적성 매트릭스는 각 요구사항이 시스템 설계, 구현, 테스트와 어떻게 연결되는지 명확하게 정의한 도구입니다. • 요구사항이 변경되거나 추가될 때, 이를 설계 요소나 테스트 케이스와 연결하여 추적성을 유지합니다. • 추적성을 통해 요구사항의 변경이 시스템 개발 전반에 어떻게 영향을 미치는지 파악할 수 있습니다. |
요구사항 상태 추적 | • 각 요구사항의 상태를 추적하여, 요구사항이 정의, 검증, 승인, 변경 등의 단계 중 어느 상태에 있는지 기록합니다. • 이를 통해 요구사항이 처리 중인지, 승인 완료되었는지, 또는 변경 대기 중인지 상태를 명확하게 파악할 수 있습니다. |
이해관계자 협업 및 변경 승인 절차 |
• 도메인 요구사항 관리 과정에서 요구사항이 변경되거나 업데이트될 경우, 관련 이해관계자들과 협력하여 승인 절차를 진행합니다. • 이해관계자 간에 요구사항 변경에 대한 명확한 의사소통이 이루어지도록 하고, 변경된 요구사항에 대한 공동의 합의를 도출합니다. • 변경된 요구사항은 공식 승인을 받은 후, 시스템에 반영됩니다. |
도메인 요구사항 검토 보고서 활용 | • 도메인 요구사항 관리 활동에서는 도메인 요구사항 검토 보고서를 사용하여, 이전 단계에서 도출된 요구사항 검토 결과를 참고합니다. • 요구사항 검토 보고서의 내용을 바탕으로 요구사항의 정확성과 일관성을 유지하고, 변경 관리 시 검토된 내용을 반영하여 요구사항의 품질을 보장합니다. |
'Software Engineering > SPL (SW Product Line)' 카테고리의 다른 글
SPL: 도메인 설계 (Domain Design) - 유연성 설계 (Design for Flexibility) (0) | 2024.10.26 |
---|---|
SPL: 도메인 설계 (Domain Design) - 가변성 설계 (Design for Variability) (2) | 2024.10.25 |
SPL: 가변성 모델링 (Variability Modeling) - 재사용성과 유연성 극대화 (1) | 2024.10.24 |
SPL: 범위 설정 (PL Scoping) - 포트폴리오, 도메인, 자산 (2) | 2024.10.17 |
소프트웨어 공학: Software Product Line (SPL) (2) | 2024.10.06 |