슬라이드 1

Similar documents
슬라이드 1

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

제8장 자바 GUI 프로그래밍 II

Chap7.PDF

C# Programming Guide - Types

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Slide 1

thesis

final_thesis

6주차.key

Intro to Servlet, EJB, JSP, WS

PCServerMgmt7

RVC Robot Vaccum Cleaner

MVVM 패턴의 이해

Interstage5 SOAP서비스 설정 가이드

[Brochure] KOR_TunA

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

untitled

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

歯이시홍).PDF

PowerPoint Template

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Something that can be seen, touched or otherwise sensed

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

김기남_ATDC2016_160620_[키노트].key

ecorp-프로젝트제안서작성실무(양식3)

thesis

Microsoft PowerPoint - CSharp-10-예외처리

DocsPin_Korean.pages

서현수

UML

Microsoft PowerPoint - ch03ysk2012.ppt [호환 모드]

1

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Network Programming

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

TTA Journal No.157_서체변경.indd

thesis


THE TITLE

Intra_DW_Ch4.PDF

소프트웨어개발방법론

Ç×°ø¾ÈÀüÁ¤º¸³×Æ®¿öÅ©±¸Ãà¹æ¾È¿¡°üÇÑ¿¬±¸.hwp

Chap 6: Graphs

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

OMA Bcast Service Guide ATSC 3.0 (S33-2) T-UHDTV 송수신정합 Part.1 Mobile Broadcast (Open Mobile Alliance) 기반 Data Model ATSC 3.0 을위한확장 - icon, Channel No.

Microsoft PowerPoint - 04-UDP Programming.ppt

The Self-Managing Database : Automatic Health Monitoring and Alerting

歯I-3_무선통신기반차세대망-조동호.PDF

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Social Network

I care - Do you?

No Slide Title

CAN-fly Quick Manual

PowerPoint 프레젠테이션

Motor Control Solution

10주차.key

놀이동산미아찾기시스템

Journal of Educational Innovation Research 2018, Vol. 28, No. 1, pp DOI: A study on Characte

교육2 ? 그림

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

Voice Portal using Oracle 9i AS Wireless

Microsoft PowerPoint - Java7.pptx

Windows Live Hotmail Custom Domains Korea

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

DE1-SoC Board

JavaGeneralProgramming.PDF

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

hd1300_k_v1r2_Final_.PDF

VZ94-한글매뉴얼

step 1-1

BY-FDP-4-70.hwp

Service-Oriented Architecture Copyright Tmax Soft 2005

DDX4038BT DDX4038BTM DDX4038 DDX4038M 2010 Kenwood Corporation All Rights Reserved. LVT A (MN)

<32382DC3BBB0A2C0E5BED6C0DA2E687770>

DBMS & SQL Server Installation Database Laboratory

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

10X56_NWG_KOR.indd

PowerPoint Template

untitled

Microsoft Word - [TP_3][T1]UTP.docx

1 Nov-03 CST MICROWAVE STUDIO Microstrip Parameter sweeping Tutorial Computer Simulation Technology

PowerPoint Presentation


HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

No Slide Title

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

Transcription:

소프트웨어아키텍처 설계패턴 김정호대표이사

패턴개요 패턴 특정문제에대한해법을추상화하고그안의공통된요인을추출하여정형화한것을패턴이라고한다. 패턴의 3 가지의스키마 정황 (Context) : 문제를발생시키는상황 문제 (Problem) : 해당정황에서반복적으로발생하는문제 해법 (Solution) : 해당문제에대해검증된해답 소프트웨어시스템개발에서의패턴종류 소프트웨어아키텍처패턴 문제를해결하는해법으로소프트웨어시스템의기본구조와관련된것을다룰경우아키텍처수준의패턴이라고말한다. 디자인패턴 소프트웨어시스템의서브시스템이나컴포넌트들, 혹은그것들간의관계를해법으로사용하는경우, 디자인패턴이라고말한다. 이디엄 (Idiom) 특정프로그래밍언어의기능을이용하여컴포넌트들혹은컴포넌트들간관계의특정측면을구현하는방법을이디엄이라고한다. 2

아키텍처패턴종류 Layer Blackboard Pipes and Filters Broker Model-View-Controller Publisher-Subscriber Presentation-Abstraction- Control Microkernel Reflection Interceptor Reactor Procator Half-sync/half-async Leader/Followers 3

Layer 패턴 정의 특정추상레벨에있는서브태스크들끼리서로묶어서하나의그룹으로분류하는방식 하위수준의이슈를상위수준에이슈와분리시켜소프트웨어의재사용성을높여주는패턴 예제 네트워크프로토콜아키텍처 (e.g. OSI 7 layer) 가상머신 (e.g. interpreters, JVM) 4

Layer 패턴 Applications& interfaces Issues - Separation of concerns Major processes Domain classes Mechanisms Services 5

Layer 패턴 정황 (Context) 시스템의규모가커서분해할필요가있을경우 문제 (Problem) 하위레벨과상위레벨이슈가서로혼재해있다는점이주된특징인시스템을설계할경우 시스템의기능이수직적으로나눠져있거나수평적인경우와혼재되어있는경우 해법 (Solution) 시스템의상호연동관계가있는모듈들을모아계층으로추상화 ( 최하위계층 : Layer 1, 최상위계층 : Layer N) Layer J 는반드시 Layer J-1 이제공하는서비스만사용. 다른계층의서비스를사용해서는안됨 6

Layer 패턴 설계순서 1. 계층별로모듈을묶는추상기준을정의 2. 추상기준에따라계층을몇레벨로나눌지결정 3. 계층마다역할및태스크부여 4. 계층별제공서비스를상세히정의 5. 계층별상세인터페이스정의 6. 시스템기능이계층에서동작하는것이가능한지확인 ( 예. 유스케이스시나리오를시뮬레이션하는방식 ) 7. 계층내부에대한구조정의 8. 인접한계층간의통신방식정의 9. 예외처리방식을정의 7

Layer 패턴 8

Layer 패턴 9

Layer 패턴 10

Layer 패턴

Layer 패턴 12

Layer 패턴 장점 계층별연동을한정할수있어 Loosely coupled 원칙을지킬수있음 계층별로변화에대한영향력을한정할수있어코딩이나테스트를계층별로진행할수있음 인터페이스정의가잘되어있다면계층을통째로교체할수있음 모듈의재사용성을높여유지보수성이나이식성이필요한시스템에적용하기좋은패턴임 단점 계층의원칙을지키기위해각계층을모두거쳐야하므로성능측면에불이익을받을수있음 계층을구분하기어렵고잘못구분할경우설계수정이빈번히발생할수있음 계층의적절한개수및규모를정의하는것이어려움 13

Blackboard 패턴 Copy right by 정의 Shared data, database 와같은데이터중심패턴중에하나 명확히정의된문제해법이없을때문제를풀어가는하나의방식을정의한패턴 대략적으로해법을수립하기위해특수한서비스시스템의지식을조합하는패턴 Accessor 예제 Accessor AI system Signal processing Accessor Accessor Accessor Accessor repository Radar/sonar Vision processing repository Accessor Accessor Speech processing Accessor Accessor Accessor Accessor Middleware Shared data DBMS 14

Blackboard 패턴 Copy right by 음성인식시스템 Input: 파형형태의음성 Output: 시스템이인식한문장 15

Blackboard 패턴 Copy right by 정황 (Context) 도메인의해법이명확하지않은경우 문제 (Problem) 컴퓨터비전, 음성인식, 화상인식등도메인분야와같이상위수준의데이터구조로변환하기위한명확한해법이존재하지않음 하나의문제를분해하면여러가지도메인의하위문제들이발생함. 하위문제들을해법이있다해도다시취합하여상위수준의문제를포괄적으로해결하는데어려움이있음 해법 (Solution) 일반적인데이터구조 (blackboard) 를가지고각각독립적으로동작하는프로그램들 (Knowledge sources) 로이뤄져있음 통제컴포넌트 (Control) 에의해모든독립적인프로그램들은하나의해법을찾기위해서로협력하여동작함 16

Blackboard 패턴 Copy right by 구성컴포넌트 Blackboard 문제의현재상태를제시 데이터를관리 Knowledge Sources Blackboard 상태를업데이트 특정도메인의해법을제시 Blackboard에그해법을적용 Control Blackboard 상태모니터링 Knowledge Sources 스케줄을관리하고실행시킴 17

Blackboard 패턴 1. Start Control::loop 2. Control::nextSource 3. determine potential knowledge sources by calling Blackboard::inspect 4. Invoke KnowledgeSource::execCondition of each candidate knowledge source 5. Each candidate knowledge source invokes Blackboard::inspect to determine if/how it can contribute to current state of solution 6. Control chooses a knowledge source to invoke by calling KnowledgeSource::execAction 7. Executes KnowledgeSource::updateBlackboard 8. Calls Blackboard::inspect 9. Calls Blackboard::update 18

Blackboard 패턴 19

Blackboard 패턴 Copy right by 설계순서 1. 문제의도메인을정의하고해법을찾기위해일반적인지식분야를상세히살펴본다. 2. 해법에대한추상화수준을상위수준에서하위수준까지나눠서정의한다. 3. 해법수준에맞게 Knowledge source 를정이하고각수준으로분할한다. 4. 모든 Knowledge source 가 blackboard 와상호작용하는표현방식을찾아서정의한다. (blackboard 어휘를정의한다.) 5. Control 을정의한다. 20

Blackboard 패턴 Copy right by How do you solve a puzzle? edges control regions organize pieces assemble parts 21

Blackboard 패턴 Copy right by How do you solve a puzzle? Level 4 assemble chunks Level 3 Level 2 Level 1 build chunks of edges build chunks of sky : collect water pieces collect sky pieces : Turn all pieces picture side up 22

Blackboard 패턴 Copy right by Level 4 Level 3 Level 2 Blackboard assemble chunks build chunks of edges build chunks of sky : collect water pieces collect sky pieces : write write write KS KS KS Knowledge Sources Level 1 turn all pieces picture side up write KS Sample Environment reads data flow from a to b a event send from a to b a b b Control Activates (e.g. events) repository process/object/thread 23

Blackboard 패턴 Copy right by Hearsay( 음성인식 ) Blackboard Control Data Part n : Data Part 3 Data Part 2 Data Part 1 Blackboard Monitor Queue Knowledge Sources Condition Action Condition Action Condition Action control data Control Scheduler 24

Blackboard 패턴 Copy right by F-22 Sensor Fusion System 비행기조종사는넘쳐나는데이터로인해많은스트레스를받는다. avoid being detected engage enemy fighters engage ground targets avoid terrain obstacles avoid surface-to-air ordinance navigate and find the targets oh yeah,... and fly the airplane too! 25

Blackboard 패턴 Copy right by 기존시스템은센서, 표시판, 조절기능이분리되었음 조종사가데이터를조합하고판단하여야함 FL Radar TFTA Radar Airspeed Altitude Weapon Stores Aircraft Status Observability GPS/Compass 26

Blackboard 패턴 Copy right by F-22 Advanced Tactical Fighter s Sensor Fusion System 목적 데이터통합 필요데이터만선별적으로보드에표시 보기좋은형태로데이터를표시 F-22 비행기에서가장복잡한기계중에하나로서 blackboard 패턴을사용 27

Blackboard 패턴 Copy right by The F-22 Advanced Tactical Fighter s Sensor Fusion System 은조종사가필요로하는정보를하나의계기판에표시해준다. FL Radar TFTA Radar Airspeed Altitude Weapon Stores Aircraft Status Observability GPS/Compass Mission Profile Sensor Fusion Computer Pilot Input Integrated air picture 28

Blackboard 패턴 Copy right by Mission Profile Pilot Input Fusion Control interrupt Display Engine FL Radar TFTA Radar Airspeed Altitude Weapon Stores Aircraft Status Observability GPS/Compass Radar KS Attitude KS Attitude KS Profile KS Navigation Air Data Repository task data repository data interrupt : processes repository Integrated air picture 29

Blackboard 패턴 장점 완벽한해법을찾기어려운경우에사용할수있음 KS, Control, Blackboard 가독립적으로동작하여가변성이나유지보수성이좋음 KS 는타문제도메인에재사용될수있음 단점 완벽한해법을제시하지못하므로얼마동안동작해야하는지알수가없음 ( 성능문제 ) 계산결과가항상동일하지않아테스트가어려움 많은시간에걸쳐수정되어야하므로개발에많은노력이필요 30

Pipes and Filters 패턴 Copy right by 정의 데이터스트림을처리하는패턴 데이터는 Pipe 를통해서 Filter 로전달 전달된데이터는 Filter 를통해걸러지고 pipe 를통해다음 Filter 로이동 예제 Unix command system Ex>> cat etc/passwd grep joe sort > junk 31

Pipes and Filters 패턴 Programming Language Compiler 32

Pipes and Filters 패턴 Copy right by 정황 (Context) 입력된데이터스트림을처리하거나변환해야함 문제 (Problem) 다수의개발자가참여하여시스템을구축해야함 데이터스트림을처리하는프로세싱단계가쉽게변할수있음 프로세싱단계를재사용할수있어야함 다양한방식으로처리결과물을보여줄수있어야함 해법 (Solution) 입력된데이터를처리하는단계를순차적 (sequencial) 으로처리 하나의처리단계 (Filter 로구현 ) 에서처리된결과물은다음처리단계의입력물 각각의처리단계를 Pipe 로연결 33

Pipes and Filters 패턴 Copy right by 구성컴포넌트 Filters 데이터가입력되면시작 데이터를보강하거나정제, 변형하는프로세스를진행 Pipes 데이터가흐르는공간 필터와필터사이를연결 데이터소스와최초필터간의역할 최종필터와데이터싱크간의연결 연결된 Filter 에게데이터를입력하고출력하는역할 Data Source 시스템에들어오는입력값 동일한구조체나타입으로이뤄진일련의데이터값 Data Sink Pipe 를통해나오는최종결과물을취합 34

Pipes and Filters 패턴 설계순서 1. 처리단계순서에맞게시스템의작업을나눈다. 각단계는이전단계의아웃풋에만의존성을가져야한다. 2. 데이터포맷을결정한다. 3. 파이프간의연결방법을설계한다. 4. 필터설계하고구현한다. 5. 에러핸들링을설계하고구현한다. 6. 파이프라인을구현한다. 35

Pipes and Filters 패턴 Pipes and Filters 패턴은시그널처리와관련된어플리케이션에주로사용된다. radar medical process control sonar audio video telemetry 등등 36

Pipes and Filters 패턴 Copy right by Signaling Process 최근에주로사용하는시그널처리는지속적으로들어오는아날로그신호를디지털신호로바꿔주고다시디지털신호를아날로그신호로바꿔주는방식으로개발된다. 11111111 11011011 01110011 00000000 37

Pipes and Filters 패턴 Copy right by Digital Analog An analog quantity is one that has a continuous value over time. A digital quantity is on that has a discrete set of values over time. Value Value Time Time 38

Pipes and Filters 패턴 Copy right by Digital Audio Analog to Digital Converters (ADC) -> analog voltages to digital values. Digital to Analog Converters (DAC) -> digital values to voltages. Amplifier audio signal ADC DAC 39

Pipes and Filters 패턴 Copy right by 1950 년대에 Max Mathews 는 unit generators (UG) 라는네트워크모듈을이용하여신디사이저를개발했다. UG 는신디사이저의핵심으로다음과같은기능을한다. 사운드재생과사운드처리에사용 ( 최근까지사용 ) 처음에는하드웨어로개발되었으나최근에는소프트웨어로개발 이기술은최근에음악기기, 레코더, 음악재생기계 (CDs, MP3 players) 등에사용되고있다. Sampler Digital Equalizer Digital amplifier Audio Input Hardware filter data flow sink device source device Audio Output Hardware 40

Pipes and Filters 패턴 Modern Audio Application: Digital Recording Copy right by filter data flow sink device source device Sampler Compressor Delay Distortion Equalizer Sampler Compressor Flange Equalizer Merge AmpOut Sampler Compressor Echo Reverb Equalizer All in done in software Note: this is an oversimplification and there are many other ways to set up a digital recording system 41

Pipes and Filter 패턴 장점 중간결과파일이불필요함 Filter의교환이나재조합이쉬움 Filter의재사용성이좋음 Parallel 프로세싱에용이함 단점 다음과같은처리시간이성능에악영향 Filter 간의전송시간 Context switching 시간 Synchronization 에러처리가어려움 ( 데이터복구작업등 ) 42

Broker 패턴 정의 외부에분산된컴포넌트를호출하려고할때클라이언트요청값을분석하여서버컴포넌트에전달하고그결과값을전달하는역할을하는패턴 클라이언트와서버사이의브로커라는컴포넌트를두어보다효과적으로서버와클라이언트사이를분리할수있어분산시스템을구축하는데용이함 예제 광역네트워크기반의 CIS(city information system) 시스템 CORBA (Common Object Request Broker Architecture) 43

Broker 패턴 44

Broker 패턴 정황 (Context) 독립적인컴포넌트형태로이질적인환경에서작동하는분산시스템을개발하는경우 문제 (Problem) 독립컴포넌트마다실행환경이다르고이들끼리통신이필요한경우 클라이언트와서버들이추가, 삭제및변경이자주일어날경우 해법 (Solution) Broker 컴포넌트를도입하여클라이언트와서버사이를분리 Broker 컴포넌트가클라이언트와서버의정보를가지고있어서로간의통신을조율 클라이언트와서버 Proxy 를두어특정환경과관련된부분을처리 Bridge 를두어네트워크통신과관련된부분을이관하여처리 45

Broker 패턴 46

Broker 패턴 47

Broker 패턴 설계순서 1. 객체모델을정의하거나기존모델을재사용할지결정 2. 컴포넌트들사이의상호연동을어떤방식으로할지결정 3. 클라이언트와서버간의협력을위한 Broker 컴포넌트의역할정의 4. Proxy 객체를사용해환경과관련된부분캡슐화설계 5. Broker 컴포넌트설계 6. IDL 컴파일러설계 48

Broker 패턴 49

Broker 패턴 Server Code // Create an object request broker ORB orb = ORB.init(args, null); // Create a new address book... AddressBookServant servant = new AddressBookServant(); //... and connect it to our orb orb.connect(servant); // Obtain reference for our nameservice org.omg.corba.object object = orb.resolve_initial_references("nameservice"); // Since we have only an object reference, we must cast it to a NamingContext. We use a helper class for this purpose NamingContext namingcontext = NamingContextHelper.narrow(object); // Add a new naming component for our interface NameComponent list[] = { new NameComponent("address_book", "") }; // Now notify naming service of our new interface namingcontext.rebind(list, servant); 50

Broker 패턴 Client Code // Create an object request broker ORB orb = ORB.init(args, null); // import servant class that is generated by IDL converter import address_book_system.address_bookpackage.*; // Obtain object reference for name service... org.omg.corba.object object = orb.resolve_initial_references("nameservice"); //... and narrow it to a NameContext NamingContext namingcontext = NamingContextHelper.narrow(object); // Create a name component array NameComponent nc_array[] = { new NameComponent("address_book","") }; // Get an address book object reference... org.omg.corba.object objectreference = namingcontext.resolve(nc_array); //... and narrow it to get an address book address_book AddressBook = address_bookhelper.narrow(objectreference); // call the address book interface name = AddressBook.name_from_email(email); 51

Broker 패턴 EJB3.0 Code Server @Stateless(name= HelloBean") @Remote(HelloRemote.class) Client public class HelloWorldBean { public String sayhello() { return "Hello World!!!"; } } InitialContext ic = new InitialContext(); Hello = (HelloRemote) ic.lookup("example/hellobean/remote"); 52

Broker 패턴 장점 컴포넌트간의위치투명성을제공 플랫폼간의 Portability 제공함 서버다른시스템의연동을용이하게함 재사용컴포넌트확보에용이 단점 성능에대한불이익 장애대처율이떨어짐 테스트디버깅의복잡함 ( 서버, 클라이언트연동시에 ) 분산환경을지원하는시스템이많지않음 53

MVC 패턴 정의 하나의데이터값 ( 도메인오브젝트 ) 을여러개의클라이언트화면으로일관적으로보여줄수있는패턴 화면 (View) 과데이터값 (Model) 의연결부분을컨트롤러 (Control) 가관리하여 View 의추가, 변경, 삭제가 Model 에영향을미치지않고 Model 의변화도 View 에영향을미치지않게하는패턴 예제 웹기반서비스시스템 ( 거의대부분 ) IOS application 서비스 54

MVC 패턴 55

MVC 패턴 정황 (Context) 상호작용이많은시스템에유연한 HCI(Human-Computer Interface) 를개발하는경우 문제 (Problem) 사용자인터페이스의변경이많이일어나는경우 같은기능을사용하는사용자화면이다른경우 ( 예. 마우스로값입력 vs. 키보드로입력 ) 사용자인터페이스들끼리서로연관성이복잡할경우 해법 (Solution) Model, View, Controller 이렇게 3 개의영역으로구분 Model : 핵심데이터와기능을캡슐화 View : 사용자의정보를화면에표시 Controller : View 로부터입력정보를받아관련된 View 나 Model 을호출함 56

MVC 패턴 57

MVC 패턴 58

MVC 패턴 59

MVC 패턴 구현순서 1. 서비스의핵심기능과사용자인터페이스부분을분리한다. 2. Publisher-Subscriber (Observer) 패턴을적용하여모델을구현한다. 3. View를설계하고구현한다. 4. Controller를설계하고구현한다. 5. View와 Controller 관계를설계하고구현한다. 60

MVC 패턴 장점 동일한모델로부터여러 View 들을표현할수있음 View들을동기화할수있음 View의추가, 변경, 삭제가자유로움 프레임워크로확장하여구현이가능함 단점 설계가복잡하고개발이어려움 View 와 Controller 는밀접히관련되어있음 61

Publisher-Subscriber 패턴 정의 하나의 Publisher 가다수의 Subscriber 에게상태가변경되었음을단방향전파로통지하는패턴 협력컴포넌트들의상태를동기화하는데유용함 Observer 패턴, Dependents 패턴, Event 패턴으로사용됨 예제 GUI 애플리케이션 사용자의요청에따른화면의변화 ( 줌인, 포커스, 클릭등 ) MVC 패턴을애플리케이션 62

Publisher-Subscriber 패턴 정황 (Context) 한번의호출로다수의협력컴포넌트의상태를변경해야하는경우 문제 (Problem) 특정컴포넌트에서발생하는상태변경정보를하나이상의컴포넌트에서수신해야함 Publisher 와 Subscriber 는서로 tightly coupled 되어서는안된다. 해법 (Solution) 하나의컴포넌트를 Publisher 로두고상태변경을받을컴포넌트들을 subscriber 로둔다. Subscriber 는 Publisher 에서제공하는인터페이스를통해서등록한다. Publisher 의상태가변경되면등록된 Subscriber 에게변경상태를전송한다. 63

Publisher-Subscriber 패턴 구현 이벤트기반으로 Publisher-Subscriber 패턴을구현한다. 이벤트기반으로구현하면시스템변경을쉽게할수있다. 이벤트가명확히전송되었는지알수가없다. (Non-Deterministic) 응답시간을명확히예측할수없다. (Non-Deterministic) 이벤트기반시스템 Explicit Invocation 변경정보를전달한대상을명확히알고변경정보를전달함 Implicit Invocation 변경정보를전달할대상을명확히알지않고정보를전달함 64

Publisher-Subscriber 패턴 Copy right by 65

Publisher-Subscriber 패턴 Copy right by 66

Publisher-Subscriber 패턴 프로그래밍언어 C 언어로구현하기어려움 자바언어를사용할경우 Observer, Observable 을사용하여구현할수있음 67

Publisher-Subscriber 패턴 Copy right by 68

Publisher-Subscriber 패턴 Copy right by 69

Publisher-Subscriber 패턴 Copy right by 70

Publisher-Subscriber 패턴 장점 다수의컴포넌트에게동시에변경공지를할수있음 GUI 인터페이스를쉽게만들수있음 GUI 빌더나프레임워크를쉽게만들수있음 단점 Non-deterministic 한문제 이벤트핸들러와프로세스로직이 Tightly coupled 되어있다. 71

Questions? 72