Upload
eva
View
526
Download
3
Embed Size (px)
DESCRIPTION
Plug-In Pattern
Citation preview
Software Maestro 3rd
Rest 3 Team
정승수 , 김동우 , 송태웅
안드로이드로 풀어보는플러그인 패턴이야기
Contents
Patterns for Plug-Ins Introduction
Android App Management &
Organization
Chapter 1 : General Plug-In
Techniques
Contents
Patterns for Plug-Ins Summary
Chapter 2 : Organisation And
Process
Conclusion
Patterns for Plug-Ins Introduce
“ WHAT IS PLUG-IN ? ”
“ WHAT IS PATTERNS FOR PLUG-INS ? ”
Patterns for Plug-Ins Introduce
조금 더 유연한
“ 소프트웨어 ”
“ 하드웨어 ”
Patterns for Plug-Ins Introduce
“ ANDROID PLATFORM ”
“ ANDROID APP ”
Patterns for Plug-Ins Introduce
어떻게 소프트웨어의 유연함을 성취 했을까 ?
Careful design
Configurable
Using software component
선택적 실행
변화종류 예상
설정에 따른
가변 & 불변 구분
기능 분리독립성 , 교환성
Android App Management & Organization
Android App Management & Organization
“ ANDROID 제공되는 개발 환경 ”
Android App Management & Organization
Android App Management & Organization
Android App Management & Organization
Application Framework
Android App Management & Organization
Activity Life cycle
지정된 폴더로 Apk 의 설치
Android App Management & Organization
Android App Management & Organization
Apk 의 구성 , 설치
Chapter 1 : General Plug-In Techniques
Pattern 1. Plug-In
Pattern 1. Plug-Incontext
이식성
확장성
소프트웨어 제품 배포 이후에 ..
Pattern 1. Plug-InProblem
어떻게 소프트웨어 제품 배포 이후에 기능을 수정 및 추가 할 수 있을까 ?
기능
기능기능
기능기능
Pattern 1. Plug-InForces
미래에 필요할 기능 예측 불가 !! 배포는 많은 비용
Pattern 1. Plug-InSolution
Platform
기능
기능기능
기능기능
기능기능
기능
기능
기능
기능을 밖으로 빼라 !
Pattern 1. Plug-InSolution
Platform
그리고 분리된 COMPONENT(PLUG-IN) 에 위치시켜라 !
Plug-In
Plug-In
Plug-In
Plug-In
Plug-In
Plug-In 인터페이스
( 인터페이스는 플러그인의 연결고리 )
배포된 이후에 기능이 개발되어 추가 가능 !!
기능 추가시 플랫폼은 영향 받지 않는다 .
Pattern 1. Plug-InSolution
완제품보다 기능을 밖으로 뺀 소프트웨어가 시장 진출이 빠르다 .
만능 소프트웨어
Pattern 1. Plug-InConsequences
Plug-In
registers
itself
conforms to
Plug-In Lifecycle
Plug-In Contract Plug-In Registration
Plug-In Package
Framework-ProvidingPlatform
One Plug-In per Task
Pattern 1. Plug-InRelation Pattern
Pattern 2, 3. Plug-In Contract ,
Framework-Providing platform
Platform
Plug-In
Plug-In
Plug-In
Plug-In
Plug-In
Plug-In 인터페이스
PLUG-IN 프로젝트 구조가 구축 !!
인터페이스 ? 연결고리 ?
Pattern 1. Plug-InContext
어떻게 플러그인 INTERFACE 를 정의할까 ?
“ Android Platform ”
“ 구현된 Activity ”Interface
Pattern 1. Plug-InProblem
“ 구현된 Service ” . . .
“ Plug-In Contract ” 이런 약속으로 의존관계를 구성하겠다 .
AndroidPlatform
AndroidFramework
Interface
AndroidPlug-In
(ex. Activity)
AndroidPlug-In
Definition
Plug-In 의기능 (function) 들을알고 활용한다 .
Plug-In 을 활성화 , 중지 ,교환 , 소통
가능하게 제시
Pattern 1. Plug-InSolution
“ Plug-In Contract ”
Framework Interface
Plug-In Definition( Abstract classes
provided by Android SDK )“ Android Platform ”
“ 특정 Activity , Service 등”
Pattern 1. Plug-InSolution
Platform
Plug-InPlug-In Definition
“ Interface ”
provide구현
Pattern 1. Plug-InConsequences
Plug-InFramework Interface
“ Interface ”
though
Platform
Service
Class access
accesscontroll
though
Pattern 1. Plug-InConsequences
Pattern 3.Framework – Providing Platform 의 예
Pattern 1. Plug-InConsequences
같은 프레임워크를 제공하는 Platform 에 의해서
Plug-In ( 특정 Activity, Service) 은 재 사용될 수 있다 .
Pattern 1. Plug-InConsequences
Plug-In ( 특정 Activity, Service) 이 플랫폼에 통합되기 쉬어진다 .
안드로이드 App
Pattern 1. Plug-InConsequences
Plug-In Contract
Framework-Providing Platform 에 의해서Plug-In 이 이용되고 관리 된다 .
Ex) 안드로이드 Platform
Plug-In Contract 는 Plug-In 와 Framework-Providing Platform 의 관계를 정의
Plug-In 이 따라야할 추상클래스 (Definition) +Plug-In 을 관리할 인터페이스 (Framework) 를 규정
Framework-ProvidingPlatform
Pattern 1. Plug-InSummary
Plug-In
defines
provides context for
conforms to
Plug-In Contract Plug-In Registration
Plug-In Package
Framework-ProvidingPlatform
One Plug-In per Task
Plug-In Lifecycle
Pattern 1. Plug-InRelation Pattern
Pattern 4. Plug-In Lifecycle
Plug-in
Platform
Plug-in
Plug-in
Plug-in
Plug-in
Plug-in
Plug-In Defini-tion
Framework Interface
Pattern 4. Plug-In Lifecyclecontext
Platform
Plug-in
Plug-in
Plug-in
Plug-in
Plug-in
Plug-in
무거워 !어떻게 ?
Pattern 4. Plug-In Lifecycleproblem
Platform Plug-in1. Load2. Activate3. Deacti-
vate4. Unload
Pattern 4. Plug-In Lifecyclesolution
Plug-In Contract
Pattern 4. Plug-In Lifecyclesolution
플랫폼이 ,라이프싸이클에 따라 실행
Pattern 4. Plug-In Lifecyclesolution
플러그인 제어 가능상태 점검 가능
Pattern 4. Plug-In Lifecycleconsequence
Plug-In
conta
ins
defines
provides context for
conforms to
Plug-In Lifecycle
Plug-In Contract Plug-In Registration
Plug-In Package
Framework-Provid-ing
Platform
One Plug-In per Task
Pattern 4. Plug-In Lifecyclerelated pattern
Pattern 5. Plug-In Registration
Plug-in
Plug-inPlug-in
Platform
Pattern 5. Plug-In Registrationcontext
어디 ?
Platform
Plug-in
Plug-inPlug-in
Pattern 5. Plug-In Registrationproblem
Platform
Directory
Pattern 5. Plug-In Registrationsolution
DirectoryPlug-in
Plug-in
Plug-in
Plug-In Registra-tion
Pattern 5. Plug-In Registrationsolution
Plug-in
Plug-in
Plug-in
Platform
경로 ,상태
리스트
Plug-In Registra-tion
Pattern 5. Plug-In Registrationsolution
AndroidMani-fest.xml
Pattern 5. Plug-In Registrationsolution
사용자가 편해짐
Pattern 5. Plug-In Registrationconsequence
Plug-In
conta
insis part of
registers
itself
defines
receives
provides context for
conforms to
Plug-In Lifecycle
Plug-In Contract Plug-In Registration
Plug-In Package
Framework-Provid-ing
Platform
One Plug-In per Task
Pattern 5. Plug-In Registrationrelated pattern
Pattern 6. One Plug-In per Task
Pattern 6. One Plug-In per Taskcontext
Plug-inPlug-in
Plug-in
Plug-inPlug-in
Plug-inFunction
협력
Pattern 6. One Plug-In per Taskproblem
Plug-in Plug-in
Plug-in
Plug-inPlug-in
Plug-in
협력 ? 원활한 통합 ?
Pattern 6. One Plug-In per Tasksolution
Domain
Plug-InDefinition
CommonIdentifier
SingleResponsiblityPrinciple
단일 책임 원칙
ActivityClass
Intent Filter
Activity
Pattern 6. One Plug-In per Tasksolution
Android Platform
Domain1 Domain2
인텐트필터정의명
인텐트필터정의명
데이터 교환 및 처리 , 컨트롤
Intent
Activ-ity
Intent
Broad-cast Re-ceiver
Con-tent
Provider
Ser-vice
Android Application
Pattern 6. One Plug-In per Tasksolution
모든 플러그인이 원활하게 통신 가능
SpecificData&Cla
ss
Plug-In Definition 이기능적으로 캡슐화
Plug-In
Plug-InDefinition Identifier
CommonIdenti-fier1
CommonIdenti-fier2
Platform
플랫폼은 식별자로 인식해야 한다 .
Pattern 6. One Plug-In per Taskconsequences
Plug-In
consi
sts
of
corr
esp
ond-
ing
conta
insis part of
registers
itself
defines
receives
provides context for
conforms to
Plug-In Lifecycle
Plug-In Contract Plug-In Registration
Framework-Provid-ing
Platform
One Plug-In per Task
Plug-In Package
Pattern 6. One Plug-In per Taskrelated pattern
Pattern 7. Plug-In Package
Plug-in Plug-in
Plug-in
Plug-inPlug-in
Plug-inUser
Pattern 7. Plug-In Packagecontext
Plug-in Plug-in
Plug-in
Plug-inPlug-in
Plug-in
리소스
도움말
버젼미국
중국
러시아
영국
한국
Pattern 7. Plug-In Packageproblem
Pattern 7. Plug-In Packagesolution
Plug-in Plug-in
Plug-in
Plug-inPlug-in
Plug-in
리소스
미국
중국
러시아
영국
한국
Plug-In Package
도움말
버젼
CustomPlug-In Interface
패키지를 위한 인터페이스
Pattern 7. Plug-In Packagesolution
ShippableCompo-
nent
Pattern 7. Plug-In Packagerelated pattern
Plug-In
consi
sts
of
corr
esp
ondin
g
is s
hopped f
or
usa
ge
wit
h
conta
insis part of
containsregisters
itself
defines
receives
provides context for
conforms to
Plug-In Lifecycle
Plug-In Contract Plug-In Registration
Plug-In Package
Framework-ProvidingPlatform
One Plug-In per Task
Patterns for Plug-Ins
Summary
Patterns for Plug-Ins Summaryrelated pattern
conta
ins
Plug-In Lifecycle
Plug-In conforms to
Plug-In Contract
is part of
registers
itself
receives
Plug-In Registration
defines
provides context for
Framework-ProvidingPlatform
is s
hopped f
or
usa
ge
wit
h
Plug-In Package
contains
consi
sts
of
corr
esp
ondin
g
One Plug-In Per Task
Patterns for Plug-Ins Summaryby Android App Management
“ ANDROID 제공되는 개발 환경 ”
Patterns for Plug-Ins Summaryby Android App Management
Plug-In Contract
Plug-In
Patterns for Plug-Ins Summaryby Android App Management
Framework-ProvidingPlatform
Application Framework
Patterns for Plug-Ins Summaryby Android App Management
Framework-ProvidingPlatform
Activity Life cycle
Patterns for Plug-Ins Summaryby Android App Management
Plug-In Lifecycle
지정된 폴더로 Apk 의 설치
Patterns for Plug-Ins Summaryby Android App Management
Plug-In Registration
Apk 의 구성
Patterns for Plug-Ins Summaryby Android App Management
Plug-In Package One Plug-In per
Task
Chapter 2 : Organisation And Process
“ Template Code ”
“ 개발자” “ Subproject ”
“ Customizing ”
Organisation And Process
“ User ”
“ App ”
“ 안드로이드 마켓 ”
“ Sell Plug-In ”
Organisation And Process
Conclusion
Framework-ProvidingPlatform
What have we gained?“ A technique “
소프트웨어로 부터 custom part 를 분리
Plug-In
Plug-In
Plug-In
NewPlug-In New
Plug-In
“ 새로운 기능에 대한 확장성 , 이식성”
Plug-In Pattern
QnA
Thank you