DesignPatternSmalltalkCompanion:PointersTothePatternsCommunity
패턴 사용자를 위한 조언:
어떻게 하면 더 많이 배울 수 있을까?
[디자인 패턴] 서적에 출판된 지 얼마 되지 않아 패턴세계가 갑자기 활기를 띄었다. 이제 패턴은 객체지향 디자인 외에 컴퓨터 과학 영역에도 적용되고 있다. 조직 관리와 같은 비 컴퓨터 영역에서도 적용되는 추세이다. 패턴 사용자들이 이용할 수 있는 자원은 많이 있다. 그 중 흥미로운 자원을 위주로 몇 가지 소개하고자 한다.
패턴 웹 사이트
소프트웨어를 전문으로 다루는 웹 페이지는 너무 많아 다 열거할 수가 없다. 도움이 될 만한 몇 가지 웹 사이트만 소개하겠다:
- Patterns Home Page (http://hillside.net/patterns/patterns.html). 패턴에 관해 더 배우고 싶을 때 이 사이트에서 시작하는 것이 좋다. UIUC(일리노이 주립 대학교 어바나 샴페인 캠퍼스) 의 Ralph Johnson 그룹이 웹 사이트를 관리하며, 다운로드할 수 있는 신문 및 기사 링크뿐만 아니라 패턴과 관련된 수많은 정보를 포함한다. 또 한 가지 특징은 PatternStoriesWeb (주소: http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic)이다. 이 사이트는 사람들이 GoF 패턴을 사용해온 방법에 초점을 둔다. 여기 소개된 알려진 사용예는 스몰토크의 사용예제를 많이 포함한다. 협력적 웹사이트이므로 예제를 읽고 다른 사람을 위해 자신의 의견을 작성할 수도 있다.
- Portland Patterns Repository (http://www.c2.com/ppr). Ward Cuningham이 웹사이트를 관리하며, 패턴에 관한 풍부한 정보뿐만 아니라 예제, 다른 패턴 사이트로와 링크, 패턴 사용 공통체에서 활동 중인 사람들의 목록도 포함한다. 이 또한 협력적 웹사이트이다.
- Dolphin Smalltalk (http://www.object-arts.com/EducationCentre/Patterns/Patterns.htm).[1] Dolphin Smalltalk 웹사이트는 스몰토크 패턴에 중점을 둔 웹사이트를 포함하며, 대다수는 일반적으로 적용 가능한 특징이고 일부는 구체적으로 Dolphin 스몰토크와 관련된 특징이다. 그들의 패턴은 Dolphin 이미지에서 사용되는 예제를 포함한다. 이 패턴은 메서드 명명과 같은 협약이나 기초 용어부터 GoF의 디자인 패턴까지 포함한다.
- AG Communications Systems Patterns 페이지 (http://www.agcs.com/patterns/index.html). Linda Rising과 David DeLano가 관리하는 이 사이트는 AG Communication Systems에서 이루어지는 패턴 활동들과 기본 패턴에 대한 정보를 많이 포함한다. 패턴과 관련된 다른 웹사이트로의 연결도 포함되어 있다 (Patterns 페이지에서 Other Resources 버튼을 클릭).
- "Patterns and Software: Essential Concepts and Terminology" (http://www.enteract.com/~bradapp/docs/patterns-intro.html). Brad Appleton의 패턴 웹사이트에는 패턴 용어 사전과 다른 웹사이트로의 링크를 포함해 많은 유용한 정보가 포함되어 있다.
패턴 컨퍼런스
큰 규모의 회의에서 많은 패턴 워크숍이 열리고 있다; 예를 들어, OOPSLA '96 [2] 은 디자인 패턴 워크숍을 포함한다. 패턴을 중점으로 한 회의만 최소 4개가 개최되고 있다:
- PLoP (Pattern Languages of Programs). 가장 처음으로 열린 패턴 회의이자 가장 큰 규모를 가진다. 매년 일리노이주 몬티셀로의 Allerton Park 회의에서 개최한다. 중점은 새로운 패턴의 소개에 둔다. 패턴과 패턴 언어가 저자들의 워크숍 형태로 검토되며, 청중이 검토자 및 편집자 역할을 한다. 최근 PLoP 활동에 관한 정보는 다음을 참조한다: http://st-www.cs.uiuc.edu/~hanmer/PLoP-97.html.
- EuroPLoP. 이 회의는 독일 Kloster Irsee에서 매년 개최된다. 이 또한 새로운 패턴의 소개에 중점을 두지만 다른 주제에 대해 같은 관심사를 가진 사람들이 모여 있다. 상세한 내용은 다음 사이트를 참조한다. http://www.cs.wustl.edu/~schmidt/EuroPloP-97.html과 http://www.sdm.de/europlop98/.
- UP (Using Patterns). 이 회의는 뉴욕 New Paltz의 Mohonk Mountain House에서 1997년 3월 처음 개최되었다. UP는 사람들에게 기존의 패턴을 어떻게 적용하는지를 가르쳐주고 그러한 패턴들을 사용하는 새로운 방법들을 공유한다. 상세한 내용은 다음을 참조한다. http://www.panix.com/~k2/up.html.
- ChiliPLoP. 첫 회의는 1998년 3월, 애리조나주 Phoenix에서 열렸다. 새로운 패턴들에 대한 워크숍과 함께 사람들이 자신의 작업에 패턴을 적용하는 방법을 학습하도록 도와주는 것이 목적이다. 상세한 내용은 다음을 참조한다. http://www.agcs.com/patterns/chiliplop/index.html.
매년 이용할 수 있는 회의와 워크숍의 목록, 가입과 구독 신청에 관한 정보는 http://hillside.net/patterns/conferences를 참조한다.
패턴 토론 그룹
패턴과 친해질 수 있는 또 한 가지 방법은 대면 및 전자식 패턴 토론 그룹에서 찾아볼 수 있다. 도시에서 생겨 전 세계로 뻗어나간 그룹도 있다. 자신과 가까운 그룹은 패턴 토론 그룹의 웹페이지, http://hillside.net/patterns/Groups.html에서 확인할 수 있다.
패턴과 관련된 주제들을 포함한 이메일 배포 목록도 다수가 있다. 비 언어특정적 그룹 몇 개만 소개하겠다:
- business-patterns@cs.uiuc.edu는 비지니스 지향적 패턴을 논한다.
- dacm-patterns@cs.uiuc.edu는 디커플링과 복잡성 관리를 논한다.
- gang-of-4-patterns@cs.uiuc.edu는 [디자인 패턴]의 패턴들을 다룬다.
- ipc-patterns@cs.uiuc.edu는 동시 실행과 분산과 관련된다.
- organization-patterns@cs.uiuc.edu는 조직 패턴을 논한다.
- patterns@cs.uiuc.edu는 일반적 소프트웨어 패턴 목록이다.
- patterns-discussion@cs.uiuc.edu는 패턴을 일반적으로 논한다 (소프트웨어뿐만 아니라!)
- siemens-patterns@cs.uiuc.edu는 Pattern-Oriented software Architectures에 설명된 패턴에 초점을 둔다 (Buschmann et al., 1996).
이 목록은 http://hillside.net/patterns/Lists.html에서 발췌하였다. 각 배포 목록의 가입 방법은 서로 약간씩 다르다. 위의 사이트 웹 브라우저에 마우스를 올리면 상세 내용이 표시된다.
패턴 관련 서적
[디자인 패턴]의 출판 이후 패턴과 관련된 수많은 책과 기사가 나왔다. 아래는 스몰토크로 직접 연결되어 있는 패턴 서적을 몇 가지 소개한다:
- Beck, Kent, 1997, Smalltalk Best Practices Patterns, Upper Saddle River, NJ, Prentice Hall PTR.
빈약한 스몰토크 코드를 더 괜찮은 코드로 만드는 법을 배울 수 있는 최고의 자료 중 하나이다. Buschmann et al. (1996)은 이 책에 소개된 패턴들을 GoF의 디자인 패턴보다 더 크기 작은 크기의 패턴이라고 불렀다. 이 책은 스타일부터 (포매팅과 변수 명명) 클래스 팩토링까지 범위를 다룬다.
- Fowler, Martin, 1997, Analysis Patterns: Reusable Object Models, Reading, MA, Addison-Wesley.
구현 지향의 디자인 패턴을 엄격하게 다루기보다는 분석 패턴을 다룬다ㅡ즉 비지니스 과정과 관계를 모형화시키기 위한 패턴을 다룬다는 의미이다. 이로 인해 GoF의 패턴과 같이 일반적으로 적용 가능한 소프트웨어 패턴이 아닌, 구체적 애플리케이션 도메인을 위한 패턴을 다룬다. Fowler는 스몰토커(Smalltalker)이고, 그의 패턴 일부는 스몰토크 코드에서 이용되고 있다.
- Liu, Chamond, 1996, Smalltalk, Objects, and Design, Greenwich, CT, Manning.
스몰토크 프로그래밍과 디자인에 관해 광범위하게 다루는 훌륭한 서적으로, 스몰토크 패턴에 관한 챕터도 하나 포함한다.
- Buschmann, Frank, Regine Meunier, Hans Rohnert, Peter Sommerlad, & Michael Stal, 1996, Pattern-Oriented Software Architecture: A System of Patterns, West Sussex, England, Wiley.
광범위한 범위의 추상화와 grain-size에 대한 소프트웨어 패턴을 기본 용어부터 아키텍쳐 패턴까지 소개한다. 일부 패턴은 스몰토크에서 구현하는 알려진 사용예를 포함하며, 책 전체에 걸쳐 스몰토크 코드가 약간씩 포함되어 있다.
- PLoP Proceedings
PLoP 회의 때마다 소개되는 최고의 새로운 패턴을 선정한 것이다. 현재까지 1994년부터 1996년 회의까지 소개되었다. 이 콜렉션은 스몰토크를 위한 패턴과 스몰토크 코드에 사용되는 패턴을 포함한다.
- Coplien, James O. and Douglas C. Schmidt (Eds.), 1995, Pattern Languages of Program Design, Reading, MA, Addision-Wesley.
- Vlissides, John M., James O. Coplien, and Normal L. Kerth (Eds.), 1996, Pattern Languages of Program Design 2, Reading, MA, Addison-Wesley.
- Martin, Robert, Dirk Riehle, and Frank Buschmann (Eds.), 1998, Pattern Languages of Program Design 3, Reading, MA, Addison-Wesley.
- Coplien, James O. and Douglas C. Schmidt (Eds.), 1995, Pattern Languages of Program Design, Reading, MA, Addision-Wesley.
새로운 패턴의 출판물은 지금 이 순간에도 나오고 있다. 이를 파악하는 최선의 방법은 Patterns Home Page를 주기적으로 방문하는 것이다.
필자들과 크리스토퍼 알렉산더의 맺음말
디자인 패턴은 어떠한 변화도 없이 무조건 따라야 하는 융통성 없는 규칙이라기보다는 크리스토퍼 알렉산더가 (1979) 자주 언급했듯이 경험에 근거한 것이다. "각 패턴은 우리 환경에서 반복하여 발생하는 문제를 설명하고 그 문제에 대한 해법의 핵심을 설명하여 당신이 해법을 같은 방식으로 두 번 쓰는 일이 없이 백만 번이고 해법을 사용할 수 있도록 해준다" (Alexander et al., 1977, p.x, emphasis ours). 패턴은 되풀이하여 발생하는 특정 문제 유형을 해결하기 위한 지침서를 제공하므로, 당신은 본질적인 개념을 이용하여 "선호하는 바대로 조정함으로써 자신만의 방식대로, 그리고 지역 조건에 맞게 문제를 해결할 수 있다" (Alexander et al., 1977, p. xiii). 우리의 패턴 구현은 문제를 해결할 수 있는 하나 또는 그 이상의 방법을 보였지만, 여러분은 자신만의 미학이나 특정 애플리케이션 컨텍스트에 맞추어 조정, 모형화, 수정할 수 있다. "물론 이 책을 읽고 사용하는 많은 사람들이 패턴들의 발전을 시도하길 바란다ㅡ좀 더 진실 되고 깊은 변형체를 성공적으로 찾아내기 위해 많은 에너지를 소모해야할 것이다" (Alexander et al., 1979, p. xv).
마지막으로 필자들 또한 “어떤 디자인을 실행하든 우리가 수집한 경험을 근거로 하여, 우리가 알고 있는 방식을 최선으로 사용하길 바랄 뿐”이므로 여러분이 이 책을 통해 유용하고 값진 무언가를 배웠길 바란다 (Alexander, 1979, p. 205).