소프트웨어 아키텍처

From CS Wiki


Software Architecture
SW 컴포넌트들 간의 상호 관계를 정의 및 설계하고 전개하기 위한 구조

특징[edit | edit source]

특징 내용
간략성 이해하고 추론할 수 있을 정도의 간결성 유지
추상화 시스템의 추상적인 표현을 사용(복잡도 관리)
가시성 시스템이 포함해야 하는 것들을 가시화, 청사진

참조 모델[edit | edit source]

ISO/IEC/IEEE 42010[edit | edit source]

소프트웨어 아키텍처에 대한 국제 표준

SEI 3 뷰[edit | edit source]

소프트웨어 공학 연구소의 3체계 뷰
  • 모듈 뷰(Module View)
  • 컴포넌트 뷰(Component View)
  • 할당 뷰(Allocation View)

지멘스 4 뷰[edit | edit source]

지멘스사의 4체계 뷰

Siemens Four View.png

RUP 4+1 뷰[edit | edit source]

Rational Unified Process의 4+1체계 뷰
Logical View Development View

(Implement View)

Scenarios

(Use-Case View)

Process View Physical View

소프트웨어 아키텍처 스타일[edit | edit source]

소프트웨어 아키텍처 패턴으로 불리기도 한다. 본 위키에선 '디자인 패턴'과의 구분을 위해 '아키텍처 스타일'을 사용한다.

  • 아키텍처 설계에서 반복해서 나타나는 문제를 해결하고 아키텍처가 만족시켜야 하는 시스템 품질 속성을 달성할 수 있는 방법을 체계화 한 것
  • 아키텍처를 구성하는 컴포넌트와 커넥터 종류와 이것들이 결합하는 방법 정의
  • 아키텍처 설계시 이용 가능한 베스트 프랙티스

소프트웨어 아키텍처 평가[edit | edit source]

평가 모델 개요[edit | edit source]

소프트웨어 아키텍처 평가 모델.png

평가 모델 설명
SAAM
  • Software Architecture Analysis Method
  • 변경 용이성, 기능 집중, 평가 용이
ATAM
  • Architecture Trade-off Analysis Method
  • 품질속성 만족 여부 판단, 이해 관계 평가
CBAM
  • Cost Benefit Analysis Method
  • 의사결정 요구 충족, ATAM바탕 분석
ADR
  • Active Design Review
  • 아키텍처 구성요소 간 응집도 평가
ARID
  • Active Review for Intermediate Designs
  • 특정 부분에 대한 품질 요소 집중
  • 일반적으로 ATAM과 CBAM이 가장 많이 쓰임
  • ATAM 평가 후 비용/이익 측면 평가 위해 CBAM 수행

ATAM[edit | edit source]

Architecture Trade-off Analysis Method
  • 아키텍처 품질속성 만족 여부 판단
  • 품질속성들간 연관관계 및 상충 분석

CBAM[edit | edit source]

Cost Benefit Analysis Method
  • ATAM을 바탕으로 기본 평가
  • 아키텍처의 경제적 모델링 방법

아키텍처 개발 절차[edit | edit source]

단계 주요활동 내용
요구사항 분석 요구사항 취득, 식별, 명세, 분류, 검증 등
아키텍처 분석 품질요소 식별 ISO9216 품질 요구사항 활용
품질요소

우선순위 결정

Utility Tree(시나리오 명세) 작성
전술개발 품질속성별 전술개발 및 명세
아키텍처 설계 관점 및 뷰 정의 이해당사자별 관점 정의

4+1 아키텍처 활용

아키텍처 스타일 선택 MVC, Pipe-Filter 등 스타일 선택 및 조합
후보 아키텍처 도출 SAD(Software Architecture Description) 작성
검증 및 승인 아키텍처 평가 ATAM, CBAM 이용
아키텍처 상세화 디자인 패턴 고려, 설계 매커니즘 도출
아키텍처 승인 고객 및 이해당사자 최종 승인

소프트웨어 아키텍처 기술서[edit | edit source]

SW 이해관계자들이 다양한 관점에 따라 소프트웨어 아키텍처를 기술한 최종 산출물
  • 이해관계자들의 시스템 이해 및 의사소통, 의사결정의 수단으로 활용