45
객체지향 설계와 패턴 객체지향 설계와 패턴 Lecture #14: 아키텍처 패턴 Eun Man Choi [email protected]

객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

객체지향 설계와 패턴

Lecture #14: 아키텍처 패턴

객체지향 설계와 패턴

Lecture #14: 아키텍처 패턴

Eun Man [email protected]

Page 2: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

학습 목표

l 블랙보드 패턴

l 브로커 패턴

l PAC 패턴

l 마이크로 패턴

l 리플렉션 패턴

2

l 블랙보드 패턴

l 브로커 패턴

l PAC 패턴

l 마이크로 패턴

l 리플렉션 패턴

Page 3: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

패턴 중심 소프트웨어 아키텍처

l POSA Patternsl “Pattern Oriented Software Architecture”A System of Patterns

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sornmerlad, Michael Stal, Wiley, 1996

3

Page 4: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

패턴 중심 소프트웨어 아키텍처

l 소프트웨어 아키텍처 패턴에 대한 책

l 소프트웨어 개발 초보, 전문가 모두가 읽어야 할 책

l 대규모, 복잡한 소프트웨어 시스템을 특정한 의도로 설계할 때 필요한 지식을 담고 있음

l 전문가의 경험에서 배울 수 있는 내용을 담고 있음

l 소프트웨어 아키텍처 패턴에 대한 책

l 소프트웨어 개발 초보, 전문가 모두가 읽어야 할 책

l 대규모, 복잡한 소프트웨어 시스템을 특정한 의도로 설계할 때 필요한 지식을 담고 있음

l 전문가의 경험에서 배울 수 있는 내용을 담고 있음

4

Page 5: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

아키텍처 패턴

l 정의[Buschman 등]l 소프트웨어의 기본 구조를 구성하기 위한 스키마. l 미리 정의된 서브시스템을 제공하고 각 서브시스템의 책임을 정의하며

서브시스템 간의 관계를 조직화하는 규칙화 가이드라인

l 아키텍처 템플릿l 소프트웨어 아키텍처를 만들기 위한 뼈대l 시스템 전반에 걸친 구조적 특성을 정의. 서브시스템의 아키텍처에 영향

을 줌

l 기본 설계 결정l 아키텍처 패턴의 선택은 소프트웨어를 개발할 때 기본이 되는 설계 결정

l 정의[Buschman 등]l 소프트웨어의 기본 구조를 구성하기 위한 스키마. l 미리 정의된 서브시스템을 제공하고 각 서브시스템의 책임을 정의하며

서브시스템 간의 관계를 조직화하는 규칙화 가이드라인

l 아키텍처 템플릿l 소프트웨어 아키텍처를 만들기 위한 뼈대l 시스템 전반에 걸친 구조적 특성을 정의. 서브시스템의 아키텍처에 영향

을 줌

l 기본 설계 결정l 아키텍처 패턴의 선택은 소프트웨어를 개발할 때 기본이 되는 설계 결정

5

Page 6: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

아키텍처 패턴의 카테고리

l 혼돈에서 질서로l 무질서한 객체나 컴포넌트의 집합이 아니라 서브 태스크들로 분할 통제l 계층 패턴, 파이프 라인 패턴, 블랙보드 패턴

l 분산 시스템l 분산 시스템을 아키텍처링l 브로커 패턴, 마이크로 커널, 파이프와 필터

l 상호작용 시스템l HCI를 가진 소프트웨어 시스템을 구조화l MVC, Presentation-Abstraction-Control

l 적응 시스템l 애플리케이션을 확장하는 데 도움, 기능적 요구사항이 변경함에 따라 적

응할 수 있는 구조l 리플렉션 패턴, 마이크로 커널 패턴

l 혼돈에서 질서로l 무질서한 객체나 컴포넌트의 집합이 아니라 서브 태스크들로 분할 통제l 계층 패턴, 파이프 라인 패턴, 블랙보드 패턴

l 분산 시스템l 분산 시스템을 아키텍처링l 브로커 패턴, 마이크로 커널, 파이프와 필터

l 상호작용 시스템l HCI를 가진 소프트웨어 시스템을 구조화l MVC, Presentation-Abstraction-Control

l 적응 시스템l 애플리케이션을 확장하는 데 도움, 기능적 요구사항이 변경함에 따라 적

응할 수 있는 구조l 리플렉션 패턴, 마이크로 커널 패턴

6

Page 7: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴

l 명확히 정의된 해법 전략이 아직 존재하지 않은 도메인에서 문제를해결하려 할 때

l 부분적인 해법, 대략적인 해법을 수립하기 위해 특수한 서브시스템의지식을 조합

7

Page 8: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴 - 예제

l 음성 인식 시스템l 파형, 분절음, 구절, 구문 등을 판별하기 위하여 전혀 다른 도메인의 지식

이 필요l 일관적인 알고리즘이 없음l 모호하고 잡음 섞인 데이터, 개인적인 차이 등 어려움 가중

8

Page 9: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴 - 해법

l 공유 데이터 구조 위에 종합적으로 동작하는 독립적인 프로그램의 모임

l 각 프로그램은 전체 중 특정한 부분을 해결하기 위하여 특수화

l 특수화 된 프로그램은 제각기 독립적

l 중앙 제어 컴포넌트는 현재 처리 과정을 평가하여 특수화 된 프로그램을 조율

l 프로그램들은 블랙보드를 통하여 커뮤니케이션

l 공유 데이터 구조 위에 종합적으로 동작하는 독립적인 프로그램의 모임

l 각 프로그램은 전체 중 특정한 부분을 해결하기 위하여 특수화

l 특수화 된 프로그램은 제각기 독립적

l 중앙 제어 컴포넌트는 현재 처리 과정을 평가하여 특수화 된 프로그램을 조율

l 프로그램들은 블랙보드를 통하여 커뮤니케이션

9

Page 10: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴 - 구조

l 컴포넌트l 블랙보드 – 중앙 데이터 저장소l 지식 소스 – 특수한 측면을 해결하는 독립적 서브시스템l 제어 컴포넌트 – 변경을 모니터링하고 다음 동작을 결정

10

Page 11: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴 - 동작

11

Page 12: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

블랙보드 아키텍처 패턴 - 구현

l “Are any by Feigenbaum and Feldman?” 인식

12

Page 13: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 정의

l 분산 소프트웨어 시스템의 구조화에 적합

l 분리된 컴포넌트들이 원격 서비스를 호출하여 상호 작용

l 브로커 컴포넌트가 통신을 관할, 결과와 예외를 전송

13

Page 14: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 예

l WAN 도시정보 시스템l 호텔, 레스토랑, 사적, 대중교통 정보

14

Page 15: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 문제

l 독립적 협력 컴포넌트들의 이질적 분산 시스템

l 원격 메소드 호출 제공

l Location transparency

l 서비스를 동적으로 추가, 제거, 교환

l 개발자에게 자세한 것 숨김

l 독립적 협력 컴포넌트들의 이질적 분산 시스템

l 원격 메소드 호출 제공

l Location transparency

l 서비스를 동적으로 추가, 제거, 교환

l 개발자에게 자세한 것 숨김

15

Page 16: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 해법

l 네트워크 클라이언트와 서버 컴포넌트 사이에 플랫폼 독립 커뮤니케이션을 제공

l 서버는 브로커에 등록, 클라이언트는 브로커를 통하여 요청

l 객체에 메시지 호출 -> 분산 서비스에 액세스

16

Page 17: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 구조

l 여섯 가지 컴포넌트

message exchange

message exchange

*

marshalunmarhalreceive_resultservice_p

Client Proxy *

marshalunmarshaldispatchreceive_request

Server Proxy1

main_loopsrv_registrationsrv_lookuptransmit_message

Broker1

17

calls1

marshalunmarhalreceive_resultservice_p

calls*

call_service_pstart_task

Client1

marshalunmarshalforward_messagetransmit_message

Bridge

marshalunmarshaldispatchreceive_request

calls*

start_upmain_loopservice_i

Server1

main_loopsrv_registrationsrv_lookuptransmit_message

Page 18: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 구조

l 클라이언트l 사용자 기능 구현l 클라이언트 측 프록시를 통하여 서버에 요청

l 브로커l 서버를 등록, 제거l API 제공, 메시지 전송, 오류 복구

l 클라이언트 프록시l 클라이언트와 브로커 간의 레이어l 특정 시스템에 맞춰진 기능

l 서버측 프록시l 서버 내의 서비스 호출l Unpack, unmashaling

l 브리지l 특정 시스템과 관련된 모든 세부 내용 캡슐화

l 클라이언트l 사용자 기능 구현l 클라이언트 측 프록시를 통하여 서버에 요청

l 브로커l 서버를 등록, 제거l API 제공, 메시지 전송, 오류 복구

l 클라이언트 프록시l 클라이언트와 브로커 간의 레이어l 특정 시스템에 맞춰진 기능

l 서버측 프록시l 서버 내의 서비스 호출l Unpack, unmashaling

l 브리지l 특정 시스템과 관련된 모든 세부 내용 캡슐화

18

Page 19: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 동작

method (proxy) locate_server

server port

marshal

start_upregister_service

: Broker: Client Proxy : Server Proxy: Client : Server

assigned port

19

receive_request

marshal

unmarshal

dispatchmethod (impl.)

resultmarshal

receive_resultunmarshal

result

Page 20: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 사례

l CORBA 구조

InterfaceRepository

IDLCompiler

ImplementationRepository

Client OBJREF

Object(Servant)

in argsoperation()out args +

return

DII IDLSTUBS

ORBINTERFACE

IDLSKEL DSI

Object Adapter

ORB CORE GIOP/IIOP/ESIOPS

20

InterfaceRepository

IDLCompiler

ImplementationRepository

Client OBJREF

Object(Servant)

in argsoperation()out args +

return

DII IDLSTUBS

ORBINTERFACE

IDLSKEL DSI

Object Adapter

ORB CORE GIOP/IIOP/ESIOPS

Page 21: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 장점

l 이식가능성 증진l 클라이언트와 서버로부터 OS, 네트워크의 자세한 사항을 숨김

l 다른 브로커 시스템 간의 상호운용성 지원l 메시지 교환을 위한 프로토콜을 공통으로 맞춘다면 상호운용 가능

l 재사용성 확보l 새로운 애플리케이션 구축 시 기존 서비스의 애플리케이션 기능 재사용

가능

l 위치 투명성l 서버 위치는 브로커의 일, 클라이언트는 위치 알고 있을 필요 없음

l 이식가능성 증진l 클라이언트와 서버로부터 OS, 네트워크의 자세한 사항을 숨김

l 다른 브로커 시스템 간의 상호운용성 지원l 메시지 교환을 위한 프로토콜을 공통으로 맞춘다면 상호운용 가능

l 재사용성 확보l 새로운 애플리케이션 구축 시 기존 서비스의 애플리케이션 기능 재사용

가능

l 위치 투명성l 서버 위치는 브로커의 일, 클라이언트는 위치 알고 있을 필요 없음

21

Page 22: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

브로커 아키텍처 패턴 - 단점

l 낮은 효율l IPC를 이용하는 매뉴얼 시스템 보다 느림. 우회 레이어를 사용하기 때문

l 장애 허용성이 낮음l 분산이 아닌 시스템 보다 낮은 장애 허용성. 브로커의 장애는 치명적

l 테스트, 디버깅이 복잡할 수 있음l 상당히 많은 컴포넌트들이 관련되기 때문

22

Page 23: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴

l 정의l 계층구조를 이룬 에이전트들이 서로 협력하여 상호 작용 시스템 구조를

형성l 각 에이전트를 애플리케이션의 특징 담당l 각 에이전트는 프레젠테이션, 추상, 콘트롤 컴포넌트로 구성

23

Page 24: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 문제

l 상호작용 시스템l 협력하는 에이전트의 집합l 에이전트 - UI 제공, 데이터 모델 관리, 처리 기능, 예외 처리, 다른 시스

템과 통신

l 각 에이전트는 자체 상태와 데이터 저장

l 상호작용 에이전트는 각각 자체 UI 제공

l 프레젠테이션 측면은 변경이 잦음

l 상호작용 시스템l 협력하는 에이전트의 집합l 에이전트 - UI 제공, 데이터 모델 관리, 처리 기능, 예외 처리, 다른 시스

템과 통신

l 각 에이전트는 자체 상태와 데이터 저장

l 상호작용 에이전트는 각각 자체 UI 제공

l 프레젠테이션 측면은 변경이 잦음

24

Page 25: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 해법

l 트리 형태의 계층 구조

Data repository

Access to data Top-level PAC agent

25

View coordinatorSpreadsheet

Pie chartBar chart

Bottom-level PAC agent

Bottom-level PAC agent

Page 26: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 구조

26

Page 27: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 구조

27

Page 28: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 동작

28

Page 29: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

Presentation-Abstraction-Control 패턴 - 구현

29

Page 30: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 정의

l 변하는 시스템 요구사항에 적응할 수 있는 소프트웨어 시스템 설계

l 최소 핵심 기능을 확장 기능과 특정 고객에 맞추어진 부분으로 분리

l 확장 부분을 플러그 인 하여 협력 관계를 조정

30

Page 31: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 예

l 하이드라 운영체제l 같은 기능을 기반으로 비슷한 프로그래밍 인터페이스를 사용하는 여러

애플리케이션 개발

31

Page 32: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 문제

l 고려할 점l 하드웨어와 소프트웨어의 지속적인 발전에 대비하여 플랫폼 설계l 이식 가능, 확장 가능, 적응 가능

l 다음 사항의 균형l 애플리케이션은 각기 다르면서 유사한 플랫폼을 지원 하여야l 동일 핵심 기능을 어떤 방식으로 사용하느냐에 따라 애플리케이션을 그

룹으로 분류

l 플랫폼의 핵심 기능l 최소한의 메모리 크기를 가진 한 개의 컴포넌트로 분리l 프로세싱 과정에 적은 부하를 가지도록 여러 서비스로 분리

l 고려할 점l 하드웨어와 소프트웨어의 지속적인 발전에 대비하여 플랫폼 설계l 이식 가능, 확장 가능, 적응 가능

l 다음 사항의 균형l 애플리케이션은 각기 다르면서 유사한 플랫폼을 지원 하여야l 동일 핵심 기능을 어떤 방식으로 사용하느냐에 따라 애플리케이션을 그

룹으로 분류

l 플랫폼의 핵심 기능l 최소한의 메모리 크기를 가진 한 개의 컴포넌트로 분리l 프로세싱 과정에 적은 부하를 가지도록 여러 서비스로 분리

32

Page 33: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 구조

33

Page 34: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 구조

l 마이크로 커널l 통신 기능, 리소스 핸들링 중앙 서비스l 시스템 종속적인 요소로 캡슐화l 원자적 서비스 – 메커니즘

l 내부 서버l 추가 서비스 구현, 특정 하드웨어 소프트웨어 종속 캡슐화

l 외부 서버l 자체 클라이언트를 위한 프로그래밍 인터페이스 제공l 자체 뷰

l 클라이언트l 외부 서버에만 어댑터를 통하여 연결

l 마이크로 커널l 통신 기능, 리소스 핸들링 중앙 서비스l 시스템 종속적인 요소로 캡슐화l 원자적 서비스 – 메커니즘

l 내부 서버l 추가 서비스 구현, 특정 하드웨어 소프트웨어 종속 캡슐화

l 외부 서버l 자체 클라이언트를 위한 프로그래밍 인터페이스 제공l 자체 뷰

l 클라이언트l 외부 서버에만 어댑터를 통하여 연결

34

Page 35: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 동작

35

Page 36: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 장점

l 이식성 보장l 외부 서버, 클라이언트 불변l 마이크로 커널 안의 종속된 부분 만을 이식

l 유연성, 확장성l 추가 기능은 외부 서버만 추가하면 됨

l 정책(외부 서버)과 메커니즘(마이크로 커널)의 분리l 분산 마이크로커널

l 규모 쉽게 확대l 신뢰성 지원l 투명성

l 이식성 보장l 외부 서버, 클라이언트 불변l 마이크로 커널 안의 종속된 부분 만을 이식

l 유연성, 확장성l 추가 기능은 외부 서버만 추가하면 됨

l 정책(외부 서버)과 메커니즘(마이크로 커널)의 분리l 분산 마이크로커널

l 규모 쉽게 확대l 신뢰성 지원l 투명성

36

Page 37: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

마이크로커널 패턴 - 단점

l 성능 하락l 단일(monolithic) 소프트웨어 보다 성능 저하l 유연성과의 저울질

l 설계와 구현이 복잡l 난이도 높은 작업l 도메인에 대한 깊은 지식(정책과 마이크로커널의 분리를 위한)

37

Page 38: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 정의

l 소프트웨어 시스템의 구조와 동작을 동적으로 변경할 수 있는 메커니즘 제공

l 메타 레벨과 기본 레벨로 나누어 기본적인 측면의 변형l 메타 레벨 – 시스템 특성에 대한 정보 제공l 기본 레벨 – 애플리케이션 로직

l 타입구조와 호출 메커니즘과 같은 기본적인 측면의 변형

l 소프트웨어 시스템의 구조와 동작을 동적으로 변경할 수 있는 메커니즘 제공

l 메타 레벨과 기본 레벨로 나누어 기본적인 측면의 변형l 메타 레벨 – 시스템 특성에 대한 정보 제공l 기본 레벨 – 애플리케이션 로직

l 타입구조와 호출 메커니즘과 같은 기본적인 측면의 변형

38

Page 39: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 예

l 영속 객체

39

Page 40: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 문제

l 변경할 경우 오류가 발생하기 쉽고 비용 많이 소요

l 적응성을 가진 소프트웨어는 복잡한 구조를 가짐

l 변경에 필요한 기술(매개변수화, 서브 클래싱, copy & paste)이 많을수록 다루기 어렵고 복잡

l 변경의 범위는 매우 크다(단축키, 에플리케이션 프레임워크까지)

l 변경할 경우 오류가 발생하기 쉽고 비용 많이 소요

l 적응성을 가진 소프트웨어는 복잡한 구조를 가짐

l 변경에 필요한 기술(매개변수화, 서브 클래싱, copy & paste)이 많을수록 다루기 어렵고 복잡

l 변경의 범위는 매우 크다(단축키, 에플리케이션 프레임워크까지)

40

Page 41: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 해법

l 메타 레벨l 소프트웨어의 구조와 동작에 대한 지식을 주기 위한 소프트웨어 자체 설

명 – 메타객체

l 기본 레벨l 애플리케이션 로직 정의l 변경에 독립

l 인터페이스l 메타객체를 조작l 메타객체 프로토콜

l 메타 레벨l 소프트웨어의 구조와 동작에 대한 지식을 주기 위한 소프트웨어 자체 설

명 – 메타객체

l 기본 레벨l 애플리케이션 로직 정의l 변경에 독립

l 인터페이스l 메타객체를 조작l 메타객체 프로토콜

41

Page 42: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 구조

l 메타객체l 타입 식별 객체와 유사

42

Page 43: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 동작

43

Page 44: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

리플렉션 패턴 - 장단점

l 장점l 소스를 임의로 수정l 소프트웨어 시스템의 변경이 쉬움l 다양한 종류의 변경 지원

l 단점l 메타 레벨에 수정할 때 손상 발생 가능성l 컴포넌트의 개수 급격히 증가l 효율성 저하l 잠재적인 모든 변화를 지원하기 어려움l 리플렉션 제공 하지 않는 언어도 있음

l 장점l 소스를 임의로 수정l 소프트웨어 시스템의 변경이 쉬움l 다양한 종류의 변경 지원

l 단점l 메타 레벨에 수정할 때 손상 발생 가능성l 컴포넌트의 개수 급격히 증가l 효율성 저하l 잠재적인 모든 변화를 지원하기 어려움l 리플렉션 제공 하지 않는 언어도 있음

44

Page 45: 객체지향설계와패턴 Lecture #14: 아키텍처패턴...브로커아키텍처패턴-구조 l여섯가지컴포넌트 message exchange message exchange * marshal unmarhal receive_result

237점157점464점

Questions?

237점157점464점

Questions?