기술과 감성, 그리고.  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
MVC패턴과 그 가계(家系)

패턴들을 자세히 살펴보면, 패턴 내의 컴포넌트들과 그것들의 관계가 항상 '원자적(atomic)'이지만은 않다는 것을 알수 있다. 어떤 문제를 해결하기 위해서는 패턴 내의 컴포넌트가 서로 밀접하게 상호작용해야 하며, 문제의 성격이나 그 문제가 발생한 상황에 따라 컴포넌트의 결합이 불가피할 수도 있기 때문이다.
이것은 패턴간의 관계에서도 마찬가지다. 패턴을 통해 어떤 문제를 해결하기 위한 과정에서 또다른 문제가 야기되기도 하고, 그 문제를 또 다른 패턴으로 해결할 수도 있기 때문이다.
이런 점들을 통해, 특정 패턴 내에 있는 컴포넌트들이나 그것들의 관계는 더 작은 패턴에 의해 서술될 수 있으며, 그것들을 포함하고 있는 더 큰 패턴에 통합될수도 있다는 것을 알수 있다. 실제로도 이런 패턴들은 변형되고 일반화되어 새로운 형태의 패턴으로 발전하기도 한다. [POSA1]

여기서는 가장 널리 알려진 패턴중 하나인 MVC(Model-View-Control)패턴과 그로부터 파생된 패턴들의 관계에 대해 다뤄보도록 하겠다.
― 이 글의 목적은 MVC 패턴과 그로부터 파생된 패턴들의 관계를 설명하는데 있다. 여기서 언급되는 각 패턴의 세부 내용은 다음기회에 다루도록 하겠다. ―


MVC(Model-View-Control) 패턴

MVC 패턴은 애플리케이션을 '프로세싱(processing)', '출력(ouput)', '입력(input)'의 세 개 영역으로 분리한다. MVC 패턴에서는 각 영역을 Model, View, Controller라는 컴포넌트로 표현하는데, 각 컴포넌트가 담당하는 일을 정리하면 다음과 같다.

- Model : 데이터와 그 처리 로직(logic)을 가지고 있다.
- View : 실제 UI요소를 그려준다.
- Controller : 사용자의 입력 정보를 이벤트(event) 형태로 수신한다.

사용자 삽입 이미지

여기서 Model은 특정 출력 표현방식이나 입력 동작에 영향을 받지 않고 독립적이며, View는 Model로부터 데이터를 얻는다. View는 각각 하나씩의 Controller와 연결되는데, Controller는 Model과 View에 수신한 이벤트를 처리하는 서비스를 요청한다.[POSA1][GoF]


MVC 패턴의 변형

이 글에서는 아래 그림과 같이 MVC 패턴의 변형을 시스템 구성 관점과 UI 구조 관점에서 다룰 것이다.

사용자 삽입 이미지

이어 소개할 PAC 패턴은 MVC 패턴에 기반을 두고, 시스템 구성 관점으로 발전시킨 패턴이며, Document-View, MVP, MVVM 패턴은 모두 UI 구조 관점에서 MVC 패턴을 발전시킨 패턴이다.


PAC(Presentation-Abstraction-Control) 패턴
PAC 패턴은 MVC 패턴을 시스템 구조적 관점으로 변형한 패턴이다. PAC 패턴에서는 계층구조(hierarchy)를 이룬 에이전트(agent)들이 서로 협력·상호작용하는 소프트웨어 시스템의 구조를 형성한다.

PAC 패턴의 특징과 MVC 패턴과의 차이점을 그림으로 표현하면 다음과 같다.

사용자 삽입 이미지

PAC 패턴을 통해 구성하는 것은 특정 수준의 기능을 담당하는 에이전트이다. 각 에이전트를 구성하는 요소는 다음과 같은 세가지 컴포넌트이다.

- Presentation : 사용자에게 노출되는 UI요소를 그려준다.
- Abstraction : 해당 에이전트에서 처리할 데이터와 그 처리 로직를 가지고 있다.
- Control : 사용자 UI와 데이터를 연결하고, 다른 에이전트와의 상호작용을 수행한다.

각 에이전트는 Control 컴포넌트를 통해 다양한 수준의 다른 에이전트와 상호작용하게 된다. 이런 구성은 시스템-시스템간의 상호작용과 사람-시스템간의 상호작용을 분리시킬 수 있도록 한다.[POSA1]


Document-View 패턴

Document-View 패턴에서는 아래 그림과 같이 MVC 패턴의 View와 Controller의 분리를 완화한다.

사용자 삽입 이미지

대부분의 GUI 개발 환경에서 창 디스플레이(display)와 이벤트 핸들링(event handling)은 밀접하게 얽혀있다. 이런 점 때문에 Document-View 패턴에서는 View 컴포넌트에 MVC패턴의 View와 Controller의 역할을 조합해 놓았다. ― 단, 이런 경우에는 Controller의 교환 가능성(exchangeability)을 희생해야 한다. ―
Document-View 패턴을 구성하는 컴포넌트와 역할을 정리하면 다음과 같다.

- Document : 데이터와 그 처리 로직을 가지고 있다. MVC 패턴의 Model과 동일한 역할을 수행한다.
- View : 사용자의 입력정보를 수신하고, UI요소를 그린다. MVC 패턴에서 언급되는 View와 Controller의 역할을 동시에 수행한다.

MVC패턴에서와 마찬가지로, Document-View 패턴에서도 Document와 View가 느슨하게 결합(loosly coupled)된다. [POSA1]


MVP(Model-View-Presentation)

MVP 패턴은 Document-View 패턴의 View 영역을 개선한 패턴으로, 크게 Model-View-Presenter 세 개의 컴포넌트로 구성된다. MVP 패턴에서는 아래 그림과 같이 Document-View 패턴에서의 View를 View와 Presenter로 분리한다.

사용자 삽입 이미지

MVP 패턴을 구성하는 각 컴포넌트가 담당하는 일은 다음과 같다.

- Model : 데이터와 그 처리 로직을 가지고 있다.
- View : 실제 UI 요소를 그려준다.
- Presenter : View와 Model간의 상호작용을 담당한다.

MVP 패턴의 핵심 목표는 View와 Model간의 결합도를 낮추는 데 있다. 여기서는 Presenter가 Model의 데이터를 View에 출력할 수 있도록 할 뿐만 아니라, 이벤트를 View에서 받아 Model의 데이터를 갱신하기도 한다. 실제 구현에서는 Presenter는 View와의 결합도를 감소시키기 위해서, View를 직접 참조하는 대신 View의 Interface를 참조한다. 이를 통해 Presenter는 View의 실제 UI 요소가 어떻게 구현되는지에 관계없이 데이터를 올바르게 표현하도록 할 수 있다. [MSDN]


MVVM(Model-View-ViewModel)

MVVM 패턴은 아래 그림과 같이 사용자와의 상호통신이 활발하고 동적인 사용자 인터페이스를 가지는 클라이언트 응용프로그램에게 적합하도록 MVP패턴을 개선한 패턴이다.

사용자 삽입 이미지

MVVM 패턴을 구성하는 각 컴포넌트가 담당하는 일을 정리해보면 다음과 같다.

- Model : 데이터와 그 처리 로직을 가지고 있다.
- View : 사용자의 입력정보를 수신하고, UI요소를 그린다. MVP 패턴에서 언급되는 View와 Presenter의 역할을 모두 포함한다.
- ViewModel : View에서 보여줘야 할 데이터와 수정에 필요한 로직을 가지고 있다.

MVVM 패턴이 가장 활발하게 사용되는 분야가 WPF(Windows Presentation Framework) 개발 분야인데, WPF의 예를 구조화하면 다음 그림과 같다.

사용자 삽입 이미지

WPF에서 UI를 만들면 코드 비하인드(Code-Behind)와 XAML이 쌍으로 생성된다. 일반적으로 XAML에서는 각 디자인 요소에 이름을 주고, 그 이름에 따라 코드 비하인드에서 각종 처리 코드를 작성해야 한다. 이 경우, 추후에 디자인 요구사항이 변경되면 변경된 XAML파일에 맞게 개발 코드를 일일히 수정해야 하는 문제가 있다.
MVVM 패턴에서는 View를 XAML과 코드 비하인드의 쌍으로 본다. 그리고 Model은 시스템에서 처리해야 할 데이터와 그 처리 로직을 의미한다. 이 View와 Model은 서로 독립적이며 연관성도 없다. 다만 중간에 ViewModel을 두어 Model의 데이터가 생성되거나, 변경 되었을 때 바인딩(binding)으로 엮여 있는 View의 값을 변경시켜주는 역할을 한다. ViewModel과 View는 바인딩 방식으로 데이터를 주고 받기 때문에, ViewModel은 View를 구성하고 있는 객체 이름과 독립적으로 만들어질 수 있다. [MSDN]

<참고자료>
크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : Document-View, Document-View패턴, MVC, MVC패턴, MVP, MVP패턴, MVVM, MVVM패턴, PAC, PAC패턴, Pattern, 패턴


[리쿠르트] Trust yourself? or Trust only yourself?

알파치노, 콜린파렐 주연의 이 영화는 개봉한지 벌써 7년이나 지난 "구식(?)" 영화다. 개봉했을 당시에 이미 본바 있지만, 이번에 케이블TV를 통해 다시 보니 이전에는 들지 않았던 이런저런 생각이 들어 이렇게 글을 남긴다.

사용자 삽입 이미지

이 영화는 사람들이 영화속에나 볼수있는CIA라는 특수집단을 치밀하게 묘사해 현실감을 부여한다. 사실 내가 CIA에 대해서 직접적으로 아는 바는 전혀 없기 때문에, 이 영화가 얼마나 현실과 가깝게 CIA를 묘사했는지는 판단하기 어렵다. 단지 여기서 '치밀하게 묘사'했다는 표현을 한 것은 그 조직의 속성으로 인해 발생할 수 있는 요소들을 기존과는 다르게 '드러냈기' 때문이다.

대부분의 영화에서 묘사되는 CIA는 한마디로 '정의의 사도'에 가깝다. 하지만 CIA와 같은 첩보기관은 비밀의 유지가 조직 유지의 핵심이기 때문에 그에 따르는 비위(非違)가 비일비재(非一非再)할것이라는 것은 쉽게 예측가능하다. 보다 철저한 비밀 유지를 위해 동료간에도 그 비밀을 유지하고, 때로는 기만(欺瞞)해야 하는 것이 '일'이라면 그 문제는 보다 심각하지 않을까?
그런 측면에서 영화 '리쿠르트'는 아무래도 CIA라는 조직에 대해 기존의 다른 영화들 보다는 보다 현실적인 것이 아닐까하고 추측되는 것이다.

이런 '현실성'은 역으로 많은 생각을 하게 한다.
어떤이는 '세상은 결국 혼자 사는거야.'라고 말하고, 어떤이는 반대로 '세상은 같이 살아가는거야.'라고 말한다. 이 영화를 처음 봤을때 이 영화가 '자기 자신만을 믿으라는 메시지를 전달하는 것인가'라는 생각을 했다. 하지만 제임스 클레이튼이라는 인물이 동료이자 연인인 레이나를 믿는 마지막 선택은 '결국 사람을 믿어야 한다'는 메시지를 전달하는 것 같기도 하다. ―레이나가 정말 제임스 클레이튼과 연인이었는지는 모르겠다. 서로의 관계가 진심과 기만을 뒤섞은 상태였기 때문이다.―
이 영화가 '사람을 믿어야 한다'는 메시지를 전달하고 있는 것이라 할지라도 뒷끝이 개운치 않은 것은 여전하다. 사람을 믿는다는 행위 자체도 '이 사람을 믿어도 되겠다'라는 '자기 확신'이 없고서는 불가능한 일이기 때문이다. 이것은 '타인에 대한 신용(信用)'도 결국 '스스로를 믿는 행위'이지 타인을 믿는것이 아니다라는 결론을 낼 수도 있는 것이다.

크리에이티브 커먼즈 라이선스
Creative Commons License


[오감도] S1. His Concern

이 글을 시작하기에 앞서 미리 밝혀두지만, 나는 비교적 보수적이고 유교적 문화에 익숙해 있기 때문에 섹스(sex)에 대한 얘기를 남앞에서 하는것 자체를 터부(taboo)시 하는 편이다. 하지만 주로 그 '섹스'에 대해, 혹은 그에 연관된 '사랑'에 대해 다루고 있는 영화 '오감도'에 대해 글을 쓰고자 마음먹었기에 나 스스로의 금기(?)를 이번만큼은 깨보기로 했다.

나는 사실 영화 '오감도'를 극장에서 보지는 않았다. 더 솔직히 말하자면 극장에서 볼 생각은 전혀 없었고, 그 이후에라도 찾아서 볼 생각조차 없었다. 이 영화는 '에로스(eros), 그 이상의 사랑 이야기', '사랑의 편견을 벗어라!'라는 문구로 어느 정도의 선정성을 내세워 홍보를 했고, 그것이 영 내 취향에 맞지 않았기 때문이다. ―같은 팀 직원들과 퇴근 후 영화를 보곤 했었는데, 팀 직원중 한명이 '오감도'를 추천했음에도 불구하고 거절했다.―
그럼에도 불구하고 이 영화를 접하게 된 케이블TV를 통해서였다. 다소 부정적이었던 영화에 대한 기대치와는 달리, ―내 감정의 기복 탓일지 모르겠지만― 이 영화의 첫번째 세그먼트(segment)는 긍정적인 측면에서 많은 생각을 하게 했다.
―'오감도'는 총 5개의 에피소드(episode, 혹은 세그먼트)로 구성되어있는 옴니버스 영화다. 이 글에서는 첫번째 에피소드인 'His concern'에 대해서만 다루도록 하겠다.―

사용자 삽입 이미지

'His concern'은 조각같은 외모와 쉴세없이 돌아가는 잔머리와는 다르게 여자앞에서는 쑥맥인 한 '남자', 그리고 시크(chic)한 매력을 가진 큐레이터인 '그녀'의 첫 만남과 두 번째 만남, 그리고 하룻밤의 섹스에 대한 이야기를 하고 있다. 여기서 내가 주목하게 되는 것은 두 남녀의 독백(獨白)이다. 그 중 대표적인 몇가지를 꼽자면 다음과 같다.

"혼자 다니는 사람에게 좌석 티켓이라는 것은, 어쩌면 일종의 즉석복권일지도 모른다."
현실에서도 혼자 다니는 사람에게 옆에 앉게 될 사람은 매우 중요하다. 즐거운 마음으로 여행을 시작했으나, 너무나 지독한 냄새를 풍기는 사람이 옆에 앉는다고 상상해 보자. 그 얼마나 곤욕스러운 일인가? 10분의 동행이 10시간 같을 것이고, 심지어 숨쉬기 조차도 곤욕스러울 것이다.
반면, 약간은 침울하게 시작한 여행이라 할지라도, 옆에 앉은 사람이 유쾌하고 대화가 통하는 사람이라면 아무리 긴 시간의 이동도 지극히 즐거운 일일 것이다.
이점은 살아가는데 있어서도 마찬가지일 것이다. 나와 같이 일하는 사람, 혹은 배우자, 삶의 곳곳에서 부딪히거나 엮일 사람을 내 의지대로 선택하기란 사실상 불가능하다. 그리고 그 사람들이 어떤 사람이냐에 따라 삶의 질이 천차만별이 되기 때문이다. 말 그대로 그 사람들이 나의 "복권(福卷)"이라 할만 하다.


"그녀와 섹스를 해서 좋은 것이 아니라 그녀와 섹스를 하는 사이라서 좋은 것이라면 사랑이라 부를만한다."
앞서 밝혔듯, 이 말은 내가 지극히 터부시 하던 영역에 해당하는 대사다. 하지만 이 대사는 근래 하고 있는 한가지 고민에 괜찮은(?) 답을 해주고 있다.
그 동기는 불분명하지만, 근래 '사랑'이라는 말과 행동, 그 감정의 정체에 대해 원론적으로 생각해보고 있다. 어떤 철학자는 사랑의 근본을 '희생'이라고 했고, 어떤이는 '섹스'라고도 했다. 이것은 정신적인 것이냐, 육체적인 것이냐에 대한 것인데 이들은 모두 내 기준에 명확한 정의는 아니었다. '희생'으로 시작된 '사랑'이라 할지라도, 남녀간의 사랑이라면 육체적으로 끌릴 수도 있는 것이고, 그렇다고 해서 그것이 '사랑'이 아닌것은 아니다. '섹스'라는 행위 자체 만으로는 번식의 본능을 설명할 수 있겠지만 '사랑'이라 부르기엔 부족함이 많기 때문이다.
이런 점들을 고려했을 때, '사랑'에 대해 객관적으로―'사랑'이라는 것 자체가 객관적일 수 없는 개념일지 모른다. 여기서는 어디까지나 '비교적' 객관적인 것을 말하는 것이다.― 정의하기 위해서는 '육체적'요소와 '정신적' 요소가 적절히 조화가 되어야 한다고 생각된다. 이 대사는 비교적 명쾌하게 기준선을 제시해준다. '섹스'라는 행위 자체에 대한 감정이 '사랑'인지 여부를 결정짓는 것이 아니라, '섹스의 대상'에 따른 감정이 '사랑'인지 여부를 결정짓는 것이라면, 내 고민에 대한 납득할 만한 답이 된다라는 판단이 선 것이다. '섹스'라는 행위 그 자체가 좋은 것이 아니라 '그 사람과의 섹스'이기 때문에 좋은 것이라면, 내가 그 사람을 사랑한다고 말하기에 충분한 것이 아닐까?

'오감도'라는 영화가 평단이나 관객으로부터 그리 좋은 평가를 받은 영화는 아닌것 같다. 사실 나는 영화의 극히 일부분(약 20% 수준)만을 본 것이고, 그 부분에서 역시 '감동'에 가까운 느낌을 받았다고 말하기는 어렵다. 하지만 내가 본 그 일부분의 영화에서는 어느정도 곱씹어 볼 이야기들이 있었고, 다른 사람들도 그 대사 하나하나를 곱씹어볼만 하다 이야기할 수는 있다. 그리고 인류가 영원히 정의하기 어려울 일이겠지만, '사랑'이라는 개념에 대해 다시 한번 생각해보기를 권해보고 싶다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : 영화, 오감도


BLOG main image
아직 산을 오르는 이유는 산 만한 사람을 만나지 못했기 때문이고 산 만한 사람이 되지 못했기 때문이다.
 Notice
 Category
분류 전체보기 (162)
일상을 늘어놓다 (42)
나를 찾아 떠나다 (53)
마음을 데우다 (18)
최고를 꿈꾸다 (32)
Resume (16)
 TAGS
Document-View MVC패턴 PAC 패턴 MVVM패턴 MVP패턴 MVVM Document-View패턴 Pattern MVC
 Calendar
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
 Recent Entries
MVC패턴과 그 가계(家系)
[리쿠르트] Trust yourself? or Trust only..
[오감도] S1. His Concern
[패턴] 정의와 의의
[소설] 신의 축복이 있기를, 로즈워터씨
[잡지 기고문] NGF 그리고 프레임워크
이정표
항구
하늘, 초보의 습작품.

 Recent Comments
멋진 글이네요.
dd - 03/20
김영하! 아, 정말 말..
Bailar - 2008
어릴때 단양에 다녀..
짱구눈썹 - 2008
택시 타고 돌아댕길..
택시 - 2008
오랜만에 넷상에서..
쨈 - 2008
너도 잘 지내지? 뭐..
짱구눈썹 - 2008
잘지내고 있어? 친구..
진영 - 2008
질러라~~~ ㅎㅎㅎ 잘..
찬 - 2008
맘에 있으면 먼저 지..
bart - 2008
요즘 차에 관심있다..
Yim, Hyung-jun - 2008
 Recent Trackbacks
 Archive
2010/08
2010/04
2010/02
2009/03
2009/01
 Link Site
OnOffMix
SmartPlace
강성재, Microsoft
김유철, .NETXPERT
노현종, Miracom Inc.
류한석, SoftBank
안재우, .NETXPERT
이건복, .NETXPERT
이동범, .NETXPERT
전병선, ENSOA
정용주, Miracom Inc.
황순영, Feelanet
황재선, SoftBank
 Visitor Statistics
Total : 57,385
Today : 10
Yesterday : 23
rss