본문 바로가기
IT

Attribute Driven Design(ADD) 아키텍처 설계 7단계

by 파이프라인만들기 2023. 2. 2.

Atrribute Driven Desgin(ADD)는 품질 속성, 기능 속성 등 속성을 중심으로 아키텍처를 수립하는 방법론입니다. 이번 글에서는 ADD의 개념과 특징 그리고 아키텍처 설계 7단계에 대해서 알아보겠습니다.

 

글의 순서는 아래와 같습니다.

  • Attribute Driven Design의 개념과 특징
  • ADD 7단계와 상세 내용

 

Attribute Driven Design의 개념과 특징

Attribute Driven Design(ADD)은 순차적으로 소프트웨어 아키텍처를 설계하는 방법론입니다. 아키텍처가 만족해야 할 품질 속성, 기능, 제약사항들을 Input으로 받아 목표치에 도달할 때까지 Design 결정을 반복합니다.

 

ADD는 품질 속성을 중심으로 Design이 진행되고, 목표를 달성할 때까지 아키텍처 설계가 반복됩니다. 따라서 품질 속성  목표 달성을 위한 아키텍처 스타일/패턴 결정, 시스템 구성요소 분할, 구체화 등의 작업이 계속 반복되는 특징이 있습니다.

 

 

ADD 아키텍처 설계는 다음과 같은 장점이 있습니다.

  • 체계적이고 반복 수행 가능한 설계
  • 아키텍처 설계 결과가 예측 가능

 

Design Selection Roadmap
Design Selection Roadmap

 

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 개발 모델과 유사

 

 

댓글