CS

[CS] 소프트웨어 설계 -소프트웨어 아키텍처 패턴

y_lime 2025. 1. 21. 11:26

◼︎ 소프트웨어 아키텍처 패턴 유형

계층화 패턴(Layered Pattern)

  • 시스템을 계층으로 구분하여 구성
  • 각 하위 모듈들은 특정한 수준의 추상화를 제공, 각 계층은 다음 상위 계층에서 서비스를 제공
  • 서로 마주 보는 두 개의 계층 사이에서만 상호 작용이 이루어짐
  • 대표적으로 OSI 참조모델이 있음

클라이언트-서버 패턴(Client-Server Pattern)

  • 하나의 서버 & 다수의 클라이언트로 구성
  • 사용자가 클라이언트 통해 서버에 서비스 제공
  • 서버는 클라이언트에게 서비스를 제공
  • 서버는 계속 클라이언트로부터 요청을 대기

파이프 - 필터 패턴(Pipe-Filter Pattern)

  • 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 단방향 패턴
    • 데이터 스트림 : 데이터가 송/수신 되거나 시간의 흐름에 따라 연속적으로 생성되고 전달되는 데이터의 흐름
  • 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복
  • 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장이 용이
  • but 필터 간 데이터 이동에서 데이터 변환 오버헤드가 발생

브로커 패턴(Broker Pattern)

  • 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스를 실행을 통해 상호 작용이 가능한 패턴
  • 컴포넌트 간의 통신을 조정하는 역할 수행
  • 서버는 자신의 기능들(서비스 및 특성)을 브로커에게 넘겨주며(Publish), 클라이언트가 브로커에 서비스를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션

모델-뷰-컨트롤러 패턴(MVC; Model-View-Controller Pattern)

  • 대화형 애플리케이션을 모델, 뷰, 컨트롤뷰 3개의 서브 시스템으로 구조화하는 패턴
  • 모델 : 핵심 기능과 데이터 보관
  • 뷰 : 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음)
  • 컨트롤러 : 사용자로부터 요청을 입력 받아 처리, 모델과 뷰 사이에서 전달자 역할을 수행
  • 이 패턴은 별도의 컴포넌트로 분리되어 있어 서로 영향 받지 X
  • 코드 재사용성 가능
  • 여러 개의 뷰가 있어야 하는 대화형 애플리케이션 구축에 적합
    • 대화형 애플리케이션 : 사용자가 직접 애플리케이션과 상호작용할 수 있는 소프트웨어. 스마트폰 앱처럼 사용자가 터치하면 즉시 그에 맞는 반응을 보여주는 소프트웨어

마스터-슬레이브 패턴(Master-Slave Pattern)

  • 마스터 : 연산, 통신, 조정을 책임
  • 슬레이브 : 제어되고 동기화되는 대상
  • 일반적으로 실시간 시스템에서 사용

◼︎ 소프트웨어 아키텍처 품질 속성

  • 아키텍처 비용 평가를 위해 필요한 사항으로 특정 품질에 대한 요구사항을 명세한 내역, 최적의 아키텍처를 선택하기 위한 핵심 요소(품질 속성)
  • 이해관계자들의 품질 요구사항을 반영하여 결정
  • 시스템 품질 속성, 비즈니스 품질 속성, 아케텍처 품질 속성으로 구성

시스템 품질 속성

  • 가용성 (Availability)
  • 변경 용이성 (Modifiability)
  • 성능 (Performance)
  • 보안성 (Security)
  • 사용 편의성 (Usability)
  • 시험 용이성 (Testability)

비즈니스 품질 속성

  • 시장 적시성(Time to Market)
  • 비용과 이익 (Cost and Benefit)
  • 시스템 프로젝트 생명 주기 (Projected Lifetime of the System)
  • 목표 시장 (Targeted Market)
  • 신규 발매 일정 (Rollout Schedule)
  • 노후 시스템과 통합 (Integration with Legacy System)

아키텍처 품질 속성

  • 개념적 무결성 (Conceptural Integrity)
  • 정확성과 안정성 (Correctness and Completeness)
  • 개발 용이성 (Buildability)