객체지향설계와패턴 Lecture #14: 아키텍처패턴 Eun Man Choi emchoi@dgu.ac.kr
학습목표 l 블랙보드패턴 l 브로커패턴 l PAC 패턴 l 마이크로패턴 l 리플렉션패턴 2
패턴중심소프트웨어아키텍처 l POSA Patterns l Pattern Oriented Software Architecture A System of Patterns Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sornmerlad, Michael Stal, Wiley, 1996 3
패턴중심소프트웨어아키텍처 l 소프트웨어아키텍처패턴에대한책 l 소프트웨어개발초보, 전문가모두가읽어야할책 l 대규모, 복잡한소프트웨어시스템을특정한의도로설계할때필요한지식을담고있음 l 전문가의경험에서배울수있는내용을담고있음 4
아키텍처패턴 l 정의 [Buschman 등 ] l 소프트웨어의기본구조를구성하기위한스키마. l 미리정의된서브시스템을제공하고각서브시스템의책임을정의하며서브시스템간의관계를조직화하는규칙화가이드라인 l 아키텍처템플릿 l 소프트웨어아키텍처를만들기위한뼈대 l 시스템전반에걸친구조적특성을정의. 서브시스템의아키텍처에영향을줌 l 기본설계결정 l 아키텍처패턴의선택은소프트웨어를개발할때기본이되는설계결정임 5
아키텍처패턴의카테고리 l 혼돈에서질서로 l 무질서한객체나컴포넌트의집합이아니라서브태스크들로분할통제 l 계층패턴, 파이프라인패턴, 블랙보드패턴 l 분산시스템 l 분산시스템을아키텍처링 l 브로커패턴, 마이크로커널, 파이프와필터 l 상호작용시스템 l HCI 를가진소프트웨어시스템을구조화 l MVC, Presentation-Abstraction-Control l 적응시스템 l 애플리케이션을확장하는데도움, 기능적요구사항이변경함에따라적응할수있는구조 l 리플렉션패턴, 마이크로커널패턴 6
블랙보드아키텍처패턴 l 명확히정의된해법전략이아직존재하지않은도메인에서문제를해결하려할때 l 부분적인해법, 대략적인해법을수립하기위해특수한서브시스템의지식을조합 7
블랙보드아키텍처패턴 - 예제 l 음성인식시스템 l 파형, 분절음, 구절, 구문등을판별하기위하여전혀다른도메인의지식이필요 l 일관적인알고리즘이없음 l 모호하고잡음섞인데이터, 개인적인차이등어려움가중 8
블랙보드아키텍처패턴 - 해법 l 공유데이터구조위에종합적으로동작하는독립적인프로그램의모임 l 각프로그램은전체중특정한부분을해결하기위하여특수화 l 특수화된프로그램은제각기독립적 l 중앙제어컴포넌트는현재처리과정을평가하여특수화된프로그램을조율 l 프로그램들은블랙보드를통하여커뮤니케이션 9
블랙보드아키텍처패턴 - 구조 l 컴포넌트 l 블랙보드 중앙데이터저장소 l 지식소스 특수한측면을해결하는독립적서브시스템 l 제어컴포넌트 변경을모니터링하고다음동작을결정 10
블랙보드아키텍처패턴 - 동작 11
블랙보드아키텍처패턴 - 구현 l Are any by Feigenbaum and Feldman? 인식 12
브로커아키텍처패턴 - 정의 l 분산소프트웨어시스템의구조화에적합 l 분리된컴포넌트들이원격서비스를호출하여상호작용 l 브로커컴포넌트가통신을관할, 결과와예외를전송 13
브로커아키텍처패턴 - 예 l WAN 도시정보시스템 l 호텔, 레스토랑, 사적, 대중교통정보 14
브로커아키텍처패턴 - 문제 l 독립적협력컴포넌트들의이질적분산시스템 l 원격메소드호출제공 l Location transparency l 서비스를동적으로추가, 제거, 교환 l 개발자에게자세한것숨김 15
브로커아키텍처패턴 - 해법 l 네트워크클라이언트와서버컴포넌트사이에플랫폼독립커뮤니케이션을제공 l 서버는브로커에등록, 클라이언트는브로커를통하여요청 l 객체에메시지호출 -> 분산서비스에액세스 16
브로커아키텍처패턴 - 구조 l 여섯가지컴포넌트 Client Proxy * marshal unmarhal receive_result service_p * 1 calls Client call_service_p start_task 1 message exchange Broker main_loop srv_registration srv_lookup transmit_message 1 calls Bridge marshal unmarshal forward_message transmit_message 1 * message exchange Server Proxy marshal unmarshal dispatch receive_request * 1 start_up main_loop service_i calls Server 17
브로커아키텍처패턴 - 구조 l 클라이언트 l 사용자기능구현 l 클라이언트측프록시를통하여서버에요청 l 브로커 l 서버를등록, 제거 l API 제공, 메시지전송, 오류복구 l 클라이언트프록시 l 클라이언트와브로커간의레이어 l 특정시스템에맞춰진기능 l 서버측프록시 l 서버내의서비스호출 l Unpack, unmashaling l 브리지 l 특정시스템과관련된모든세부내용캡슐화 18
브로커아키텍처패턴 - 동작 : Client : Client Proxy : Broker : Server Proxy : Server method (proxy) locate_server register_service assigned port start_up server port marshal receive_request unmarshal dispatch method (impl.) result receive_result marshal unmarshal result 19
브로커아키텍처패턴 - 사례 l CORBA 구조 Interface Repository IDL Compiler Implementation Repository Client OBJ REF in args operation() out args + return Object (Servant) IDL SKEL DSI DII IDL STUBS ORB INTERFACE Object Adapter ORB CORE GIOP/IIOP/ESIOPS 20
브로커아키텍처패턴 - 장점 l 이식가능성증진 l 클라이언트와서버로부터 OS, 네트워크의자세한사항을숨김 l 다른브로커시스템간의상호운용성지원 l 메시지교환을위한프로토콜을공통으로맞춘다면상호운용가능 l 재사용성확보 l 새로운애플리케이션구축시기존서비스의애플리케이션기능재사용가능 l 위치투명성 l 서버위치는브로커의일, 클라이언트는위치알고있을필요없음 21
브로커아키텍처패턴 - 단점 l 낮은효율 l IPC 를이용하는매뉴얼시스템보다느림. 우회레이어를사용하기때문 l 장애허용성이낮음 l 분산이아닌시스템보다낮은장애허용성. 브로커의장애는치명적 l 테스트, 디버깅이복잡할수있음 l 상당히많은컴포넌트들이관련되기때문 22
Presentation-Abstraction-Control 패턴 l 정의 l 계층구조를이룬에이전트들이서로협력하여상호작용시스템구조를형성 l 각에이전트를애플리케이션의특징담당 l 각에이전트는프레젠테이션, 추상, 콘트롤컴포넌트로구성 23
Presentation-Abstraction-Control 패턴 - 문제 l 상호작용시스템 l 협력하는에이전트의집합 l 에이전트 - UI 제공, 데이터모델관리, 처리기능, 예외처리, 다른시스템과통신 l 각에이전트는자체상태와데이터저장 l 상호작용에이전트는각각자체 UI 제공 l 프레젠테이션측면은변경이잦음 24
Presentation-Abstraction-Control 패턴 - 해법 l 트리형태의계층구조 Data repository Access to data Top-level PAC agent Spreadsheet View coordinator Bottom-level PAC agent Bar chart Pie chart Bottom-level PAC agent 25
Presentation-Abstraction-Control 패턴 - 구조 26
Presentation-Abstraction-Control 패턴 - 구조 27
Presentation-Abstraction-Control 패턴 - 동작 28
Presentation-Abstraction-Control 패턴 - 구현 29
마이크로커널패턴 - 정의 l 변하는시스템요구사항에적응할수있는소프트웨어시스템설계 l 최소핵심기능을확장기능과특정고객에맞추어진부분으로분리 l 확장부분을플러그인하여협력관계를조정 30
마이크로커널패턴 - 예 l 하이드라운영체제 l 같은기능을기반으로비슷한프로그래밍인터페이스를사용하는여러애플리케이션개발 31
마이크로커널패턴 - 문제 l 고려할점 l 하드웨어와소프트웨어의지속적인발전에대비하여플랫폼설계 l 이식가능, 확장가능, 적응가능 l 다음사항의균형 l 애플리케이션은각기다르면서유사한플랫폼을지원하여야 l 동일핵심기능을어떤방식으로사용하느냐에따라애플리케이션을그룹으로분류 l 플랫폼의핵심기능 l 최소한의메모리크기를가진한개의컴포넌트로분리 l 프로세싱과정에적은부하를가지도록여러서비스로분리 32
마이크로커널패턴 - 구조 33
마이크로커널패턴 - 구조 l 마이크로커널 l 통신기능, 리소스핸들링중앙서비스 l 시스템종속적인요소로캡슐화 l 원자적서비스 메커니즘 l 내부서버 l 추가서비스구현, 특정하드웨어소프트웨어종속캡슐화 l 외부서버 l 자체클라이언트를위한프로그래밍인터페이스제공 l 자체뷰 l 클라이언트 l 외부서버에만어댑터를통하여연결 34
마이크로커널패턴 - 동작 35
마이크로커널패턴 - 장점 l 이식성보장 l 외부서버, 클라이언트불변 l 마이크로커널안의종속된부분만을이식 l 유연성, 확장성 l 추가기능은외부서버만추가하면됨 l 정책 ( 외부서버 ) 과메커니즘 ( 마이크로커널 ) 의분리 l 분산마이크로커널 l 규모쉽게확대 l 신뢰성지원 l 투명성 36
마이크로커널패턴 - 단점 l 성능하락 l 단일 (monolithic) 소프트웨어보다성능저하 l 유연성과의저울질 l 설계와구현이복잡 l 난이도높은작업 l 도메인에대한깊은지식 ( 정책과마이크로커널의분리를위한 ) 37
리플렉션패턴 - 정의 l 소프트웨어시스템의구조와동작을동적으로변경할수있는메커니즘제공 l 메타레벨과기본레벨로나누어기본적인측면의변형 l 메타레벨 시스템특성에대한정보제공 l 기본레벨 애플리케이션로직 l 타입구조와호출메커니즘과같은기본적인측면의변형 38
리플렉션패턴 - 예 l 영속객체 39
리플렉션패턴 - 문제 l 변경할경우오류가발생하기쉽고비용많이소요 l 적응성을가진소프트웨어는복잡한구조를가짐 l 변경에필요한기술 ( 매개변수화, 서브클래싱, copy & paste) 이많을수록다루기어렵고복잡 l 변경의범위는매우크다 ( 단축키, 에플리케이션프레임워크까지 ) 40
리플렉션패턴 - 해법 l 메타레벨 l 소프트웨어의구조와동작에대한지식을주기위한소프트웨어자체설명 메타객체 l 기본레벨 l 애플리케이션로직정의 l 변경에독립 l 인터페이스 l 메타객체를조작 l 메타객체프로토콜 41
리플렉션패턴 - 구조 l 메타객체 l 타입식별객체와유사 42
리플렉션패턴 - 동작 43
리플렉션패턴 - 장단점 l 장점 l 소스를임의로수정 l 소프트웨어시스템의변경이쉬움 l 다양한종류의변경지원 l 단점 l 메타레벨에수정할때손상발생가능성 l 컴포넌트의개수급격히증가 l 효율성저하 l 잠재적인모든변화를지원하기어려움 l 리플렉션제공하지않는언어도있음 44
Questions?