이미 소장하고 있다면 판매해 보세요.
|
01장 패턴
1.1 패턴이란 무엇인가? 1.2 패턴은 무엇으로 구성되는가? 1.3 패턴 카테고리 1.4 패턴 간의 관계 1.5 패턴 서술 1.6 패턴과 소프트웨어 아키텍처 1.7 요약 02장 아키텍처 패턴 2.1 입문 2.2 혼돈에서 질서로 Layers 아키텍처 패턴 Pipes and Filters 아키텍처 패턴 Blackboard 아키텍처 패턴 2.3 분산 시스템 Broker 아키텍처 패턴 2.4 상호작용 시스템 Model-View-Controller 아키텍처 패턴 Presentation-Abstraction-Control 아키텍처 패턴 2.5 적응 시스템 Microkernel 아키텍처 패턴 Reflection 아키텍처 패턴 03장 디자인 패턴 3.1 입문 3.2 구조 분해 Whole-Part 디자인 패턴 3.3 작업 조직화 Master-Slave 디자인 패턴 3.4 액세스 제어 Proxy 디자인 패턴 3.5 관리 Command Processor 디자인 패턴 View Handler 디자인 패턴 3.6 통신 Forwarder-Receiver 디자인 패턴 Client-Dispatcher-Server 디자인 패턴 Publisher-Subscriber 디자인 패턴 04장 이디엄 4.1 입문 4.2 이디엄은 무엇을 제공하는가? 4.3 이디엄과 스타일 4.4 이디엄은 어디서 찾을 수 있나? Counted Pointer 이디엄 05장 패턴 시스템 5.1 패턴 시스템이란 무엇인가? 5.2 패턴 분류 5.3 패턴 선택 5.4 구현 가이드라인 역할을 하는 패턴 시스템 5.5 패턴 시스템의 발전 5.6 요약 06장 패턴과 소프트웨어 아키텍처 6.1 입문 6.2 소프트웨어 아키텍처에서의 패턴 6.3 소프트웨어 아키텍처의 원천 기법들 6.4 소프트웨어 아키텍처의 비기능적 특성 6.5 요약 07장 패턴 커뮤니티 7.1 선각자들 7.2 지도적 인물과 그들의 업적 7.3 커뮤니티 08장 패턴의 미래 8.1 패턴 발굴 8.2 패턴 조직화와 패턴 색인 8.3 방법론과 툴 8.4 알고리즘, 자료 구조, 패턴 8.5 패턴의 형식화 8.6 맺으며 표기법 용어집 참고자료 패턴 인덱스 |
|
‘포사(POSA)’라는 약칭으로 널리 알려진, 이 번역의 원서인『Pattern-Oriented Software Architecture, Volume 1: A System of Patterns』는 지금으로부터 11년하고도 반년 전인 1996년 8월에 출간되었습니다. 2007년 ‘POSA 5’에 해당하는『Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages』의 발간으로, 모두 다섯 권분량의 POSA 시리즈는 약11년 동안의 긴 노정을 끝으로 대단원의 막을 내립니다. POSA 5의 서문에서 저자들은, POSA 1 집필 당시 언급했던 ‘패턴 언어(pattern language)’라는 시도를 전체 시리즈를 통해 보여 주었으며 최초 기획했던 목표를 달성했음을 밝히고 있습니다. 물론 저자들의 성과에 대해 동의하는 독자도 있는 반면, 동의하지 않는 독자도 있으리라 생각됩니다. 저자들의 목표는 이 세상에 있는 모든 소프트웨어 패턴을 사전처럼 수집하거나 관련 담론들을 모조리 정리하는 데 있지 않았습니다. 개별 패턴에 대한 구체적인 설명보다는 ‘패턴 간의 관계’와 ‘패턴의 개념’에 주목하면서 ‘패턴 언어’라는 세계를 입증해 내려는 시도가 그들의 목표였습니다.
지금 이 글을 쓰고 있는 2008년 벽두, ‘GoF의 디자인 패턴’을 낯설게 여기는 IT 업계 종사자는 거의 없으리라 생각합니다. 에리히 감마(Erich Gamma)를 위시한 소위 ‘GoF(Gang-of-Four)’라는 네 거장의 의기투합으로 1994년 『디자인 패턴(Design Patterns)』이 세상에 선보인지 어언 13년이지 났습니다. 이『디자인 패턴』의 한글 번역서가 출간된 2002년부터 계산해보더라도 벌써 5년 반이 되어옵니다. 이제는『디자인 패턴』의 내용을 다룬 설명서나 응용서도 서점 서고의 한 코너를 차지할 만큼 여러 종류가 나왔습니다. 결정적으로『디자인 패턴』을 쉽게 접근하는 데 가장 성공한 초유의 베스트셀러, 『Head First Design Patterns』의 출간은 바야흐로 디자인 패턴의 대중화 시대를 열었다고 평가할 만합니다. 영어권의 많은 독자들, 그리고 원서로 POSA 시리즈를 접한 국내 독자 대부분은 ‘POSA 1’과 ‘GoF의 디자인 패턴’을 비교하곤 합니다. 이 두 책을 두고서 우열을 가리기도 하고 선후를 따지기도 합니다. 혹은 상호보완을, 혹은 비교불가를 주장하기도 합니다. 평가의 다양한 시각은 대체로 개인의 학습경험과 목적에 따라 다양하게 나타납니다. 어떤 비교의 시각이 옳은지에 대해서는 잠시 접어두고서 이런 비교 심리의 근저에 주목한다면, 그 만큼 두 책이 가진 영향력과 파장이 강력하다는 사실을 반증한다고 하겠습니다. 마치 이종격투기에 열광하는 심리처럼 비교 자체가 불공정함에도 불구하고 기어이 양자를 한 자리에 대결구도로 세우려는 욕망을 부추길 정도로 말입니다. 논거가 불공정하면 불공정할수록, 분위기가 극단적이면 극단적일수록, 관람객이 많으면 많을수록, 논쟁은 빠르게 양자의 차이를 드러내주면서도 다시 접점을 향해 치닫습니다. 영어권에서 거의 10여년에 걸쳐 진행된 두 책에 대한 비교평가 과정을, (비록 과격 양상을 보이고 인신공격성 발언이 난무하더라도) 국내에서는 소모적인 갑론을박을 10개월 정도로 압축해준다면 더 할 나위없을 것입니다. 그런 양상의 논쟁 흐름은 (그야말로 누군가가 심하게 상해를 입는 경우만 아니라면) 차라리 생산적이고 패턴에 대한 우리의 성숙도를 한 단계 올려 줄 것이기 때문입니다. ‘고전(classic)’이라 칭송되는 지적 업적들은 그것이 받아들여지는 시기마다 다양한 관점에서 상이하게 평가됩니다. 기본적으로 고전의 주요한 특징 중 하나로 우선 보편성을 꼽습니다. 하지만 지나치게 보편성에 무게가 실릴수록 개인의 상상력과 창조력을 억제시키기 마련입니다. 해석의 다양성마저 거세된 보편적 지식은 수용자의 입장에선 수동적인 숙지(熟知)의 대상일 뿐이지 능동적인 반성(反省)의 대상은 아닙니다. 진정한 고전은 (고전의 저자가 내심 그런 의도를 가지고 작성했든 그렇지 않고 작성했든 여부와 상관없이) 각 시기의 정신적 패러다임이 변해감에 따라 풍부하게 반성될 여지를 지니고 있어야 합니다. 고전의 내용은 시대마다 국가마다 문화마다 각기 다른 수용 여건에 따라 스스로 생명력을 얻어 자가발전과 자가증식을 해나가며, 유사한 해석을 시도하는 수용자들끼리 담론을 형성하고 각기 다른 해석을 하는 수용자들 간에 대해 논쟁을 유발시킵니다. 결국 최초 내용 자체는 수용자들의 능동적인 해석과 그에 따른 행동을 촉발시키는 계기가 되며 새로운 무엇인가를 생성시키는 창조력의 근원이 됩니다. 고전의 이런 특징을 가리켜 ‘열린(open) 텍스트’라고 합니다. 대게 런 고전들은 그 자체로 명징하게 ‘뼈대’를 이루었음에도 불구하고 수용자의 시각과 의도에 따라 풍부한 ‘살’을 붙여나갈 수 있는 상상력의 여지를 남겨줍니다. 그러므로 진정한 고전에 대한 평가는 항상 현재진행형입니다. 지속적으로 회자되고 재해석되며 재평가됩니다. 어제 내려진 평가는 오늘 다시 재고되고 내일 다시 비판됩니다. 이 책에서 다루고 있는 패턴들 중 일부는 이미 자가발전과 자가증식의 과정을 거치면서 원형으로부터 그 유사성을 파악할 수 없을 만큼 무섭게 발전해가고 있습니다. 어떤 일부는 특정 소프트웨어 시스템 내의 기본 구성요소처럼 혹은 특정 프로그래밍 언어에서 제공하는 기능처럼 인식될 만큼 보편화되었습니다. 이렇듯 출간된지 11년 반이 되어오는 이 책의 내용 자체를, 현재 시점에서 액면가 그대로 접근하는 시각은 분명 시대착오적인 태도일 것입니다. 그렇다고 반대로 '고고학적' 시각으로 접근해야 한다는 의미는 아닙니다. 적극적으로 과거와 질문하고 대화하면서도 현재 각자 나름의 목표, 위치, 수준에 맞게 능동적으로 상상력과 창조력을 발휘하는 태도야말로, 패턴의 창시자인 크리스토퍼 알렉산더가 주창하는, 그리고 POSA 저자들이 시도했던 ‘패턴 언어’를 구사하는 수사법이라 생각합니다. 소프트웨어 세계에서 패턴이 본래 한 개인의 창조물이나 소유물이 아니듯 이 번역서 역시 제 개인 혼자만의 작업이 되지 않기를 기대했습니다. 번역 의뢰를 받았을 당시부터 공동작업을 진행하기 위해 회유와 협박으로 주변 지인들을 집요하게 괴롭혔으나, 아쉽게도 조기 무산되거나 중도 하차를 겪고 말았습니다. 악전고투 끝에 번역 초벌을 마무리한 시점에 이르러서야 데브피아(www.devpia.com)의 아키텍처(Architecture) 포럼 내 Eva 팀과 인연이 닿았습니다. 첫 단추를 제대로 끼웠어야 옳았겠지만 마지막 단추에서라도 다시 추스를 수 있었으니 천군만마를 얻은 심정이었습니다. 손영수님을 필두로 한, 아키텍처 포럼 내 Eva 팀에서는 그동안 수차례 POSA 1 원서를 가지고 스터디를 진행해왔습니다. 이분들을 중심으로 POSA 감수팀이 구성되었고 그동안 쌓인 공력을 여실히 발휘하면서 제 번역의 문제점들을 꼼꼼히 지적해주셨습니다. 모래에서 사금을 ‘모조리’ 채취해내는 일보다 쌀을 일어 쭉정이를 ‘남김없이’ 걷어내는 일이 어쩌면 더 불가능에 가까울지 모릅니다. 제 번역 초벌 속에 흩뿌려진 오역들을 ‘완전히 ’걷어내는 일은 감수팀에게 맡겨진 본래 역할은 분명 아닙니다. 엄밀히 말해 검수자(檢收者)란 품질의 수준을 평가하는 역할을 맡고, 감수자(監修者)는 책 전체의 방향을 지도하고 감독하는 역할을 맡는 것이지, 품질의 수준을 상향시키는 역할은 어디까지나 번역자의 책임입니다. 그럼에도 불구하고 POSA 감수팀 여러분은 역자와 함께 품질 향상에 직접 노고를 들였으니, 독자이자 검수자, 감수자, 심지어 공역자의 역할까지 감내해주셨습니다. 책에서 다루는 주제의 깊이와 폭에 허우적대다 자맥질 끝에 수차례 마셔버린 오역의 물을 게워내도록 도와주신 Eva의 POSA 감수 팀 여러분께 감사의 말씀을 전합니다. 결과적으로 책이 간직한 원석을 잘 세공해 매끄럽게 전달한 부분들은 모두 이분들의 공로입니다. 그럼에도 원석의 거친 단면을 그대로 드러내 불쾌함을 전달한 부분들은 어디까지나 제 불찰입니다. 행여 오역으로 인해 제가 받아야할 비난의 화살이 Eva 팀원들게 돌아가는 누를 끼치지 않길 바랍니다 --- 역자의 말 |
|
[감수자의 말]
손영수 / 데브피아 아키텍트 시샵 / Eva 스터디 리더 [GoF의 디자인 패턴]이 한글로 번역되어 출간된 지 어느덧 6년이 흘렀습니다. 국내에 수많은 패턴 관련 책이 출간되어 있음에도 불구하고, 대부분이 24개의 GoF 패턴에만 국한되어 있어, 국내 개발자들의 패턴 지식 역시 GoF에 국한되어지는 상황이 발생되었습니다. 실제 원서를 기준으로 보았을 때, 아키텍팅 패턴 지침인 POSA 1권은 패턴의 초시인 GoF 책이 나온 후 불과 1년 뒤에 연이어 나왔지만, GoF 패턴과 객체지향의 배경지식 없이는 이해하기 어려울 뿐더러 GoF와 어깨를 나란히 하는 명저다보니 그 누구도 쉽사리 번역을 할 수 없었습니다. 이로써 국내의 패턴 지식의 대중화는 GoF에 정체되어 있었다고 할 수 있다고 해도 과언이 아니었습니다. 김지선님의 2년여 간의 긴 번역작업으로 인해 훌륭한 초벌 작업이 완성되었고, 팀이 되어 3개월에 거쳐 개인적인 주말과 여가 시간을 바쳐가며 꼼꼼한 감수 작업을 같이 진행해준 Devpia A&D Eva 식구들의 노력으로 인해, 드디어 POSA1 한글판이 세상에 나오게 되었습니다. 말도 안 되는 데드라인, 무분별한 프로세스, 건설업의 폐해, 많은 야근을 해가며 하나의 예술적 작품을 만들기 위해 노력하는 이 땅의 개발자들에게, 이 번역서가 창조적이며 견고한 소프트웨어를 만들 수 있는 씨앗이 되길 바랍니다. 세상의 모든 소프트웨어 설계자를 위한 책. 설계 기간을 최소한으로 줄이고 싶다면 이 책을 보라! 소프트웨어 패턴은 개발자들이 소프트웨어를 설계하고 구축하며 문서화하는 방법에 대변혁을 가져왔다. POSA 시리즈로 가장 먼저 선보인 이 책은 현명한 프로그래머라면 자신의 서가에 반드시 구비해 두어야 할 책이다. “이 책은 ①(C++처럼 특정 프로그래밍 언어에서만 사용되는) 이디엄에서부터 ②디자인 패턴 그리고 ③상위 수준 패턴까지, 각 수준에 따라 패턴을 어떻게 적용할 것인지를 제시해준다. 소프트웨어 개발을 바라보는 한결 넓은 안목을 지니기 위해 패턴의 잠재력에 기대를 걸고 있었다면, 이 책을 통해서 전체 소프트웨어 개발 주기를 한층 개선시킬 수 있는 혜안을 얻을 것이다.” “이 POSA 책은 [GoF의 디자인 패턴]에 필적할 만한 책으로, POSA와 GoF는 패턴 서적의 양대 산맥을 이룬다 해도 과언이 아니다. [디자인 패턴]을 읽었다면 그 다음에 읽어야할 필독서!” “이 책이야말로 진정 ‘패턴’ 책이다! [GoF의 디자인 패턴]이 프로그램 세계에 빛을 비춘 이후 10년 사이에 가장 중요한 프로그램 서적으로 이 POSA 책을 꼽아야 할 것이다. 어쩌면 [디자인 패턴]보다 더욱 깊이 있고 한결 완성된 내용을 담고 있다고 감히 주장하고 싶다.” [감수팀 소개] A&D Eva 국내 최대 개발자 커뮤니티인 Devpia에서 가장 왕성한 Architecture 포럼(http://www.devpia.com/AnD.MAEUL)에서 활동하고 있는 커뮤니티로, 좋은 SW를 만들기 위한 작은 꿈을 가진 이부터, Architect가 되기 위한 큰 꿈을 가진 이까지, 지식을 나누고 공유할 때는 누구보다 부유한 개발자들이 모인 스터디그룹입니다. [저자의 말] 이 책은 ‘패턴 자체’에 대해 다룰 뿐만 아니라 ‘소프트웨어 아키텍처를 위한 패턴’도 다루고 있다. 또한 소프트웨어 개발 분야에서 일하는 초보자와 전문가 모두에게 도움이 될 수 있기를 바라며 기획되었다. 다년간 경험을 쌓지 못한 초보자일지라도 소규모 프로젝트에서 거의 전문가 수준의 역할을 발휘할 수 있도록 해주며, 대규모 복잡한 소프트웨어 시스템을 디자인해야 하는 전문가에게는 검증된 틀을 제공하도록 말이다. 필자들은 패턴을 문서로 작성하는 나름의 서술 양식이 점차 나아지면서 오히려 필자들은 서술 양식보다는 개별 패턴이 결코 제각각 고립되어 있지 않다는 사실에 관심을 가지게 되었다. 다시 말해 패턴들은 서로 상호관계를 맺으며 거대한 하나의 집합을 이룬다는 사실이었다. 바로 이것이 이 책을 쓰게 된 동기다. 이 책의 주요 내용은 GoF 책과 많은 부분 유사하며 몇몇 부분은 겹치기도 하지만 조금 다른 면이 있다. GoF 책은 디자인 수준의 패턴에 집중하고 있는 반면, 이 책에서 제시하는 패턴은 몇 가지 추상 수준에 걸쳐있다. 그 범위는 ①상위수준의 아키텍처 패턴에서부터 ②디자인 패턴을 거쳐 ③하위수준의 이디엄까지 아우른다. 또한 객체 지향에 관한 내용을 넘어선 주제에 대해서도 주목을 하고 있는데, 이에 대한 통찰은 패턴 서술 기법에서 구체화하고 있다. 이 연구에 참여한 필자들의 공동 목표는 더욱 폭넓은 범위까지 아우르는 소프트웨어 아키텍처 패턴을 정립하는 것으로, 이 방법을 패턴 지향 소프트웨어 아키텍처(pattern-oriented software architecture), 혹은 줄여서 POSA라 칭하기로 했다. 또한 필자들은 패턴 시스템(pattern system)이라는 방법도 시도하고 있는데, 추상적인 기준에 따라 성격이 다른 상위 항목 아래 여러 패턴을 모아두지 않고, 구체적인 기준에 따라 패턴들을 분류하는 방법이다. GoF 책에서 처음으로 패턴을 생성 패턴, 구조 패턴, 행위 패턴, 이렇게 세 가지로 분류했다. 이 책에서는 한 걸음 더 나아가 상호작용 시스템, 적응 시스템, 작업 조직화, 통신, 액세스 제어 등 좀 더 기술적 기준에 따라 세분하여 패턴을 분류하고 있다. |