본문 바로가기

Software Architect

[Software Architecture] Architecture Decisions

 

개요

  • 시스템의 비기능적 특성에 영향을 준다
  • 각 아키텍처 결정은 몇 가지 잠재적 솔루션이 존재
  • 의사결정 결과에 대한 디자인 근거를 제공
    - 아키텍처 결정에서 다루는 품질 속성 중 하나 이상을 참조하고
    - 디자인 및 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을 기반으로 작성되어야 함