Atrribute Driven Desgin(ADD)는 품질 속성, 기능 속성 등 속성을 중심으로 아키텍처를 수립하는 방법론입니다. 이번 글에서는 ADD의 개념과 특징 그리고 아키텍처 설계 7단계에 대해서 알아보겠습니다.
글의 순서는 아래와 같습니다.
- Attribute Driven Design의 개념과 특징
- ADD 7단계와 상세 내용
Attribute Driven Design의 개념과 특징
Attribute Driven Design(ADD)은 순차적으로 소프트웨어 아키텍처를 설계하는 방법론입니다. 아키텍처가 만족해야 할 품질 속성, 기능, 제약사항들을 Input으로 받아 목표치에 도달할 때까지 Design 결정을 반복합니다.
ADD는 품질 속성을 중심으로 Design이 진행되고, 목표를 달성할 때까지 아키텍처 설계가 반복됩니다. 따라서 품질 속성 목표 달성을 위한 아키텍처 스타일/패턴 결정, 시스템 구성요소 분할, 구체화 등의 작업이 계속 반복되는 특징이 있습니다.
ADD 아키텍처 설계는 다음과 같은 장점이 있습니다.
- 체계적이고 반복 수행 가능한 설계
- 아키텍처 설계 결과가 예측 가능
Attribute Driven Design 7단계
Attribute Driven Design 7단계를 표로 정리해보면 다음과 같습니다.
Step | Description |
1 | Inputs 검토 |
2 | Iteration 목표 설정 및 input 선택 |
3 | 분해할 시스템 요소 선택 |
4 | Design Concepts 선택 |
5 | 아키텍처 요소 인스턴스화, 책임 할당, 인터페이스 정의 |
6 | 관점에 대해서 스케치하고(Sketch views), Design 결정을 기록 |
7 | 현재 Design 분석을 수행하고, Iteration 목표와 Design Objects 달성 여부 검토 |
Step1 : Inputs 검토(Rivew Inputs)
Inputs을 검토하면서 시작합니다. 여기서 의미하는 Inputs은 아래와 같습니다.
- Design objectives
- Functional requirements
- Quality Attribute Scenarios
- Constraints
- Concerns
그리고 해결해야 할 전반적인 Design 문제점들을 명확하게 합니다.
Step 2 : Iteration 목표 설정 및 Input 선택
1단계에서 발견한 Design이 갖는 문제점들을 여러 개의 하위 문제점로 나눕니다. 그리고 어떤 하위 문제들을 해결할 것인지 결정하는 과정을 반복합니다.
Step 3 : 분해할 시스템 요소들 선택
분해할 시스템 요소를 선택하고, 하위 문제들을 해결할 세 종류의 결정을 합니다. 분해할 부분들을 선택합니다.
Step 4 : Design concepts 선택
Step 1, 2에서 반복을 통해 고려된 inputs를 만족시킬 수 있는 Design Concepts를 선택합니다. 그리고 분해하는 데 도움이 되는 솔루션들을 찾고, 선택합니다. 대부분의 하위 문제들은 존재하는 솔루션(i.e. design concepts)으로 문제가 해결됩니다.
Design Concepts에는 추상적이거나 구체적인 여러가지 종류의 Design Concepts가 존재합니다. 따라서 Design Concepts를 선택할 때 다음 사항들을 고려합니다.
- 참고할 아키텍처(Reference Architectures)
- 개발 패턴(Deployment Patterns)
- 아키텍처 패턴 또는 디자인 패턴(Architectural / Design Patterns)
- 전술(Tactics)
- 프레임워크(Framework, Externally developed components)
Step 5 : 아키텍처 요소 인스턴스화, 책임 할당, 인터페이스 정의
앞서 선택한 솔루션으로 아키텍처 요소를 생성(인스턴스화)하고, 그것들에게 책임 할당합니다. 또 요소들 간의 인터페이스도 정합니다.
Step 6 : 관점/견해/의견을 스케치하고(Sketch Views), Design 결정을 기록
Step 5와 동시에 병렬적으로 아키텍처 청사진(Blueprint)을 그리고, 가다듬도록 합니다. 이때, 만들어지는 청사진은 완전환 문서가 아니라 Sketch에 가깝습니다. 그리고 Design 결정하고 이를 기록합니다.
Step 7 : 현재 Design 분석을 수행하고, Iteration 목표와 design objects를 검토
이 시점에서의 Design 결정 분석은 전체 Design 프로세스 관점에서 향상될 부분을 고려해서 진행합니다. Iteration이 더 필요하다면 또다시 1단계부터 반복 수행하도록 합니다.
그리고 Design이 생성되면, Iteration 목표와 Design Objectives가 달성되었는지 검토합니다. 이것은 아키텍처 디자인의 일부분임을 인지해야 합니다(NOT BDUF)
※ BDUF : Big Design Up Front의 약자로 개발에 앞서 기획, 분석, 설계 같은 과정이 선행되는 것. Waterfall 개발 모델과 유사
'IT' 카테고리의 다른 글
Publish and Subscribe Pattern의 정의, 설명, 구성요소, 구현 방법 및 코드, 장단점 (0) | 2023.02.08 |
---|---|
Dispatcher Pattern(Client - Dispatcher - Server 패턴) 정의, 설명, 구성요소, 구현 순서, 장점, 단점 (0) | 2023.02.07 |
소프트웨어 아키텍처 패턴 알아보고 아키텍처 스타일과 비교하기 (0) | 2023.02.01 |
소프트웨어 아키텍처 스타일 알아보기 : 개념, 특징, 스키마, 유형, 예시 (0) | 2023.02.01 |
배포 용이성(Deployability) 아키텍처 전술, 시나리오, 전술 목록 (0) | 2023.01.31 |
댓글