pattern writing
DESCRIPTION
패턴 라이팅 하는 방법TRANSCRIPT
![Page 1: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/1.jpg)
패턴 라이팅
![Page 2: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/2.jpg)
EvaCast 리더http://www.evacast.net데브피아 아키텍쳐 시삽
Blog - 아키텍트로 가는 길.http://www.arload.net
![Page 3: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/3.jpg)
오늘 나눌 이야기 거리들.
패턴
패턴의 구성 요소
패턴 라이팅 방법
![Page 4: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/4.jpg)
1.
패턴이란?
![Page 5: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/5.jpg)
Pattern
is
Father
![Page 6: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/6.jpg)
우리는 아버지와 비슷한
생김새, 성격, 습관 등을
가지고 있다.
![Page 7: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/7.jpg)
![Page 8: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/8.jpg)
이미 해결한 문제와
유사한 문제들은..
유사한 방법(패턴)으로
해결 할 수 있다.
![Page 9: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/9.jpg)
패턴의 아버지…
CHRISTOPHER ALEXANDER
![Page 10: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/10.jpg)
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.”
패턴은.
![Page 11: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/11.jpg)
패턴은 3개의 룰을 가진다.
Problem
Context
Solution
![Page 12: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/12.jpg)
이건 패턴이 아니에요!!
![Page 13: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/13.jpg)
간단한 해결책 (X)
간단한 룰 (X)
알고리즘 (X)
데이터 구조 (X)
![Page 14: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/14.jpg)
패턴은 ~해야만 한다!!
![Page 15: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/15.jpg)
문제 해결을 위한
짂실(facts)을 제공
해야만 한다..
![Page 16: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/16.jpg)
해결책을 투명하게
나타내야 한다…
![Page 17: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/17.jpg)
전문가의 경험을
잘 잡아낸
좋은 스토리로
말해야 한다..
![Page 18: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/18.jpg)
기존 시스템을
이해하는데 도움이
되어야 한다..
![Page 19: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/19.jpg)
심지어.
새로운 시스템을 구축하는데도
도움이 되어야 한다..
![Page 20: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/20.jpg)
그럼..
어떻게 패턴을 만들어야 할까?
해답은???
![Page 21: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/21.jpg)
2.
패턴의
구성 요소
![Page 22: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/22.jpg)
Title
(Name / Alias)
Context
Statement of Problem
ForcesResolution
Sketch/
Author Info.
Resulting Context
![Page 23: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/23.jpg)
Name (Title)
Name을 정할 땐..
신중히 정해라!!
![Page 24: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/24.jpg)
좋은 이름은
Communication을 향상 시킨다.
![Page 25: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/25.jpg)
이름만 듣고도,
의미를 파악할 수 있으면 Good!!
Observer 와
Publisher – Subscriber중
어느 것이 직관적인가?
![Page 26: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/26.jpg)
패턴은
무엇을 “Build” 하는 것이다.
무엇을 “Build”하는지
말할 수 있어야만 한다!!
![Page 27: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/27.jpg)
이름 짖는 방법
명사 Corporate Sponsor Model View Controller
동사 Do Food Ask for Help
매력 있는 문장 George Washington is still Dead
![Page 28: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/28.jpg)
Aliases (별명)
좀더 이해를 돕기 위해서!
가능하다면
별명도 지어라..
![Page 29: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/29.jpg)
어머니의
재미난 조언..
![Page 30: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/30.jpg)
못 올라갈나무는
쳐다 보지말아라
길고
짧은 건
대봐야
앆다.
![Page 31: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/31.jpg)
해결책 (조언)은 알았는데..
언제 이 조언을 사용하지?
![Page 32: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/32.jpg)
어머니의 조언에서
빠진 것은?
Context
![Page 33: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/33.jpg)
결과보다
어떤 상황에서
이 패턴을 적용하는지아는 것이 중요.
![Page 34: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/34.jpg)
문제가 어떤 상황에 존재하는 가?
연관 있는 선행조건 (precondition)은?
Target Audience - 누굴 위한 패턴인가
CONTEXT 에 기술할 것들.
![Page 35: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/35.jpg)
지금 패턴을 이해하는데
도움이 되는 다른 패턴들은?
여러분이 변경하거나 제어할 수 없는
시스템의 제약 사항은 다 기술해라.
언어제약
메모리 제약
사이즈, 범위
타이밍
CONTEXT 에 기술할 것들..
![Page 36: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/36.jpg)
![Page 37: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/37.jpg)
무엇이 이 문제를 어렵게 만드는가?
Tradeoff는 무엇인가?
왜 뻔한 해결책으로는 충분하지 못하지?
우리가 약간 Control할 수 있는 시스템의 제약상황은?
Forces
![Page 38: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/38.jpg)
Forces를 통해
긴장감을 조성해라.
![Page 39: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/39.jpg)
새로운 패턴에 관해
흥미를 느끼게 만들기도 하고,
패턴이 가진 제약도 명시해라!
![Page 40: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/40.jpg)
Problems.
![Page 41: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/41.jpg)
해결 할 수 있는 문제는 무엇인가?
Context를 기반으로,
특정상황에 적합한 문제를 만들어라. 범용적인 문제를 기술해서는 앆 된다.
Problems
![Page 42: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/42.jpg)
Solution
![Page 43: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/43.jpg)
문제를 해결하기 위한 제앆한 방법을 기술
구체적이어야 한다.
Context에 의해 결정되어지는
중요한 Force들 중심으로 해결해라.
다른 Force들은 무시해라!
Target Audience를 계속 고려해라.
Solutions
![Page 44: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/44.jpg)
Resulting Context
![Page 45: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/45.jpg)
이 패턴을 적용해 문제를 해결하면?
그 이후에 어떤 상황이 발생하는 가?
장, 단점을 기술해라!
새로운 문제(Side Effect)는 발생되지 않는가?
그럼 이 문제를 해결하기 위한 방법들도 기술해라.
Resulting Context
![Page 46: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/46.jpg)
Sketch
![Page 47: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/47.jpg)
다이어그램을 그릴 수 없으면, 패턴이 아니다.
Christopher Alexander.
Sketch란 무엇인가?
패턴 독자에게 IDEA를 쉽게 전달하기 위한 아무거나.
UML Diagrams
Block Diagram
Image of concrete example
어려운 일은 아니지만, 가치 있는 일이다!!.
Sketch
![Page 48: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/48.jpg)
Rationale (이론적 해석)
패턴을 팔아라. 독자를 쉽게 가르쳐라!
Sample Code
Related Patterns
Known Implementations ( Known Use)
References
Other Sessions
![Page 49: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/49.jpg)
3. 패턴 라이팅
![Page 50: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/50.jpg)
ProblemSolutions
Opinions
Relations
![Page 51: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/51.jpg)
Name/Aliases
Problem
Problem
Solution
Solution
Solution
opinion
opinion
Context
![Page 52: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/52.jpg)
자 그럼
패턴 라이팅을
시작하세요!!!
![Page 53: Pattern Writing](https://reader033.vdocuments.net/reader033/viewer/2022051513/5478edd8b479596d098b460e/html5/thumbnails/53.jpg)
4. 패턴 공유