pattern-oriented software architecture microkernel 아키텍처 패턴

23
Pattern-Oriented Software Architecture Pattern-Oriented Software Architecture Microkernel Microkernel 아아아아 아아 아아아아 아아 Choi Seok Bae Choi Seok Bae 2008-09-03 2008-09-03 JAVAJIGI SW STUDY JAVAJIGI SW STUDY

Upload: dustin

Post on 15-Jan-2016

127 views

Category:

Documents


0 download

DESCRIPTION

Pattern-Oriented Software Architecture Microkernel 아키텍처 패턴. Choi Seok Bae 2008-09-03 JAVAJIGI SW STUDY. Contents. Introduce( 소개 ) Example( 예제 ) Context( 정황 ) Problem( 문제 ) Solution( 해법 ) Structure( 구조 ) Dynamics( 동작 ) Implementation( 구현 ) Example resolved( 예제 심화 ) Variants( 변형 ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

Pattern-Oriented Software Architecture Pattern-Oriented Software Architecture

Microkernel Microkernel 아키텍처 패턴아키텍처 패턴Choi Seok BaeChoi Seok Bae

2008-09-032008-09-03

JAVAJIGI SW STUDYJAVAJIGI SW STUDY

Page 2: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

ContentsContents

• Introduce( 소개 )• Example( 예제 )• Context( 정황 )• Problem( 문제 )• Solution( 해법 )• Structure( 구조 )• Dynamics( 동작 )• Implementation( 구현 )• Example resolved( 예제 심화 )• Variants( 변형 )• Known Uses( 용례 )• Consequences( 결과 )• See Also( 관련자료 )

Page 3: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Introduce(* Introduce( 소개소개 ))

* * 변하는 시스템 요구사항에 적응할 수 있는 소프트웨어 시스템을 변하는 시스템 요구사항에 적응할 수 있는 소프트웨어 시스템을 설계할 때에 적용한다설계할 때에 적용한다 ..

* * 최소 핵심 기능최소 핵심 기능 (minimal function core)(minimal function core) 을 확장 기능과 특정 고객에을 확장 기능과 특정 고객에맞춰진 부분으로부터 분리해낸다맞춰진 부분으로부터 분리해낸다 ..

* * 확장 부분을 마치 플러그처럼 장착하며 협력 관계를 조정하는 확장 부분을 마치 플러그처럼 장착하며 협력 관계를 조정하는 소켓과 같은 역할을 한다소켓과 같은 역할을 한다 ..

Microkernel Microkernel 아키텍처 패턴 적용 및 역할아키텍처 패턴 적용 및 역할Microkernel Microkernel 아키텍처 패턴 적용 및 역할아키텍처 패턴 적용 및 역할

Page 4: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Example(* Example( 예제예제 ))

* * 운영체제 하이드라운영체제 하이드라 (Hydra)(Hydra) 에 대한 핵심 요구사항에 대한 핵심 요구사항

1. 1. 관련 하드웨어 플랫폼에 쉽게 이식되어야 한다관련 하드웨어 플랫폼에 쉽게 이식되어야 한다 ..

2. 2. 넥스트스텝넥스트스텝 , , 마이크로소프트 윈도우마이크로소프트 윈도우 , , 유닉스 시스템 유닉스 시스템 V V 처럼 널리 보급되어 있는 처럼 널리 보급되어 있는 운영체제용 애플리케이션을 실행할 수 있어야 한다운영체제용 애플리케이션을 실행할 수 있어야 한다 ..

3. 3. 사용자가 애플리케이션을 시작할 때 팝업 메뉴에서 자신이 원하는 운영체제를사용자가 애플리케이션을 시작할 때 팝업 메뉴에서 자신이 원하는 운영체제를선택할 수 있어야 한다선택할 수 있어야 한다 ..

4. 4. 주요 창 내에 현재 실행되고 있는 모든 애플리케이션을 디스플레이할 수 주요 창 내에 현재 실행되고 있는 모든 애플리케이션을 디스플레이할 수 있어야 한다있어야 한다 ..

5. 5. 멀티미디어멀티미디어 (multimedia), (multimedia), 펜기반 컴퓨텅펜기반 컴퓨텅 (pen-based computing), (pen-based computing), WWW(World Wide Web) WWW(World Wide Web) 등의 신기술과 쉽게 통합하도록 설계되어야 할 뿐만등의 신기술과 쉽게 통합하도록 설계되어야 할 뿐만아니라 자체 기능을 적응아니라 자체 기능을 적응 , , 개선개선 , , 확장하기 쉽도록 설계되어야 한다확장하기 쉽도록 설계되어야 한다 ..

데스크탑 컴퓨터용 새 운영체제 하이드라 (Hydra) 를 개발한다고 가정데스크탑 컴퓨터용 새 운영체제 하이드라 (Hydra) 를 개발한다고 가정

Page 5: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Context(* Context( 정황정황 ))

Context( 정황 )Context( 정황 )

* * 동일한 핵심 기능동일한 핵심 기능 (core functionality)(core functionality) 을 기반으로 비슷한 프로그래밍을 기반으로 비슷한 프로그래밍인터페이스들을 사용하는 몇 가지 유형의 애플리케이션을 개발해야 한다인터페이스들을 사용하는 몇 가지 유형의 애플리케이션을 개발해야 한다 ..

Page 6: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Problem(* Problem( 문제문제 ))

개발 시 문제점개발 시 문제점

1. 1. 애플리케이션 도메인에서 유사한 표준과 기술을 폭넓게 수용하는 소프트웨어를애플리케이션 도메인에서 유사한 표준과 기술을 폭넓게 수용하는 소프트웨어를개발하는 작업은 결코 쉽지 않다개발하는 작업은 결코 쉽지 않다 .(.( 운영체제나 그래픽 사용자 인터페이스 등의운영체제나 그래픽 사용자 인터페이스 등의애플리케이션 플랫폼애플리케이션 플랫폼 ))

2. 2. 흔히 이런 시스템은 흔히 이런 시스템은 1010 년 이상 수명이 길다년 이상 수명이 길다 . . 이런 긴 기간 동안에는 새 기술이이런 긴 기간 동안에는 새 기술이등장할 것이며 옛 기술은 변경된다등장할 것이며 옛 기술은 변경된다 ..

설계 시 고려할 영향력 (force)설계 시 고려할 영향력 (force)

1. 1. 애플리케이션 플랫폼은 하드웨어와 소프트웨어의 지속적인 발전에 대비해야 애플리케이션 플랫폼은 하드웨어와 소프트웨어의 지속적인 발전에 대비해야 한다한다 ..

2. 2. 애플리케이션 플랫폼은 새롭게 대두되는 기술을 쉽게 통합하기 위해 애플리케이션 플랫폼은 새롭게 대두되는 기술을 쉽게 통합하기 위해 이식가능이식가능 (portable)(portable) 하고하고 , , 확장가능확장가능 (extensible)(extensible) 하며하며 , , 적응가능적응가능 (adaptable)(adaptable) 해야 한다해야 한다 ..

Page 7: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Problem(* Problem( 문제문제 ))

이식 , 확장 , 적응하기 쉬운 설계를 위한 영향력 (force)이식 , 확장 , 적응하기 쉬운 설계를 위한 영향력 (force)

1. 1. 현재 도메인에서 사용하는 애플리케이션들은 각기 다르면서도 유사한 현재 도메인에서 사용하는 애플리케이션들은 각기 다르면서도 유사한 애플리케이션 플랫폼들을 지원해야 한다애플리케이션 플랫폼들을 지원해야 한다 ..

2. 2. 동일한 핵심 기능을 어떤 방식으로 사용하느냐에 따라 애플리케이션들을 동일한 핵심 기능을 어떤 방식으로 사용하느냐에 따라 애플리케이션들을 그룹별로 분류할 수 있다그룹별로 분류할 수 있다 . . 그러기 위해서는 애플리케이션이 기존 표준들을 그러기 위해서는 애플리케이션이 기존 표준들을 애뮬레이션해야 한다애뮬레이션해야 한다 ..

3. 3. 애플리케이션 플랫폼의 핵심 기능은 최소한의 메모리 크기를 가진 한 개의 애플리케이션 플랫폼의 핵심 기능은 최소한의 메모리 크기를 가진 한 개의 컴포넌트로 분리되어야 하며컴포넌트로 분리되어야 하며 , , 가능하면 프로세싱 과정에 적은 부하를 소비하도록가능하면 프로세싱 과정에 적은 부하를 소비하도록여러 서비스들로 분리해야 한다여러 서비스들로 분리해야 한다 ..

Page 8: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Solution(* Solution( 해법해법 ))

애플리케이션 플랫폼의 기본 서비스를 마이크로커널 ( microkernel)컴포넌트로 캡슐화한다 .

애플리케이션 플랫폼의 기본 서비스를 마이크로커널 ( microkernel)컴포넌트로 캡슐화한다 .

* * 마이크로커널마이크로커널 (microkernel)(microkernel)

1. 1. 컴포넌트들 간에 서로 통신할 수 있도록 각 컴포넌트를 독립된 프로세스에서컴포넌트들 간에 서로 통신할 수 있도록 각 컴포넌트를 독립된 프로세스에서실행할 수 있는 기능을 포함한다실행할 수 있는 기능을 포함한다 ..

2. 2. 파일이나 프로세스처럼 시스템 범위파일이나 프로세스처럼 시스템 범위 (system-wide) (system-wide) 리소스를 저장하는 리소스를 저장하는 역할을 한다역할을 한다 ..

3. 3. 다른 컴포넌트들이 자체 기능에 액세스할 수 있도록 인터페이스를 제공한다다른 컴포넌트들이 자체 기능에 액세스할 수 있도록 인터페이스를 제공한다 ..

( 불필요하게 크거나 복잡성을 증가시키지 않도록 하기 위해 ) 마이크로커널내에 구현할 필요가 없는 핵심 기능은 내부 서버 (internal server) 로 분리시켜야 한다 .

( 불필요하게 크거나 복잡성을 증가시키지 않도록 하기 위해 ) 마이크로커널내에 구현할 필요가 없는 핵심 기능은 내부 서버 (internal server) 로 분리시켜야 한다 .

Page 9: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Solution(* Solution( 해법해법 ))

외부 서버 (external server) 는 기반 마이크로커널에 대한 외부 서버 자제의뷰를 구현한다 .

외부 서버 (external server) 는 기반 마이크로커널에 대한 외부 서버 자제의뷰를 구현한다 .

* * 외부 서버외부 서버 (external server)(external server)

1. 1. 마이크로커널의 인터페이스를 응용하는 메커니즘을 사용한다마이크로커널의 인터페이스를 응용하는 메커니즘을 사용한다 ..

2. 2. 모든 외부 서버는 그 자체로 애플리케이션 플랫폼 역할을 하는 독립된 모든 외부 서버는 그 자체로 애플리케이션 플랫폼 역할을 하는 독립된 프로세스이다프로세스이다 . . 그러므로 그러므로 Microkernel Microkernel 시스템은 다른 애플리케이션 플랫폼을시스템은 다른 애플리케이션 플랫폼을통합하는 애플리케이션 플랫폼으로 간주될 수 있다통합하는 애플리케이션 플랫폼으로 간주될 수 있다 ..

클이이언트 (client) 는 마이크로커널에서 제공하는 통신 기능을 사용함으로써 외부 서버와 통신한다 .

클이이언트 (client) 는 마이크로커널에서 제공하는 통신 기능을 사용함으로써 외부 서버와 통신한다 .

Page 10: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Structure(* Structure( 구조구조 ))

Microkernel 패턴은 다섯 가지 종류의 컴포넌트가 참여하여 구성된다 .Microkernel 패턴은 다섯 가지 종류의 컴포넌트가 참여하여 구성된다 .

* * 내부 서버내부 서버 (internal server)(internal server)

* * 외부 서버외부 서버 (external server)(external server)

* * 어댑터어댑터 (adapter)(adapter)

* * 클라이언트클라이언트 (client)(client)

* * 마이크로커널마이크로커널 (microkernel)(microkernel)

Page 11: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Structure(* Structure( 구조구조 ))

MicrokernelMicrokernel

클래스 Microkernel

책임• 핵심 메커니즘을 제공한다• 통신 기능을 제공한다• 시스템 종속성들을 캡슐화한다• 리소스를 관리하고 제어한다

협력자• Internal Server

Internal ServerInternal Server

클래스 Internal Server

책임• 추가 서비스를 구현한다 .• 특정 시스템에 맞춰진 구현을 갭슐화한다 .

협력자• Microkernel

Page 12: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Structure(* Structure( 구조구조 ))

External ServerExternal Server

클래스 External Server

책임• 자체 클라이언트를 위한 프로그래밍 인터페이스를 제공한다 .

협력자• Microkernel

ClientClient

클래스 Client

책임• 특정 외부 서버 하나와 연결된 애플리케이션 역할을 한다 .

협력자• Adapter

Page 13: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Structure(* Structure( 구조구조 ))

AdapterAdapter

클래스 Adapter

책임• 클라이언트와 통신하는 기능 등의 시스템 종속성을 숨긴다• 클라이언트를 대신해 외부 서버의 메서드를 호출한다 .

협력자• External Server• Microkernel

Page 14: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Structure(* Structure( 구조구조 ))

OMT 다이어그램OMT 다이어그램

Figure. The microkernel pattern (http://www.vico.org/pages/PatronsDisseny/Pattern%20MicroKernel/)

Page 15: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Dynamic(* Dynamic( 동작동작 ))

시나리오 I 은 클라이언트가 외부 서버에 서비스를 호출할 때의 동작을 설명시나리오 I 은 클라이언트가 외부 서버에 서비스를 호출할 때의 동작을 설명

Page 16: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Dynamic(* Dynamic( 동작동작 ))

시나리오 II 는 외부 서버가 내부 서버에서 제공하는 서비스에 대한 요청을받았을 때 Microkernel 아키텍처의 동작 설명시나리오 II 는 외부 서버가 내부 서버에서 제공하는 서비스에 대한 요청을받았을 때 Microkernel 아키텍처의 동작 설명

Page 17: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Implementation(* Implementation( 구현구현 ))

Microkernel 시스템을 구현하기 위해 다음 단계를 수행한다 .Microkernel 시스템을 구현하기 위해 다음 단계를 수행한다 .

11 단계단계 . . 애플리케이션 도메인을 분석한다애플리케이션 도메인을 분석한다 ..22 단계단계 . . 외부 서버를 분석한다외부 서버를 분석한다 ..33 단계단계 . . 서비스를 카테고리로 분류한다서비스를 카테고리로 분류한다 ..44 단계단계 . . 카테고리들을 분할한다카테고리들을 분할한다 ..55 단계단계 . 1. 1 단계에서 파악해낸 모든 카테고리에 대해 일관적이고 완전한 오퍼레이션단계에서 파악해낸 모든 카테고리에 대해 일관적이고 완전한 오퍼레이션 집합과 추상집합을 찾는다집합과 추상집합을 찾는다 ..66 단계단계 . . 요청 전송과 검색요청 전송과 검색 (retrieval)(retrieval) 을 위한 전략을 결정한다을 위한 전략을 결정한다 ..77 단계단계 . . 마이크로커널 컴포넌트를 구조화한다마이크로커널 컴포넌트를 구조화한다 ..88 단계단계 . . 마이크로커널의 프로그래밍 인터페이스를 정의한다마이크로커널의 프로그래밍 인터페이스를 정의한다 ..99 단계단계 . . 마이크로커널의 메모리 블록마이크로커널의 메모리 블록 , , 디바이스디바이스 , , 디바이스 컨텍스트 등의 모든 디바이스 컨텍스트 등의 모든 시스템 리소스들을 관리하는 책임을 맡는다시스템 리소스들을 관리하는 책임을 맡는다 ..1010 단계단계 . . 내부 서버를 독립된 프로세스나 공유 라이브러리로 설계해 구현한다내부 서버를 독립된 프로세스나 공유 라이브러리로 설계해 구현한다 ..1111 단계단계 . . 외부 서버를 구현한다외부 서버를 구현한다 ..1212 단계단계 . . 어댑터를 구현한다어댑터를 구현한다 ..1313 단계단계 . . 실행시킬 준비를 모두 마친 실행시킬 준비를 모두 마친 Microkernel Microkernel 시스템을 위해 클라이언트시스템을 위해 클라이언트 애플리케이션을 개발하거나 기존에 있던 클라이언트 애플리케이션을 애플리케이션을 개발하거나 기존에 있던 클라이언트 애플리케이션을 사용한다사용한다 ..

Page 18: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Example resolved(* Example resolved( 예제 심화예제 심화 ))

하이드라의 개발이 끝나고 난 후에 애플 (Apple) 의 맥 OS(Mac OS) 운영체제를 에뮬레이션하는 외부 서버를 통합해야 한다고 가정하이드라의 개발이 끝나고 난 후에 애플 (Apple) 의 맥 OS(Mac OS) 운영체제를 에뮬레이션하는 외부 서버를 통합해야 한다고 가정

* * 하이드라에서 맥 하이드라에서 맥 OS OS 에물레이션을 제공하려면 다음과 같은 작업이 필요에물레이션을 제공하려면 다음과 같은 작업이 필요 ..

1.1. 하이드라 마이크로커널 위에 하이드라 마이크로커널 위에 (( 맥 맥 OSOS 가 제공하는 모든 프로그래밍 가 제공하는 모든 프로그래밍 인터페이스를 구현하는인터페이스를 구현하는 ) ) 외부 서버를 구축한다외부 서버를 구축한다 .. 물론 외부 서버에는 물론 외부 서버에는 맥킨토시 사용자 인터페이스 정책도 포함시켜야 한다맥킨토시 사용자 인터페이스 정책도 포함시켜야 한다 ..

2. (2. ( 클라이언트에 동적으로 연결되는클라이언트에 동적으로 연결되는 ) ) 라이브러리 형태로 설계된 라이브러리 형태로 설계된 어댑터를 어댑터를 제공한다제공한다 ..

3. 3. 맥 맥 OSOS 에 필요한 에 필요한 내부 서버들을 구현한다내부 서버들을 구현한다 ..

Page 19: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Variant(* Variant( 변형변형 ))

클라이언트 - 서버 간접 연결 Microkernel 시스템클라이언트 - 서버 간접 연결 Microkernel 시스템

Distributed Microkernel 시스템Distributed Microkernel 시스템

Page 20: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Known use(* Known use( 용례용례 ))

마크 (Mach)[Tan92]마크 (Mach)[Tan92]

아메바 (Amoeba)[Tan92]아메바 (Amoeba)[Tan92]

코러스 (Chorus)[Cho90]코러스 (Chorus)[Cho90]

윈도우 NT[Cus93]윈도우 NT[Cus93]

MKDE(Microkernel Databank Engine)MKDE(Microkernel Databank Engine)

Page 21: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Consequence(* Consequence( 결과결과 ))

장점장점

이식성이식성 (portability)(portability) 이 보장된다이 보장된다 ..

유연성유연성 (flexibility)(flexibility) 과 교환가능성과 교환가능성 (extensibility)(extensibility) 이 확보된다이 확보된다 ..

정책과 메커니즘을 분리할 수 있다정책과 메커니즘을 분리할 수 있다 ..

Distributed Microkernel 변형의 추가적인 장점Distributed Microkernel 변형의 추가적인 장점

범위범위 (scalability)(scalability) 이 확보된다이 확보된다 ..

신뢰성신뢰성 (reliability)(reliability) 이 지원된다이 지원된다 ..

투명성투명성 (transparency)(transparency) 을 제공한다을 제공한다 ..

Page 22: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* Consequence(* Consequence( 결과결과 ))

단점단점

성능성능 (performance) (performance) 하락이 우려된다하락이 우려된다 ..

설계와 구현이 복잡해진다설계와 구현이 복잡해진다 ..

Page 23: Pattern-Oriented Software Architecture  Microkernel   아키텍처 패턴

* See also(* See also( 관련자료관련자료 ))

Broker 아키텍처 패턴Broker 아키텍처 패턴

Reflection 아키텍처 패턴Reflection 아키텍처 패턴

Layers 아키텍처 패턴Layers 아키텍처 패턴