HOME > 상세정보

상세정보

Elemental design patterns (5회 대출)

자료유형
단행본
개인저자
Smith, Jason McC. (Jason McColm) 김지원, 역
서명 / 저자사항
Elemental design patterns / 제이슨 맥컴 스미스 지음 ; 김지원 옮김
발행사항
서울 :   한빛미디어,   2013  
형태사항
364 p. : 삽화 ; 24 cm
원표제
Elemental design patterns
ISBN
9788968480140
일반주기
객체지향과 디자인 패턴의 연결 고리 ; 2012 졸트상 최종목록 선정  
부록: Rho 계산법(ρ-calculus)  
서지주기
참고문헌(p. 355-359)과 색인수록
일반주제명
Software patterns Software architecture System design
000 01123camcc2200349 c 4500
001 000045757578
005 20130718203322
007 ta
008 130716s2013 ulka b 001c kor
020 ▼a 9788968480140 ▼g 93000
035 ▼a (KERIS)BIB000013189165
040 ▼a 222003 ▼c 222003 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 0 ▼a 005.1 ▼2 23
085 ▼a 005.1 ▼2 DDCK
090 ▼a 005.1 ▼b 2013z2
100 1 ▼a Smith, Jason McC. ▼q (Jason McColm)
245 1 0 ▼a Elemental design patterns / ▼d 제이슨 맥컴 스미스 지음 ; ▼e 김지원 옮김
246 0 9 ▼a Elemental design patterns
246 1 ▼i 판권기표제: ▼a 엘리멘틀 디자인 패턴
260 ▼a 서울 : ▼b 한빛미디어, ▼c 2013
300 ▼a 364 p. : ▼b 삽화 ; ▼c 24 cm
500 ▼a 객체지향과 디자인 패턴의 연결 고리 ; 2012 졸트상 최종목록 선정
500 ▼a 부록: Rho 계산법(ρ-calculus)
504 ▼a 참고문헌(p. 355-359)과 색인수록
650 0 ▼a Software patterns
650 0 ▼a Software architecture
650 0 ▼a System design
700 1 ▼a 김지원, ▼e
900 1 0 ▼a 스미스, 제이슨 맥컴, ▼e
945 ▼a KLPA

소장정보

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.1 2013z2 등록번호 121225991 (5회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

디자인 패턴을 원소주기율표처럼 요소로 분해하고 조합하는 방식을 설명하는 책. 배경 설명, 패턴 인스턴스 표현법 소개, EDP 활용법과 더불어 본격적인 디자인 패턴 소개를 크게 세 부분으로 나눠 기존 GoF 디자인 패턴 책과 같은 카탈로그 형식으로 설명한다.

5장에서는 GoF를 비롯한 모든 패턴의 근간이 되는 EDP를 자세히 설명한다. GoF 디자인 패턴 책과 다른 점이 있다면, 단순히 UML 도표 표현법만 사용한 것이 아니라 패턴 인스턴스 표현법을 병용하여 패턴 구성원의 역할과 관계를 더 이해하기 쉽게 설명한다는 점이다. 그리고 기본이 되는 패턴의 대부분은 각 패턴의 특성에 따라 '디자인 스페이스'라는 3차원 공간에 배치한 그림을 수록해 EDP 간의 상호관계를 한눈에 볼 수 있다. 6장에서는 EDP를 합성해 만든 중간 형태의 패턴을 설명한다. 이 패턴들은 프로그래밍 과정에서 흔히 수행하는 작업을 용이하게 해준다. 7장에서는 EDP를 합성해 기존의 GoF 디자인 패턴 중 몇 가지를 만드는 과정을 설명한다.

[이 책이 제시하는 핵심 내용]
디자인 패턴을 원소주기율표처럼 요소로 분해하고 조합하는 방식을 설명

[어떤 독자를 위한 책인가?]
-. 디자인 패턴을 배우고 사용했으나 원리를 정확하게 이해하지 못하는 독자
-. 디자인 패턴을 습관처럼 사용했지만 응용하지 못하는 독자
-. 디자인 패턴을 깊이 이해하고 싶은 독자

[도서 특징(책 표지 글)]
· 디자인 패턴은 기술인가, 과학인가?
디자인 패턴을 소프트웨어 공학의 구성요소로 볼 수 있는가? 이 분야에 패턴이 적합한지 판단할 수 있는가? 각 패턴이 얼마나 서로 어울리는지 장담할 수 있는가? 패턴은 가져다 쓰기만 하면 되는 냉동식품인가?
패턴을 종합적인 방법으로 접근할 수 없다면 우리는 이에 대한 답을 내릴 수 없다. 엘리멘틀 디자인 패턴은 패턴을 네 가지 카테고리로 나누며, 패턴을 종합적인 관점에서 볼 수 있는 도구를 제공한다.

· 디자인 패턴이 언어의 결점을 보완한다고 믿는가?
언어에 따라 쉽게 구현할 수 있는 패턴이 있고, 이해하기 어려운 패턴이 있다고 어떤 언어가 더 우월한 것은 아니다. 구체적인 개념이 언어 자체 기능으로 들어 있든 구체적인 기능을 개발자가 직접 구현해야 하든, 이는 디자인 패턴과 무관하다. 소프트웨어 설계와 구현은 별개이다. 설계는 개념이고, 개념을 특정 언어로 구체화하는 작업이 구현이다. 다른 언어에서 표현되는 차이를 두고 근본적인 차이라고 오해해서는 안 된다. 이 책에서는 C, C++, Java, Objective-C 등의 다양한 언어로 패턴을 설명한다.

· 디자인 패턴은 암기해야 하는가?
패턴은 문제의 맥락에서 변형하고, 구부려서 틀에 맞추고, 특정 집단의 필요성에 맞출 수 있게 만들어졌다. 원리를 이해하지 못하고 패턴 예제를 그대로 적용하면 잘못된 설계를 저지르기 쉽다. 이 책에서는 원리와 개념을 중심으로 패턴을 설명한다.

[옮긴이 서문]
엘리멘틀 디자인 패턴(이하 EDP)은 말 그대로 화학 주기율표의 각 원소처럼 독립적 특성을 지니며 더 이상 이를 구성하는 작은 패턴이 존재하지 않는 최소 단위로 여겨지는 패턴을 뜻한다. 저자는 책 전반에서 패턴에 대한 각종 개념을 설명할 때 주기율표를 비롯한 화학의 각종 개념에 비유했다.
지금까지 GoF 디자인 패턴은 소프트웨어를 개발하는 데 원칙이 됐다고 해도 과언이 아닐 정도로 개발에 널리 적용되고 있다. 하지만 저자도 첫 부분에 설명하듯이 지금까지는 그 패턴이 어떻게 해서 나왔는지도 모른 채 기계적으로 적용하다 보니, 그 패턴을 확장하거나 자신의 요구에 맞춰 변형해 사용한다는 것은 생각하지 못했다. 또한 특정 패턴을 적용하면 결과가 어떻게 되리라는 것만 아는 상태에서 적용하다 보니 다양한 케이스와 각종 변수를 무시한 채 획일적으로 적용하여 돌이킬 수 없는 오류가 발생하기도 한다. 어떻게 만들어진 패턴인지 유래를 알고 각 패턴을 구성하는 기본 요소들의 상호작용 원리를 이해하면 기존 패턴을 자신의 필요에 맞게 응용할 수 있으며 최소 단위 패턴이라 할 수 있는 EDP를 조합해 더 복잡한 패턴도 새로 만들 수 있다. 실제로 EDP가 만들어진 배경도 기존의 GoF 디자인 패턴을 더 작은 구성 요소 패턴으로 나누어 생각할 수 있었고, 최소 단위 패턴으로 GoF 디자인 패턴 외에도 보편적으로 유용할 만한 새로운 패턴을 만들어낼 수 있음을 발견했기 때문이었다.
이 책은 배경 설명, 패턴 인스턴스 표현법 소개, EDP 활용법과 더불어 본격적인 디자인 패턴 소개를 크게 세 부분으로 나눠 기존 GoF 디자인 패턴 책과 같은 카탈로그 형식으로 설명한다.
5장에서는 GoF를 비롯한 모든 패턴의 근간이 되는 EDP를 자세히 설명한다. GoF 디자인 패턴 책과 다른 점이 있다면, 단순히 UML 도표 표현법만 사용한 것이 아니라 패턴 인스턴스 표현법을 병용하여 패턴 구성원의 역할과 관계를 더 이해하기 쉽게 설명한다는 점이다. 그리고 기본이 되는 패턴의 대부분은 각 패턴의 특성에 따라 '디자인 스페이스'라는 3차원 공간에 배치한 그림을 수록해 EDP 간의 상호관계를 한눈에 볼 수 있다. 6장에서는 EDP를 합성해 만든 중간 형태의 패턴을 설명한다. 이 패턴들은 프로그래밍 과정에서 흔히 수행하는 작업을 용이하게 해준다. 7장에서는 EDP를 합성해 기존의 GoF 디자인 패턴 중 몇 가지를 만드는 과정을 설명한다. 철저히 계산하고 이해하고자 하는 학구파를 위해, 저자들은 부록에 패턴의 합성과 환원 과정을 설명했는데 다소 학술적인 내용이라 어렵게 느껴질 수 있다.
GoF 디자인 패턴 책이 소프트웨어 업계의 교과서가 된지 수년 만에 드디어 새로운 패턴과 함께 그 모든 패턴의 생성 원리와 상호관계 및 상호변환 방법을 섬세하고 이해하기 쉽게 설명한 이 책이 등장했다. 이것으로 기존에 원리를 알 수 없어 그저 암기해서 획일적으로 적용할 뿐 상황에 따라 응용해 적용할 수 없어 답답했던 개발자나, 보편적인 요구에 맞는 패턴이 부족해 개발 효율성을 높이지 못하고 있던 프로그래머 입장에서 이 책은 반가운 선물이다. 새로운 표현이나 개념이 등장해 이 책을 번역하면서 어려움도 있었지만 항상 그렇듯 새로움을 담은 좋은 책을 끝냈을 때 보람을 느낀다. 번역을 마무리하기까지 용어나 개념뿐 아니라 삶에 도움이 되는 많은 조언을 아끼지 않으신 한동훈 과장님께 특히 감사하고, 많은 부족함에도 늘 격려해주신 한빛미디어의 모든 분께 감사하는 마음을 이 글로 전하고 싶다. _김지원

[저자서문]
이 책은 신종 디자인 패턴인 엘리멘틀 디자인 패턴(이하 EDP로 표기함)을 소개하는 개론서다. EDP는 말 그대로 각종 소프트웨어 공학 디자인 패턴의 연구와 응용에 기틀이 된다. EDP의 기반은 비록 소프트웨어 프로그래밍 이론의 구조 자체를 연구한 것이지만, 목적은 실무적이고 실용적인 사용이다. EDP는 초보 프로그래머와 경험 많은 개발자 모두를 위해 제작되었다. 소프트웨어 업계에 발을 들인 학생에겐 소프트웨어 개발에 도움이 되며 연구자에겐 새로운 연구거리를 제공한다. 요약하면, 이 책의 내용을 머리에서 썩히지만 말고 실제로 사용하라는 얘기다.
이 책을 다 읽고 나면 자신의 공구 벨트가 새 연장으로 가득할 것이다. 우리가 일상적으로 사용하는 프로그래밍 기본 개념뿐 아니라, 그 개념들이 서로 어떻게 관계를 맺고 작용하여 놀라운 일들을 해내는지에 대해서도 더 깊이 있게 이해하게 될 것이다. EDP는 자세히 생각하지 않고 반사적으로 사용하게 되는 기본 프로그래밍 개념을 모아 놓은 것이다. 패턴을 만드는 작업의 핵심은 각 패턴에 분명한 설명과 표현법, 토론할 때 부를 수 있는 정형화된 이름, 각 패턴을 연동하고 장점을 비교할 수 있는 뼈대를 제공하는 것이다. 컴퓨터학부 신입생이라면 분량이 많아지고 점점 복잡해지는 디자인 패턴을 보면서 난해하고 이분법적으로 판단해야 하는 부분들 때문에 어려움을 겪는 게 아니라, 오히려 그 패턴을 한 부분씩 차근히 체계적으로 이해할 수 있음을 알게 될 것이다. 그리고 소프트웨어 설계와 패턴에 경험이 있는 사람이라면 기존 방법을 바라보는 새로운 방식을 발견하고 개발 업계 교육의 새로운 가능성을 찾게 될 것이다.
이 책은 독자가 체계적으로 사용하거나 공부하지는 않았지만 잠시나마 디자인 패턴을 사용해본 현장 경험이 있다고 전제한다. 디자인 패턴의 존재를 알고 있으며 디자인 패턴의 정의를 간단히 말로 설명할 수 있는 수준이면 이 책을 읽기에 부족함이 없다. 프로그래밍 언어론, 언어 설계, 객체지향 프로그래밍의 장점 등을 몰라도 되고, 단지 소프트웨어 설계에 대해 비판적으로 생각하는 방법을 배울 의욕만 있으면 된다. 이러한 주제를 더 자세히 공부하려는 사람은 부록에 수록한 참고문헌을 보자. 작은 예제는 UML을 써서 표현했으니, 혹시 UML을 모른다면 참고문헌 [20]이나 [33]을 보자. 이 책을 보려면 적어도 절차지향 프로그래밍이나 객체지향 프로그래밍에 대한 기초가 있어야 한다. 기왕이면 객체지향 프로그래밍의 기초를 알고 있으면 더 좋지만 필수적인 것은 아니다. 이 책은 객체지향 프로그래밍을 설명하는 데 필요한 지식의 대부분을 이해하기 쉬운 분량으로 나눠 다루고 있기 때문이다. 객체지향 프로그래밍에 경험이 있는 개발자라 하더라도 이 책의 내용은 여전히 신선할 수 있다. 이미 오래 전에 마스터했다고 생각한 개념들을 새로운 관점으로 보게 되고 객체지향 프로그래밍 전반에 새삼 고마움을 느끼게 되기 때문이다.
많은 프로그래머가 '디자인 패턴 커뮤니티'를 소수 전문가 집단으로 생각하며 자신들은 거기에 속하지 않는다고 생각한다. 이 책은 무엇이 디자인 패턴이 될 수 있는지에 관해 독자의 새로운 안목을 키워주어 모든 프로그래머가 자각하든 아니든 디자인 패턴 커뮤니티의 일원이라는 확신을 준다. 모든 프로그래머는 한 줄의 코드를 작성할 때마다 무의식적으로 디자인 패턴을 사용한다. 자기 마음대로 선택할 결정권이 있다는 사실도 모를 가능성이 높다. 디자인 패턴은 소프트웨어 개발 업계를 이루는 일렉트로닉의 꿈을 기록하는 개념적인 공유 공간이다. 이제 우리가 일하고 즐기는 곳의 풍경 지도를 손에 넣어야 한다.
매우 유명한 GoF 디자인 패턴 책에서처럼 이 책도 두 부분으로 나눴다. 첫 번째 부분은 이 책을 쓴 계기와 EDP의 정의, 유래, 중요성에 대한 설명으로 구성된다. 이 부분은 EDP를 만든 이유를 설명한다. 두 번째 부분은 다양한 세분도 granularity 에서 패턴 사용을 위한 도식 표현 체계인 패턴 인스턴스 표현법 PIN 을 소개하는 내용이다. 요약하면, 첫 번째 부분은 여러 EDP를 합성해서 더 복잡한 디자인 패턴으로 만드는 방법이다. 두 번째 부분은 EDP 패턴, 두 패턴을 합성해 만든 중급 패턴, GoF 디자인 패턴을 개조해 만든 EDP 합성 패턴을 순서대로 나열한 디자인 패턴 카탈로그다. 소프트웨어 공학 커뮤니티는 근본 개념들이 확고히 뿌리를 내리면 더 많은 EDP를 추가로 정의하고 다듬는 일을 계속해 나갈 것이다. 여러분도 이러한 노력에 보탬이 되어주면 좋겠다.
우리 커뮤니티의 일원이 된 것을 환영한다. _제이슨 맥컴 스미스


정보제공 : Aladin

저자소개

제이슨 맥컴 스미스(지은이)

노스 캐롤라이나 대학에서 컴퓨터 과학 전공 박사 학위를 받았고 수년간 물리학 시뮬레이션 기사 겸 컨설턴트로 일했으며 물리학과 수학 전공으로 복수 이학사 학위를 취득했다. 주요 프로젝트로는 수중 음파탐지기와 해양 환경 시뮬레이션, 전자공학 시뮬레이션, 민간/군용 항공기 시뮬레이션, 실시간 그림 교육 시스템 등이 있다. 이후 그가 맡은 SPQR(패턴 질의/인식 시스템) 프로젝트의 일부가 엘리멘틀 디자인 패턴의 모체가 됐다. UNC-CH에서 이뤄진 연구에 대해 두 개의 미국 특허(SPQR 관련 기술, FaceTop 분산 문서 협업 시스템)를 획득했다.

김지원(옮긴이)

웹 기술뿐 아니라 온갖 분야에 발을 뻗고 싶어하는 바람기를 지녔지만 역부족이다. 배워야 할 것이 갈수록 늘어나 시간의 결핍을 느낀다. 기술 문서, 매뉴얼, 유비쿼터스 관련 논문을 번역한 바 있고 해외 논문 DB 구축에 필요한 관련 작업에도 참여했다. 『한 권으로 끝내는 정규표현식』(한빛미디어, 2010), 『웹 표준 가이드: HTML5+CSS3』(한빛미디어, 2010), 『프로젝트로 배우는 HTML5+자바스크립트』(한빛미디어, 2012), 『리팩토링』(한빛미디어, 2012), 『엘리멘틀 디자인 패턴』(한빛미디어, 2013) 등을 번역했다.

정보제공 : Aladin

목차

목차
서문 = 4
옮긴이의 말 = 8
추천사 = 10
CHAPTER 1 디자인 패턴 개론 
 1.1 집단적 미신 = 19
 1.2 기술인가 과학인가 = 23
  패턴은 암기해야 한다는 관점 = 24
  패턴이 언어에 종속된다는 관점 = 25
  미신을 버리고 과학으로 = 27
CHAPTER 2 엘리멘틀 디자인 패턴 
 2.1 유래와 배경 = 30
 2.2 어디에, 어떻게, 왜 = 33
  데커레이터 패턴 해부하기 = 34
  심도 있는 주제들 = 37
  문맥 = 48
  디자인 스페이스 = 52
 2.3 주요 EDP = 63
 2.4 이 장의 포인트= 65 
CHAPTER 3 패턴 인스턴스 표현법, PIN 
 3.1 기본 표현법 = 67
 3.2 PIN 박스 = 72
  단순 PIN 박스 = 72
  표준 PIN 박스 = 74
  확장 PIN 박스 = 78
  이층 PIN 박스와 다중 연결성 = 81
  박피와 통합 = 84
 3.3 이 장의 포인트 = 88
CHAPTER 4 EDP 활용하기 
 4.1 패턴의 합성 = 89
  동위원소 = 95
 4.2 데커레이터 패턴 새로 만들기 = 100
 4.3 리팩토링 = 113
 4.4 전체 구도 = 124
 4.5 부록은 왜 읽어야 하나 = 129
 4.6 고급 주제 3가지 = 131
  집중적인 문서화와 교육 = 131
  지표 = 132
  절차적 분석 = 135
 4.7 이 장의 포인트 = 135
CHAPTER 5 EDP 카탈로그 
 객체 생성(Create Object) = 139
 가져오기(Retrieve = 149
 상속(Inheritance = 154
 추상 인터페이스(Abstract Interface) = 165
 위임(Delegation) = 171
 리디렉션(Redirection) = 177
 병합(Conglomeration) = 185
 되부름(Recursion) = 191
 메서드 되돌림(Revert Method) = 199
 메서드 확장(Extend Method) = 209 
 병합 위임(Delegated Conglomeration) = 215
 되부름 리디렉션(Redirected Recursion) = 222
 위임 신탁(Trusted Delegation) = 230
 리디렉션 신탁(Trusted Redirection) = 238
 위임 대행(Deputized Delegation) = 245
 리디렉션 대행(Deputized Redirection) = 252
CHAPTER 6 중간 합성 패턴 
 약정 이행 메서드(Fulfill Method) = 262
 새 객체 가져오기(Retrieve New) = 267
 공유 객체 가져오기(Retrieve Shared) = 272
 객체화 클래스(Objectifier) = 277
 객체 되부름(Object Recursion) = 285
CHAPTER 7 GoF 합성 패턴 
 7.1 생성 패턴 = 292
  추상 팩토리(Abstract Factory) = 292
  팩토리 메서드(Factory Method) = 297
 7.2 구조 패턴 = 300
  데커레이터(Decorator) = 300
  프록시(Proxy) = 300
 7.3장 기능 패턴 = 306
  책임 연쇄(Chain of Responsibility) = 306
  템플릿 메서드(Template Method) = 308
 7.4 이 장의 포인트 = 313
부록 A. Rho 계산법(p-calculus)
 A.1 의존 연산자 = 316
 A.2 이행성과 동위원소 = 319
 A.3 유사도 = 321
 A.4 EDP 공식 = 322
 A.5 합성 공식과 환원 공식 = 326
 A.6 패턴 인스턴스 표현법과 역할 = 329
 A.7 EDP 정의 = 330
  객체 생성(Create Object) = 330
  가져오기(Retrieve) = 332
  상속(Inheritance) = 333
  추상 인터페이스(Abstract Interface) = 334
  위임(Delegation) = 334
  리디렉션(Redirection) = 335
  병합(Conglomeration) = 335
  되부름(Recursion) = 336
  메서드 되돌림(Revert Method) = 336
  메서드 확장(Extend Method) = 337
  병합 위임(Delegated Conglomeration) = 338 
  되부름 리디렉션(Redirected Recursion) = 338
  위임 신탁(Trusted Delegation) = 339
  리디렉션 신탁(Trusted Redirection) = 340
  위임 대행(Deputized Delegation) = 341
  리디렉션 대행(Deputized Redirection) = 342
 A.8 중간 합성 패턴 정의 = 343
  약정 이행 메서드(Fulfill Method) = 343
  새 객체 가져오기(Retrieve New) = 344
  공유 객체 가져오기(Retrieve Shared) = 345
  객체화 클래스(Objectifier) = 346
  객체 되부름(Object Recursion) = 347
 A.9 GoF 합성 패턴 정의 = 348
  추상 팩토리(Abstract Factory) = 348
  팩토리 메서드(Factory Method) = 349
  데커레이터(Decorator) = 350
  프록시(Proxy) = 351
  책임 연쇄(Chain of Responsibility) = 352
  템플릿 메서드(Template Method) = 353
부록 B. 참고문헌
 찾아보기 = 360

관련분야 신착자료

Harvard Business Review (2025)