패턴 라이팅
손영수
arload@live.com

EvaCast 리더
http://www.evacast.net
데브피아 아키텍쳐 시삽

Blog - 아키텍트로 가는 길.
http://www.arload.net
오늘 나눌 이야기 거리들.

 패턴


 패턴의 구성 요소


 패턴 라이팅 방법
1.
패턴이란?
Pattern
  is
Father
우리는 아버지와 비슷한
생김새, 성격, 습관 등을
가지고 있다.
이미 해결한 문제와
유사한 문제들은..

유사한 방법(패턴)으로
해결 할 수 있다.
패턴의 아버지…
CHRISTOPHER ALEXANDER
패턴은.
The pattern is, in short, at the same time a thing,
which happens in the world,
and the rule which tells us how to create that thing,
and when we must create it.

It is both a process and a thing;
both a description of a thing which is alive, and
a description of the process which will generate that thing.”
패턴은 3개의 룰을 가진다.

              Solution




    Context


                    Problem
이건 패턴이 아니에요!!
 간단한 해결책 (X)

 간단한 룰 (X)

 알고리즘 (X)

 데이터 구조 (X)
패턴은 ~해야만 한다!!
문제 해결을 위한
 짂실(facts)을 제공
  해야만 한다..
해결책을 투명하게
  나타내야 한다…
전문가의 경험을
잘 잡아낸
좋은 스토리로
말해야 한다..
기존 시스템을
이해하는데 도움이
되어야 한다..
심지어.
새로운 시스템을 구축하는데도
도움이 되어야 한다..
그럼..
어떻게 패턴을 만들어야 할까?

해답은???
2.
패턴의
구성 요소
Title
                  (Name / Alias)
  Resulting
                                     Context
  Context

  Sketch/                            Statement
Author Info.                         of Problem


     Resolution                    Forces
Name (Title)




  Name을 정할 땐..
  신중히 정해라!!
좋은 이름은
Communication을 향상 시킨다.
이름만 듣고도,
의미를 파악할 수 있으면 Good!!

Observer 와
Publisher – Subscriber중
어느 것이 직관적인가?
패턴은
무엇을 “Build” 하는 것이다.

무엇을 “Build”하는지
말할 수 있어야만 한다!!
이름 짖는 방법
 명사
  Corporate Sponsor
  Model View Controller


 동사
  Do Food
  Ask for Help


 매력 있는 문장
  George Washington is still Dead
Aliases (별명)
좀더 이해를 돕기 위해서!

가능하다면
별명도 지어라..
어머니의
재미난 조언..
길고
        짧은 건
못 올라갈   대봐야
  나무는   앆다.
쳐다 보지
  말아라
해결책 (조언)은 알았는데..
언제 이 조언을 사용하지?
어머니의 조언에서
  빠진 것은?

 Context
결과보다
  어떤 상황에서
이 패턴을 적용하는지
  아는 것이 중요.
CONTEXT 에 기술할 것들.

 문제가 어떤 상황에 존재하는 가?

 연관 있는 선행조건 (precondition)은?

 Target Audience - 누굴 위한 패턴인가
CONTEXT 에 기술할 것들..
 지금 패턴을 이해하는데
   도움이 되는 다른 패턴들은?

 여러분이 변경하거나 제어할 수 없는
 시스템의 제약 사항은 다 기술해라.
  언어제약
  메모리 제약
  사이즈, 범위
  타이밍
Forces
 무엇이 이 문제를 어렵게 만드는가?


 Tradeoff는 무엇인가?


 왜 뻔한 해결책으로는 충분하지 못하지?


 우리가 약간 Control할 수 있는 시스템의 제약
 상황은?
Forces를 통해
긴장감을 조성해라.
새로운 패턴에 관해
흥미를 느끼게 만들기도 하고,

패턴이 가진 제약도 명시해라!
Problems.
Problems

 해결 할 수 있는 문제는 무엇인가?

 Context를 기반으로,
 특정상황에 적합한 문제를 만들어라.
  범용적인 문제를 기술해서는 앆 된다.
Solution
Solutions
 문제를 해결하기 위한 제앆한 방법을 기술
   구체적이어야 한다.


 Context에 의해 결정되어지는
   중요한 Force들 중심으로 해결해라.
   다른 Force들은 무시해라!


 Target Audience를 계속 고려해라.
Resulting Context
Resulting Context
 이 패턴을 적용해 문제를 해결하면?

  그 이후에 어떤 상황이 발생하는 가?


  장, 단점을 기술해라!


  새로운 문제(Side Effect)는 발생되지 않는가?
    그럼 이 문제를 해결하기 위한 방법들도 기술해라.
Sketch
Sketch
 다이어그램을 그릴 수 없으면, 패턴이 아니다.
  Christopher Alexander.


 Sketch란 무엇인가?
  패턴 독자에게 IDEA를 쉽게 전달하기 위한 아무거나.
    UML Diagrams
    Block Diagram
    Image of concrete example


 어려운 일은 아니지만, 가치 있는 일이다!!.
Other Sessions
 Rationale (이론적 해석)
   패턴을 팔아라. 독자를 쉽게 가르쳐라!
 Sample Code
 Related Patterns
 Known Implementations ( Known Use)
 References
3. 패턴 라이팅
Opinions
          Solutions
Problem
                      Relations
Solution          opinion
                                     Solution
                                            opinion


                           Problem
      Context                          Solution

                Name/
                Aliases

Problem
자 그럼
패턴 라이팅을
시작하세요!!!
4. 패턴 공유

Pattern Writing