패턴 언어

패턴 언어는 전문 분야 내에서 유용한 설계 관행이나 유용한 조직의 패턴을 기술하는 방법입니다. 기간은 건축가에 의해 화폐로 주조되었다 크리스토퍼 알렉산더 그리고 대중화하는 그의 1977 년 책에 의하여 어울린다.

패턴 언어는 또한 일련의 상호 연결된 패턴을 통해 인간 노력의 특정 분야에서 살아남은 사람의 더 깊은 지혜를 표현하려는 시도 일 수 있습니다. Aliveness는 “이름이없는 품질”에 대한 하나의 자리 표시 자입니다. 다양한 형태의 반면 정확하고 경험적으로 검증 가능한 전체 성, 영 또는 은혜의 감각입니다. 이 디자인 접근법의 일부 옹호자는 일반 사람들이 매우 크고 복잡한 디자인 문제를 성공적으로 해결할 수 있다고 주장합니다.

패턴이란 무엇입니까?
디자이너가 집, 컴퓨터 프로그램 또는 램프를 설계 할 때 문제를 해결하는 방법에 대해 많은 결정을 내려야합니다. 단일 문제는 일반적인 위치 (구문)로 문서화되며 사전에 표시된 예와 같이 야생에서 볼 수있는 가장 일반적으로 인정 된 좋은 해결책으로 문법을 사용합니다. 이러한 각 항목은 단일 디자인 패턴입니다. 각 패턴에는 사전 항목과 마찬가지로 이름, 설명 항목 및 일부 상호 참조가 있습니다. 문서화 된 패턴은 해당 솔루션이 패턴의 맥락에서 왜 좋은지를 설명해야합니다.

“문”또는 “파트너십”과 같은 요소 또는 보편적 인 패턴은 경험상 발견되거나 실제로 구성 요소로 사용되는 디자인의 다목적 이상입니다. 반복적 인 상황과 상황에서 힘의 전체 론적 해결로 명시 적으로 설명됩니다. 아키텍처, 의학 개발, 거버넌스 등 인간 환경을 특징 짓는 자연적 패턴의 디자인과 같은 패턴이 발명되거나 발견되고 연구 될 수 있습니다.

모든 언어와 마찬가지로 패턴 언어에는 어휘, 구문 및 문법이 있지만 패턴 언어는 의사 소통 이외의 복잡한 활동에 적용됩니다. 디자인을위한 패턴 언어에서는 파트가 다음과 같이 분해됩니다.

언어 설명 – 어휘 -는 관심있는 분야의 문제에 대해 명명 된 설명 된 솔루션 모음입니다. 이를 디자인 패턴이라고합니다. 예를 들어, 아키텍처 언어는 정착물, 건물, 방, 창문, 래치 등의 항목을 나타냅니다.
각 솔루션에는 구문, 솔루션이보다 광범위하고 포괄적이거나보다 추상적 인 디자인에 적합한 위치를 나타내는 설명이 포함됩니다. 그러면 솔루션이 자동으로 다른 필요한 솔루션 웹에 연결됩니다. 예를 들어, 방에는 빛을 얻는 방법과 사람들을 들락날락하게하는 방법이 있습니다.
이 솔루션에는 솔루션으로 문제를 해결하거나 이익을 창출하는 방법을 설명하는 문법이 포함되어 있습니다. 따라서 혜택이 불필요한 경우 솔루션이 사용되지 않습니다. 아마도 디자인의 일부는 돈이나 다른 자원을 절약하기 위해 비워 둘 수 있습니다. 사람들이 방에 들어가기 위해 기다릴 필요가 없다면, 간단한 출입구가 대기실을 대신 할 수 있습니다.
언어 설명에서 문법 및 구문은 다른 이름있는 솔루션에 대한 색인 (일반적으로 패턴 이름의 문자 알파벳순 색인)을 교차하므로 디자이너는 한 솔루션에서 관련성이 높고 필요한 솔루션에 대해 신속하게 생각하고 논리적 인 방법으로 문서화 할 수 있습니다. 크리스토퍼 알렉산더 (Christopher Alexander)의 ‘패턴 언어 (Pattern Language)’에서 패턴은 크기에 따라 오름차순으로 나뉘며 알파벳순으로 구분되어 있습니다.
언어 색인의 관계 웹은 설계 과정에서 많은 경로를 제공합니다.
디자이너는 이해하고 작동하는 문제의 모든 부분에서 알 수없는 부분으로 프로세스를 시작할 수 있으므로 설계 작업이 단순 해집니다. 동시에 패턴 언어가 많은 프로젝트에서 잘 작동했다면 처음에는 디자인 문제를 완전히 이해하지 못하는 디자이너조차도 설계 프로세스를 완료하고 결과를 사용할 수 있다고 믿을만한 이유가 있습니다. 예를 들어 스키를 타는 사람들은 눈을 내리고 장비를 보관해야합니다. 지저분한 눈과 부츠 청소부는 밖에 있어야합니다. 장비는주의가 필요하므로 랙을 안에 있어야합니다.

많은 패턴이 언어를 형성합니다.
말의 언어를 유용하게 만들기 위해서는 단어가 서로 문법적 및 의미 적 관계를 가져야하는 것처럼 디자인 패턴은 패턴 언어를 형성하기 위해 위치 및 유틸리티 주문에서 서로 관련되어야합니다. 크리스토퍼 알렉산더 (Christopher Alexander)의 작업은 디자이너가 문제 (아마도 상업적 할당)를 가지고 솔루션을 선택하고 큰 솔루션으로 인한 새롭고 작은 문제를 발견하는 분해 프로세스를 설명합니다. 간혹 작은 문제에는 해결책이 없으며 다른 큰 해결책을 선택해야합니다. 결국 나머지 설계 문제는 모두 작거나 빌더가 즉석에서 해결할 수있을 정도로 일상적이며 “설계”가 완료됩니다.

실제 조직 구조 (계층 적, 반복적 등)는 문제에 따라 디자이너의 재량에 달려 있습니다. 이는 디자이너가 명시 적으로 작은 부분부터 시작하여 디자인을 탐색 할 수있게합니다. 이런 일이 발생하면 설계자는 문제가 실제로 더 큰 솔루션의 일부임을 인식하게됩니다. 이 시점에서 디자인은 거의 항상 더 나은 디자인이됩니다.

따라서 언어에서 각 패턴은 다른 패턴과 언어와의 관계를 전체적으로 나타내야합니다. 이는 디자이너가 언어를 사용하여 해결해야하는 관련 문제에 대한 많은 지침을 제공합니다.

외부 전문가가 패턴 언어를 적용하는 데 가장 어려운 부분은 실제로 해결해야 할 문제의 신뢰할 수 있고 완전한 목록을 얻는 것입니다. 물론이 문제에 가장 익숙한 사람들은 디자인이 필요한 사람들입니다. 따라서 알렉산더는 관심이 있고 권한이있는 사용자가 현장에서 수행 할 수있는 즉흥적 인 작업을 매우 실용적인 대규모 초기 솔루션을 구성하고 설계의 유용성을 극대화하며 설계 재 작업을 최소화하는 강력한 방법으로 유명합니다. 알렉산더가 아키텍처의 사용자에게 권한을 부여하려는 바람은 사실 알렉산더가 처음으로 아키텍처를위한 패턴 언어 프로젝트를 수행하게 된 원인이었습니다.

문맥에서의 디자인 문제
디자인 패턴의 중요한 측면은 가난한 시스템 (집, 컴퓨터 프로그램 또는 일일 사용 객체 일 수 있음)과 다른 좋은 시스템을 만드는 핵심 아이디어를 식별하고 문서화하고 미래의 설계를 지원하는 것입니다 시스템. 패턴으로 표현 된 아이디어는 상황에 따라 매우 다른 시스템에 적용될 수있을만큼 일반적이지만 건설적인 지침을 제공 할만큼 충분히 구체적이어야합니다.

패턴에서 다루는 문제와 해결책이 적용되는 상황의 범위를 문맥이라고합니다. 각 패턴의 중요한 부분은이 컨텍스트를 설명하는 것입니다. 예제는 패턴이 매우 다른 상황에 어떻게 적용되는지 더 자세히 설명 할 수 있습니다.

예를 들어 알렉산더의 패턴 “A PLACE TO WAIT”은 수술실에서 대기실과 같은 방식으로 버스 정류장을 해결하면서 유용하고 건설적인 솔루션을 제안합니다. 감마 (Gamma) 등의 “Gang-of-Four”책 디자인 패턴. 프로그래밍 언어 및 프로그램의 응용 프로그램 영역과 독립적 인 솔루션을 제안합니다.

그러나 패턴에 기술 된 문제와 해결책은 한 쪽에서 추상화와 일반성의 수준, 다른 쪽에서 특이성이 다를 수 있습니다. 결국 이것은 저자의 선호에 달려있다. 그러나 매우 추상적 인 패턴조차도 일반적으로 본질적으로 절대적으로 구체적이고 구체적인 예를 포함합니다.

패턴은 현실 세계에서 얼마나 멀리 입증되었는지에 따라 달라질 수 있습니다. 알렉산더는 각 패턴에 0, 1 또는 2 개의 별 등급을 부여하여 실제 사례에서 얼마나 잘 입증되었는지 보여줍니다. 일반적으로 모든 패턴에는 적어도 일부 실제 사례가 필요하다고 주장됩니다. 그러나 아직 구현되지 않은 아이디어를 패턴과 같은 형식으로 문서화하는 것이 좋습니다.

알렉산더의 책에있는 패턴은 규모의 수준도 다양합니다. 일부는 마을이나 이웃을 짓는 방법, 개별 건물과 객실을 다루는 다른 방법을 묘사합니다. 알렉산더는 저 스케일 인공물을 대규모 세계의 건설적인 요소로 간주하여 계층 적 네트워크에 연결할 수 있습니다.

힘의 균형
패턴은 그것이 해결하려고하는 문제, 이러한 문제가 발생하는 상황 또는 상황, 제안 된 솔루션을 권장 할 수있는 조건을 특성화해야합니다.

종종 이러한 문제는 서로 다른 이해 관계 또는 “힘”의 충돌에서 비롯됩니다. 패턴은 대화로 나타나서 힘의 균형을 맞추고 마지막으로 결정을 내립니다.

예를 들어, 무선 전화기를 제안하는 패턴이있을 수 있습니다. 힘은 의사 소통의 필요성과 다른 일을 동시에 수행해야하는 필요성 (요리, 서가 검사) 일 것입니다. 매우 구체적인 패턴은 단지 “무선 전화”일 것입니다. 보다 일반적인 패턴은 “무선 장치”또는 “보조 활동”으로, 보조 활동 (예 : 전화 통화 또는 청바지 주머니 검사)이 다른 활동을 방해해서는 안됨을 나타냅니다.

“비 활동성”패턴의 힘은 “무선 전화”의 것과 매우 유사합니다. 따라서 경쟁 세력은 한 패턴으로 표현 된 디자인 컨셉의 본질의 일부로 볼 수 있습니다.

패턴에는 고유 한 이유가 포함되어 있습니다.
일반적으로 패턴은 주어진 값을 참조하는 근거를 포함합니다. 크리스토퍼 알렉산더 (Christopher Alexander)에게 건축물과 접촉 할 사람들에 관해 생각하는 것이 무엇보다 중요합니다. 그의 핵심 가치 중 하나는이 사람들을 더욱 생생하게 느끼게하는 것입니다. 그는 “이름없는 품질”(QWAN)에 관해 이야기합니다.

보다 일반적으로, 우리는 좋은 시스템을 사용하고, 영향을받는 모든 사람들이 일상 생활을 풍성하게하고, 심지어는 더 낫게 받아 들여야하고, 환영 받고, 행복하게 받아 들여야한다고 말할 수 있습니다. 예를 들어 거리 카페에 대해 이야기 할 때, 알렉산더는 게스트의 가능한 소망에 대해 이야기 할뿐 아니라 걸어가는 사람들을 언급합니다.

전화 나 자동차 같은 기술 장치, 프로젝트 작업 팀과 같은 사회 구조 또는 컴퓨터 프로그램의 사용자 인터페이스에도 동일한 사고가 적용될 수 있습니다. 예를 들어, 소프트웨어 시스템의 품질은 사용자가 시스템을 즐기거나 시간을 보내고 있는지 관찰함으로써 평가할 수 있습니다.

인간의 삶에 미치는 영향에 초점을 맞춤으로써, 우리는 변화하는 기술로부터 독립적 인 패턴을 찾아내어 “시간을 초월한 품질”(Alexander)을 발견 할 수 있습니다.

일반 구조 및 레이아웃
일반적으로 패턴 언어 또는 콜렉션의 작성자는 포함 된 모든 패턴에 대한 일반 구조를 선택하여 각각을 문맥, 문제 설명문, 솔루션 등의 일반적인 섹션으로 구분합니다.

예를 들어 크리스토퍼 알렉산더의 패턴은 각각 짧은 이름, 등급 (최대 2 * 기호), 민감한 그림, 컨텍스트 설명, 문제 설명, 예제와 설명이 포함 된 텍스트의 긴 부분, 솔루션 성명서, 스케치 및 추가 참고 문헌. 이 구조와 레이아웃은 때로 “알렉산드리아 형식”이라고도합니다.

Alexander는 특별한 텍스트 레이아웃을 사용하여 패턴의 다른 섹션을 표시합니다. 예를 들어, problem 문과 솔루션 문은 굵은 글꼴로 인쇄되며, 후자는 항상 “다음”키워드로 시작됩니다. 일부 제작자는 명시 적 레이블을 사용하여 어느 정도의 중복성을 만듭니다.

의미있는 이름
설계가 팀에 의해 수행 될 때 패턴 이름은 그들이 공유 할 수있는 어휘를 형성합니다. 따라서 패턴 이름을 기억하기 쉽고 이해하기 쉽도록해야합니다. 알렉산더의 작품에 나오는 몇 가지 예는 창 장소 (창문이 있어야하는 곳을 정의하는 데 도움이 됨)와 대기실 (예 : 버스 정류장 및 병원 대기실의 특성을 정의하는 데 도움이 됨)입니다.

연관 네트워크에서의 집계 (패턴 언어)
Alexander가 생각한대로 패턴 언어는 한 패턴에서 다른 패턴으로의 링크를 포함하므로 프로젝트에서 하나의 패턴을 적용하려고 할 때 디자이너는 그 문맥에서 도움이되는 다른 패턴으로 푸시됩니다.

알렉산더 (Alexander)의 저서에서 이러한 링크는 “참조”부분에 수집되어 링크 된 패턴의 “컨텍스트”부분에 반향되므로 전체 구조는 유향 그래프입니다. ‘참고 문헌’에 링크 된 패턴은 대개 더 낮은 규모의 문제를 다루며, 이는 더 큰 규모의 문제의 일부로 제안됩니다. 예를 들어 “PUBLIC OUTDOOR ROOM”패턴에는 “STAIR SEATS”에 대한 참조가 있습니다.

패턴 설명 없이도 의미있는 이름과 함께 다음과 같은 메시지가 전달됩니다. 사람들이 시간을 보낼 수있는 장소 이외의 장소 ( “PUBLIC OUTDOOR ROOM”)를 사람들이 앉을 수있는 계단으로 둘러 쌀 것을 고려하십시오 ( “STAIR SEATS “). 사무실 ( “워크숍 및 사무소”)을 계획하고 있다면, 작은 그룹으로 작업 공간을 배치하는 것을 고려하십시오 ( “소규모 작업 그룹”). 알렉산더는 네트워크의 연결이 패턴 자체의 텍스트보다 훨씬 의미 있다고 생각할 수 있다고 주장했다.

알렉산더 (Alexander)의 저서에있는 링크는 분명히 계층 적 네트워크를 형성합니다. 알렉산더는 문법의 계층과 평행을 이룬다. 그것은 패턴 언어에 대해 이야기하는 한 가지 주장이다.

링크의 개념은 패턴 작성자들 사이에서 일반적으로 받아 들여지지만, 링크의 의미 론적 근거는 다양 할 수 있습니다. 그러나 일부 저자는 Gamma et al. 디자인 패턴에서 패턴 연결을 거의 사용하지 않습니다. 아마도 패턴 수집에별로 도움이되지 않았기 때문일 것입니다. 그러한 경우에 우리는 패턴 언어가 아닌 패턴 카탈로그를 말할 것입니다.

용법
알렉산더는 자신의 시스템을 사용하는 사람들이 자신의 패턴으로 자신의 언어를 확장하도록 권장했습니다. 이것을 가능하게하기 위해, 그의 책은 건축이나 토목 공학에 엄격히 초점을 맞추지 않는다. 그는 또한 패턴 언어의 일반적인 방법을 설명합니다. The Book A Pattern의 원래 컨셉은 3- 링 바인더의 형태로 출판 될 것이므로 나중에 페이지를 쉽게 추가 할 수 있습니다. 이것은 출판에서 실용적이지 못하다. 패턴 언어 접근 방식은 다양한 분야의 전문 지식을 문서화하는 데 사용되었습니다. 몇 가지 예는 건축 패턴, 컴퓨터 과학 패턴, 상호 작용 디자인 패턴, 교육 패턴, 사회적 행동 패턴 및 그룹 촉진 패턴입니다. 패턴 언어 접근법은 중요한 공유 문제에 대해 함께 일하는 다양한 사람들과 공동체를위한 행동을 조정함으로써 시민 의식을 촉진하는 방법으로 권장되었습니다. 패턴 언어를 사용하고 새로운 언어를 만드는 알렉산더의 사양은 영향력이 있으며 그의 책은 관련이없는 분야의 전문가가 스타일을 참고하여 참조합니다.

UML이나 플로우 차트 기호 모음과 같은 표기법은 패턴 언어가 아니라는 점에 유의해야합니다. 그들은 알파벳과 더 가깝게 비교 될 수 있습니다 : 그들의 기호는 패턴 언어를 문서화하는 데 사용될 수 있지만, 그들은 스스로 언어가 아닙니다. 레시피 (recipe) 또는 뒤 따르는 일련의 다른 일련의 단계들은 처음부터 끝까지 하나의 정확한 경로만으로도 패턴 언어가 아닙니다. 그러나 새로운 레시피를 디자인하는 프로세스는 패턴 언어의 사용으로 이익을 얻을 수 있습니다.

패턴의 간단한 예
이름 : ChocolateChipRatio
컨텍스트 : 당신은 가족이나 친구를위한 작은 배치로 초콜릿 칩 쿠키를 굽고 있습니다.
먼저 다음 패턴을 고려하십시오. SugarRatio, FlourRatio, EggRatio
문제 : 쿠키 반죽에 초콜릿 칩의 최적 비율을 결정하십시오.
해결책 : 대부분의 사람들은 초콜릿이 초콜릿 칩 쿠키의 가장 좋은 부분이라고 생각하십시오. 너무 많은 초콜릿이 쿠키가 서로 붙잡을 수 없으므로 쿠키의 매력을 감소시킬 수 있습니다. 작은 배치로 요리하기 때문에 비용은 고려 사항이 아닙니다. 그러므로, 튼튼한 쿠키를 만들어내는 초콜릿 칩을 최대한 사용하십시오.
다음을 고려하십시오 : NutRatio 또는 CookingTime 또는 FreezingMethod

유래
건축가이자 작가 인 크리스토퍼 알렉산더 (Christopher Alexander)는 용어 패턴 언어를 만들었습니다. 그는 그것을 사용하여 건물과 마을의 설계와 건설 및 해결 방법에 대한 일반적인 문제를 언급했습니다. 이 책에서 제안 된 해결책에는 도시를 마을에서 어떻게 구성해야하는지부터 방안에 창문을 배치해야하는 곳까지 제안이 포함됩니다.

“패턴 언어”접근법의 기본 틀과 철학은 1970 년 말 캘리포니아 주 버클리에있는 환경 구조 센터의 크리스토퍼 알렉산더 (Christopher Alexander)와 5 명의 동료가 저술 한 “패턴 언어 (A Pattern Language)”책에서 처음 보급되었습니다. 패턴 언어가 첫 번째 패턴 인 “독립적 인 영역”(가장 일반적인 것)에서 마지막까지의 253 가지 “패턴”을 포함하는 반면, 알렉산더 (Alexander)의 책 “시대를 초월한 방법”은 동기 부여와 목적에 대해 더 깊이 들어갑니다 일의. 다음의 “패턴”과 “패턴 언어”의 정의는 A 패턴 언어에서 바꿔 쓰입니다.

“패턴이란 빌딩 컨텍스트 내에서 반복되는 문제에 대한 여러 해답을 세밀하게 묘사 한 것으로 건물에 생명을 불어 넣는 구성 중 하나를 묘사합니다. 각 패턴은 환경에서 반복적으로 발생하는 문제를 설명하고 다음을 설명합니다. 이 문제에 대한 핵심 솔루션은 같은 방식으로 두 번이나 반복하지 않고도 백만 번 이상 솔루션을 사용할 수 있습니다. ”

패턴 언어는 서로를 호출하는 패턴의 네트워크입니다. 패턴은 디자인에 대한 통찰력과 지식을 기억하는 데 도움이되며 솔루션을 생성하는 데 조합하여 사용할 수 있습니다.

응용 프로그램 도메인
크리스토퍼 알렉산더 (Christopher Alexander)의 아이디어는 다른 분야에서 채택되어 왔으며, 종종 패턴 언어 (Pattern Language)의 책에 묘사 된 아키텍처에 대한 패턴의 원래 적용보다 훨씬 더 많이 채택되었습니다. 최근 사례로는 소프트웨어 엔지니어링의 소프트웨어 디자인 패턴과 더 일반적으로 컴퓨터 과학의 아키텍처 패턴과 상호 작용 디자인 패턴이 있습니다. 교육학 패턴은 교수법의 우수 사례를 문서화하는 데 사용됩니다. 2008 년에는 지속 가능성, 민주주의 및 긍정적 인 사회 변화를 촉진하기 위해 정보와 의사 소통을 사용하는 136 가지 패턴을 포함하는 ‘자유 해설의 소리 : 커뮤니케이션 혁명의 패턴 언어’라는 책이 더 많은 패턴을 포함하는 웹 사이트와 함께 출판되었습니다. 갑판 “Group Works : 회의 및 기타 모임에 생명을 불어 넣기위한 패턴 언어”가 2011 년에 출판되었습니다. 최근에는 시스템 아키텍처 디자인에도 패턴이 도입되었습니다. 체스 전략 및 전술에는 수표를 열 때부터 수표에 이르기까지 많은 패턴이 관련되어 있습니다.

Wiki의 발명가 인 Ward Cunningham은 위키와 패턴 언어 간의 깊은 관계가 있으며 “패턴의 효율적인 공유와 수정을 용이하게하는 도구로 개발되었다”고 주장하면서 Michael Mehaffy와 함께 논문을 공동 저술했다.