Architectural Pattern/Style
- 다양한 환경에서 시험되고 검증된 좋은 디자인 관행을 설명하는 스타일화된 설명
- 사용될 때와 사용되지 않을 때에 대한 정보 포함
- 예시: POSA 시리즈
- MVC (Model-View-Controller)
- Layered
- Repository
- Client-Server
- Pipe & Filter
A Taxonomy(분류) of Architecture Styles
The Model-View-Controller (MVC) Pattern
- 시스템 데이터를 기준으로 프리젠테이션과 상호작용을 분리함
- 시스템은 상호작용하는 세 가지 논리적 구성 요소로 구조화됨
- Model: 시스템 데이터와 그에 대한 연산 관리
- View: 데이터를 사용자에게 어떻게 표시할지 정의하고 관리
- Controller: 사용자 상호작용(예: 키 입력, 마우스 클릭 등)을 관리하고 이 상호작용을 View와 Model에 전달
- 사용 시기
- 데이터와 상호작용하는 방법이 여러 가지일 때 사용
- 데이터와 상호작용 및 프리젠테이션 요구 사항이 불확실할 때 사용
- 장점
- 데이터는 그 표현과 독립적으로 변화 가능
- 동일한 데이터를 다양한 방식으로 표시할 수 있으며, 하나의 표현에서 변경되면 다른 모든 표현에 반영됨
- 단점
- 데이터 모델과 상호작용이 간단할 경우 코드가 추가되거나 복잡해질 수 있음
The Layered Architecture Pattern
- 시스템을 기능과 관련된 레이어로 구성
- 각 레이어는 위의 레이어에 서비스를 제공하며, 가장 낮은 레이어는 시스템 전반에서 사용될 핵심 서비스를 나타냄
- 사용 시기
- 기존 시스템 위에 새로운 기능을 구축할 때
- 여러 팀이 각자 책임지는 기능 레이어로 개발할 때
- 다중 보안 계층이 필요할 때
- 장점
- 레이어를 교체할 수 있으며, 인터페이스만 유지하면 됨
- 각 레이어에서 중복 기능(예: 인증)을 제공하여 시스템의 신뢰성을 높일 수 있음
- 단점
- 레이어 간 명확한 구분을 제공하는 것이 어려움
- 고수준 레이어가 하위 레이어와 직접 상호작용해야 할 수도 있음
- 여러 레벨의 서비스 요청 해석으로 성능에 문제가 생길 수 있음
The Repository Pattern
- 시스템의 모든 데이터를 중앙 리포지토리에서 관리하며, 시스템의 모든 구성 요소가 이 리포지토리를 통해 상호작용함
- 구성 요소는 서로 직접 상호작용하지 않음
- 사용 시기
- 대량의 데이터를 생성하고 이를 장기 보관해야 하는 시스템
- 데이터 기반 시스템에서 리포지토리의 데이터가 특정 동작이나 도구를 트리거할 때
- 장점
- 구성 요소는 서로 독립적이고, 다른 구성 요소의 존재를 알 필요 없음
- 한 구성 요소의 변경은 모든 구성 요소에 반영됨
- 데이터를 일관되게 관리할 수 있음(예: 동시에 백업 수행)
- 단점
- 리포지토리는 시스템 전체에 영향을 미치는 단일 실패 지점이 됨
- 리포지토리를 통해 모든 통신을 조직하는 데 비효율적일 수 있음
- 리포지토리를 여러 컴퓨터에 분산시키는 것이 어려움
The Client-Server Pattern
- Client-Server
- 시스템의 기능을 서비스로 조직하며, 각 서비스는 별도의 서버에서 제공됨
- 클라이언트는 이러한 서비스를 사용하는 사용자로, 서버에 접근하여 서비스를 이용함
- 사용 시기
- 공유 데이터베이스에서 데이터를 여러 위치에서 접근해야 할 때
- 서버를 복제할 수 있어 시스템 부하가 가변적일 때
- 장점
- 서버를 네트워크를 통해 분산시킬 수 있음
- 모든 클라이언트에게 일반적인 기능(예: 인쇄 서비스)을 제공할 수 있음
- 단점
- 각 서비스는 단일 실패 지점이 되어 서비스 거부 공격이나 서버 실패에 취약함
- 성능은 네트워크와 시스템에 따라 달라지므로 예측 불가능할 수 있음
- 서버가 다른 조직에 속할 경우 관리에 문제가 발생할 수 있음
The Pipe and Filter Pattern
- Pipe and Filter
- 시스템의 데이터 처리가 각 처리 구성 요소(필터)에서 하나의 데이터 변환을 수행하도록 조직됨
- 데이터는 하나의 구성 요소에서 다른 구성 요소로 파이프처럼 흐름
- 사용 시기
- 배치 처리 및 트랜잭션 기반의 데이터 처리 응용 프로그램에서 사용됨
- 입력이 여러 단계에서 처리되어 관련된 출력을 생성해야 할 때
- 장점
- 이해하기 쉽고 변환 재사용을 지원
- 비즈니스 프로세스 구조와 맞는 워크플로 스타일
- 변환을 추가하여 진화할 수 있음
- 순차적 또는 동시 시스템으로 구현 가능
- 단점
- 데이터 전송 형식은 상호작용하는 변환들 간에 합의가 필요
- 각 변환은 입력을 파싱하고 출력을 파싱해야 하므로 시스템 오버헤드가 증가할 수 있음
Application Architectures
- 특정 요구 사항을 충족하는 시스템을 구성하고 조정할 수 있는 소프트웨어 시스템 유형에 대한 아키텍처
- 비즈니스들이 공통점을 많이 가지므로, 그들의 애플리케이션 시스템도 공통 아키텍처를 가지며 이는 애플리케이션 요구 사항을 반영함
- Reference Architecture로 발전 중
Reference Architecture by Microsoft
코드까지 동반된 아키텍처로 Specific하다.(ex .net)
- Application Types
- Data processing applications: 배치로 데이터를 처리하며 사용자 개입 없이 처리됨
- Transaction processing applications: 사용자 요청을 처리하고 시스템 데이터베이스를 업데이트함
- Event processing systems: 시스템 환경의 이벤트를 해석하여 시스템 동작을 결정하는 애플리케이션
- Language processing systems: 사용자의 의도가 공식 언어로 지정되어 시스템이 이를 처리하고 해석함 (컴파일러)
Transaction Processing Systems
- 사용자 요청을 데이터베이스에서 정보로 처리하거나 데이터베이스를 업데이트하는 시스템
- 사용자는 서비스 요청을 비동기적으로 제출하고, 이 요청은 트랜잭션 관리자에 의해 처리됨
- 트랜잭션: 목표를 달성하는 일련의 일관된 연산
Information Systems Architecture
- Information systems: 일반적으로 레이어드 아키텍처로 조직됨
- 트랜잭션 기반 시스템: 시스템과의 상호작용은 일반적으로 데이터베이스 트랜잭션을 포함함.
Web-Based Information Systems (분산 시스템)
- Web-based systems: 웹 브라우저를 사용하여 사용자 인터페이스를 구현함
- 예시: 전자상거래 시스템은 상품이나 서비스에 대한 전자 주문을 받고, 고객에게 배송함
- 애플리케이션 특정 레이어: 사용자가 여러 아이템을 개별 트랜잭션으로 추가하고, 이를 한 번에 결제할 수 있는 '쇼핑 카트' 기능 포함
- 웹 기반 시스템은 Muti-tier client-server(서버들의 티어) 아키텍처로 구현됨
- Web server: 사용자 통신과 웹 브라우저를 이용한 사용자 인터페이스 구현
- Application server: 애플리케이션 특정 로직 및 정보 저장 및 검색 요청 처리
- Database server: 데이터베이스 간 정보 이동 및 트랜잭션 관리
Language Processing Systems
- Language Processing Systems: 자연어 또는 인공 언어를 입력받아 그 언어의 다른 표현을 생성함
- 인터프리터 포함, 언어 처리 명령을 수행함
- Meta-case tools: 도구 설명, 방법 규칙 등을 처리하고 도구를 생성함
Compiler Components
- Compiler components:
- Lexical analyzer: 입력 언어 토큰을 내부 형식으로 변환
- Symbol table: 번역되는 텍스트에 사용된 엔터티(변수, 클래스명 등) 정보를 저장
- Syntax analyzer: 언어 구문을 검사
- Syntax tree: 번역된 프로그램을 나타내는 내부 구조
- Semantic analyzer: 구문 트리와 심볼 테이블 정보를 사용하여 의미적 정확성 검사
- Code generator: 구문 트리를 순회하며 추상 기계 코드 생성
A Repository Architecture for a Language Processing System
A Pipe and Filter Architecture for Compilers
반응형
'CS 지식 > 소프트웨어 공학' 카테고리의 다른 글
Software Evolution(진화)와 유지보수, 리팩토링, 리엔지니어링 (0) | 2024.12.01 |
---|---|
Software Testing(소프트웨어 테스팅)과 개발 테스팅 (0) | 2024.12.01 |
Architectural Design (아키텍처 설계) 결정과 4+1 View (0) | 2024.12.01 |
Model-Driven Engineering (모델 기반 엔지니어링, MDE, MDA) 의 개념과 활용 (0) | 2024.12.01 |
시스템 모델링(System Modeling)과 관점에 따른 모델 종류 (0) | 2024.10.16 |
댓글