Pattern Writing

Preview:

DESCRIPTION

패턴 라이팅 하는 방법

Citation preview

패턴 라이팅

손영수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개의 룰을 가진다.

Problem

Context

Solution

이건 패턴이 아니에요!!

간단한 해결책 (X)

간단한 룰 (X)

알고리즘 (X)

데이터 구조 (X)

패턴은 ~해야만 한다!!

문제 해결을 위한

짂실(facts)을 제공

해야만 한다..

해결책을 투명하게

나타내야 한다…

전문가의 경험을

잘 잡아낸

좋은 스토리로

말해야 한다..

기존 시스템을

이해하는데 도움이

되어야 한다..

심지어.

새로운 시스템을 구축하는데도

도움이 되어야 한다..

그럼..

어떻게 패턴을 만들어야 할까?

해답은???

2.

패턴의

구성 요소

Title

(Name / Alias)

Context

Statement of Problem

ForcesResolution

Sketch/

Author Info.

Resulting Context

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

결과보다

어떤 상황에서

이 패턴을 적용하는지아는 것이 중요.

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

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

Target Audience - 누굴 위한 패턴인가

CONTEXT 에 기술할 것들.

지금 패턴을 이해하는데

도움이 되는 다른 패턴들은?

여러분이 변경하거나 제어할 수 없는

시스템의 제약 사항은 다 기술해라.

언어제약

메모리 제약

사이즈, 범위

타이밍

CONTEXT 에 기술할 것들..

무엇이 이 문제를 어렵게 만드는가?

Tradeoff는 무엇인가?

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

우리가 약간 Control할 수 있는 시스템의 제약상황은?

Forces

Forces를 통해

긴장감을 조성해라.

새로운 패턴에 관해

흥미를 느끼게 만들기도 하고,

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

Problems.

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

Context를 기반으로,

특정상황에 적합한 문제를 만들어라. 범용적인 문제를 기술해서는 앆 된다.

Problems

Solution

문제를 해결하기 위한 제앆한 방법을 기술

구체적이어야 한다.

Context에 의해 결정되어지는

중요한 Force들 중심으로 해결해라.

다른 Force들은 무시해라!

Target Audience를 계속 고려해라.

Solutions

Resulting Context

이 패턴을 적용해 문제를 해결하면?

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

장, 단점을 기술해라!

새로운 문제(Side Effect)는 발생되지 않는가?

그럼 이 문제를 해결하기 위한 방법들도 기술해라.

Resulting Context

Sketch

다이어그램을 그릴 수 없으면, 패턴이 아니다.

Christopher Alexander.

Sketch란 무엇인가?

패턴 독자에게 IDEA를 쉽게 전달하기 위한 아무거나.

UML Diagrams

Block Diagram

Image of concrete example

어려운 일은 아니지만, 가치 있는 일이다!!.

Sketch

Rationale (이론적 해석)

패턴을 팔아라. 독자를 쉽게 가르쳐라!

Sample Code

Related Patterns

Known Implementations ( Known Use)

References

Other Sessions

3. 패턴 라이팅

ProblemSolutions

Opinions

Relations

Name/Aliases

Problem

Problem

Solution

Solution

Solution

opinion

opinion

Context

자 그럼

패턴 라이팅을

시작하세요!!!

4. 패턴 공유