개요
- 시스템의 비기능적 특성에 영향을 준다
- 각 아키텍처 결정은 몇 가지 잠재적 솔루션이 존재
- 의사결정 결과에 대한 디자인 근거를 제공
- 아키텍처 결정에서 다루는 품질 속성 중 하나 이상을 참조하고
- 디자인 및 option 선택에 대한 "이유" 질문에 대한 답을 하므로써 디자인 근거를 제공함 - 아키텍처 결정은 SW 시스템 전체 또는 이러한 시스템의 핵심 구성 요오 중 하나 이상과 관련됨
Decision Management Step
First Step : Decision Identification (결정 식별)
- 결정을 내리기 전에 결정의 필요성을 분명히 해야 함
Architectural Decision이 얼마나 긴급하고 얼마나 중요한가? - 지금 만들어야 하나 아니면 구축중인 요구사항 및 시스템에 대한 정보가 더 많이 수집될 때까지 기다려야 하나
- 개인적 및 집단적 경험(or Skill Set) 과 잘 알려진 디자인 방법 및 관행(Reference or Practice) 모두 도움이 됨
Second Step : Decision Makeing (의사 결정)
- 다양한 의사 결정 기술이 존재 - 일반 기술과 SW 및 SW Architecture 특정 기술
- Expert Judgement
- Brainstorming 통한 Group 의사 결정
- 주요 이해관계자들 모두 참여 필요
Third Step : Decision Documentation (결정에 대한 문서화)
- Software Architectural Decision 문서화
Fourth Step : Decision enactment (enforcement) (결정 제정 (시행))
- 아키텍처 결정은 소프트웨어 설계에 사용됨
- 따라서 그들은 자금을 지원하고 (Sponsor - Deployment View), 개발하고(Developer - C&C View, Deployment View), 운영하는(Operator - Model View) 시스템의 이해 관계 자에게 전달되고 받아 들여져야 함
Fifth Step : Decision Sharing (optional) (의사결정 공유)
- 많은 아키텍처 결정이 프로젝트 전반에 걸쳐 반복됨 -> Reference model 화 됨
- 과거 결정에 대한 경험은 좋든 나쁘든 명시적 지식 관리 전략을 사용할 때, 재사용 가능한 귀중한 자산이 될 수 있음
SA Decision Examples
- 아키텍처 계층구조 선택 및 각 계층별 책임과 역할
- 예) Client, Business logic, DB layer - 계층, Component (DB, Package, 개발한 프로그램 덩어리 등), Connector에 대한 구현 기술 선택
- 예) Programming language, Interface 방식 선택 - 클라이언트와 서버 사이드의 사용 Framework 선택
- 예) Client side = JavaScript framework, Server side = Java & PHP framework 등
Decision Making
- 아키텍처 Decision위해 SA의 Group이 모여서 후보목록을 작성하고 논의하고 평가하는 형태
- 실무에서의 구체적 내용 및 사례
- 의사결정에 대한 비구조적 접근 방식이 우세함 (Expert Judgement) -> 그룹 구성원의 참여 제한
- 의사결정 과정에서 아키텍트를 지원하기 위한 협업도구지원이 부족함
- 아키텍트는 구조화된 접근 방식의 부족으로 지연과 누락 경험
- Groupthink는 아키턱처의 품질을 높여줌 (PriceWaterhouseCoopers Connectinoedthinking)
> Group으로 모여서 협업하는 것이 중요함
결론적으로
Software Architecture는 Architecture의 View와 이에 대한 설명 문서 형태로 존재
Architecture View를 그랠때와 설명을 할 때 Architecture Decision을 기반으로 작성되어야 함
'Software Architect' 카테고리의 다른 글
[Software Architecture] Requirement Engineering - 1 (0) | 2022.03.31 |
---|---|
[Software Architecture] SA Framework (0) | 2022.03.31 |
[Software Architecture] RUP (0) | 2022.03.29 |
[Software Architecture] TOGAF (0) | 2022.03.29 |
[Software Architecture] SA 개요 - 추가 (0) | 2022.03.29 |