패턴, Wiki, XP의 기원으로
패턴 브라우저는 패턴을 기록해서 열람하기 위한 기반으로 만들어졌다. 그리고 이 패턴 브라우저를 인터넷에서 작동하도록 한 것이 WikiWkiWeb이다.
- 1964년 Notes on the Synthesis of Form(형태의 합성에 관한 노트) : 건축이나 도시 등을 설계한다고 하는 행위 그 자체를 수학적으로 형식화하는 시험. 이 전개된 설계의 형식화라는 시험이 패턴 랭귀지라는 아이디어로 이어진다.
- 1965년 A city is not a tree(도시는 트리가 아니다) : 트리구조가 아닌 세미라티스(semi-latice) 구조가 자연 도시에서 볼 수 있는 구조. 도시계획은 자연도시가 가지는 세미라티스 구조를 가져야 한다고 논했다. 자연도시는 긴 세월을 거쳐서 많은 손에 의해서 만들어지는 것과 관계가 있을 것. 알렉산더는 이 논문에서 트리구조 설계 방법에 대한 자기 비판 성격을 가진다. 세상의 건축에 이런 트리구조 계산은 사실상 불가능하다는 것에 이르렀다. 게다가 세미라티스 구조로 계산을 하게 되면 계산량은 더욱 늘어나 버린다. 알렉산더는 세미라티스 구조를 만들어 내기 위한 일반적인 구조가 있을 것이라고 생각했다.
- 1968년~1973년 알렉산더는 직접 건축을 함
- 저작3권 1975년 오레곤 대학교의 실험 정리
- 저작2권 1977년 A Pattern Language : 패턴을 토대로 건축을 설계하는 방법을 제창
- 저작4권 1979년 시간을 초월한 건설의 길 The Timeless Way of Building
크리스토퍼 알렉산더에 의한 미의 원리 추구
알렉산더가 추구하는 미란 어떤 힘을 가진 어떤 질서인 것이다.
형태의 합성에 관한 노트
설계 프로세스의 수학적 형식화
형태를 만들어가는 해위를 수학적인 절차로 정식화하는 것을 시험
- 스텝 1. 대상이 되는 것에 관해 생각할 수 있는 한 모든 조건을 철저히 조사해서 더 이상 나눌 수 없을 때까지 세분화. 이조건의 집합 전체를 시스템이라고 부른다.
- 스텝 2. 열거한 조건 간의 관계성을 철저히 조사.(어떤 것을 만족하면 다른 어떤 것을 만족할 수 없는 관계나 어떤 것을 만족하면 다른 어떤 것도 만족하게 되는 관계등)
- 스텝 3. 각각의 조건이 적합하다/적합하지 않다 라는 두개의 파리미터를 가진다고 하면 그들 집합을 1과 0으로 구성되는 수치의 집합으로 간주해서 수학적으로 취급할 수 있다. 이때 1을 만족하면 다른쪽이 0으로 되는 조건을 가질 수 있다. 이런 제약 관계를 고려해서 1이 값이 가장 많이 포함되는 상태를 논리적으로 도출할 수 있다. 단 각각의 조건 간의 관계는 복잡하게 얽혀 있으므로 그 관계성을 모두 계산하려면 답을 구할수 없는 복잡한 문제가 되므로 답을 구하려면 시스템을 몇몇 작은 집합으로 분할할 필요가 있는데 이를 서브시스템이라고 한다. 조건의 관계를 잘 음미하고 서로 영향을 주는 조건만을 모아서 각각을 서브시스템이라 했다. 이렇게 잘개 쪼개진 서브시스템 하위의 요소들간의 관계에서 1과 0값을 도출해 가장 많은 1이 나오는 요소를 이용해 계획을 입안할 수 있게 된다
가능한 한 많은 조건을 만족하는 형태를 찾아낸다 라는 설계 행위를 수학적인 접근으로 풀 수 있는 문제로 환원한 것. 알렉산더는 조건의 관계를 잘 음미하고 서로 영향을 주는 조건만을 모아서 각각을 서브 시스템으로 했다. 이런식으로 반족해나가면서 처음에 조건을 모두 열거기하고 전체구조를 시스템과 서브시스템의 트리구조로 환원해가는 방법은 탑다운 접근법이라 할 수 있다.
- 주전자
- 기능
- 제조
- 안전
- 용도
- …
- …
- 경제
- 원가
- 유지
- …
- 기능
이처럼 그의 설계상 특징은 조건의 집합을 최종적으로 하나의 다이어그램으로 반영하는 것이다. 요구 조건을 철저하게 열겨허면 그것을 수학의 집한론적으로 해석해서 트리 구조로 분석하고, 그 결과를 이런 하나의 다이어그램으로 반영해 보이는 것. 수학적인 방법론의 이용과 결과로서 다어어그램이 주는 아름다움의 두가지 융합이 그의 주장을 매력적으로 보이게 하고 있었다.
요구 조건 간의 방대한 관계성 계산
베이 에어리어 고속철도의 설계 입안시 요구조건이 390개나 있기 때문에 트리구조로 분할한 서브시스템도 방대한 수가 되어버렸다. 그리고 서브시스템 간의 예기치 않았던 연계도 발생함. 여기서 그의 방법론의 결점이 발견. 트리구조 환원 과정에서 본래 잘라 버리지 않ㅇ느면 안되는 중요한 관계성이 무시되버린 것이다. 즉 현실은 질서 있는 계층 구조로 반영할 수 없는, 복잡하게 얽힌 구조로 되어 있나느 것을 알게 된 것이다

알렉산더의 여섯 가지 원리
오레곤대학교에서 대규모릐 설계를 한후 오레곤대학교의 실험이라는 문서로 정리. 여기서 그는 건설과 계획을 하기 위한 여섯 가지 원리를 내걸고 있다.
- 1. 유기적 질서의 원리 The Principle of Organic Order : 계획이나 시공은 전체를 개별적인 행위로 부터 서서히 만들어가는 것과 같은 프로세스에 의해서 인도될 것
- 2. 참가의 원리 The Principle of Participation : 건설 내용이나 건설 방법에 관한 모든 결정은 이용자의 손에 맡길걸
- 3. 점진적 성장의 원리 The Principle of Piecemeal Growth: 각 예산년도에 기획되는 건설은 소규모인 프로젝트에 특히 중점을 둘것
- 4. 패턴의 원리 The Principle of Patterns : 모든 설계와 건설은 정식으로 채택된 패턴이라고 불리는 계획원리의 집합에 의해서 지도될 것
- 5. 진단의 원리 The Principle of Diagnosis : 커뮤니티 전체의 건상 상태는 커뮤니티 변천의 어느 시점에서도 항상 어떤 공간이 살려지고 어떤 공간이 살려지지 않았는가를 상세히 설명하는 정기적인 진단에 근거해서 보호될 것
- 6. 조정의 원리 The Principle of Coordination : 전체에 있어서 유기적 질서의 완만한 생성은 이용자가 추진하는 개개의 프로젝트의 흐름을 제어하는 재저정처치에 의해서 확실한 것으로 될것
패턴 랭귀지
알렉산더는 패턴을 건축을 설계하기 위한 기본 단위라고 보았다. 그리고 패턴을 조합해서 구체적인 건축물을 설계할 때 에는 그 조합 방법에 제약을 가하는 조건이 열거되어 저절로 질서가 잡혀가도록 되어 있었다. 알렉산더는 1977년 이제까지 수집한 패턴을 패턴랭귀지라는 서적으로 발표했다.
패턴 형식
- 패턴명
- 사진
- 상위 패턴으로의 이어짐
- 본문
- 하위 패턴으로의 이어짐
알렉산더 이론의 발전
형태의 합성에 관한 노트에서 요구조건의 집합을 트리구조로 환원하고 그 관계를 최적화하는 것을 설계라고 보았따. 무수한 요구존건을 컴퓨터 설계로 구별하고 설계의 요점이 되는 다이어그램을 탑다운으로 일제히 도출하려는 시도를 했지만 이것은 너무 복잡한 대상에는 적용일 불가능하다는 결론을 얻음. 그리고 트리구조과 같은 설계의 요소를 완전히 분리해서 엄중이 구별해버리는 것은 이용자인 인간의 성질에 대해서 부적절
그래서 알렉산더는 요구조건의 집합인 다이어그램부터 발전된 패턴이라는 개념을 만들었다. 패턴 간의 관계성은 형태의 합성에 관한 노트때와 같은 엄밀한 트리 구조로 환원하지 않고 서로 겹친 세미라티스 구조로서 상하의 이어짐을 정하는 것으로만 했다. 그리고 패턴의 성질이나 본연의 모습을 검토해가는 간운데 훈련을 쌓아 새로운 패턴을 발견하는 인간의 직감이 컴퓨터로는 계산할 수 없는 정교하고 치밀한 패턴의 조합을 찾아내는 중요한 요소로 생각한 것. 이것이 다이어그램에서 패턴 랭귀지로의 큰 진화였다. 즉 바틈업 방식의 작업이 반복될때마다 조금씩 다른 결과를 만들어내는 생성적인 프로세스였던 것.
알렉산더가 내린 결로은 이용자와 전문가가 협력 관계를 쌓고 패턴 랭귀지를 구축하고 적절한 설계를 현장에서 한 걸음씩 만들어나간다고 하는 새로운 이론과 사상이었던 것이다.
시간을 초월한 걸설의 길
그는 어떻게든 자연도시와 같은 건축을 만들고 싶어했다. 그는 자연도시가 갖추고 있는 질을 무명의질 Quality Without A Name : QWAN(쿠완)이라고 불렀다. 오래된 건물이가 길거리가 가지는 다양한 건축적인 요소가 조화된 느낌을 그는 무명의 질이라고 이름붙인것.
오레곤대학교의 실험에 제시한 여섯가지 원리는 무명의 질을 갖추 도시나 건축을 실현하기 위한 원리. 즉 창조의 원칙. 즉 시간을 초월한 창조의 원칙인 것이다.
패턴랭귀지에 의한 건축의 실제
미리 부품을 준비해서 이어 맞춘다고 하는 생각은 그가 가장 반대하는 생각이다. 패턴 랭귀지는 부품집 사례집이 아닌 이용자와 건축가를 연결하기 위한 다양한 아이디어의 집합체일 뿐이다. 알렉산더가 사용하는 랭귀지 라는 말은 개별적인 개념이 상호 결합해서 새로운 개념을 만들어간다는 의미체계를 나타내는 말이다.
알렉산더의 현재
시간을 초월한 걸설의 길 이후 알렉산더의 작업 진행. 패턴 랭귀지에 의한 이용자 참가로 만들어지는 건축이 어딘가 요란하게 되어버리는 경향이 있다는 것을 알고 있었따. 본질적인 미를 추구하는 그에게 있어서 이 결점은 허용할수 없는 것. 패턴랭귀지에서 패턴은 상위와 하위의 패턴과의 연계를 가지고 있었지만 그것들을 어떻게 조합할 것인가에 대한 룰은 없었다. 즉 조합이 부적절하면 질은 낮아지면 생생한 것으로 되지 않는다.
알렉산더는 문화에 강하게 의존한 패턴이라는 발상으로부터 -> 패턴을 만들어내는 보편적인 힘. 즉 보편성을 가지는 기하학과 인지적, 심리적인 연구로 이행해 갔고 이제까지 무명의 질이라 부르고 있던 개념은 전체성(Wholeness)또는 생명(Life)이라는 말로 표현하게 되었으면 그 본질에 숨어 있는 무언가를 탐구하려고 했다. 이런 성과과 2002~2005년에 The Nature of Order(질서의 본질)이라는 4권짜리 시리즈로 출판되었다. 이 서적은 사물이 자연스럽게 성장하는 방법에 관한 대통일 이론을 세우려는 것이다. 알렉산더는 미를 관용적, 보편적인 것으로 생각해 실험이나 고찰에 의해 그것을 명확하게 정의 가능하다고 생각하고 실천한 것이다.
다양한 실험의 결과로부터 그는 15개의 기하학적 특성 이라 부르는 이념을 정리했다.
- 스케일의 단계성 Levels of Scale
- 강한 중심 Strong Centers
- 경계 Boundaries
- 상호 반복 Alternating Repetition
- 양의 공간 Positive Space
- 좋은 형태 Good Shape
- 국소적 대칭성 Local Symmetries
- 깊은 상호결합과 양의성 Depp Interlock and Ambiguity
- 대비 Contrast
- 단계적인 변화 Gradients
- 거침 Roughness
- 공명 Echoes
- 중공 The Void
- 간결함과 평온함 Simplicity and Inner Calm
- 불가분할 것 Not-Separateness
이 일련의 연구는 건축에 멈추지 않고 자연현상에서 생겨나는 형상, 가구, 회화등의 다양한 역역에 있어서의 미에 공통되는 룰을 찾아 내려는 것이었다.
결론
패턴랭귀지라는 사상은 알렉산더라는 특이한 건축가-이론가를 중심으로 해서 고안된 것으로
당초에는 수학적인 엄밀성을 토대로 한 설계를 목표로 하고 있었지만
점차 이용자 참가의 프로세스에 의한 건축으로 중점이 옮겨 갔다.
패턴랭귀지는 이용자의 참가에 의해서 이용자와 건축에 관련되는 전문가가 합의 형성하고 유기적 질서에 근거하는 건축을 선계하기 위해 고안된 수법인 것이다.
소프트웨어 개발
GoF의 패턴과 알렉산더의 패턴의 다름점
1. 건축물에는 수천년의 역사가 있으면 고전도 많다. 소프트웨어 시스템의 경우에는 역사가 훨씬 짧아서 고전이라고 부를 수 있는 것은 거의 없다
2. 알렉산더는 패턴을 이용하는 우선순위를 매겼는데 우리들은 순위를 매기지 않았다
3. 알렉산더의 패턴을 취급하는 문제를 강조하고 있지만 우리들의 디자인 패턴은 해결 방법에 대해서 더욱 상세하게 기술하고 있다.
4. 알렉산더는 제안한 패턴에 의해서 완전한 건축물을 생성할 수 있다고 주장하고 있지만 우리들은 제안한 패턴에 의해서 완전한 프로그램을 생성할 수 있다고는 주장하고 있지 않다.
알렉산더의 패턴랭귀지에 소개된 마을, 건축, 시공과 비교해 본다면 GoF의 디자인 패턴을 건축에 해당하는 패턴을 다루고 있다.
시공은 소프트웨어 개발의 구현에 해당할 수 있다고 보는데 1991년 코플리엔이 출판한 Advanced C++ Programming Syles and Idions에서 이 기술 방법을 다루고 있다 벡 역시 1996년 Smalltalk Best Practice Patterns를 통해 기술을 정리
마을에 해당하는 패턴은 1996년 POSA, 2002년 마틴파울러에 의한 Patterns of Enterprise Application Architecture가 있다.
이와 같이 다지안 패턴이라는 좁은 범위로부터 시작한 패턴은 응용도 서서히 범위를 넓혀 마을, 시공 등의 다른 범위에 해당하는 패턴도 취급하게 되었다.
- 1968년 더글라스 엔겔바트 GUI 개념 제시
- 1972년 엘런 케이 대화형 프로그래밍 언어 Smalltalk라는 객체지향 프로그래밍 언어 개발. (GUI 개념 적용)
- 1979년 애플 GUI탑재 퍼스널 컴퓨터 리사 발매
- 1984년 애플 매킨토시 발매
- 1986년 OOPSLA 설립후 오레곤에서 제1회 심포지엄 개최. 앨런 케이 기조강연. 벡과 커닝엄은 A Diagram for Object-Oriendted Programs 라는 논문 발표
- 1987년 벡과 커닝엄은 패턴을 사용한 시스템 설계를 시험하고 “객체지향 프로그램을 위한 패턴 언어의 사용”이라는 논문을 OOPSLA에 투고후 발표. 이후 이 논문은 디자인 패턴이라는 개념으로 이어지게 된다
- 1988년 에릭감마는 “ET++-An Object-Oriented Application Framework in C++”란 이름으로 OOPSLA에 발표
- 1991년 코플리엔 Advanced C++ Programming Syles and Idioms 출판. 구현 패턴에 관한 카테고리 시도화
- 1992년 OOPSLA 랠프 존슨은 “Documenting Frameworks using Patterns”를 발표하여 패턴은 단순한 설명문의 나열이 아니라 구체적인 실례화 함께 표시되고 밀접하게 관련된 패턴간의 관계성 하에 구축된 체계라는 것이다.
- 1994년 8월 힐사이드 그룹의 멤버는 제1회 PLoP(프롭)을 개회하고 해당 내용을 정리한 서적 “Pattern Languages of Program Design”을 출판
- 1994년 10월 GoF는 “Design Patterns: Elements of Reusable Object-Oriented Software” 서적 발표.
- 1996년 켄트벡은 Smalltalk Best Practice Pattenrs를 통해 스몰토크에서 반복해서 나타나는 기술을 정리 -> 2007년 자바버전 Implementation Patterns도 출시(알렉산더의 시공에 해당)
- 1996년 프랭크 부슈만은 POSA를 통해 아키텍쳐 패턴을 소개
- 2002년 마틴 파울러는 Patterns of Enterprise Application Architecture를 통해 엔터프라이즈 어플리케이션 아키텍쳐 패턴을 소개. (알렉산더의 마을에 해당)