안드로이드로 풀어보는 플러그인 패턴이야기

Post on 25-May-2015

526 views 3 download

description

Plug-In Pattern

Transcript of 안드로이드로 풀어보는 플러그인 패턴이야기

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