옐그's 코딩라이프

[TOPCIT][01] V. 소프트웨어 아키텍처 설계 (에센스 정리 요약) 본문

TOPCIT

[TOPCIT][01] V. 소프트웨어 아키텍처 설계 (에센스 정리 요약)

옐그멍이 2022. 12. 27. 12:48

학습 목표

1. 소프트웨어 아키텍처(SA, Software Architecture)의 기본 개념과 구성 요소를 열거할 수 있다.

2. 대표적인 소프트웨어 아키텍처 유형들에 대하여 설명할 수 있다.

3. 소프트웨어 아키텍처 설계 표현 방법을 설명할 수 있다.

 

핵심 키워드

- 모듈, 컴포넌트와 커넥터, 서브시스템, 프레임워크

- 저장소 구조, MVC(Model-View-Controller)구조, 클라이언트-서버 모델, 계층구조, 파이프 필터 구조

- 컨텍스트(Context) 모델, 컴포넌트(Component) 다이어그램, 패키지(Package) 다이어그램, 배치(Deployment) 다이어그램

01 소프트웨어 아키텍처 설계

소프트웨어 아키텍처

- 소프트웨어 개발에 직간접적으로 영향을 미치고 복잡도를 높이는 다양한 요소들을 체계적으로 다루기 위한 개발 대상 소프트웨어의 청사진

- 의사소통 수단 및 프로젝트 초기 의사결정 도구로 활용됨

- 시스템 전체 구조 및 개발 프로젝트 조직 결정 시 참조됨

소프트웨어 아키텍처 설계 절차

- 요구사항분석, 아키텍처 분석 및 설계, 아키텍처 검증 및 승인 절차로 진행됨

- 아키텍처 설계는 시스템의 요구사항을 만족시키기 위해 시스템 구성을 설정하는 프로세스

- 서브시스템이란? 일반적으로 자료와 제어구조를 포함하며, 독립적으로 기능을 수행할 수 있고 컴파일 될 수 있는 프로그램 구성요소

- 프레임워크란? 구체적인 서브시스템을 만들기 위해 확장될 수 있는 일반 구조를 나타내며, 구체적인 구현 방법 등을 제공함으로써 설계 추상화의 수준을 높여줌

 

02 소프트웨어 아키텍처 스타일

소프트웨어 아키텍처 유형

1. 저장소 구조

한 서브시스템에서 데이터를 생성하고 다른 서브시스템들이 데이터를 사용하는 경우 시스템에서 사용되는 모든 공유 데이터를 한 곳에 보관하여 모든 서브시스템들이 데이터를 공유할 수 있도록 만든 구조

 

2. MVC (Model-View-Controller) 구조

GUI 설계에 많이 활용되는 프레임워크로 한 객체의 여러 가지 표현이 서로 상호 작용하도록 지원하는 접근법

 

3. 클라이언트-서버 모델

서비스를 요구하는 클라이언트와 서비스를 제공하는 서버의 집합으로 구성되는 모델

 

4. 계층 구조

시스템을 여러 계층으로 구성하며, 각 계층은 특정 서비스를 제공하는 것

 

03 소프트웨어 아키텍처 설계 표현 방법

컨텍스트(Context) 모델

우리가 개발해야 할 시스템의 영역을 기술하고, 시스템과 외부 환경과의 경계를 결정하며, 외부와의 인터페이스를 제시하여 시스템의 입출력 데이터를 보여줌

 

컴포넌트 다이어그램

- 컴포넌트란? 재사용 가능한 부품

- 이 기술의 근간을 이루는 것은 결국 재사용성이며, 재사용 기술은 가능한 한 이미 검증된 부분을 다시 사용함으로써 소프트웨어 개발 속도와 생산성을 높이고자 하는 가속 기술

 

패키지 다이어그램

- 패키지란? 다수의 사용자를 위해 개발된 상업용 소프트웨어

- 패키지로 정의되면 패키지 내부의 자세한 사항을 외부에 감추어 패키지 사이의 의존 관계를 최소화할 수 있음

- 서브시스템들 사이의 의존 관계를 나타낸 것으로 높은 수준의 추상화된 서브시스템을 나타내어 소프트웨어 아키텍처를 표현하는데 적합함

728x90