저를 비롯한 많은 개발자 분들이 .NET 또는 Java 플랫폼에 너무 익숙해진 것은 아닌가요?
어느새 혹시 나의 코드보다는 남의 코드를 찾아서 헤매 다니고 있진 않나요?

그렇게 되는 대부분의 이유는 회사가 중요시하는 데드라인으로 인해
어떠한 문제나 새로운 창작물을 만들기 위해 개발자로써의 창의적이며 고심한 소스코드보다는
스파게티 코드를 만들 수 밖에 없는 현실이 너무나 안타깝습니다.

정작 회사는 "아키텍트"가 없다고 부르짖고 있지만,
직원들이 아키텍트로 성장할 수 있는 그러한 체제는 갖추지는 않은 체,
한분야의 일을 깊게 다루기 보다는 이것 저것 여러 분야를 다룰줄 아는 그런 사람을 요구하는 상황을 만든 회사들이,  아키텍트가 없다고 말하는 것은 .. 참 아이러니 한 애기입니다.

비록 너무 힘든 방법이지만
휼룡한 아키텍트가 되기 위해서는 잘 설계된 아키텍쳐를 공부하고,
그것을 내 것으로 만들기 위해 끊임없는 학습을 하는 것 외에는 방법이 없는거 같습니다.

오늘 여러분과 좋은 아키텍쳐에 대해 조그만 공유를 하고자 합니다.

사용자 삽입 이미지

Douglas Schmidts 교수님

제가 존경하는 POSA2의 저자 Douglas Schmidts 교수님이
90년대 후반에 발표한 논문인
JAWS : A Framework for High Performance Web Server에 대한 자료를
여러분에게 공개하고자 합니다.

고성능 웹서버를 만들기 위해서 어떠한 요소를 고려해야되며, 어떠한 패턴들을 조합해서 사용했는지 아주 유용한 자료가 있습니다.

ACE, TAO (OpenSource CORBA)를 만들고 패턴계의 거룩한 서적인 POSA2 를 만든 분인 만큼 그분의 Architecting 능력은 이미 검증되어 있습니다.

거기다 패턴 Conference 인 PLOP 에서도 편집장등 여러가지 일을 하셨기 때문에 더이상 말이 필요없으리라 봅니다. 

참고로 위 Schmidts 교수님의 홈페이지에 방문하시면
객체 지향, RealTime, 분산 객체, 패턴등에 대한  다양한 정보를 습득하실 수 있습니다.

이분의 논문을 열심히 공부해서 제가 아래와 같은 발표 자료를 만들었습니다.
여러분에게 공개하니 다운 받으셔서 사용하기 바랍니다.

사용자 삽입 이미지

JAWS TP


그리고 더불에 또 하나의 보너스인 동영상 강좌를 공개합니다.
제가 EvaCast 에 공개를 해 놓았습니다.






Posted by 빵수

Yahoo Design Patterns

2008.02.22 22:35

아래 사이트에 가면 Yahoo에 쓰이는
Design
적인 요소와 기능적인 요소들의 공통점을 Pattern으로 뽑아내서 그것들을 나열해 놓고 있습니다.

GoF Design Pattern은 정리를 해 놓아도 난잡하고 전달해 주기가 어려운 부분이 있었는데,
그런 부분을 보완해 줄수 있는 부분을 Yahoo Design Pattern Library에서 벤치 마킹이 가능할 듯 합니다.

 

Yahoo Design Pattern에 있는 Pattern들의 예를 보면 툴팁은 0.25이내에 떠야 한다던가,
Hover
기능이 구현될 때 주지하고 있어야 할 점과 같은것들을 다루고 있는데요.

 

모든 요소들이 공통적이고 정리가 잘 되어 있으면서, 해당 기능 관련 AJAX코드도 들어 있는데, 코드도 정교하게 잘 만들어 놨고, 쉽게 가져가서 구현할 수 있도록 해 놓았습니다.

 

http://developer.yahoo.com/ypatterns/

http://developer.yahoo.com/ypatterns/atoz.php 

 

사용자 삽입 이미지

http://developer.yahoo.com/ypatterns


아래 사이트에 가면 Implementing a Pattern library in the Real world : A Yahoo! case study 라는
논문이 있는데, Yahoo Design Pattern Library를 뽑아 내는 전체적인 과정과 내용, 적용하는 과정들이 step 형식으로 잘 나와 있습니다.

논문에 쓰인 그림 하나하나, 혹은 글의 흐름 하나하나가 GoF Design Pattern 처럼 코드의
디자인 패턴을 추출하는 과정과 유사 하군요.

 

http://leacock.com/patterns/leacock_malone_wheeler.pdf

 

 

아래 링크는 Yahoo User Interface Blog

http://www.yuiblog.com/

Posted by Intent

Pattern이라는 분야에서 GoF의 Design Pattern이 가지는 의미는 매우 귀중하다.

사용자 삽입 이미지

GoF Design Pattern

학회에서나 애기되어지고 있는 Pattern이라는 것들을 일반인 들에게 알리는 하나의 신호탄 같은 존재인 것이다.

오늘 이 중요한 Design Pattern의 두번째 Principle에 대한 몇가지 오해들을 정리해 보고자 한다.

Favor Object Composition over Class Inheritance

이 말의 의미는 원문 그대로 해석을 한다면 클래스 상속보다는 객체 조합을 선호해라 라는 애기다.

그런데 대부분의 시중에 나와 있는 책들이 상속보다는 조합을 선호하는 것으로 의미를 파악하고 애기를 하고 있다.

과연 이것이 맞는 말일까?


4년 동안 거의 패턴에 대한 책들을 본 경험을 들어 볼때, 상속이라는 것은 모든 패턴에 사용되고 있었다. 

디자인 패턴의 첫번째 원칙인 Program to an interface, not to an implementation 에서도
Program은 인터페이스 지향적으로 짜야 된다는 의미가 나와 있고,
이것은 곧 상속을 의미하는데 왜 상속보다 구현을 선호하라고 했을까?

지금 한번 패턴책을 펴보길 바란다.

어느 패턴이라도 인터페이스 상속을 받지 않은 패턴을 찾기 힘들 정도 인데
과연 상속 보다 조합을 선호하는 이분법적인 사고가 맞는 걸까?

필자는 그래서 짧은 영어 실력으로 Favor Object Compoistion over Class Inheritance를
클래스 상속을 기반으로한 객체 조합을 선호해라 라는 의미로 해석을 시도했다.

상당히 그럴싸 하지 않은가?  물론 필자의 영어 실력이 그리 뛰어난 편은 아니지만
왠지 상속을 기반으로 한 조합 이라는 의미를 부여했을때, 좀더 GoF Design Pattern에 맞게 해석된것 같이 느낄수가 있었다.

그리고 필자는 계속 스터디를 하면서 이 생각이 맞다고 결론을 내리고 있었다.
그런데 컴퓨터 분야에 유명한 번역가이신 분에게 반론이 들어왔다.

Favor Object Composition over Class Inhertance는  클래스 상속보다는 객체 조합을 선호해라 라는 의미가 맞다고.  그분이 워낙 컴퓨터 영역에서는 전문가 이시라.
여러가지 예를 들며 애기를 온라인 상으로 나누게 되었다.

그런데 대학원에서 분산 객체와 패턴을 전공으로 하고, 스터디를 2년동안 해왔는데.
과연 저말이 맞는 걸까? 상속보다 객체 조합이 훨씬 나은 거라고 말할수 있는 걸까?

왜냐면 객체지향 초기에 가장중요시 여기는 개념은 재사용성(Reusability )였다.

하지만 지금은 워낙 시스템이 방대해지고 잦은 변화가 발생하다보니 유연성(Reflexiblity)이 더 중요한 개념으로 여겨지고 있다.

유연성을 가장 쉽게 확보하는 방법이 상속을 통해서 다양한 Concrete Class를 만드는 방법인데.
객체 지향에 과연 저 말이 맞는 의미일까?

다시 생각하게 되었다.   그런데 웹 서핑중 재미난 글을 발견하게 되었다.  
 http://www.artima.com/lejava/articles/designprinciplesP.html

사용자 삽입 이미지

Eric Gamma

 바로 GoF Design Pattern의 창시자인 Erich Gamma의 최신 인터뷰 내용이었다.

  두번재 원칙인 Favor Object Composition over Class Inhertance 에서   Object Composition은 내부적으로 상속을 안 사용 한다는 의미가 아니다.

  Object Composition은 내부적으로 Interface Inheritance를 사용하고 있다는 말로 깔끔하게 설명을 했다.

  필자가 저런말을 하니 뭔가 다시 한번 Design Pattern 책을 살펴볼 필요가 있다는 생각이 들었다.

  그런데 단지 두번째 원칙 몇페이지 앞에 재미난 말을 발견했다.


 P. 17 세번째 단락. (GoF Design Pattern 원서..)

  Class inheritance defines an object's implementation
                                                 in terms of another object's implementation.  

  In short, it's a mechanism for code and representation sharing.

두번째 원칙의 Class Inheritance는 Implementation Inheritance 였던 것이다.


아마 이 두번째 원칙의 잘못된 오해 때문에, 조합이 좋다라고 단언하는 책이나 사람들이 있다.

국내 서적에서 상속보다 조합이 더 낫다라고 해석한 몇분의 지식 오류로 인해..
Composition한 부분만 너무 강조 된것이 아닌가 하고 걱정하게 되어 진다.

그럼 두번째 원칙을 다음과 같이 재정의 할수 있을 것이다.

Favor Object Composition(with Interface Inheritnace or subtyping)
                                     over Implmentation Inheritance (subclassing)

구현 상속 보다는 (인터페이스 상속-SubTyping 을 기반으로한 또는 요즘 시대에는 계약 기반의 ) 객체 조합을 선호하라는 말로 해석되어 질수 있을 것이다.

객체의 세계에서는 상속과 조합의 아름다운 결합을 추구하는 것이 패턴의 아름다운 진리인것이다.
이 글로 인해 많은 분이 Design Pattern의 두번재 원칙의 의미를 알기 바란다.

Posted by 빵수

웹 서핑중 괜찮은 자료를 발견했습니다.
Design Pattern Quick Rerference자료 인데요.  맨 아래 그림을 보시면 뭔지 아시겠죠

mcdonald 라는 분이 올려 주신 자료입니다.
이런 분들의 지식 공유에 다시금 감사를 드립니다. 연세에 맞게 글에도 Force가 느껴지는 군요.
지식 나눔의 Force가 항상 함께 하시길..

손 수 GoF Design Pattern에 나오는 패턴들을 손수 컬러링 하시고 간략히 설명해 놓으셨습니다.
시간이 되시는 분은 한글로 번역해 주시면 아주 도움이 될듯 합니다.

그리고 자료에 대해서 직접 접근하실수 있게 url을 걸어 달라고 하시네요.
자기 사이트에 대해서 많은 홍보를 하시고 싶은신가 봅니다. ^^ 
mcdonald 아저씨는 욕심쟁이~~ 우후후~~~

하나의 샘플 파일을 올려 드리죠.
Design Pattern Quick Reference에 있는 PDF, JPG, Visio 포멧의 데이터를 받으실수 있을 겁니다. ^^

풀 버젼을 받고 싶으시면 http://www.mcdonaldland.info/2007/11/28/40/ 로 접근해서 받으시길 권해드립니다.

사용자 삽입 이미지

Design Pattern Quick Reference Sample

Posted by 빵수

안녕하세요 손영수입니다.  드디어 책이 출간을 눈앞에 두고 있습니다.


패턴계의 거룩한 서적 POSA1!!!


GoF Design Pattern과 양대 산맥을 이룰만큼 패턴계의 큰 영향을 미친 서적입니다.

사용자 삽입 이미지

강컴에 올라온 POSA1 예판


먼저 이 책이 나오기 위해 가장 많은 노력을 하신 김지선 (http://blog.naver.com/rekluz) 님에게 다시금 감사의 말씀을 드립니다. 

누구도 함부로 손대지 못한 이책을 몇년동안 걸쳐 번역을 하신 지선님의 노력이 없었다면 아마 이 책이 세상에 나오기 어려웠을 겁니다.

사진이라도 꼭 받아서 올려 드려야 하는데. 너무 아쉽군요. 


그리고 역자의 말중 저희 Eva팀에 노고에 대해서 아래와 같은 글을 적어주셨습니다.


 소프트웨어 세계에서 패턴이 본래 한 개인의 창조물이나 소유물이 아니듯 이 번역서 역시 제 개인 혼자만의 작업이 되지 않기를 기대했습니다. 번역 의뢰를 받았을 당시부터 공동작업을 진행하기 위해 회유와 협박으로 주변 지인들을 집요하게 괴롭혔으나, 아쉽게도 조기 무산되거나 중도 하차를 겪고 말았습니다.

악전고투 끝에 번역 초벌을 마무리한 시점에 이르러서야 데브피아(www.devpia.com)의 아키텍처(Architecture) 포럼 내 Eva 팀과 인연이 닿았습니다. 첫 단추를 제대로 끼웠어야 옳았겠지만 마지막 단추에서라도 다시 추스를 수 있었으니 천군만마를 얻은 심정이었습니다. 손영수님을 필두로 한, 아키텍처 포럼 내 Eva 팀에서는 그동안 수차례 POSA 1 원서를 가지고 스터디를 진행해왔습니다. 이분들을 중심으로 POSA 감수팀이 구성되었고 그동안 쌓인 공력을 여실히 발휘하면서 제 번역의 문제점들을 꼼꼼히 지적해주셨습니다. 모래에서 사금을 ‘모조리’ 채취해내는 일보다 쌀을 일어 쭉정이를 ‘남김없이’ 걷어내는 일이 어쩌면 더 불가능에 가까울지 모릅니다.

제 번역 초벌 속에 흩뿌려진 오역들을 ‘완전히 ’걷어내는 일은 감수팀에게 맡겨진 본래 역할은 분명 아닙니다. 엄밀히 말해 검수자(檢收者)란 품질의 수준을 평가하는 역할을 맡고, 감수자(監修者)는 책 전체의 방향을 지도하고 감독하는 역할을 맡는 것이지, 품질의 수준을 상향시키는 역할은 어디까지나 번역자의 책임입니다. 그럼에도 불구하고 POSA 감수팀 여러분은 역자와 함께 품질 향상에 직접 노고를 들였으니, 독자이자 검수자, 감수자, 심지어 공역자의 역할까지 감내해주셨습니다.

책에서 다루는 주제의 깊이와 폭에 허우적대다 자맥질 끝에 수차례 마셔버린 오역의 물을 게워내도록 도와주신 Eva의 POSA 감수 팀 여러분께 감사의 말씀을 전합니다. 결과적으로 책이 간직한 원석을 잘 세공해 매끄럽게 전달한 부분들은 모두 이분들의 공로입니다.


그럼에도 원석의 거친 단면을 그대로 드러내 불쾌함을 전달한 부분들은 어디까지나 제 불찰입니다. 행여 오역으로 인해 제가 받아야할 비난의 화살이 Eva 팀원들게 돌아가는 누를 끼치지 않길 바랍니다.


이 자리를 빌어서 지선님의 노력이 없으셨다면, 저희 Eva는 시작도 하지 못했을 거라는 생각이 듭니다.

가장 많은 고생을 하신 용현님 과 선욱님에게도 감사를 드립니다.


여러명이서 3개월동안 꼼꼼이 보면서 많은 지식들을 정리할수가 있었을 뿐만 아니라,  지식 나눔에 너무나 좋은 기회였고

지선님의 고충을 이해할 수 있는 좋은 시간이었습니다.


원서에서 Force 의 의미를 어떻게 국내어로 해석할까? 많은 고심을 해보았지만,

지선님이 제안하신 영향력을 그대로 사용하기로 했습니다. 하지만 Force의 의미에 대해서 Eva팀은 아주 많은 것들을 생각했었습니다.


박선욱님이 Force에 대한 의미라는 글로 나름대로 심정을 밝히셨습니다.


이제 저희 Eva팀이 여러분을 위해 몇가지 선물을 준비했습니다.


1. POSA1 동영상 강의

POSA1 패턴에 대해서 좀더 여러분이 쉽게 접할수 있게 EvaCast 라는 Alpha 서비스를 통해 POSA 동영상 강의를 무료로 제공합니다.

POSA1 강의 :  http://www.devpia.com/net2/EvaCast/Lecture/?fCode=1&sCode=5&c=14

현재 5개의 패턴만 소개하고 있지만 추후 스터디를 통해서 더 보강될 것입니다.


그리고 여러분들이 쉽게 퍼갈수 있도록 다양한 스크랩 방법을 지원합니다.
(IFrame, Object, MMS) 여러분의 블로그에 마구 마구 퍼가주시길 부탁 드립니다. ^^


2. POSA1 출간 세미나  

사용자 삽입 이미지

POSA1 세미나

 이미 많은 분이 POSA1 출간 세미나에 등록해 주셨습니다.

 등록은 onoffmix (http://www.onoffmix.com) 를 통해서 하고 있습니다.


 이미 200명이 신청이 끝난 상태지만, 대기자를 통해서 등록하시길 바랍니다.


 그리고 이 세미나는 서울을 출발로 해서 부산 (경남) 개발자들을 위해

 GoF 패턴을 좀더 보강한 형태로 부산에서도 열릴 예정입니다.

 3월 정도로 예상되는 경남 개발자 여러분의 많은 참여 바랍니다.


 그리고 3월 쯤 서울에서 재미난 POSAS1 토론회가 있을 겁니다.

 여러분의 많은 참여 바라며, 아주 재미난 것들을 할때니 기대해 주시길 바랍니다.



지식의 공유는 끊임없이 계속 되어야 된다고 생각합니다. 

EvaCast (http://www.EvaCast.net )을 통해서 다른 동영상 강의도 준비되어 있으니 많은 애용 바랍니다. 


더불에 약간의 화이팅성 멘트를 날려주시면, 저희 Eva팀은 더 노력해서 좋은 것들로 보답하도록 하겠사오니

여러분의 적극적인 참여 바라겠습니다. 감사합니다. ^^


Posted by 빵수

안녕하세요 EvaCast (http://www.EvaCast.net )의 리더 손영수입니다.

이번 주는 아직 Beta 서비스중인 EvaCast의 강좌중 가장 많은 분이 보신 강의인
GoF 패턴에 대한 강의를 여러분에게 공개하고자 합니다.




패턴 이야기 - GoF 패턴 Overview [손영수]
 
이 세상에 패턴이라는 존재를 대중에게 처음알렸던 GoF의 Design Pattern
패턴의 기원, C++의 클래스로 인해 잘못 알려진 두가지 원칙을 올바르게 설명하고  
GoF 디자인 패턴들중 활용 빈도가 높은 패턴들을 간략히 설명해 드립니다.
 
그리고 설정부, 가변부, 공용부를 기반으로 해  패턴간의 연관성을 파악하고,
패턴의 전문가가 되기 위해 어떠한 서적을 보아야 하는지 좋은 서적들을 추천해 드립니다.
 
- 디자인 패턴의 어원및 정의
- GoF 패턴의 2원칙
- 자주 사용하는 패턴들 (Strategy, Template Method, Factory, Component Configurator, Chain of Responsibility 등)
- 소프트웨어의 3가지 구성 요소 (가변부, 설정부, 고용부 ) 그리고 패턴
- 패턴을 활용한 변화에 유연한 프로그램 만들기
- GoF 그리고 그 이상의 패턴 명서들
- Pattern Explore

Posted by 빵수

BLOG main image
Eva네의 소프트웨어 이야기
Devpia Eva 팀입니다. 소프트웨어 설계,패턴, 최신 이슈들을 공유하는 장이 될것입니다. by 빵수

공지사항

카테고리

전체보기 (11)
아키텍쳐 (2)
패턴 (6)
새로운 기술들 (0)
소공이야기 (0)
컬럼 및 아티클 (1)
Eva네 (2)
문래예술 (0)

글 보관함

달력

«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Total : 13,040
Today : 3 Yesterday : 0