POSA-Presentation-Abstraction-Control

1. 정의
 * PAC 패턴은 협동적인 대리인들의 계층체계에서 상호작용하는 소프트웨어 시스템을 위한 구조이다.

2. 예제
 * 책에서는 상대적으로 선출하는 정치 선거를위한 간단한 정보 시스템을 언급하고 있음.
 * 이 시스템은 입력된 데이터를 위한 스프레트시트와 현재 순위들을 보여주는 몇몇 종류의 테이블과 차트들을 제공한다. 사용자는 그래픽 인터페이스를 통해서 소프트웨어와 상호작용을 한다. 그러나 다른 버전들은 특정 요구들을 위한 사용자 인터페이스를 적용하고 있다. 예를 들면, 한가지 버전은 정당의 의회 좌석 점유율과 같은 추가적인 데이터 화면들을 지원한다. 

3. PAC를 사용하면 좋은 상황
 * 대리자(agent)들의 도움을 통해 상호작용하는 어플리케이션을 개발할 때.
 
       대리자(agent): 이 패턴에서는 ''agent''는 이벤트 수신자와 전송자를 포함하는 정보처리 컴포넌트를 나타낸다.  자료구조(data structure)는 상태를 유지하며 프로세서는 전달된 이벤트를 다루고 상태를 업데이트한다.또한  Agent는  하나의 객체만큼 작을 수도 있을 뿐만 아니라 완전환 소프트웨어 시스템만큼 복잡하다. 이 패턴에서는 agent와 ''PAC agent''는 같은 의미로 사용할 것이다.

 4. 문제
 * 협력적인 대리자 구조에서는, 각 대리자(agent)는 특정 작업에 특성화되어 있고 모든 대리자들은 함께 시스템의 기능성을 제공한다.
 * 이 구조에서는 또한 수평적이고 수직적 분할구조 두가지 모두를 포함하고 있다. 아래는 그러한 해결에 영향을 끼치는 force들이다.

  * 대리자들은 종종 그들 자신의 상태와 데이터를 유지한다.
      PPS 시스템을 예로 들면, 생산을 계획하는 것과 실제 생산을 제어하는 것은 서로 다른 데이터 모델들에서 작동할수 있다. 한가지 모델은 계획과 시뮬레이션을 조화시키고 다른 모델은 효율적인 생산을 위해 성능을 최적화 시킨다. 그러나 개별적 대리자들은 어플리케이션의 전체 작업을 수행하기 위해 효율적으로 협동해야만 한다. 이것을 위해 대리자들은 데이터, 메시지, 이벤트들을 교환하기위한 메커니즘을 필요로 한다.
  * 상호작용하는 대리자들은 그들 소유의 사용자 인터페이스를 제공한다.
      예를 들면, 스프레트시트에 입력되는 데이터는 키보드입력일수도 있고 포인팅장치를 사용해서 그래픽 객체들의 조작을 통해서 일수도 있다.

  * 시스템은 시간이 지나도 발달한다.
      프리젠테이션 쪽은 특히 변화하기 쉬운 부분이다. 그래픽을 사용하거나 최근에는 멀티미디어쪽도 사용되는 추세이다. 이러한 기능들을 위해 기존의 개별 대리자를 변화시키거나 혹은 새로운 대리자들을 시스템에 추가하는 것은 전체 시스템에 영향을 끼쳐서는 안된다.

 5. 해결책
    * 상호작용하는 어플리케이션은 PAC agents의 계층과 같은 트리구조를 하고 있어야 한다. top-level agent가 하나있고 몇몇  intermediate-level agent들 그리고 더욱 많은 bottom-level agent들이 있어야 한다. 모든 대리자  (agent)들은 어플리케이션의 기능의 특정 모듈을 담당하고 있으며 presentationabstraction, control의 세개의 컴포넌트로 이루어져 있다.

    * 대리자의 presentation 컴포넌트는 PAC 대리자의 시각적 행위를 제공한다. abstraction 컴포넌트는 대리자 밑에 있는 데이터 모델을 유지관리하며 이 데이터를 작동할수 잇는 기능들을 제공한다. control컴포넌트는presentation 컴포넌트와 abstraction 컴포넌트를 서로 연결하며 다른 PAC 대리자들과 통신할 수 있는 기능을  대리자에게 제공한다.

       * Top-level PAC agent : 시스템의 핵심 기능 제공.

       * Bottom-level PAC agent : 스프레드 시트와 차트 같은 시스템 사용자가 수행할 수 있는 스스로 가지고 있는
         어휘적 개념을 의미한다.(?)

       * Intermediate-level PAC agent: low-level agent 사이의 결합이나 관계들을 의미한다.
    



                        [그림1]  정치선거 시스템에서의 PAC 구조

 7. 구조
    7.1. Top-level agent
       * Top-level PAC의 주요 역할은 소프트웨어의 전역 데이터모델을 제공하는 것이다.이것은 Top-level agent의
          abstraction 컴포넌트를 유지하며 abstraction 컴포넌트의 인터페이스를 데이터모델의 조작과 그것에 관련된
          정보를 검색할 수 있는 기능을 제공한다.

       * Top-leve PAC 대리자의 Control컴포넌트는 세가지의 역할이 있다.
       * 하위 레벨의 대리자가 고위 레벨의 전역데이터를 접근하고 조작할는 서비스를 사용할 수 있게 한다.
       * PAC 대리자(agent)의 계층을 동등하게 하고 Top-level agent와 Lower-level agent사이의 연결에 관한 정보
         를 가지고 있다. 따라서  control 컴포넌트는 이 정보를 사용해서 Top-level agent와 lower-level agent사이의
         정확한 협력작업과 데이터교환을 확실하게 처리한다.
 
    7.2 Bottom-Level Agent
       * Bottom-Level Agent는 Network Traffic Manager System에서의 메일박스나 모바일 로봇시스템의 벽같은
         어플리케이션 영역의 특정 의미론적 개념을 나타낸다.
     

       Presentation 컴포넌트: 의미적개념과 일치하는 특정 화면을 제공하고 모든 기능 유저(? 다른 컴포넌트를 말하는거 같음)들이 그것을 적용할 수 접근을 제공한다.
       Abstraction 컴포넌트: 자신의 특정 데이터를 유지관리하는 Top-level agent의abstraction 컴포넌트와 비슷한 역할을 한다.[[br]]
       Control 컴포넌트: Abstraction 컴포넌트와 Presentation 컴포넌트사이의 일치함을 유지한다. 그것에 의해서 이 둘 사이의 직접적인 의존성을 제거한다.


   7.3. Intermediate-Level Agent
      * Intermediate-Level Agent는 컴포지션과 협업, 두가지 다른 역할을 수행한다.
      * 컴포지션의 경우는 예를 들어, 복잡한 그래픽 객체마다 분리된 PAC 대리자에 의해 표현이 될 때, Intermediate
        대리자는 통합된 그래픽적 객체의 형태로 이들 객체를 그룹화 한다.

      * 두번째의 협업의 경우는 intermediate-level agent가 lower level 대리자들 사이에서 같은 데이터의 동등한
        다양한 화면들이 있을때 일치하는지를 유지관리 한다. 
  


8. 동작
  8.1 시나리오 1
   1. 사용자가 새로운 Bar 차트를 생성하라고 view coordinator 대리자의 Presentation 컴포넌트에게 요청한다.
   2. view coordinator 대리자의 control 컴포넌트는 사용자가 원하는 Bar 차트를 구체화한다.
 
   3. view coordinator 대리자는 '생성' 이벤트를 새로운 Bar 차트 대리자의 control 컴포넌트에게 보낸다.
   4. 그러면 Bar 차트 대리자의 control 컴포넌트는 먼저 Top-level PAC 대리자부터 데이터를 검색하기 시작한다.
       view coordinator 대리자는 bottom부터 top-level 대리자들 사이를 중개한다. Bar 차트대리자에게로 돌아온
       데이터는 Abstraction 컴포넌트에 저장되고 control컴포넌트는  차트를 나타낼 presentation 컴포넌트를
       호출한다.
   5. Presentation 컴포넌트는 스크린에 새로운 윈도우를 생성하고 검색된 데이터를 그린다.

 8.2. 구현
  1. 어플리케이션의 모델을 정의하라.
  2. PAC 계층을 조직하기 위한 일반적 전략을 정의하라.
  3. Top-Level agent를 명확히 하라.
  4. Bottom-Level agent를 명확히 하라.
  5. 시스템 서비스를 위한 Bottom-level PAC agent를 명확히 하라.
  6. lower-level PAC  agents를 통합히기 위한 intermediate-level PAC agent를 명확히하라.
  7. lower-level PAC agents를 조화를 이루게하기 위한 intermediate PAC agent를 명확히하라.

 8. 사용자와 컴퓨터사이의 상호작용을 위한 핵심적 기능을 나누어라.
 9. 외부의 인터페이스를 제공해라.
 10. 계층마다 링크를 만들어라.

 9. 사용된 프로젝트들
   * Network Traffic Management

   * Mobile Robot

 10. 결론
   * PAC를 사용함으로써 얻는
   * 이점들
    1. 관련된 것들의 분리.
    2. 교체와 확장성의 지원.

 

by 규영이 | 2006/10/22 19:25 | POSA | 트랙백 | 덧글(0)

트랙백 주소 : http://lakhos.egloos.com/tb/2771689
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶