◼︎ 소프트웨어 아키텍처 패턴 유형
계층화 패턴(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)
'CS' 카테고리의 다른 글
[CS] Java 기초 (배열) (0) | 2025.02.14 |
---|---|
[CS] Java 기초 (형 변환, 문자열 기능) (0) | 2025.02.14 |
[CS] 소프트웨어 설계 - 분석 모델 확인(모델링/분석 자동화) (0) | 2025.01.20 |
[CS] 소프트웨어 설계 - 애자일 방법론 (0) | 2025.01.19 |
[CS] 소프트웨어 설계 - UML 다이어그램(시퀀스/상태) (0) | 2025.01.19 |