저에게 연례 행사가 된 PLoP / SPLASH 참가는 정말 뜻 깊은 행사가 될듯 합니다.

이번 Bootcamp 행사는,  Linda Rising이 개인적인 사정으로 참석을 못해 아쉬움이 컸습니다. 하지만 반사 이익으로 사상 최고의 맴버로 진행이 되었습니다 . Robert Hanmer, Joe Yoder, Rebecca Wirfs-Brock 님이 진행을 하셨습니다.  이전 2번의 워크샵과는 다르게 프리젠테이션이 많이 보강되었습니다.

작년에 있었던 Joshua Kerivsky 발표의 영향 때문인지, Christopher Alexander의 철학과 이야기들이 많이 보강되었고, Joe Yoder가 AsianPLoP에서 했던 패턴 라이팅까지 패턴을 가르키는데 종합 선물센트에 가까운 Bootcamp 였습니다.

거기다 일본 KEIO대학에서 대거 행사에 참여했는데, 다케시라는 분이 Learning Pattern Languages를 만들었다며 선물로 나누어 주었습니다. (같이 프로젝트를 한 토모라는 분이 “Learning Pattern”의 PDF 버전이 공유되어 있다고 하니, 추후 접수되는 대로 공유하겠습니다. 아마 지금 일본 분들은 고국으로 가느라  비행기에 있겠네요.)

패턴은 전문가의 조언이다.

Rebecca가 예롤 든 것은 바로 POSA1  (패턴 지향 소프트웨어 아키텍쳐) 1권에 나온 Window Place 였습니다.

바로 창문 주위에는 사람들이 뭔가 능동적인 활동을 하기 위한 곳이라는 거죠. 빛이라는 존재가 만물에게 긍정적인, 그리고 활동적인 에너지를 주는 존재이기 때문에, 사람은 자연스럽게 능동적인 활동을 할때, 대화나 공부등을 할때 빛이 필요합니다.

사실 위 그림을  보면 남들에게 방해를 받지않게 독립적인공간 (엘코드 – Alcove)를 구성하게 되어 있는데요. 이러한 활동적인 일, 또는 잠을 잘때도, 자신만의 독립적인 공간을 가지기 위해서죠. 외부로부터 보호를 받기 위해 독립적인 공간에서도 빛이라는 존재를 필요로 하는 생명체의 모습을 잘 보여주는 단면이라고 할수 있습니다.

이에 연장선상으로  Christopher Alexander의 패턴 언어에서는 LIGHT ON TWO SIDES OF EVERY ROOM 가 나오는데 많은 건물들이 사격형으로 되어 있을때 두 면은 빛을 받도록 되어 있고, 두 면은 빛을 받지 않게 되어 있답니다.   다행히 이번 Bootcamp장소는 두면이 빛이 들어오는 건물이라. 다들 흡족해 하더라구요. 🙂  지난 네버다에서는 빛이 들어오지 않아 우스개 소리로 빛이안들어온다고 투덜 거렸던 것이 기억납니다.

Pattern Languages = Proven Solution + Relationship

이어서 Bob Hanmer가 Fabric소재를 예를 들어, 이것들을 어떻게 짜는 법칙들이 바로  Pattern이다라고 말을 했습니다. 어떠한 문양을 내기 위해선이렇게 짜야 하고, 바지를 만들기 위해서는 이렇께 만들어야 된다라는 예를 들어 설명해 주었습니다.

그러면서 언급한 것이 Christoper Alexander의 Life of Building을 예를 들었습니다.

Pattern is Solution, Problem, Context라는 이야기를 하면서 이 3박자가 매우 중요하다고 말을 했습니다.  이 부분은 지난 Nevada에서 이었던 PLoP  Bootcamp 포스트를 보시면 이해가 될듯 합니다.   Problem/Solution 섹션부터 보시면 이해가 될듯 합니다.

Pattern Languages 적인 입장에서 보면, 패턴들은 독단적으로 사용되는 것이 아니라. 무수히 서로간에 영향을 미치면서 서로의 단점을 상쇄시키기 위해 연결되어 집니다. 바로 Relationship을 가지는데, 그걸 묘사해 놓은 것이 Context입니다.  Alexander는 패턴에서 이러한 연관성 (Relationship)을 매우 중요하게 설명합니다.

결국 Pattern Languages(패턴 언어)라는 것은  Proven Solution(입증된 해결책)이고 연관성 (Relationship)이 모인 것이라고 생각하시면 됩니다.

다른 것들과 패턴과의  차이점

패턴과 New Idea는 다른다. 패턴은 재사용되고, 여러사람들에 의해 인정받은 것입니다. 즉  It must be mature , proven solution이 패턴이라는 거죠.

또한 알고리즘과의 차이점은 패턴은 정형화와 자동화가 되어 있지 않습니다. 자동적으로 코드가 생성되지도 않고, 주위 상황  (Context)에 영향을 많이 받기 때문이죠. MVC 외에도 MVVM, MVP, PAC 등 수많은 변형을 만들어 내므로,  쉽게 정형화하기 힘듭니다.  기존의 컴포넌트 같이 라이브러리 같이  Drag&Drop (Turn the crank) 해서 쓰일수 없습니다.

또한 Recipe처럼 Step by Step으로 따라한다고 무조건 되는 것도 아니고, 간단한 룰(Simple Rule)도 아닙니다.

패턴의 구성요소 설명하기

그 다음 패턴의 구성요소들에 대해서 설명을 하고 있습니다. 이  내용은 그다지 변한 것이 없습니다.  아래 링크를 보시면 도움이 될듯 합니다.

이중 Forces를 통해서 이 패턴이 나타내는 중요성을 잘 언급하고, 긴장감을 형성해서 왜 우리가 다루는 Problem이 기존 해결책으로는 왜 해결하기 어려운지 들어내고, Force에서도 Positive, Negative를 잘 다루라고 설명했습니다.

그외의 패턴 구성요서에 대한 이런 저런 이야기들.

이미 이전 블로그 포스팅에 했던 이야기들과 중첩되지만, 제가긁적 긁적되었던 글도 다 적어봅니다.

패턴을 얼마큼 길게 적어야 하나? 라는 질문에 가능한 간결하게, 하지만 어떤 정보도 없을수 없게 짧지는 않게 작성해라.

패턴 이름을 만들때, 패턴이 무엇인지 명확하게 알수 있게 설명해라. 또한 기존 이름과 겹치지 않고 새로운 이름으로 작성해라.  Bob Hanmer가 처음 패턴 목자가 되어 패턴을 코칭할때 Buffalo Mountain 이라는 패턴이 있었다. 실제 의미는 “Look at the data”  였는데, 정말 난해해서 고치라고 했다.

또한 패턴 이름을 지을대 Problem/Solution중 어디에 초점을 맞추어야 하나? Solution에 초점을 맞추어라.  비슷한 문제도 다양한 해결책이 나올수 있으므로, 해결책에 맞추는 것이 맞다.

Force는 “패턴이 왜 이 문제가 어려운지를 설명해라?”. 그래서 우리의 해결책이 정말 가치있는 것이라는 것을 표현해야 된다. 또한 Force는 Context를 정리해 긴장을 유발 시키는 곳이다.

Rationale (이론적 해석) 을 추가해라. Sorting을 해야하는 문제가 발생했다고 하자. 그럼 왜 Bubble Sort보다 Quick Sort를 써야되는지에 대한 근거를 대야 된다.

다양한 패턴 포멧 맛보기

이번  Bootcamp는 위에서 언급한것처럼 Joseph Yoder 와 작년에 있었던  Joshua Kerivsky 의 영향을 받아서 인지 Alexanderian Format에 대해서 많은 언급이 이었습니다.

Christopher Alexander Form

A Pattern Language에 나온 Small Meeting Room으로 Christopher Alexander의 패턴을 설명하면서 패턴 포멧들의 차이점을 나열해 주었습니다.

불과 작년만해도  PatternLanguage.com이 무료였는데, 올해부터 한달에 $5, 1년에 총 $60달러를   내야만 맴버쉽이 될수있어서 볼수 있습니다. 저같이 책을 소장한 사람이 참 신청하기 그렇네요. 여튼 그래서 Google Books에 일부 공개한 내용이 있어 링크를 겁니다.

Alexandarian Form에 대한 이야기는 아마 작년 Joshua 때문에 대폭 보강이 된거 같습니다.  작년에 있었던 Joshua Kerievsky의 A Timeless way fo communicating을 보시면 될듯 합니다.   역시 몇년동안 꾸준히 참석하니 이제 포스팅이 줄어드는 군요 🙂

GOF Form

이 패턴을 설명하는 Rebecca가 GoF의 디자인 패턴이 번역된 나라에서 왔으면 손을 들어보라고 하더라구요.  정말 다 손을 들더라구요. 거기다 대학교 교재로 쓰인만큼 널리 퍼져서 인기가 좋은 책이라고 하네요. Creational / Behavior / Structural 한 분류에 대해서 이야기 했습니다.  많은 사람이 패턴을 만들때 GoF 포멧을 참조하는데, 자신이 쓸  패턴에 맞게 포멧을 결정하라고 충고했습니다.  사람과 연관된 문제를 다루는데 Sample code 섹션을 추가할수 없다고 말하더라구요. 🙂

Schmidth Form

POSA 폼이라고 불리는 Douglas C. Schmidth님의 패턴입니다. Strategized Locking, Thread-safe Interface, and Scoped Locking 을 가지고 설명을 했습니다.  POSA는 GoF와 다르게 특정 도메인을 상세히 기술한 패턴입니다. (1권 Architecture, 2권 Network, 3권 Resource.. )  그러니 여러분이 기술적인 도메인을 다룬다면 POSA (Schmidth) Form으로 가는것이 맞을듯 합니다.

또한 POSA하면 빠질 수 없는게 CRC 카드입니다. Class Responsibility Card인데요. CRC라는 것을 통해서 객체의 Responsibility를 잘 표현할수 있습니다.

Coplien / Hanmer Form

Architecture / Design / Idiom 으로 표현하는 방법입니다.  Coplien과  Bob Hanmer님은 패턴 언어로서 서로간의 패턴이 어떻게 연관성을 미치는 지를 표현하는 방법을 선호한다고 합니다.

전체적인 내용은 Martin Fowler님의 Writing Software Patterns를 참고하시면 도움이 될듯 합니다.

패턴 라이팅 실습

남은 시간에는 지원이가 제시한 “고객과 어떻게 하면 Communication을 할수 있는가?”를 패턴 으로 만들어보았습니다.  이 부분은 나중에 지원이가 공유해 줄겁니다.

위에서 언급한 Joe의 패턴 라이팅을 참고하시면 됩니다.

맺으며..

이번  Bootcamp는 지금까지 듣지 못한 가장 강력한 Bootcamp였습니다. Bob , Joe, Rebecca 이렇게 업계 최고의 아키텍트들 3명이 모여 지식을 전파한다는게 쉽지 않은데, 정말 멋있는 시간이었습니다.

또한 Bob Hanmer에게  Fault Tolerance 패턴을 번역할려다가 실패한 이야기를 전해드렸더니 많이 우울해 하시더라구요. Dummy시리즈로 새로운 책을 쓰시는거 같은데. 사전협의하여 EVA 식구들과 함께, 번역을 할수 있게 도움을 드리도록 할 생각입니다.  그럼 이것으로 Bootcamp 후기를 마치겠습니다.

Join the conversation! 1 Comment

  1. […] – https://arload.wordpress.com/2011/10/26/plop-bootcamp-in-portland/ […]

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.

카테고리

Alexandar, GoF, News, People, PLOP, POSA, Software Engineering

태그

, , , , , , , , , , ,