PatternWritingBasics
KGDA와 GPGstudy 포럼에 올릴 글을 준비하다가.. 아예 Gpgiki에서 작업하는 게 나을 것 같아서요...
설계 패턴 이야기의 부록입니다...
1. 패턴의 서술 방법에 대한 몇 가지 참고 사항들
다음은 Doug Lea(1) 가 제시한 체크리스트(2)입니다.
- 단일한 한 종류의 문제를 서술할 것.
- 문제가 발생하는 문맥(상황, 조건)을 서술할것.
- 해결책을 구축 가능한 하나의 소프트트웨어 개체로서 서술할 것
- 해결책으로 이끄는 힘들을 서술할것
- 해결책이 힘들을 최적으로 해소하는 증거를 서술할 것
- 변형할 수 있는 것과 변형해서는 안 되는 것들을 상세히 서술할 것
- 적어도 하나의 실제 용례를 서술할 것
- 여러 변종들과 서브패턴들을 서술하거나 언급할 것
- 이 패턴이 의존하는 다른 패턴들을 서술하거나 언급할 것
- 이 패턴을 의존하는 다른 패턴들을 서술하거나 언급할 것
- 동일한 문맥, 문제, 해결책을 가진 다른 패턴들과 연관시킬 것
하라는 것이 많군요... 음...
다음은 Gof(3)(Design Patterns - Elements of Reusable Object-Oriented Software라는 설계 패턴의 고전을 쓴 저자들 또는 그 책)가 제시하는 틀(4)입니다.(급하게 번역을 해서리 좀 엉망인데.. 그냥 상식적으로 생각하면 될 겁니다..)
Pattenr Name(Scope, Purpose) 패턴 이름(범위, 목적)
패턴의 이름은 그 패턴의 핵심을 간명하게 나타내야 한다. 패턴 이름은 설계 어휘의 일부가 될 것이므로 이름을 잘 정하는 것이 매우 중요하다.
Intent(의도)
이 설계 패턴이 무엇을 하는가? 근본적인 원리와 의도는 무엇인가? 이 패턴이 다루고자 설계 문제나 논점은 구체적으로 무엇인가? 같은 질문들에 답하는 짧은 문장들.
Also Known As(또 다른 이름들)
이 패턴에 대한 또 다른 잘 알려진 이름들. 있는 경우에만
Motivation(동기)
설계 문제를 묘사하며 패턴 안의 클래스와 객체 구조들이 그 문제를 해결하는 방식을 서술하는 하나의 시나리오. 시나리오는 이 패턴의 좀더 추상적인 설명을 이해하는데 도움이 된다.
Applicability(적용성)
패턴이 적용될 수 있는 상황, 패턴에 의해 해결될 수 있는 나쁜 설계의 예, 그러한 상황을 어떻게 식별할 것인가 등.
Structure(구조)
Participants(참가자들)
설계 패턴 안에 참여하는 클래스들 그리고/또는 객체들과 그들의 책임들
Participant Name(참가자 이름)
- 참가자들과 그들의 책임을 나열
Collaborations(협동)
참가자들이 자신의 책임을 수행하기 위해 서로 협동하는 방식
- 각 항목과 그에 대한 설명을 불릿 목록 형태로 나열할 것
Consequences(결과)
패턴이 자신의 목적을 어떻게 지원하는가? 패턴을 사용함으로써 생기는 장, 단점이나 결과는 무엇인가? 패턴을 개별적으로 변형할 수 있게 해주는 시스템 구조 상의 측면은 무언인가? 등등
- 각 항목과 그에 대한 설명을 불릿 목록 형태로 나열할 것
Implementation(구현)
패턴을 구현할 때 주의해야 할 함정, 조언, 기법 등. 특정 언어에 해당하는 문제 등.
- 각 항목과 그에 대한 설명을 불릿 목록 형태로 나열할 것
- 예제 코드와 용법
- C++이나 Smalltakl로 패턴을 구현하는 방법을 보여주는 코드 조각들
- 프로그램 소스 코드 등
Known Uses(알려진 용례들)
실제 시스템들에서 발견되는 패턴의 예들. 우리(Gof)는 서로 다른 영역들로부터 적어도 두 개의 예제들을 포함시킴.
Related Patterns(관련 패턴들)
이 패턴과 밀접하게 관련된 다른 설계 패턴들은 무엇인가? 중요한 차이는 무엇인가? 이 패턴과 함께 쓸 수 있는 것들은 무엇인가? 등등
2. 몇가지 참고할 웹 자료들...
게임 프로그래밍 설계 패턴
- Gamedev.net의 GDPattern 섹션 - http://www.gamedev.net/gdpatterns/patterns.asp
- 게임 프로그래밍 설계 패턴의 공동 번역 프로젝트 - Gpgiki ( http://gpgstudy.com/gpgiki/ )
- Gpgiki에서 생산된 문서들이 모여 있는 곳 - Gpgiki 문서 창고(gulfman 님 사이트에 있습니다 - http://www.taesun.net/)
패턴 일반
- 객체 지향 뉴스레터에 패턴 연재가 있습니다.
- 패턴 홈 페이지 - 가장 좋은 출발점...
- 그리고 중앙대 자바 동호회 JStorm이 작성한 튜토리얼이 마이크로소프트웨어 2월호 부록으로 실렸는데요. JStorm에서 구할 수 있을지도 모릅니다... 한 번 들려보세요..(지금은 공사중임)
저는 깃털 하나만 건드린 셈입니다... 고수분들의 좀 더 훌륭한 패턴 이야기가 이어졌으면 합니다...
References
(1) See
(2) See
(3) See
(4) See