SlideShare ist ein Scribd-Unternehmen logo
1 von 85
안드로이드로 풀어보는
플러그인 패턴이야기


      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
Patterns for Plug-Ins
     Introduce




       조금 더
       유연한
Patterns for Plug-Ins
     Introduce
Patterns for Plug-Ins
                 Introduce


Careful design      가변 & 불변
                              변화종류 예상
                      구분




 Configurable      설정에 따른     선택적 실행




Using software
 component         독립성,교환성     기능 분리
Android
App Management & Organization
Android
App Management & Organization
Android
App Management & Organization
Android
App Management & Organization
Android
 App Management & Organization
 Application Framework
Android
 App Management & Organization
 Activity Life cycle
Android
App Management & Organization
 지정된 폴더로 Apk 의 설치
Android
 App Management & Organization
 Apk 의 구성, 설치
Chapter 1 :
General Plug-In Techniques
Pattern 1.
 Plug-In
Pattern 1. Plug-In
     context




               확장성
Pattern 1. Plug-In
    Problem



                     기능


                          기능
                기능


                          기능
                 기능
Pattern 1. Plug-In
     Forces
Pattern 1. Plug-In
              Solution
                                    기능

                               기능        기능
기능   기능
                Platform       기능        기능
기능   기능
                                     기능
Pattern 1. Plug-In
              Solution

Plug-In
                                Plug-In
                인터페이스

Plug-In          Platform       Plug-In


Plug-In
          (인터페이스는 플러그인의 연결고리)   Plug-In
Pattern 1. Plug-In
    Solution
Pattern 1. Plug-In
            Consequences



만능 소프트웨어
Pattern 1. Plug-In
Relation Pattern
Pattern 2, 3.
     Plug-In Contract ,
Framework-Providing platform
Pattern 1. Plug-In
               Context
Plug-In
                               Plug-In
               인터페이스

Plug-In         Platform       Plug-In


Plug-In
                               Plug-In
Pattern 1. Plug-In
    Problem




     Interface
Pattern 1. Plug-In
                 Solution
     “ Plug-In Contract ”
이런 약속으로 의존관계를 구성하겠다.

                      Plug-In을
  Android          활성화,중지,교환, 소통      Android
Framework            가능하게 제시          Plug-In
 Interface                           Definition

                                      Android
Android                                Plug-In
Platform                            (ex. Activity)
                   Plug-In의
                   기능(function)들을
                   알고 활용한다.
Pattern 1. Plug-In
                   Solution
                “ Plug-In Contract ”

Framework Interface




                                       Plug-In Definition
                                       ( Abstract classes
                                   provided by Android SDK )
Pattern 1. Plug-In
 Consequences




              provide   Platform
구현
Pattern 1. Plug-In
    Consequences



                        Service


                        Platform

though
                         Class
Pattern 1. Plug-In
 Consequences
Pattern 1. Plug-In
 Consequences
Pattern 1. Plug-In
       Consequences




안드로이드 App
Pattern 1. Plug-In
    Summary
Pattern 1. Plug-In
Relation Pattern
   provides context for
Pattern 4.
Plug-In Lifecycle
Pattern 4. Plug-In Lifecycle
          context
                      Plug-in
 Plug-In Definition
                                Plug-in


Platform              Plug-in
                                Plug-in


                      Plug-in
  Framework
   Interface
                                Plug-in
Pattern 4. Plug-In Lifecycle
          problem
                     Plug-in
           무거워!
           어떻게?
                                Plug-in


Platform             Plug-in
                                Plug-in


                     Plug-in


                                Plug-in
Pattern 4. Plug-In Lifecycle
         solution



             2.1. Load Unload
                    4.
                Activate
            3. Deactivate
 Platform                       Plug-in
Pattern 4. Plug-In Lifecycle
         solution
      Plug-In Contract
Pattern 4. Plug-In Lifecycle
            solution
플랫폼이, 라이프싸이클에 따라 실행
Pattern 4. Plug-In Lifecycle
      consequence




    플러그인 제어 가능
     상태 점검 가능
Pattern 4. Plug-In Lifecycle
      related pattern
         provides context for
Pattern 5.
Plug-In Registration
Pattern 5. Plug-In Registration
            context


                              Plug-in

 Platform

                                        Plug-in
                    Plug-in
Pattern 5. Plug-In Registration
           problem

            어디?
                              Plug-in

 Platform

                                        Plug-in
                    Plug-in
Pattern 5. Plug-In Registration
           solution
                     Directory




 Platform
Pattern 5. Plug-In Registration
           solution
                         Plug-in
    Directory

                    Plug-In Registration
                          Plug-in




                         Plug-in
Pattern 5. Plug-In Registration
             solution
          Plug-In Registration
                                 Plug-in

경로,
 상태
리스트

      Platform                    Plug-in




                                 Plug-in
Pattern 5. Plug-In Registration
           solution


             AndroidManifest.xml
Pattern 5. Plug-In Registration
        consequence




         사용자가 편해짐
Pattern 5. Plug-In Registration
       related pattern
          provides context for
Pattern 6.
One Plug-In per Task
Pattern 6. One Plug-In per Task
            context

  Plug-in
                           Plug-in
                                         협력
            Plug-in
                                              Function
                               Plug-in

  Plug-in
                 Plug-in
Pattern 6. One Plug-In per Task
            problem
     협력? 원활한 통합?
      Plug-in                  Plug-in


                Plug-in

                                   Plug-in

      Plug-in
                     Plug-in
Pattern 6. One Plug-In per Task
            solution




     Activity
     Plug-In          Common
                     Intent Filter
      Class
    Definition        Identifier
Pattern 6. One Plug-In per Task
            solution
        Android Platform
Pattern 6. One Plug-In per Task
            solution
               Activity




   Content                Servic
                Intent
   Provider                 e




              Broadcast
              Receiver
Pattern 6. One Plug-In per Task
        consequences


             Plug-In
            Definition   Identifier



        Common             Common
       Identifier1        Identifier2

       Plug-In Definition이
  플랫폼은 기능적으로 캡슐화 한다.
        식별자로 인식해야
  모든 플러그인이 원활하게 통신 가능
Pattern 6. One Plug-In per Task
                                    related pattern
                                      provides context for
consists of corresponding
Pattern 7.
Plug-In Package
Pattern 7. Plug-In Package
          context

                    Plug-in   Plug-in




User                Plug-in   Plug-in



                    Plug-in   Plug-in
Pattern 7. Plug-In Package
               problem

                                    리소스
           Plug-in   Plug-in
도움말


           Plug-in   Plug-in
                               미국        러시아
버젼
                                    한국

           Plug-in   Plug-in
                               영국         중국
Pattern 7. Plug-In Package
               solution

                                    리소스
           Plug-in   Plug-in
도움말


           Plug-in   Plug-in
                               미국        러시아
버젼
                                    한국

           Plug-in   Plug-in
                               영국         중국
Pattern 7. Plug-In Package
         solution
Pattern 7. Plug-In Package
                                 related pattern
                                    provides context for
consists of corresponding




                                                           is shopped for usage with
                                           contains
Patterns for Plug-Ins
     Summary
Patterns for Plug-Ins Summary
                                       related pattern
                                     provides context for
consists of corresponding




                                                            is shopped for usage with
                                            contains
Patterns for Plug-Ins Summary
 by Android App Management
Patterns for Plug-Ins Summary
 by Android App Management
Patterns for Plug-Ins Summary
 by Android App Management
Patterns for Plug-Ins Summary
      by Android App Management
 Application Framework
Patterns for Plug-Ins Summary
       by Android App Management
 Activity Life cycle
Patterns for Plug-Ins Summary
    by Android App Management
 지정된 폴더로 Apk 의 설치
Patterns for Plug-Ins Summary
    by Android App Management
 Apk 의 구성
Chapter 2 :
Organisation And Process
Organisation And Process
Organisation And Process
Conclusion
Plug-In
                       Plug-In
Framework-Providing                   Plug-In
     Platform
                       New
                      Plug-In     New
                                 Plug-In
안드로이드로 풀어보는 플러그인 패턴이야기
안드로이드로 풀어보는 플러그인 패턴이야기
안드로이드로 풀어보는 플러그인 패턴이야기

Weitere ähnliche Inhalte

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

C++ API 디자인 - 확장성
C++ API 디자인 - 확장성C++ API 디자인 - 확장성
C++ API 디자인 - 확장성
HyeonSeok Choi
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2
Alessandro Molina
 

Ähnlich wie 안드로이드로 풀어보는 플러그인 패턴이야기 (20)

Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP  Trail - Tests and PHP Continuous Integration Enviro...[ENGLISH] TDC 2015 - PHP  Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
 
Best Selenium Python Frameworks for Test automation.pdf
Best Selenium Python Frameworks for Test automation.pdfBest Selenium Python Frameworks for Test automation.pdf
Best Selenium Python Frameworks for Test automation.pdf
 
Sap tutorial[1](1)
Sap tutorial[1](1)Sap tutorial[1](1)
Sap tutorial[1](1)
 
Sap tutorial
Sap tutorialSap tutorial
Sap tutorial
 
Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?
 
Dagger in multi module sdk
Dagger in multi module sdkDagger in multi module sdk
Dagger in multi module sdk
 
C++ API 디자인 - 확장성
C++ API 디자인 - 확장성C++ API 디자인 - 확장성
C++ API 디자인 - 확장성
 
Mobile Test Automation with Appium Flutter Driver_ A Comprehensive Guide.pdf
Mobile Test Automation with Appium Flutter Driver_ A Comprehensive Guide.pdfMobile Test Automation with Appium Flutter Driver_ A Comprehensive Guide.pdf
Mobile Test Automation with Appium Flutter Driver_ A Comprehensive Guide.pdf
 
JavaOne 2009 BOF-5189 Griffon In Depth
JavaOne 2009 BOF-5189 Griffon In DepthJavaOne 2009 BOF-5189 Griffon In Depth
JavaOne 2009 BOF-5189 Griffon In Depth
 
Spring aop
Spring aopSpring aop
Spring aop
 
WoMakersCode 2016 - Shit Happens
WoMakersCode 2016 -  Shit HappensWoMakersCode 2016 -  Shit Happens
WoMakersCode 2016 - Shit Happens
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Jython for Embedded Software Validation
Jython for Embedded Software ValidationJython for Embedded Software Validation
Jython for Embedded Software Validation
 
Plug in framework made easy
Plug in framework made easyPlug in framework made easy
Plug in framework made easy
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2Rapid Prototyping with TurboGears2
Rapid Prototyping with TurboGears2
 
Troubleshooting for Intent-based Networking
Troubleshooting for Intent-based NetworkingTroubleshooting for Intent-based Networking
Troubleshooting for Intent-based Networking
 
Jetspeed-2 Overview
Jetspeed-2 OverviewJetspeed-2 Overview
Jetspeed-2 Overview
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
 

Mehr von eva

Fault tolerance 1장
Fault tolerance 1장Fault tolerance 1장
Fault tolerance 1장
eva
 
[FTP] 4-10 fault observer
[FTP] 4-10 fault observer[FTP] 4-10 fault observer
[FTP] 4-10 fault observer
eva
 
Software update
Software updateSoftware update
Software update
eva
 
02. Fault Tolerance Pattern 위한 mindset
02. Fault Tolerance Pattern 위한 mindset02. Fault Tolerance Pattern 위한 mindset
02. Fault Tolerance Pattern 위한 mindset
eva
 
꿈을 찾아서1.4
꿈을 찾아서1.4꿈을 찾아서1.4
꿈을 찾아서1.4
eva
 
git, git flow
git, git flowgit, git flow
git, git flow
eva
 
서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어
eva
 

Mehr von eva (15)

Bash-as-a-Interpreter
Bash-as-a-InterpreterBash-as-a-Interpreter
Bash-as-a-Interpreter
 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems
 
Heartbeat pattern
Heartbeat patternHeartbeat pattern
Heartbeat pattern
 
Unit of mitigation Pattern
Unit of mitigation PatternUnit of mitigation Pattern
Unit of mitigation Pattern
 
[EVA] 5. Detection Patterns - Patterns for Fault Tolerant Software
[EVA] 5. Detection Patterns - Patterns for Fault Tolerant Software[EVA] 5. Detection Patterns - Patterns for Fault Tolerant Software
[EVA] 5. Detection Patterns - Patterns for Fault Tolerant Software
 
[EVA] 4.9 Escalation - Patterns for Fault Tolerant Software
[EVA] 4.9 Escalation - Patterns for Fault Tolerant Software[EVA] 4.9 Escalation - Patterns for Fault Tolerant Software
[EVA] 4.9 Escalation - Patterns for Fault Tolerant Software
 
Fault tolerance 1장
Fault tolerance 1장Fault tolerance 1장
Fault tolerance 1장
 
[FTP] 4-10 fault observer
[FTP] 4-10 fault observer[FTP] 4-10 fault observer
[FTP] 4-10 fault observer
 
Fault tolerant 4_5
Fault tolerant 4_5Fault tolerant 4_5
Fault tolerant 4_5
 
[FTP] 4-8 Someone in charge
[FTP] 4-8 Someone in charge[FTP] 4-8 Someone in charge
[FTP] 4-8 Someone in charge
 
Software update
Software updateSoftware update
Software update
 
02. Fault Tolerance Pattern 위한 mindset
02. Fault Tolerance Pattern 위한 mindset02. Fault Tolerance Pattern 위한 mindset
02. Fault Tolerance Pattern 위한 mindset
 
꿈을 찾아서1.4
꿈을 찾아서1.4꿈을 찾아서1.4
꿈을 찾아서1.4
 
git, git flow
git, git flowgit, git flow
git, git flow
 
서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어
 

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

Hinweis der Redaktion

  1. 안드로이드 앱을 구성하기위해서는 이러
  2. 안드로이드 앱을 구성하기위해서는 이러
  3. 안드로이드에서 대표적인 앱관리 영역을 보자면 application framework와 Android runtime 이 있을것입니다.
  4. 프로그랭이 배포된 이후에 기능이 개발되어 추가될수있다.2. 프로그램은 기능이 추가될때 수정되지않고 플러그인에 의해 영향 받지 않는다.그런데 플러그인을 위한 인터페이스가 미리정의 되어야하기때문에 확장성의 종류는 예측되어야한다.
  5. 3. 기능을 완벽하게 갖춘 프로그램에 비해서 기능을 밖으로 뺀 프로그램은 시장진출이 빠르다.
  6. 플러그인은 플러그인 Definition 컴포넌트나 인터페이스를 통하여 접근하고 플러그인은 프레임워크 인터페이스로 정의 된 서비스나 인스턴스를 통해서 프로그램에 접근
  7. 플러그인은 플러그인 Definition 컴포넌트나 인터페이스를 통하여 접근하고 플러그인은 프레임워크 인터페이스로 정의 된 서비스나 인스턴스를 통해서 프로그램에 접근
  8. 프로그램과 유저는 인터페이스를 통해서 서로다른 플러그인을 동등하게 다룬다.
  9. 플러그인도 프로그램에 접근할수있다.
  10. 결과적으로 프레임 워크를 두자, 플러그인이 지켜야하는 정의를 두자라는 규약에 대한 두번째 패턴 Plug-In Contract이야기는 마무리가 되었고그 규약을 내세우는 프레임워크 제공하는 플랫폼이라는 패턴을 보는데 바로 안드로이드를 예를 들어 이해해 보겠습니다.
  11. 같은 프레임워크를 제공하는 다른 어플리케이션에 의해서 플러그인은 재사용될수있다.
  12. 플러그인이 프로그램에 통합되기 쉬어진다.
  13. 안드로이드 앱을 구성하기위해서는 이러
  14. 안드로이드 앱을 구성하기위해서는 이러
  15. 안드로이드에서 대표적인 앱관리 영역을 보자면 application framework와 Android runtime 이 있을것입니다.
  16. 플랫폼 개발자는 자신이 만든 테스트 코드나 SDK의 형식으로 플러그인 개발자가 만들기 쉽도록 Tem코드를 제공하고 개발자는 사용자의 요구에 의해 다른 SUB 프로젝트 즉 앱을 생산해 냅니다.
  17. 그리고 그 앱들을안드로이드 마켓에 등록되어 유져들에게 플러그인즉 앱을 팔 수 있도록 만들어 줍니다.