소프트웨어 아키텍처 스타일: Difference between revisions

From CS Wiki
(새 문서: 분류:소프트웨어 공학 ;Software Architecture Style * 아키텍처 설계에서 반복해서 나타나는 문제를 해결하고 아키텍처가 만족시켜야 하는 시...)
 
No edit summary
Line 10: Line 10:
! 예시
! 예시
|-
|-
| 계층
| 계층 스타일
스타일
|  
| * SW를 계층 단위(Unit)로 분할
* SW를 계층 단위(Unit)로 분할
* 각 계층은 모듈들의 응집된 집합
* 각 계층은 모듈들의 응집된 집합
* 계층간의 관계는 사용가능의 관계로 표현
* 계층간의 관계는 사용가능의 관계로 표현
Line 22: Line 22:
| MVC
| MVC
스타일
스타일
| * 모델 : APP의 핵심기능 및 적절한 데이터 캡슐화
|  
* 모델 : APP의 핵심기능 및 적절한 데이터 캡슐화
* 뷰 : 사용하게 될 데이터를 엑세스하기 위한 기능 제공
* 뷰 : 사용하게 될 데이터를 엑세스하기 위한 기능 제공
* 컨트롤러 : 이벤트로서 사용자의 입력사항 처리
* 컨트롤러 : 이벤트로서 사용자의 입력사항 처리
Line 32: Line 33:
Server
Server
스타일
스타일
| * 여러 컴포넌트에 걸쳐서 데이터와 데이터를 처리하는 어플리케이션에 적합
|  
* 여러 컴포넌트에 걸쳐서 데이터와 데이터를 처리하는 어플리케이션에 적합
* 컴포넌트는 다른 컴포넌트에게 서비스 요청 함으로써 커뮤니케이션
* 컴포넌트는 다른 컴포넌트에게 서비스 요청 함으로써 커뮤니케이션
* n-Tier 클라이언트 서버 모델(3-Tier)
* n-Tier 클라이언트 서버 모델(3-Tier)
Line 42: Line 44:
Filters
Filters
스타일
스타일
| * 데이터 스트림 처리 시스템을 위한 구조
|  
* 데이터 스트림 처리 시스템을 위한 구조
* 컴포넌트:필터, 커넥터:파이프
* 컴포넌트:필터, 커넥터:파이프
* 필터는 파이프를 통해 받은 데이터를 변경시키고 그 결과를 파이프로 전송
* 필터는 파이프를 통해 받은 데이터를 변경시키고 그 결과를 파이프로 전송
Line 52: Line 55:
Subscribe
Subscribe
스타일
스타일
| * 컴포넌트는 발생된 이벤트를 통해 의사소통
|  
* 출판자 : 이벤트 발생 컴포넌트
* 컴포넌트는 발생된 이벤트를 통해 의사소통
* 출판자 : 이벤트 발생 컴포넌트
* 구독자 : 이벤트 수신 컴포넌트
* 구독자 : 이벤트 수신 컴포넌트
* 장점 : 컴포넌트 분리로 독립성 우수
* 장점 : 컴포넌트 분리로 독립성 우수
Line 60: Line 64:
| Peer-To-Peer
| Peer-To-Peer
스타일
스타일
| * 클라이언트/서버 스타일에 대칭적 특징추가
|  
* 클라이언트/서버 스타일에 대칭적 특징추가
* 컴포넌트는 클라이언트와 서버역할 모두수행
* 컴포넌트는 클라이언트와 서버역할 모두수행
* 장점 : 분산컴퓨팅 어플 구축시 유연성 제공
* 장점 : 분산컴퓨팅 어플 구축시 유연성 제공
Line 67: Line 72:
| BlackBoard
| BlackBoard
스타일
스타일
| * 블랙보드, 지식자원의집합, 컨트롤컴포넌트로 구성
|  
* 블랙보드, 지식자원의집합, 컨트롤컴포넌트로 구성
* 결정적 해결전략이 존재하지 않는 문제 해결에 유용
* 결정적 해결전략이 존재하지 않는 문제 해결에 유용
* 장점 : 다양한 접근법, 유지보수성,가변성,재사용 가능한 지식자원
* 장점 : 다양한 접근법, 유지보수성,가변성,재사용 가능한 지식자원
Line 75: Line 81:
| Repository
| Repository
스타일
스타일
| * 적어도 하나의 저장소에 지속성을 갖는 데이터 저장, 이 데이터를 여러 모듈에 사용
|  
* 적어도 하나의 저장소에 지속성을 갖는 데이터 저장, 이 데이터를 여러 모듈에 사용
* 예) 데이터베이스시스템
* 예) 데이터베이스시스템
* 장점 : 대량 데이터 저장, 공유모델 발행 가능, 중앙집중화 관리
* 장점 : 대량 데이터 저장, 공유모델 발행 가능, 중앙집중화 관리

Revision as of 06:07, 30 January 2020

Software Architecture Style
  • 아키텍처 설계에서 반복해서 나타나는 문제를 해결하고 아키텍처가 만족시켜야 하는 시스템 품질 속성을 달성할 수 있는 방법을 체계화 한 것
  • 아키텍처를 구성하는 컴포넌트와 커넥터 종류와 이것들이 결합하는 방법 정의
  • 아키텍처 설계시 이용 가능한 베스트 프랙티스
구분 특징 예시
계층 스타일
  • SW를 계층 단위(Unit)로 분할
  • 각 계층은 모듈들의 응집된 집합
  • 계층간의 관계는 사용가능의 관계로 표현
  • 계층적으로 조직화될 수 있는 서비스로 구성된 어플리케이션에 적합
  • 장점 : 정보은닉의 원칙 적용 → 높은이식성
  • 단점 : 추가적인 실행시 오버헤드(너무 많은 계층으로 성능 감소 발생)
MVC

스타일

  • 모델 : APP의 핵심기능 및 적절한 데이터 캡슐화
  • 뷰 : 사용하게 될 데이터를 엑세스하기 위한 기능 제공
  • 컨트롤러 : 이벤트로서 사용자의 입력사항 처리
  • 장점 : 동일한 모델, 다양한 뷰 제공 및 뷰 동기화로 실시간 변경 데이터 제공
  • 단점 : 단순 어플리케이션은 복잡성증가
Client

Server 스타일

  • 여러 컴포넌트에 걸쳐서 데이터와 데이터를 처리하는 어플리케이션에 적합
  • 컴포넌트는 다른 컴포넌트에게 서비스 요청 함으로써 커뮤니케이션
  • n-Tier 클라이언트 서버 모델(3-Tier)
  • 장점 : 직접적으로 데이터 분산, 위치 투명성 제공
  • 단점 : 서비스와 서버의 이름을 관리하는 레지스터 부재로 이용가능 서비스 탐색 불편
Pipe &

Filters 스타일

  • 데이터 스트림 처리 시스템을 위한 구조
  • 컴포넌트:필터, 커넥터:파이프
  • 필터는 파이프를 통해 받은 데이터를 변경시키고 그 결과를 파이프로 전송
  • 장점 : 필터 교환과 재조합을 통한 높은 유연성 제공
  • 단점 : 상태정보 공유를 위한 고비용과 데이터 변환 가부화
Publish

Subscribe 스타일

  • 컴포넌트는 발생된 이벤트를 통해 의사소통
  • 출판자 : 이벤트 발생 컴포넌트
  • 구독자 : 이벤트 수신 컴포넌트
  • 장점 : 컴포넌트 분리로 독립성 우수
Peer-To-Peer

스타일

  • 클라이언트/서버 스타일에 대칭적 특징추가
  • 컴포넌트는 클라이언트와 서버역할 모두수행
  • 장점 : 분산컴퓨팅 어플 구축시 유연성 제공
BlackBoard

스타일

  • 블랙보드, 지식자원의집합, 컨트롤컴포넌트로 구성
  • 결정적 해결전략이 존재하지 않는 문제 해결에 유용
  • 장점 : 다양한 접근법, 유지보수성,가변성,재사용 가능한 지식자원
  • 단점 : 테스팅 어려움, 완전한 해결책 미보장
Repository

스타일

  • 적어도 하나의 저장소에 지속성을 갖는 데이터 저장, 이 데이터를 여러 모듈에 사용
  • 예) 데이터베이스시스템
  • 장점 : 대량 데이터 저장, 공유모델 발행 가능, 중앙집중화 관리
  • 단점 : 데이터모델의 사전 동의 필요, 데이터 분산의 어려움

참고 문헌

  • 소프트웨어 아키텍처(이덕우)