최근에 책을 내면서 국내에서 IT 분야, 특히 SW 분야의 책들이 얼마나 적게 팔리는지를 알게 되었다. 사실 많은 SW 분야 종사자들이 읽을 만한 서적을 추천해달라면서 정작 국내 SW 분야 서적이 그렇게 많이 팔리지 않는다는 사실이 더욱 안타깝게 보이는 것도 사실이다. 하지만, 국내 서적보다 해외 서적의 내용이 더 알차고 더 풍부한 내용이 들어 있다는 것도 역시 부인 못할 사실이기도 하다. 번역서를 출판하면서 번역에 대한 여러가지 이야기들을 들으면서 국내의 SW가 좀더 폭넓게 발전하기 위해서는 해외 서적들의 활발한 국내 서적화 현상이 이루어져야 되는 것은 일본 메이지 유신 시절의 번역 활동으로 거슬로 올라가보아도 그 근거를 살펴볼 수 있다.
또한, 요새는 트위터와 같은 SNS를 통해서 해외 유명 서적의 저자들을 직접 생생하게 접할 수 있다는 사실이 SW를 업으로 삼고 있는 나에게 너무나도 뜻깊은 일이기도 했다. 그에 맞춰서 그동안 내가 접할 수 있었던 해외 서적들과 그 저자들의 트위터 계정을 같이 공유하고자 한다. SW 분야에서 일하고 있는 많은 분들에게 도움이 되었으면 하고, 좋은 책들은 같이 공유해서 나 또한 많은 도움을 받고자 한다. (아래 나열된 책들은 발간일 순임)
1. The Object Advantage: Business Process Reengineering with Object Technology, 1994.9. 30, Addison-Wesley, Ivar Jacobson(@ivarjacobson), M. Ericsson, A. Jacobson
상당히 오래된 책이다. 나도 2000년도 초반에 접했던 책이고, UML의 3 Amigos 중의 한 사람인 Ivar Jacobson의 중요한 사상이 들어 있는 책이다. 1990년 대는 미국이 일본과의 경쟁에서 상당한 위기 위식을 느끼던 해이기도 하다. 이 시기의 핵심은 부제에 있는 Reengineering이다. 사실 이 책은 60년대부터 객체지향 기술을 연구한 Jacobson의 유스케이스에 대한 내용이 주로 핵심적으로 들어 있으며, 특히 비즈니스 관점에서 유스케이스를 어떻게 활용할지에 대한 내용이 있어서 유스케이스를 단순하게 다이어그램만을 알고 있다면 이책을 보면 많은 배경 지식을 가질 수 있을 것이다. 특이할 사항은 그의 아들인 A. Jacobson과 같이 이 책을 썼는데, 이미 60이 훨씬 넘은 Jacobson을 트위터에서도 만날 수 있다는 것이 행운이기도 하다. (Ivar Jacobson 박사는 한차례 회사에서 만난 적도 있지만, 개인적으로도 영광이었고 늘 얼굴에 웃음이 떠나지 않을 정도로 낙천적인 성격이었던 것 같다.)
2. Design Patterns: Elements of Reusable Object-Oriented Software, 1994. 11. 10, Addison-Wesley, Erich Gamma(@ErichGamma), Richard Helm, Ralph Johnson(@RalphJohnson), John M. Vlissides
너무나도 유명하고, 지금도 아직까지 많은 스터디 팀에서 공부할 정도로 유명하다. 제작년이 이 책이 출판된지 15년이 되는 해인데 SW 설계에 있어서 끼치는 영향이 상당하다. 패턴은 알다시피 건축에서 Christopher Wolfgang Alexander가 처음 소개되어서 이를 SW 분야로 결합시킨 결과이며, 아직도 이 분야의 서적들은 많은 관심과 꾸준한 결과물들을 내고 있다. 이 책에 대해서는 더 이상 강조할 필요가 없을 정도로 아주 중요한 책이라는 것은 SW 분야를 업으로 삼고 있는 분들에게는 누구나가 다들 아시리라.
최근에 Erich Gamma가 IBM의 Jazz에서 MS로 옮기다는 소식이 있었고, John. M. Vlissides는 얼마전 암으로 세상을 떠났다는 소식이 있었다. 이들을 모두 GoF (Gang of Four)라고 부르고 있다.
3. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Ed), 1995. 8.12, Addison-Wesley, Frederick P. Brooks
SW에서 사람의 투입이 생산성을 올린다는 보장을 못한다는 내용이 들어있는 책으로, 사실 이 책은 처음 책이 출판된 21년 만에 2판이 새로 개정되어서 나온 책이다. 즉, 1974년에 이러한 내용을 이미 Brooks가 말했음에도 불구하고, 지금까지도 이러한 오류를 범하는 현장이 곳곳에 있다는 사실이 안타까울 뿐이다. Brooks는 1999년에 Turing Award를 탔으며, 최근에 The Design of Design 이라는 책을 내는 등 활발하게 활동하고 있다.
4. Object Solutions: Managing the Object-Oriented Project, 1995. 10. 22, Addison-Wesley, Grady Booch
UML의 3 Amigos 중의 또 다른 한사람이 Grady Booch의 사상을 잘 나타내고 있는 책으로, UML이 처음 나타나는 시기의 그 토대를 알 수 있다. 여기에 James Rumbaugh 까지 세사람의 사상이 합쳐져서 UML이 태동하였으며, 그 이후 SW 업계는 거의 UML이 표준으로 자리잡히는데 큰 역할을 했다. 사실, 이들이 이전부터 SW에 미치는 영향력들이 상당했으며, UML로 인해서 그 세력이 상당해졌음을 부인할 수 없는 사실이다. UML의 표기법 만큼이나 이들이 어떠한 사상을 가지고 있는지를 알아보는 것도 상당한 도움이 된다.
5. Pattern-Oriented Software Architecture Volume 1: A System of Patterns, 1996. 8. 8, Wiley, Frank Buschmann, Regine Meunier, Hans Rohnet, Peter Sommerlad, Michael Stal(@MichaelStal)
POSA 패턴으로 알려져있는 내용들이 이 책에 포함되어 있으며, Design Pattern 책이 패턴을 익하는 최초의 책이라면 그 다음으로 익히는 내용들이 이 책에 포함되어 있다. 그 이후로 이 책은 Volume 5 까지 나오면서 실제 시스템 설계시에 많은 내용을 제공하기 때문에 설계시에도 늘 참조하고 있는 책이다.
6. Analysis Patterns: Reusable Object Models, 1996. 10. 19, Addison-Wesley, Marin Folwer (@martinfowler)
Martin Fowler는 너무나도 유명한 ThoghtWorker이다. ThoughtWorks 사는 Neal Ford를 포함하여 Rebecca Parsons 등이 있는 SW 회사로 이들이 낸 책들은 SW 분야에 많은 영향을 미친다. Refactoring 책으로도 유명한 Martin Fowler는 이후에 몇가지 책을 더 내면서 SW 책을 쓰는 족족 많은 호응을 받는다. Analysis 패턴은 이 당시에 UML이 표준적으로 사용되지 않던 시기라 Flower가 그 당시의 표기법을 응용하여 몇가지 규칙을 정해서 책에서 표기하였다. 이 책은 다양한 업무를 패턴 형태로 분류하고 이를 분석하는 기법들을 소개하고 있다. 사실 이 책의 내용은 이전의 데이터 모델링에서 고민했던 부분들이 상당히 많이 들어가있다. 1996년 1월달에 발행된 David C. Hay가 쓴 Data Model Patterns의 책 내용은 데이터 모델링 관점에서 Analysis 패턴과 유사한 내용들이 많이 들어가 있다. 즉, Martin Fowler는 비즈니스 로직 관점에서 DB 모델의 내용을 접근했다고도 볼 수 있다. DB 모델링에도 관심이 있다면, Hay가 쓴 책도 추천한다. Hay는 2006년도에 Data Model Patterns: A Metadata Map이라는 내용으로도 책을 내는데, 이전에 쓴 내용들의 좀 더 최근 내용과 확장된 내용이 포함되어 있다.
7. Software Reuse: Architecture, Process and Organization for Business Success, 1997. 6. 1, Addison-Wesley, Ivar Jacobson, M. Griss, P. Johsson
Ivar Jacobson이 쓴 또 다른 이 책에서는 컴포넌트라는 초기 개념을 살펴볼 수 있다. 재사용이라는 관점에서 애플리케이션을 구성하는 접근 방법이 소개되어 있다. 컴포넌트에 관심이 있다면, 이 책을 살펴보는 것도 좋다.
8. Object-Oriented Project Management with UML, 1998. 8. 3, Wiley, Murray Cantor
UML이 업계 표준이 되기 시작하면서 다양한 영역에서 UML을 사용하고자 하는 욕구들이 나타났으며, 프로젝트 관리에서도 UML을 사용하려는 시도가 나타나기 시작한다. 분석/설계에서 뿐만 아니라, UML을 좀 더 확장하여 사용하고자 한다면 이 책도 상당히 도움이 될 것이다.
9. Objects, Components, and Framework with UML: The Catalysis Approach, 1998. 10. 29, Addison-Wesley, Desmond Francis D'Souza, Alan Cameron Wills
이 책은 Catalysis 방법론으로도 유명한 책으로 컴포넌트 개발 방식에 있어서 한 영역을 차지하고 있는 책이다. 발음하기 어려운 D'Souza (드-소자)가 컴포넌트를 구성하는 방식을 객체와 객체의 협업이라는 접근 방식을 취하고 있으며, 내용이 그리 쉽지는 않다. 하지만, 컴포넌트의 내부는 객체로 이루어져 있고 객체 간의 협업을 통해 구성된다는 원론적인 취지에 맞게 책의 내용을 구성하고 있으며 컴포넌트 내부 설계를 어떻게 할지를 고민하는 사람들은 한번쯤 읽을 만하다.
10. Java Design: Building Better Apps and Applets (2nd Edition), 1998. 12, Prentice Hall, Peter Coad, Mark Mayfield, Jonathan Kern
내용이 상당히 오래된 책이라 요새 읽기에는 좀 철지난 자바 문법들이 있기는 하지만, 자바라는 언어를 사용해서 객체지향 설계를 익히는데 좋은 내용들이 더러 있다. 언어의 문법적인 측면보다 설계적인 측면으로 책을 읽으면 도움이 될 만하다.
11. Peopleware: Productive Projects and Teams (2nd Ed), 1999. 2. 1, Dorset House Publishing, Tom DeMarco, Timothy Lister
국내에 피블웨어라는 번역서로도 출판된 이 책은 SW를 만드는 사람들이 어떻게 작업을 하고 이들의 생산성을 어떻게 관리하면 더 높일 수 있는지를 알려주는 책이다. 나 또한 프로젝트가 힘들때에 이 책을 읽고 상당히 많은 위안을 받은 책으로 SW 프로젝트를 진행하는 어느 누구든지(특히, PM/PL) 이 책을 읽어볼 것을 권한다. 번역서도 번역이 잘 되어 있어서 원서로 읽지 않아도 상관이 없으며, 기술적인 측면보다 작업 방식이나 태도를 중심으로 쓰여졌기 때문에 SW 기술을 잘 모르는 사람들도 읽어도 좋을 듯 싶다.
12. Refactoring: Improving the Design of Existing Code, 1999. 6. 8, Addison-Wesley, Martin Fowler, Kent Beck(@KentBeck), John Brant, William Opdyke, Don Roberts
Martin Fowler가 잘 알려지는 계기를 만든 책인 Refactoring은 SW 개발 방식에 대한 새로운 접근법을 제시하고 있다. 이 책은 Kent Beck도 같이 참여했는데, Agile이나 TDD 방식을 소스 코드를 통해 어떻게 접근할지를 생생하게 보여주고 있다. 이 후에도 이러한 방식은 많은 접근법에 영향을 미치게 된다. 이책에서 다양한 code smell을 맛보기를 기대해본다.
13. Business Component Factory : A Comprehensive Overview of Component-Based Development for the Enterprise, 1999. 12. 20, Wiley, Peter Herzum, Oliver Sims
개인적으로 컴포넌트에 대한 개념을 확고하게 해주는 책으로, 비즈니스 관점에서 컴포넌트를 식별하고 이를 IT 관점에서 어떻게 분석/설계/구현으로 이끌고 갈 것인지를 보여주는 책이다. Oliver Sims는 이전에도 Building Business Objects라는 책을 통해 비즈니스의 개념과 IT에서의 객체에 대한 개념을 매핑하려는 노력을 했었으며, 이를 Peter Herzum과 같이 이 책에서 기술하고 있다. 이 둘은 지금은 SOA를 지향하고 있고 당시에는 컴포넌트 관련 자료들이 많았던 CBDi Forum에서 이러한 내용으로 많은 article을 썼으며, 여기에서 발행된 많은 내용들이 컴포넌트를 분석/설계하는데 있어서 상당히 도움이 되었다. 이후에도 Sims는 그러한 내용을 또 한권의 책인 Enterprise Service Oriented Architectures에 싣는다.
14. Business Modeling With UML: Business Patterns at Work, 2000. 1, Wiley, Magnus Penker, Hans-Erik Eriksson
이 책 역시 UML을 확장하여 비즈니스 모델링을 하는데에 사용하는 다양한 패턴들을 담고 있으며, 실제 SW에 대한 상세한 기술을 모르는 사람들도 같이 접하게 되면 상당히 도움이 되는 책이다. 특히, Eriksson-Penker 표기법으로 비즈니스 모델링을 표현한 방식은 SPARX systems사가 만든 UML 도구인 Enterprise Architect에서 채용할 정도로 유명해진다. 이 당시에 스터디를 할 때에서 기술을 모르는 기획팀과 같이 했던 기억이 있는데, 상당히 재미있는 비즈니스 경우(case)들이 있으며, UML을 사용해서 모델링하는 기법들이 정말 기막히다는 생각을 했었다. 특히, stereotype에 대해서 자세히 알고 싶은 사람들에게 적극 추천한다.
15. Writing Effective Use Cases, 2000. 10. 15, Addison-Wesley, Alistair Cockburn(@TotherAlistair)
국내에도 번역서가 나와 있으며, 유스케이스가 단순한 표기법 이상이라는 것을 잘 알려준 책이다. Cockburn의 발음이 '코오번' 이라고 할 만큼 트위터에서 본 저자는 상당히 자유롭다는 생각이 들 정도이다. 요새 저자는 Agile 진영에서 많은 활동을 하고 있다. 책 내용도 유스케이스를 어떻게 작성하고 어떠한 흐름들을 채워넣어야 하는지에 대해 상세한 수준까지 나와있으니 분석/설계를 할 때 상당히 도움이 될 것이다.
16. The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises, 2001. 3. 6, Wiley, Len Silverston(@Len_Silverston)
이 책은 당시 출판시 내용이 상당히 많아서 볼륨 1과 2로 나왔으며, 이후에 볼륨 3가 추가로 나와있는 상태이다. 이 책을 처음 접한 것은 오픈 소스 쇼핑몰 솔루션인 OFBiz를 통해서 이며, 초기의 OFBiz는 이 책 볼륨 1과 2의 DB 스키마를 그대로 적용하여 소스를 구현하였다. 물론, OFBiz 자체가 다양한 엔진들과 상당히 확장성이 좋은 설계 기술들로 만들어져서 그 당시에도 공부하기에도 괜찮은 오픈 소스였지만, DB 모델링에서 다양한 비즈니스 경우들을 현실감있고, 확장 가능하게 설계하는 기법을 소개하고 있는 이 책도 상당히 많은 자극을 주었다. 1과 2는 여러 비즈니스 도메인에 걸쳐서 DB 모델링이 연결되거나 확장되어 있게 구성되어 있으며, 볼륨 3에서는 이를 더 확장하여 좀 더 복잡한 비즈니스를 수용할 수 있게 DB 모델링을 기술하고 있다. DBA 역할을 수행하는 사람이나 혹은 그렇지 않다고 하더라도 SW를 개발하는 사람이라면 데이터에 대한 모델링을 어떻게 할지를 고민하는 사람들에게 정말로 권하고 싶은 책이다.
17. Component-Based Software Engineering: Putting the Pieces Together, 2001. 6. 18, Addison-Wesley, George T. Heineman, William T. Councill
이 책은 우선 두께로서도 상당한 중압감을 느끼게 하지만, 여러 단편들을 엮은 책이다. 컴포넌트라는 주제를 다양한 형태로 분류하여 여러가지 각도에서 볼 수 있는 시각을 제시한다. 실용적인 부분보다 학술적인 부분을 강조한다고 볼 수 있는데, 컴포넌트에 대해서 여러가지 측면에서 생각하게 할 수 있는 책이라고 볼 수 있다. 컴포넌트라는 단어를 마케팅적인 용어로 사용되다보니 컴포넌트에 대한 많은 부분들이 훼손되었다고도 볼 수 있는데, 본질적인 것을 찾아보려는 노력을 한다면 분명 현실에서도 많은 이점이 될 수 있도록 컴포넌트를 사용할 수 있는 영역을 찾아볼 수 있을 것이며, 이 책이 그러한 영역에 참고가 될 것이다.
18. Business Rules Applied: Building Better Systems Using the Business Rules Approach, 2001. 10. 17, Wiley, Barbara von Halle
지금은 BRMS (Business Rule Management System) 등의 다양한 이름으로 붙여진 룰서버에서 실행되는 비즈니스 룰에 대한 개념을 잘 정립하게 할 수 있는 책으로, 시스템적인 측면 뿐만 아니라, 비즈니스 룰을 어떻게 분석/설계할 것인지에 대한 접근 방식을 고민할 때 참고할 만한 책이다. 비즈니스 규칙이 상당히 복잡해짐에 따라서 어떻게 룰을 식별/정리할 것인지, 그리고 어떻게 관리할 것인지가 업계에서 상당한 부담이 되기도 한다. 구현을 룰서버로 할지, 혹은 그냥 소스 코드 내에서 할지에 대한 고민보다 어떻게 비즈니스 룰을 분석/설계할 것인지가 더 큰 고민거리이고 이에 대한 실마리를 제시해줄 수 있는 내용이 이 책에 소개되어 있다고 보면 된다.
19. Lessons Learned in Software Testing, 2001. 12. 15, Wiley, Cem Kaner, James Bach, Bret Pettichord(@bpettichord)
이 책은 테스트에 대한 기술적인 측면보다 오해하고 있는 내용들을 정리한 책이다. 293가지의 Lesson을 설명하고 있으며, 기술적인 상세한 내용을 모르더라도 테스팅시 주의할 사항들에 대해서 도움이 되는 내용을 포함하고 있다. 국내에는 '소프트웨어 테스팅 법칙 293가지'라는 제목으로 번역서가 나와 있다.
20. Building Reliable Component-Based Software Systems, 2002. 6. 15, Artech House, Ivica Cmkovic, Magnus Larsson
이 책은 실용적인 측면보다 학술적인 측면이 강해서 그리 유명하지 않은 책이지만, 컴포넌트에 대한 원론적인 내용을 살펴보는데 도움이 될 것이다.
21. Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems, 2002. 10. 3, Addison-Wesley, Bruce Powel Douglass
SW가 임베디드 분야에까지 확장되면서 어떻게 설계할 것인지 그리고, UML을 어떻게 사용할 것인지에 대한 내용이 이 책에 포함되어 있다. 임베디드 분야에서 UML을 사용하여 설계하고자 하는 사람들에게 도움이 될 것이다.
22. Documenting Software Architectures: Views and Beyond, 2002. 10. 6, Addison-Wesley, Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, Judith Stafford
현재 2nd Ed.으로 출판된 이 책은 SW 아키텍처를 고민하는 사람이면 반드시 읽어야 되는 필수 서적 중에 하나이다. 국내에도 자주 오시는 David Garlan 교수를 비롯해서 SEI에서 SW 아키텍처의 대가들이 쓴 책으로 1st Ed.은 국내에 번역서가 나와 있다. 2편에서는 1편에서 소개된 내용을 더해서 그 이후에 나온 SOA와 같은 1판 이후 새로운 기술들이 더 추가되었다. SW 아키텍트라면 필히 읽어서 소화를 시켜야 할 책이다.
23. Building Web Applications with UML (2nd Ed), 2002. 10. 13, Addison-Wesley, Jim Conallen
이 당시에 UML을 사용해서 웹 애플리케이션을 어떻게 설계할 것인지가 상당한 이슈인 가운데 이에 대한 접근 방식을 설명하고 있는 책으로 간단한 예제를 통해서 이를 설명하고 있다. 이 책의 내용의 방식이 지금의 현실에는 맞지 않는 부분도 있긴 하지만, 결국 UML을 사용해서 어떻게 설계할 것인지는 이를 사용하고자 하는 사람의 몫이기 때문에 다양한 고민을 하고 어떻게 접근할지에 대한 아이디어를 얻을 수 있을 것이다. 기술적으로는 오래된 내용이긴 하지만, UML 사용에 대한 초점을 맞춘다면 건질 수 있는 내용이 다소 있을 것이다.
24. J2EE Best Practices: Java Design Patterns, Automation, and Performance, 2002. 11. 8, Wiley, Darren Broemmer
이 책 역시 제목에서 알 수 있듯이 기술적으로는 좀 오래된 내용을 담고 있다. (J2EE는 현재 JEE로 불린다) 하지만, J2EE로 만들어진 레거시 시스템을 운영하는 사람들에게는 도움이 될 만한 내용들이 많이 있으며, 특히 성능에 관련되어서는 참조할 만하다.
25. Server Component Patterns: Component Infrastructures Illustrated with EJB, 2002. 11. 15, Wiley, Markus Volter, Alexander Schmid, Eberhard Wolff(@ewolff)
패턴의 응용 분야가 다양해지면서 J2EE 영역에서 인프라적인 측면에 유형들을 식별하여 정리한 내용으로 주로 J(2)EE WAS를 운영하는 사람들이 읽을 만한 내용들이 포함되어 있다.
26. Patterns of Enterprise Application Architecture, 2002. 11. 15, Addison-Wesley, Martin Fowler
이 책은 Martin Fowler의 저력을 아주 잘 보여주는 책으로 Addison Wesley Signature 시리즈의 첫번째 책이며, 이후의 이 시리즈의 책들은 영향력 뿐만 아니라, 실용적인 차원에서 좋은 내용들을 제공하게 된다. 이 책의 하이라이트인 도메인 모델에 대한 설계 패턴들은 엔터프라이즈 환경에서 많은 도움을 주며, 이후의 책이나 현장에서 많은 영향을 미친다. 국내에도 번역서가 나와 있으며, 엔터프라이즈 환경에서 SW를 만드는 사람이라면 한번쯤 꼭 읽어보는 것을 적극 추천한다.
27. Object Design: Roles, Responsibilities, and Collaborations, 2002. 11. 18, Addison-Wesley, Rebecca Wirfs-Brock(@rebeccawb), Alan McKean
객체지향에 대한 개념과 설계를 익히는데 많은 도움과 참조가 되는 책으로 분석/설계를 하는 입장에서 꼭 읽기를 추천한다. 특히, 레베카의 존재감을 확실히 각인시키는데 충분한 책이다. 국내에도 번역서가 나와 있으며, 책의 내용은 오래되었지만, 지금도 충분히 읽은 만한 가치가 있다. 그녀의 트윗 내용들도 많은 도움이 되고 있다.
28. Test Driven Development: By Example, 2002. 11. 18, Addison-Wesley, Kent Beck
국내에 테스트 주도 개발이라는 이름으로 번역된 책으로, Kent Beck의 이름을 각인시키기에 충분한 내용을 담고 있다. 특히, 그의 간결하고 핵심적인 내용들은 이 책을 읽어보면 긴 설명이 필요없다는 것을 깨달을 것이다. Kent Beck의 트윗들도 역시 많은 도움이 되며, 그가 실용적인 방식을 추구한다는 것을 피부로 많이 느낄 것이다.
29. Component Software, 2002. 11. 23, Addison-Wesley, Clemens Szyperski
실용적인 측면보다 이론적인 측면을 다루고 있으며, 결코 한번 읽고는 내용을 이해할 수 없는 컴포넌트의 인사이트를 알아갈 수 있는 책이다. 우리나라 발음으로 지퍼스키가 쓴 이 책 이후로 컴포넌트에 대한 개념을 더 잘 설명할 수 있는 책이 아직 나오지 않은 것 같다. 물론, 이 시기 이후로는 학계는 SOA로 기술이 이전하던 시기이지만, SOA 역시 컴포넌트에서 출발하는 것으로 보면 아직 컴포넌트라는 개념은 SW에 있어서 중요한 개념 중에 하나이다.
30. Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML (2nd Ed), Volume 1, 2002. 12. 17, Wiley, Mark Grand
디자인 패턴은 자바 진영이나 MS 진영이나 모두 중요한 설계 방식의 하나로 받아들이고 있으며, 현재도 많이 사용된다. 이 책은 자바로 구현한 디자인 패턴 쯤으로 보면 된다. 하지만, 디자인 패턴(책에서는 예제가 C++로 구현되어 있음)만 보더라도 자바로 구현하는 것에 큰 무리가 없다면 설계나 언어에 대한 지식을 충분히 가지고 있다고 보면 된다. 자바에 대한 지식이 다소 부족하더라면 이책을 같이 참조하면 좋을 듯 싶다. 이후 Volume2도 나와 있지만, 평은 그리 좋지는 않은 것 같다. 다만, 자바 진영에서 사용되는 패턴들이 더 추가되었으니 참조해볼만은 하다.
31. Large-Scale Software Architecture: A Practical Guide using UML, 2002. 12. 30, Wiley, Jeff Garland, Richard Anthony
대규모 시스템에서 아키텍처를 어떻게 설계할지를 소개한 책으로 개요 수준에서 정리를 해놓았다. 초급 아키텍트와 설계자들이 UML을 사용해서 어떻게 설계하는지를 참고하는데 도움이 될 것이다.
32. Java Performance Tuning (2nd Ed), 2003. 1, O'Reilly, Jack Shirazi
자바 언어가 많은 시스템을 만드는데 사용되면서 성능 상의 이슈와 문제들을 일으키는데 이에 대한 많은 도움을 받을 수 있는 책이다. 특히, 성능 측면에서 자바를 사용하는 내용을 접근한 책이 그리 많지 않은데 개발하면서 성능 측면에서 놓치는 부분들을 이 책을 통해서 보완할 수 있을 것이다.
33. Model Driven Architecture: Applying MDA to Enterprise Computing, 2003. 1. 17, Wiley, David S. Frankel
MDA(Model Driven Architecture)는 궁극적으로 SW 개발이 지향하는 바이기도 하다. UML이 보편화되면서 모델을 통해서 구현체를 만들 수 있다는 자신감으로 이러한 사상이 나타나게 되는데, 현실적인 측면에서는 아직은 많은 부분들이 부족한 것도 사실이다. MDA에 대한 내용을 알고 싶은 사람들에게 도움이 되는 책이다.
34. Service- and Component-based Development: Using the Select Perspective and UML, 2003. 1. 24, Addison-Wesley, Hedley Apperly, Ralph Hofman(@RalphHofman), Steve Latchem, Barry Maybank, Barry McGibbon, David Piper, Chris Simons
2000년도 초반에는 CBD(Component-Based Development) 방법론이 상당한 화제였으며, 그 중에서 Select Perspective 방법론 역시 참고할 수 있는 것 중에 하나였다. 국내에서도 많은 대형 SI 회사들이 방법론을 이시기에 만들면서 (물론, 국가적으로도 마르미와 같은 방법론을 만들기도 했다.) 외국의 방법론들을 많이 참조하였으며 이 책 역시 그러한 참고 서적 중에 하나이다. 하지만, 개인적인 생각에 국내에서 만든 대부분의 CBD 방법론들은 John Cheesma이 쓴 UML Components 책에서 설명하고 있는 단순한 프로세스를 참고하고 있다고 생각이 든다. 이 책은 일부로 추천 서적에서 제외를 했는데, 내용은 상당히 절차적으로 컴포넌트를 만드는 방식을 설명하고 있지만, 이는 컴포넌트를 만드는 한가지 방법일 뿐이지, 이대로 컴포넌트를 만든다면 상당히 모순되는 측면들이 많이 있다. UML Components의 접근 방식은 다분히 데이터 관점의 접근 방식이라 프로세스적인 측면은 컴포넌트로 나타나지 않으며, 대부분의 비즈니스 로직이 엔티티나 SQL 차원에서 구현되는 결과를 만들 수 있다는 단점이 있다. 또한, 책 내용이 많은 사람들이 좋아하는 너무나도 구체적인 단계적인 방식으로 인해서 상당히 애매하고 생각하게 하는 부분들이 과감히 생략되었다는 차원에서 많은 CBD 방법론에서 참고하지 않았나 싶다. CBD 방법론을 연구한 국내의 논문들에서도 다양한 방법론에 대한 장단점을 분석한 것도 있었지만, 장점만을 모아놓은다고 해서 좋은 방법론이라고 볼 수는 없다. 또한, 요새와 같이 잦은 비즈니스 변경에 유연하게 대처할 수 있는 방법론들을 창의적으로 고민할 필요는 있다고 본다.
35. Beyond Software Architecture: Creating and Sustaining Winning Solutions, 2003. 2. 9, Addison-Wesley, Luke Hohmann
국내에는 소프트웨어 아키텍처 2.0으로 소개된 이책은 일반적인 SW 아키텍처 분야에서 놓치기 쉬운 영역(기획 등)들에 대한 내용들을 담고 있다. 번역서의 제목으로 SW 아키텍처 2.0 이라고 붙이기는 했지만, 사실 SW 아키텍처 범주에 두기도 그렇고 기획이나 마케팅 부분에도 두기 애매모호한 것들에 대한 내용이라고 보면 될 것이다. SW 아키텍처 분야외에 그 밖에 챙겨야할 것들이 무엇인지를 알아보는 것도 도움이 될 것이다.
36. The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP, 2003. 4. 18, Addison-Wesley, Per Kroll, Philippe Kruchten(@pbpk), Grady Booch
4+1 View로 유명한 필립 크루첸이 쓴 책으로 그가 책들은 주로 RUP(Rational Unified Process)에 관련된 내용이다. 물론, RUP가 4+1 View를 채용하고 있어서 인지 모르겠지만, 이 시절까지는 RUP에 대한 내용을 많이 쓴 것 같다. 하지만, 요새 그의 트윗을 보면 Agile에 대해서 많은 관심과 참여를 하는 것으로 보아서는 아무래도 대세는 Agile로 흐르는 것 같기도 하다. 하지만, SW 개발 프로세스에 대한 내용 중에서 RUP의 영향은 상당하니 이 부분도 참고하면 많은 도움이 될 것이다.
37. Core J2EE Patterns: Best Practices and Design Strategies, 2003. 5. 10, Prentice Hall, Deepak Alur, Dan Malks(@danmalks), John Crupi(@johncrupi)
그 유명한 DTO 패턴들을 비롯하여 엔터프라이즈 자바 진영에서 사용하는 다양한 패턴을 담고 있는 책으로, 수많은 프로젝트에서도 많은 참조를 했을 것이다. 다만, 지금 이러한 패턴들이 유용할지에 대한 부분은 한번쯤은 고민하는 노력은 필요할 듯 싶다.(하지만, 많은 부분들이 아직까지 유용한 것은 사실이다.)
38. Code Generation in Action, 2003. 6. 1, Manning, Jack Herrington
MDA가 OMG에서 차세대 아키텍처로 많은 지원을 하면서 실용적이고 현실적인 부분들이 많이 약한 것이 사실인데, 이 책은 이러한 부분들을 채워주는 내용으로 가득하다. 굳이 구현되는 소스와 소스를 생성하는 프로그래밍이 같을 필요는 없다. 어차피 생성된 소스가 중요한 것이니까. 코드 생성 방식에 대한 현실적인 내용을 참고하기에 좋다.
39. Enterprise Java and UML (2nd Ed), 2003. 6. 13, Wiley, C. T. Arrington, Syed H. Rayhan
UML을 사용해서 엔터프라이즈 자바를 설계하는 내용을 담고 있는 이책은 2nd Ed.이 나올 정도로 많은 호응을 얻었다. 그렇다고 전적으로 이 책에 나와 있는 방법이 정답이라는 이야기는 아니다. 취할 것도 있고 버릴 것도 분명 있다.
40. Domain-Driven Design: Tracking Complexity in the Heart of Software, 2003. 8. 30, Addison-Wesley, Eric Evans(@ericevans0)
최근에 국내에서 도메인 주도 설계라는 제목으로 출판된 이책은 출판된지 꽤 된 책이지만, 아직까지 그 내용은 도메인 설계시 많은 도움과 참고가 되기에 충분하다고 본다. 에릭 에반스의 놀라운 통찰력과 접근 방식은 많은 자극을 준다. 하지만, 트위터에서는 별로 말이 없어서 아쉽긴 하다. 객체지향 설계의 강점은 결국 도메인 설계에 있으며 이는 비즈니스를 어떻게 효과적으로 설계할 것인지에 달려있다. 3 tier 아키텍처에서 2 tier 적인 구현을 주로 경험해본 사람이라면 이 책을 통해서 도메인 설계를 해봄으로써 그 무한한 가능성을 탐구해보았으면 한다.
41. The Object Constraint Language: Getting Your Models Reday for MDA (2nd Edition), 2003. 9. 6, Addison-Wesley, Jos Warmer, Anneke Kleppe
OCL이 처음에 UML 스펙에 포함될 때 많은 비난을 받기도 했다. 하지만, 2nd Ed.이 나올 정도로 다시 UML 스펙에 포함된 이유는 바로 컴포넌트가 많이 사용되면서 눈에 보이는 구조적인 측면과 함께 눈에 보이지 않는 행위적인 측면도 표현할 방법이 OCL로 초점이 모아지면서부터이다. OCL은 이러한 행위적인 측면을 formal한 형태로 표현하는 방식으로 MDA에서도 사용되는 방식이다. 언어이기 때문에 몇가지 문법들이 있지만, 그리 어려운 것도 아니다. 하지만, 아직까지 OCL을 현실적으로 적용한 예는 그리 경험해보지는 않았다.
42. UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Ed), 2003. 9. 25, Addison-Wesley, Martin Fowler
역시 마틴 파울러의 저력이 녹아들어가 있는 책이다. 제목 그대로 UML의 정수를 모아놓았다고 해도 과언이 아니다. 바빠서 그 많은 UML을 일일히 보기 힘들다면 이 책은 꼭 읽기를 바란다. 국내에 번역서도 나와 있다.
43. JUnit in Action, 2003. 10. 1, Manning, Vincent Massol(@vmassol), Ted Husted(@tedhusted)
지금 2nd Ed.이 나와있으며, 국내에도 번역서가 나와 있다. 1st Ed. 자체가 상당히 좋은 내용이었으며, 2nd Ed.은 여기에 그동안에 새로 나온 TDD 기법을 추가하였다. 단순히 jUnit을 사용하는 것 뿐만 아니라, TDD를 하는 방식까지도 포함하고 있으며, 개인적으로 이 책의 저자인 Vincent Massol에 흠뻑 빠지기도 했다. 이후에 그는 Maven 프로젝트에 참여하여 온라인 형태의 tutorial을 썼었는데, 그 내용 역시 Massol의 매력에 빠지기에 충분했다. 현재는 XWiki 를 만든 프랑스 기업의 CTO로 활동 중이며, 그의 트윗 역시 XWiki의 내용이 대부분이다.
44. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, 2003. 10. 20, Addison-Wesley, Gregor Hohpe, Bobby Woolf
EAI(Enterprise Application Integration)으로 알려진 영역에 대한 패턴을 담고 있는 책으로 시스템 통합에 관련된 작업을 할 때에 상당히 도움이 되는 책이다. 처음 온라인에서 패턴들을 정리했고, 이를 책으로 냈는데, 지금 Hohpe는 Google에서 이러한 패턴들을 적용하고 있을 것이다. 다소 내용이 어렵지만, 유용한 패턴들이 상당히 많으니 시스템 통합시 필히 참고할 만하다.
45. Software Configuration Management Patterns: Effective Teamwork, Practical Integration, 2003. 11. 14, Addison-Wesley, Stephen P. Berczuk, Brad Appleton, Kyle Brown
형상관리에 대한 패턴을 담고 있는 책으로 패턴이 설계 뿐만 아니라, 다양한 곳에서 사용된다는 차원에서 흥미롭다. 물론, 패턴의 형식으로 차용한 것이기는 하겠지만. 형상관리 역시 개발 환경에서 상당한 영역을 차지하는 부분이고, 요새와 같이 다양한 버전을 관리할 제품들이 나오면서 이 책의 내용들이 상당히 도움이 될 것이다.
46. The Rational Unified Process: An Introduction (3rd Ed), 2003. 12. 20, Addison-Wesley, Philippe Kruchten
Kruchten이 쓴 RUP에 대한 또 다른 책으로 개발 프로세스에 대한 내용을 담고 있다.
47. MDA Distilled, 2004. 3. 13, Addison-Wesley, Stephen J. Miller, Kendall Scott, Axel Uhl, Dirk Weise
이 책을 통해 MDA의 개념을 이해할 수 있다.
48. The J2EE Architect's Handbook, 2004. 5, DVT Press, Derek C. Ashmore
배포 레이어 (deployment layer)에 대한 내용이 포함되어 있다.
49. Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems, 2004. 5. 28, Wiley, Paul Dyson, Andrew Longshaw
성능과 고가용성에 대한 다양한 패턴들을 살펴볼 수 있으며, WAS 운영에 관련된 내용들을 참고할 수 있다.
50. Code Complete: A Practical Handbook of Software Construction (2nd Ed), 2004. 6. 7, Microsoft Press, Steve McConnell
번역서로도 많은 사람들에게 읽힌 책으로, 코드를 작성하는데 있어서 개발자에게 필요한 올바른 습관을 가지게 하는 책이다.
51. Expert One-on-One J2EE Development without EJB, 2004. 6. 21, Wrox, Rod Johnson(@springrod), Juergen Hoeller
Rod Johnson을 일약 스타로 만드는 역할을 함과 동시에 Spring 프레임워크가 탄생할 수 있었던 책이다. 이 책은 Rod Johnson이 기존 J2EE의 EJB의 대용으로 POJO를 활용하는 방법을 창안하여 그 내용을 기술했던 것으로, 당시 Wrox 출판사에 수많은 토론들이 이루어졌고, 그 중에 한사람과 같이 오픈소스인 Spring 프레임워크를 만드는 계기가 된 책이다. Rod Johnson의 위대함을 이 책을 통해서 확인해볼 수 있다.
52. JUnit Recipes: Practical Methods for Programmer Testing, 2004. 7. 15, Manning, J. B. Rainsberger
기존 JUnit in Action이 가장 기본적인 JUnit을 이야기하고 있다고 보면, 이 책은 그 기본적인 사항을 활용하고 응용하고 뒤집어볼 수 있는 시각을 갖추게 한다. TDD와 관련된 현실적이고 실용적인 면들을 살펴볼 수 있을 것이다.
53. Refactoring to Patterns, 2004. 8. 15, Addison-Wesley, Joshua Kerievsky(@JoshuaKerievsky)
Joshua Kerievsky의 트윗은 늘 도움이 된다. 그의 트윗을 보고 있으면 현장감이 있고 통찰력이 뛰어남을 느낄 수 있을 것이다. 이 책 역시 그러한 내용들이 들어있다. 다만, 리팩토링 책들이 그렇듯이 코드에 대한 비즈니스 이해도가 필요하다.
54. Java Reflection in Action, 2004. 10, Manning, Ira R. Forman, Nate Forman
Reflection 메커니즘은 자바에서 잘 사용하면 득이 되지만, 오용하게 되면 독이 되기 마련이다. 득이 되는 Reflection 메커니즘을 사용하기 위해서 읽으면 많은 참조가 될 것이다. 참고로 요새는 Reflection 메커니즘보다는 Annotation을 활용한 메커니즘을 사용하는 추세인 것 같다.
55. Working Effectively with Legacy Code, 2004. 10. 2, Prentice Hall, Michael Feathers(@mfeathers)
레거시 시스템을 사용하지 않더라도 꼭 읽었으면 도움이 되는 책이다. 레거시라는 의미는 기존에 짜여진 코드라는 의미 정도로 받아들이면 될 것이다. 확장하거나 재사용하기 힘든 코드에는 그 특징(징후)가 있으며, 이러한 코드를 품질이 더 높은 형태로 변경하기 위한 효과적인 방법들을 찾아볼 수 있다. Michael Feathers의 트윗 역시 많은 도움이 된다. 번역서도 나와있다.
56. Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Ed), 2004. 10. 22, Addison-Wesley, Alan Shalloway, James R. Trott
Design Pattern 책을 처음 접하는 사람에게는 다소 어려운 점들이 있다. 이러한 내용은 좀 더 해석이 필요하며 혼자서 공부하는 경우에는 설계 패턴에 관련된 다양한 책들을 보는 것이 도움이 된다. 즉, Design Pattern 책 하나로 통독을 하고 몇번씩 반복해서 공부를 하는 경우와 관련된 책들을 같이 보고 이해를 해가는 방식이 있는데, 후자의 경우, 이 책을 같이 보면 많은 도움이 될 것이다. 1st Ed의 경우 번역서가 나와 있다.
57. Head First Design Patterns, 2004. 10. 25, O'Reilly, Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra
Head First 시리즈는 너무나도 유명하고, 많은 내용들이 이미 출판되어 있다. 그 내용은 가히 파격이라 할 만큼 재미있고 이해가 쉽게 구성되어 있다. 꼭 한번 읽어 보는 것을 추천한다. 번역서 역시 출판되어 있으며, 읽어보면 뇌에 자극이 될 만큼 풍부한 상상력으로 가득 차 있을 것이다.
58. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Ed), 2004. 10. 30, Prentice Hall, Craig Larman
최근에는 Agile 관련된 활동을 주로 하며, 이 책은 객체지향 설계와 UML을 사용하는 내용에 대해서 기술한 것이다. 특히 도메인 모델에 대한 개념을 참고할 만하다.
59. Enterprise SOA: Service-Oriented Architecture Best Practices, 2004. 11. 19, Prentice Hall, Dirk Krafzig, Karl Banke, Dirk Slama
SOA 개념에 대해서 간략하게 관련 기술을 훑어볼 수 있으며, 몇가지 사례들이 포함되어 있다. 사례에서 보듯이 SOA를 전면적으로 도입하기에는 한계가 있으며, SOA를 도입하려는 목적과 목표가 뚜렷해야 한다. 특히 채널과 관련된 내용은 참고할 만하다.
60. Use Cases: Patterns and Blueprints, 2004. 11. 22, Addison-Wesley, Gunnar Overgaard, Karin Palmkvist
Gunnar Overgaard는 Jacobson 박사와 같이 유스케이스를 연구한 사람으로 그동안에 적용했던 다양한 유스케이스에 대한 내용들을 패턴화시켜서 정리했다. 또한, include와 extend와 같은 개념을 명확하게 설명하고 있어서 기존에 유스케이스를 단지 시나리오 차원에서 접근했다면 좀더 구조화된 유스케이스를 통해서 요구사항을 명확하게 정리를 할 수 있게 만드는 책이다.
61. Extreme Programming Explained: Embrace Change (2nd Ed), 2004. 11. 26, Addison-Wesley, Kent Beck, Cynthia Andres
1판에 이어서 2판을 낸 Kent Beck의 대표적인 책으로, 지금은 Aglie이나 Scrum과 같이 받아들이는데 크게 부담은 없지만, 1판이 나온 시점에는 상당히 업계에서는 충격적인 내용이었다. 이 책은 국내의 애자일 컨설팅의 대표주자인 김창준씨가 번역을 하기도 했다. Kent Beck은 트윗에서도 좋은 내용을 말하고 있으니 팔로잉을 하면 많은 도움이 될 것이다.
62. Lucene in Action (2nd Ed), 2004. 12. 1, Manning, Otis Gospodnetic, Erik Hatcher
오픈소스 검색 도구인 Lucene을 다룬 책은 그리 많지 않지만, 간단한 검색으로 사용하거나 무료로 검색 엔진을 사용할 수 있는 장점이 많다. 특히, 요새와 같이 검색 대상이 다양해지고, 많은 양의 데이터를 사용하는 경우에 Lucene을 사용하면 검색에 관련된 확장된 기능을 사용할 수 있을 것이다. 또한, Lucene은 Hibernate와 같이 사용되어서 기존의 ORM이 갖는 한계를 극복하는데도 많은 도움이 된다. (참고서적 : Hibernate Search in Action) 국내에 번역서도 나와 있다.
63. Agile Java: Crafting Code with Test-Driven Development, 2005. 2. 24, Prentice Hall, Jeff Langr
테스트 코드를 통해서 코드를 완성하는 TDD 방식의 프로그래밍을 소개하고 있으며, 다양한 예제를 통해서 자바의 기본적인 문법과 TDD 방식을 익힐 수 있다.
64. Java Puzzlers: Traps, Pitfalls, and Corner Cases, 2005. 7. 4, Addison-Wesley, Joshua Bloch(@joshbloch), Neal Gafter(@gafter)
Joshua Bloch는 현재 구글에 있지만, SUN에서 자바 플랫폼의 수많은 API를 만든 사람으로 이 사람의 말은 곧 자바의 기본적인 사상을 대표한다고도 할 수 있다. Effective Java (2nd Ed) 책을 쓰기도 했으며, 그의 트윗에는 정말로 참고할 만한 좋은 내용들이 많다. 국내에도 번역서가 나와 있으며, 간단한 재미있는 문제를 통해서 자바로 해결하는 방법이 들어있어서 책을 읽으면서 지루하다고 느끼지 않을 것이다.
65. Fit for Developing Software: Framework for Integrated Tests, 2005. 7. 9, Prentice Hall, Rick Mugridge, Ward Cunningham(@WardCunningham)
FIT는 Framework for Integrated Test 라는 의미이며, 위키(wiki)를 고안한 Ward Cunningham의 작품이기도 하다. 이 책은 FIT 를 사용해서 테스트하는 방법을 설명한 책으로 국내에도 번역서가 나와 있다. 비즈니스/사용자 관점에서 테스트는 하나의 시나리오에 대해서 검증해야 하는데, 이 경우 입출력 데이터의 다양성으로 인해서 상당히 많은 흐름이 존재한다. FIT는 이러한 다양한 흐름을 단순한 표 형태로 시각적으로 보여주어서 테스트 하는 사람에게 직관적으로 그 결과를 알 수 있게 해주는 프레임워크이다.
66. Service-Oriented Architecture (SOA): Concepts, Technology, and Design, 2005. 8. 2, Prentice Hall, Thomas Erl
SOA의 교과서라고도 말할 만큼 손색이 없는 책으로 Thomas Erl의 책은 SOA에 관련된 기술을 익힐 때 꼭 한번 읽어봐야 할 것이다. 국내에는 이 책이 번역서로 나와 있다.
67. Essential Business Process Modeling, 2005. 8. 18, O'Reilly, Michael Havey
BPM은 대부분 비즈니스 모델링 영역에서 사용되며, SOA가 대두되면서 BPM 역시 각광을 받기 시작한다. 하지만, 그 이전에도 비즈니스 모델링에 대해서는 많은 접근 방식들이 있었고, 표기법에 대한 고민도 많았었다. 현재는 BPMN(Business Process Modeling Notation)이 많은 도구들이 지원하면서 이 표기법이 많이 사용되는 추세이다. 이 책은 SOA 기술과 비즈니스 모델링을 어떻게 연결할지에 대한 내용으로 특히 EAI 관점에서 비즈니스 프로세스를 활용하는 관점을 참고할 만하다.
68. Practical Development Environments, 2005. 9. 23, O'Reilly, Matthew Doar
개발 환경에 관련된 기본적인 개념과 적용 방법에 대한 내용을 볼 수 있다. 수많은 다양한 도구가 관여될 수 밖에 없는 개발 환경은 개발자에게 있어서 많은 영향을 미치는 것이 사실이며, 최적의 개발 환경을 찾으려는 노력을 게을리 해서는 안된다. 이 책으로부터 이러한 개발 환경에 대한 접근 방식의 개념을 접할 수 있을 것이다.
69. Understanding Enterprise SOA, 2005. 11. 10, Manning, Eric Pulier, Hugh Taylor
기업 내에서 SOA의 적용은 사실 단순한 것이 아니다. 기업 내에 기존에 존재하던 수많은 시스템에 SOA를 적용하고, 때로는 업무 프로세스도 조정해야 하는 결과를 낳기 때문이다. 특히, 조직, 사람, 문화적인 측면에서 SOA의 적용은 또 다른 접근 방법이 필요하기도 하다. 이 책은 이러한 기술적인 측면 뿐마 아니라, 문화적인 측면에서도 SOA를 적용하는 내용을 포함하고 있다.
70. POJOs in Action: Developing Enterprise Applications with Lightweight Frameworks, 2006. 1. 23, Manning, Chris Richardson
객체지향 설계를 어떻게 시스템으로 구현할지에 대한 내용을 보려면 이책을 꼭 읽기 바란다. 특히, 엔터프라이즈에서 TDD와 객체지향, 가벼운 프레임워크를 적용하는 기술을 사용하고자 한다면 이 책이 많은 도움이 될 것이다.
71. Thinking in Java (4th Ed), 2006. 2. 20, Prentice Hall, Bruce Eckel
자바 기초 문법 책 중에서 이 책 만큼 좋은 책이 없다고 생각한다. Head First 시리즈가 나오기 이전부터 온라인 상에서 무료로 배포된 책이었고, 국내에도 매 개정판 마다 번역서가 나올 만큼 자바 초보자들에게 많이 읽히는 책이다. 다만, 저자가 더 이상 요새 이와 관련되어서 업데이트를 하지 않아서 그런지 최근의 자바 버전의 개정판이 안나오는 것 같다. 하지만, 자바 문법 이외에 객체지향 언어로서의 자바에 대한 개념을 잡기에 충분한 책이며, 기초를 다잡는데 꼭 읽어야 하는 책으로 추천한다.
72. Refactoring in Large Software Projects: Performing Complex Restructurings Successfully, 2006. 6. 5, Wiley, Martin Lippert(@martinlippert), Stephen Roock
리팩토링은 원래 외관상의 기능(API)에 대한 변경없이 내부적인 품질을 향상시키기 위해서 구조적인 변경을 시도하는 작업을 의미한다. 하지만, 대형 시스템에서 리팩토링은 그 차원을 넘어서 때로는 API 변경을 통해 전체 시스템의 구조의 변경을 가하는 경우가 많다. 저자가 독일 사람이라 독일식 영어를 구사한 것이 특징이고 내용이 다소 좀 실망스러운 감이 없지 않지만, 기존 리팩토링과는 다른 거시적인 관점에서 바라볼 수 있는 뷰를 생각해볼 수 있는 책이다.
73. Ajax Design Patterns, 2006. 6. 29, O'Reilly, Michael Mahemoff(@mahemoff)
2005년부터 폭발적으로 성장한 AJAX는 이제 보편화되어서 많은 웹 시스템에서 활용되고 있다. 또한, 브라우저나 UI 통신 기술 역시 AJAX에 특화된 것들이 많이 나온 상태라서 이 책에서 소개되는 패턴 중에는 일부 기술로 흡수된 것들도 있을 수 있다. AJAX와 관련된 다양한 기술과 표현 방법을 접할 수 있다.
74. RSS and Atom in Action: Web 2.0 Building Blocks, 2006. 7. 31, Manning, Dave Johnson
RSS는 네스케이프에서 My Netscape 프로젝트의 한 부분으로 시작되었으며, 당시에는 웹 상의 자원을 표현하는데 복잡하게 기술하는 RDF(Resource Description Framework)를 활용하는 것으로 RDF Site Summary(RSS)라는 이름으로 사용되었다. 네스케이프는 My Netscape 내에서 이 RSS를 사용해서 뉴스를 수집하고 사용자가 직접 편집할 수 있는 기능을 제공했다. 1999년 당시 네스케이프 개발자인 Dan Libby가 0.9 버전을 만들면서 사용자 커뮤니티는 두 그룹으로 크게 나뉜다. 한쪽은 RSS에서 RDF를 적극적으로 사용하자는 진영이었고, 다른 쪽은 RSS에서 복잡한 RDF를 없애자는 것이었다. 결국 상당한 영향력이 있었던 블로거인 Dave Winer의 영향으로 RDF를 제거하는 단순한 형태를 지지하는 진영이 이겼다. 그렇게 탄생한 것인 RSS 2.0 이며, 기존 버전과는 다른 형태를 띤다. ATOM은 기술의 발전으로 RSS의 명세가 애매해지면서 새로운 웹 퍼블리싱의 API의 필요로 인해서 생겨난 새로운 명세로 2005년 IETF(Internet Engineering Task Force)에서 RFC-4287 Atom Syndication Format을 표준으로 만든다.
현재는 HTML5를 사용한 다양한 웹 퍼블리싱 기술들이 새로운 국면을 맞고 있으며, 이들은 결국 기존의 RSS나 ATOM의 명세에 나타난 것들을 재활용하거나 확장하는 개념이 되고 있다. 사용자의 기기가 다양해지면서 웹 퍼블리싱에 대한 표준의 변경은 화면 기술과 같이 변하게 될 것이다.
75. Java Generics and Collections, 2006. 10. 17, O'Reilly, Maurice Naftain, Philip Wadler
JDK 5 이상에서 Generic의 도입과 Collection의 변화는 이전과는 상당히 다른 변화이다. 좀더 명확해지고 상세화지며, 기존 JDK 1.4 이하에서 문제가 되었던 Collection 부분을 Generic이라는 메커니즘을 통해 많은 향상을 가지고 왔다. 이에 대한 상세한 내용을 이 책을 통해서 접할 수 있다.
76. Java Persistence with Hibernate, 2006. 11. 24, Manning, Christian Bauer, Gavin King
In Action 시리즈 중에서 이름이 다른 Hibernate 관련된 책이다. Hibernate in Action은 2004년도에 이미 나와 있고, 이 책을 쓴 사람이 JEE의 JPA 표준이 나오고 Hibernate가 JPA 엔진으로 사용되면서 그 이전의 내용과는 다르게 쓴 책이다. Hibernate 뿐만 아니라, JPA에 대한 내용도 같이 볼 수 있어서 EJB3를 사용하는 사람은 꼭 한번 봐야 할 것이다. 현재 Hibernate는 JBoss의 JPA 엔진으로 사용되며, 꼭 EJB가 아니더라도 POJO 형태로 사용이 가능하다.
77. iBatis in Action, 2007. 1. 17, Manning, Clinton Begin, Brandon Goodin, Larry Meadors
아마도 국내 대형 프로젝트 뿐만 아니라, 여러 중소 프로젝트에서 가장 많이 사용하는 데이터 프레임워크가 iBatis일 것 같다. 2.x 버전까지는 iBatis로 불리고 3.x 부터는 myBatis로 이름을 바꾼다. myBatis는 기존 2.x 버전을 혁신적으로 바꾼 형태로 사용 방법조차도 많이 다르다. 하지만, myBatis에 관련된 책은 아직 나오지 않은 상태이고, 국내 SI 프로젝트도 2.x 버전을 더 선호하는 것 같다. 그런 차원에서 이 책은 iBatis의 모든 것을 살펴볼 수 있을 것이다. 많이 사용한 사람이라면 특히 고급 기능을 참고하면 코드가 상당히 줄어들 것이다. 번역서도 있다.
78. Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional, 2007. 2. 20, Wiley, Rex Black
테스팅에 대한 다양한 접근 방식 뿐만 아니라 프로세스도 같이 볼 수 있어서 테스트를 전문적으로 수행하는 사람들에게 많은 도움이 된다. 물론, 테스트를 그냥 개발 활동의 하나로 짧게 거쳐가는 사람들에게도 좋은 참고 자료가 될 것이다.
79. EJB 3 in Action, 2007. 4. 9, Manning, Debu Panda, Reza Rahman, Derek Lane
기존 J2EE의 EJB 2.x 하고는 확연하게 달라진 JEE의 EJB3는 사실상 POJO로의 전환이라고 볼 수 있다. 물론, POJO의 형태로 만들 수 있는 것은 메타 프로그래밍이라고 할 수 있는 Annotation 방식을 들 수 있으며 EJB 3는 그러한 메커니즘을 활용한 방식이다. 코드가 상당히 간결해짐은 물론이고, 로컬에서 WAS를 구동시키지 않고 테스트할 수 있는 방법이 만들어진 셈이다. EJB 3를 사용하고 싶은 사람은 이 책과 같이 ORM 관련 서적을 읽어야 할 것이다.
80. Object-Oriented Analysis and Design with Applications (3rd Edition), 2007. 4. 30, Addison-Wesley, Grady Booch, Robert A. Maksimchuk, Michael W. Engel, Bobbi J. Young, Jim Conallen, Kelli A. Houston
Grady Booch의 가장 최근 서적이며, 객체지향 관련된 최근 서적이다. 하지만, 기본적인 개념 위주의 내용이 주이기 때문에 객체지향의 개념을 명확하게 이해하고자 하는 학술적인 접근을 원하는 사람에게 적합할 것이다. 물론 UML 내용도 포함되어 있다. 개발 프로세스 역시 Macro와 Micro 방식이 소개되고 있으며, Agile 방식도 언급이 되어 있다. 사실, 요즘 객체지향, 컴포넌트, 개발 프로세스에 대한 내용에 대해서는 철지난 개념으로 취급받기 일쑤이지만, 현실적으로 이러한 개념들은 필수적으로 그리고 정확하게 알고 있어야 하는 내용이어야 할 것이다. 오히려 요즘은 이러한 개념들이 더 정통적인 방식이 아닌가 생각될 정도로 시간이 많이 흐른게 사실이다.
81. RESTful Web Services, 2007. 5. 8, O'Reilly, Leonard Richardson, Sam Ruby, David Heinemeier Hansson
RESTful은 HTTP이 가지고 있는 원래의 개념으로 되돌아가자는 의미로 받아들일 수도 있지만, 어찌보면 HTTP의 확장으로도 생각해볼 수 있다. RESTful은 웹 상에서의 모든 것들이 자원의 한 형태로 HTTP를 통해서 통신하는 방식으로 그동안 SOA의 반대급부의 형태로 다시 HTTP로의 회귀하려는 현상으로도 해석할 수 있지 않을까. 요새는 트위터나 페북과 같은 API를 개방하는 사이트들이 RESTful을 지원하고 (물론 SOA 역시 지원하기도 한다) 그 사용 방법 역시 단순하기 때문에 많이 사용되는 것 같다. 또한, Internet of Things 라는 개념이 등장하면 한동안은 HTTP를 활용한 RESTful의 사용은 더 다양하게 활용될 것 같다. RESTful에 대한 개념 뿐만 아니라 사용 방법에 대해서도 많은 도움을 받을 수 있다. 국내에 번역서도 나와 있다. 최근 Servlet 2.5 스펙에서는 RESTful을 지원하기도 한다.
82. Java Concurrency in Practice, 2006. 5. 19, Addison-Wesley, Brian Goetz, Tim Peierls(@tpeierls), Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea
자바에서 쓰레드, 그것도 멀티 쓰레드는 상당히 어려운 작업에 속한다. 그 어려운 작업을 Joshua Bloch가 책을 썼다는 것으로만으로도 이 책은 읽을 가치가 있을 것이다. 국내에도 번역서가 나와 있으며, 동시성에 관련된 프로그래밍시 많은 도움이 될 것이다.
83. xUnit Test Patterns: Refactoring Test Code, 2007. 5. 31, Addison-Wesley, Gerard Meszaros(@gerardmes)
단위테스트에 대한 내용을 패턴화시킨 것으로 특히 Test Double과 같은 개념은 한번쯤 알고 있는 것이 중요하며, 이책에는 다양한 패턴들을 적고 있다. 물론, 이러한 패턴을 알고 있다고 하더라도 부가적인 테스트 장치가 필요한 것은 사실이며 해당 상황에 맞게 적용하려는 노력은 필요하다. 단위테스트에 대한 개념과 junit에 대한 내용을 알고 있다면 이 책이 상당히 도움이 될 것이다. 국내에 번역서가 나와 있다.
84. Beautiful Code: Leading Programmers Explain How They Think, 2007. 6. 26, O'Reilly, Andy Oram, Greg Wilson
유명하고 연륜이 있는 프로그래머들이 자신이 가진 사고나 생각을 어떻게 코드 내에 표현하는지에 대한 과정을 볼 수 있을 것이다. 책이 나오면서 상당한 이슈가 되었으며 프로그래머로 보면 한번쯤 자신의 프로그래밍에 대해서 생각하게 하는 책이다. 번역서 역시 나와 있다.
85. Continuous Integration: Improving Software Quality and Reducing Risk, 2007. 7. 9, Addison-Wesley, Paul M. Duvall, Steve Matyas, Andrew Glover
CI는 TDD 방식을 넘어서(넘는다기 보다는 그 토대 위에서) 소프트웨어 통합을 어떻게 할 것인가에 대한 방식을 말한다. 사실, CI는 대부분이 자동화에 대한 개념으로 생각을 한다. 하지만 자동화는 어느 정도의 표준적이거나 일관적인 형태를 필요로 하며 이는 개발자에게 개발 환경이나 테스트 코드 등 여러가지로 영향을 미치는 부분이다. 국내에는 지속적인 통합이라는 제목으로 번역되어 있지만, CI는 통합 활동을 SW가 살아있는 동안 끊임없이 수행해야 할 활동임을 말하고 있다. 즉, 통합의 자동화 정도로 의역이 가능할 것이다. (물론, 자동화가 되지 않는 통합이 CI 범주에 속하지 못한다는 것은 아니지만, 누가 통합을 위해서 단순한 작업에 의미를 두는 사람이 있을지는 의문이다.) 이 책 이후에 2010년도에 Continuous Delivery라는 책이 나오는데, 이 책도 상당히 호평을 받은 책이다. 이 두가지 책을 읽는다면 통합과 배포에 관련해서 새로운 방향을 잡을 수 있을 것이다.
89. Enterprise AJAX: Strategies for Building High Performance Web Applications, 2007. 8. 4, Prentice Hall, David C. Johnson, Alexei White, Andre Charland(@AndreCharland)
이제 AJAX는 대세가 된다. 그것도 엄청난 빠른 속도로 웹에 영향을 미친다. AJAX는 기업 내에서도 많은 부분에 영향을 미치며 이를 적용할 수 있는 범위는 웹 전체로 확산된다. 그러한 적용에 대해서 이 책을 읽어보면 많은 도움이 될 것이다.
90. Spring in Action (3rd Ed), 2007. 8. 16, Craig Walls(@springinaction), Ryan Breidenbach
Spring 프레임워크 역시 국내 대형 프로젝트 뿐만 아니라 중소 규모의 프로젝트에서 상당히 많이 사용되는 프레임워크 중에 하나이다. 국내에는 이 책의 2판까지만 번역서가 나와 있지만, 3판까지 나올 정도로 그동안 많은 버전의 변화가 생겨난다. 즉, Spring 프레임워크는 초반에 J2EE의 반대급부로 나타났지만, 지금은 그 범위가 워낙 넓어지다 보니 오히려 경량 프레임워크로 이름을 불리는 것이 부담스러운 것이 사실이다. 하지만, 그만큼 사용하기 어렵지 않기에 많이 사용되고 또한 아직까지 J(2)EE 대용으로 사용하기에 그 기능면으로써도 손색이 없기에 아직까지 Spring 프레임워크를 대체할 프레임워크는 없다고 보며, 한동안 계속 이 프레임워크는 지속될 것이다. (사실 2.x 버전이나 3.x 버전이나 DI 관점에서는 기능의 차이가 거의 없다고 봐도 무방하다. Spring의 기본적인 DI 기능만을 사용한다면 1판이나 2판을 읽어도 상관은 없을 듯 싶다.)
91. Test Driven: TDD and Acceptance TDD for Java Developers, 2007. 10. 12, Manning, Lasse Koskela
Test Driven이라는 키워드로 검색을 하면 많은 책들이 나타난다. 이 책은 그 중에서 기본적인 TDD 개념을 중심으로 기술한 것으로 활용적인 측면보다는 학술적인 측면으로 읽으면 많은 도움이 될 것이다.
92. Next Generation Java Testing: TestNG and Advanced Concepts, 2007. 10. 25, Addison-Wesley, Cedric Beust, Hani Suleiman
테스트 프레임워크 중에 또 다른 프레임워크인 TestNG 프레임워크에 대한 내용이 있는 책이다. 기본적인 개념은 junit과 동일하며, junit에 조금은 싫증난 사람들인 TestNG를 사용해보는 것도 좋을 것이다.
93. Implementation Patterns, 2007. 11. 2, Addison-Wesley, Kent Beck
Kent Beck의 또 다른 패턴 책으로 여기에는 구현 관점의 패턴이 나타나 있는 것이 특징이며, Kent Beck의 세밀함과 정밀함을 볼 수 있다. 국내에도 번역서가 나와 있다. Kent Beck의 책은 항상 짧지만 깊은 인상을 준다. 그의 단순성(simplicity)을 옅볼 수 있을 것이다.
94. Wikipatterns, 2007. 12. 10, Wiley, Stewart Mader
위키는 그 어원이 하와이 말인 wiki(빨리)에서 가져왔다는 것을 알 것이다. 빠르게 웹 사이트를 만들고 공유할 수 있는 위키는 사실 어떻게 편집하고 컨텐츠를 어떻게 효과적으로 보여줄 것인가가 관건이다. 빠르게 컨텐츠를 공유할 수 있지만 효과적으로 공유하기 위해서는 구성 방법에 대한 고민이 필요하다. 이 책이 다소 도움이 될 것이다. 위키는 프로젝트 내에서도 공유하기 위한 도구로도 활용하기 좋으며, 모든 내용에 대해서 이력 관리가 가능하기 때문에 프로젝트 내의 의사소통에 상당한 도움이 될 것이다.
95. Making Things Happen: Mastering Project Management, 2008. 3. 25, O'Reilly, Scott Berkun(@berkun)
The Myth of Innovation의 저자이기도 한 Scott Berkun은 주로 창조적인 사고를 위한 내용을 유력 매체에 기고를 하기도 한다. 그가 MS에 있는 동안에 IE 관련된 프로젝트도 진행했었으며, 이 책은 프로젝트 관리에 대한 내용을 담고 있다. 이 책에서 그는 프로젝트를 진행하는 상황을 주방에서 요리를 하거나 응급실에서의 처치, 영화를 만드는 과정 등의 비유로 사용하고 있는데 그만큼 예상하지 못하는 일들이 SW 제작시에 발생한다는 것을 의미한다. 이는 비즈니스 상황에 복잡해지고 급변할수록 프로젝트는 그 강도가 더해질 것이며, 이를 관리하는 사람은 적절한 대응 전략을 구상해야 한다. 이제는 기존의 한번에 요구사항을 받고 이를 구현하는 과정의 절차지향적인 사고를 통해서 SW를 만든다는 것은 너무나도 그 결과를 뻔히 알 수 있다라는 것을 의미한다. 기존과는 다른 프로젝트 관리 기법이 정말 필요한 시기이다.
96. Implementing SOA : Total Architecture in Practice, 2008. 4. 4, Addison-Wesley, Paul C. Brown
개인적으로 보험사 프로젝트를 진행하면서 보험 시스템에 관련된 책이 그리 많지 않다는데에 놀라웠다. 이 책이 그러한 요구를 채워줄 수 있을 것이라 기대하고 봤지만, 역시 복잡한 금융시스템에 대한 뷰를 제공하기에는 여전히 한계가 있음을 인정한다. 책의 제목은 SOA이지만, 아키텍처 관점에서 접근하고 있으며, 저자가 TIBCO에 재직중이라 해당 제품을 활용한 아키텍처에 대한 접근 방식을 이야기하고 있다. 그렇다고 결코 내용이 가볍지는 않다. TIBCO를 사용하고 있는 사람에게는 좋은 참고서가 될 수 있을 것이다.
97. Java Power Tools, 2008. 4. 22, O'Reilly, John Ferguson Smart (@wakaleo)
자바 프로젝트에서 가장 보편적으로 사용하는 도구에 대한 소개로 프로젝트에서 개발환경에 대해 고민하는 사람에게는 참고가 될 것이다.
98. Struts 2 in Action, 2008. 5. 1, Manning, Don Brown, Chad Davis, Scott Stanlick
Struts가 2000년대 초반을 이끈 프레젠테이션 웹 프레임워크라면 지금은 활용도가 주춤하는 시기가 아닌가 생각된다. 번역서 역시 Struts 1.x 버전인 1판에 대해서만 나와 있고, 현재까지 2.x 책인 2판에 대해서는 번역서가 나와있지 않은 상태이다. 지금은 프레젠테이션 영역은 더 세분화되고 다양화되는 형태로 발전하고 있는 것 같다. 하지만, Struts 2 프레임워크가 1과 크게 달라지는 점들을 보면 프레임워크의 발전 방향을 볼 수 있을 것이다. 기존 XML 기반의 설정에서 어노테이션 기반의 설정으로 바뀌고 POJO 형태로의 변환은 테스트를 더 쉽고 코드가 간결하게 할 수 있는 형태로 프레임워크가 발전하고 있다는 측면을 볼 수 있을 것이다.
99. Refactoring HTML: Improving the Design of Existing Web Applications, 2008. 5. 11, Addison-Wesley, Elliotte Rusty Harold
HTML만큼 유연하고 임의적인 코드가 있을까. 하지만 이러한 특징은 UI 접근성이라는 한계에 부딪히게 되며 복잡한 화면을 만들어내는 주범이기도 하다. 물론, 이러한 현상은 CSS라는 것을 활용한 디자인과 구조(레이아웃)의 분리라는 기술로 발전하고는 있으며, HTML5와 CSS3로 진화하면서 그 현상은 더욱 가속화되고 있다. 특히, 브라우저 기술의 발전으로 기존 HTML 4에서는 여러개의 태그나 스크립트로 동작하던 것들이 단 한줄이나 두세줄로 표현되는 방식은 네트워크의 부하를 감소시키는 장점을 가지기도 한다.(특히, 무선 네트워크 상에서의 이러한 기술은 가장 큰 장점이 되기도 한다.) 말끔한 HTML을 원한다면 이 책이 많은 도움이 될 것이다.
100. Effective Java (2nd Ed), 2008. 5. 28, Prentice Hall, Joshua Bloch
Joshua Bloch의 대표적인 책인 이 책은 번역서로도 나와 있으며, 깔끔한 예제 코드로도 많은 도움이 된다. 새로운 자바 버전에서 더 깊이 있는 내용으로 효과적으로 자바를 사용할 수 있는 방법을 이 책을 통해서 배울 수 있을 것이다.
101. The Software Project Manager's Bridge to Agility, 2008. 5. 29, Addison-Wesley, Michele Sliger(@michelesliger), Stacia Broderick
Agile은 현재도 프로젝트 관리 영역에서 큰 영향을 미치고 있다. 이는 Lean 경영이나, Kanban 접근 방식으로도 같이 결합되기도 하며, 다양한 형태로 관리 영역에서 진화하고 있다. 프로젝트 관리의 공식 기구인 PMI에서도 Agile 방식을 많이 연구하고 있으며, PMBOK에서도 이에 대한 접근 방법에 대해 점차 포함하고 있는 상태이다. SW 개발에 있어서 진척도에 의존하는 관리 방식은 이제 바뀔 필요가 있으며, 이 책이 그러한 전향을 하는데 도움이 될 것이다.
102. The Productive Programmer, 2008. 7. 3, O'Reilly, Neal Ford (@neal4d)
Neal Ford는 ThoughtWorks 사의 SW 아키텍트이자 Meme Wrangler라고 소개되어 있으며, 그의 트윗은 늘 전 세계를 돌아다니며 수많은 강연을 하고 있다는 것을 말하고 있다. 그는 프로그래머의 능력은 개인에 따라서 최고 10배 이상이 난다라고 말하고 있으며, 가장 잘하는 프로그래머에게 최고의 도구를 주어서 그 능력을 배가 시켜야 한다고 주장한다. 그래서 그런지 이 책이 프로그래머가 생산성을 어떻게 더 효율적으로 낼 수 있는지 다양한 도구와 그 사용법에 대한 내용을 포함하고 있다. 국내에는 '능률적인 프로그래머'라는 제목으로 번역되어 있으며, 어찌 보면 내용이 시시하다고 생각되는 것들도 있지만, 정말 습관이 되면 좋은 방식도 꽤 포함되어 있다.
103. Agile Adoption Patterns: A Roadmap to Organizational Success, 2008. 7. 7, Addison-Wesley, Amr Elssamadisy
정말로 패턴의 전성시대인지 모르겠지만, 애자일 기법을 적용하는데 역시 패턴이 필요할까라는 의구심이 드는 책이다. 사실 애자일을 아는 사람들은 그 내용에 대해서는 크게 색다른게 없긴 하다. 다만, 애자일을 모르는 사람이나 조직에 이를 어떻게 적용할고 접근할지는 고민되는 부분들이 많다. 이 책이 그러한 상황에서 조금은 도움이 될 것이다.(국내 환경과 외국의 환경이 다르다보니 국내 현실에 적용하는 방법에 대해서는 다른 식의 접근법이 필요하지 않을까도 생각되며, 하루 빨리 이러한 지식들이 같이 공유되기를 바란다.)
104. Clean Code: A Handbook of Agile Software Craftsmanship, 2008. 8. 11, Prentice Hall, Robert C. Martin
얼마전에 Clean Coder를 내기도 했던 Robert C. Martin은 코드에 대해서는 대가라고 불를 만하다. 국내에도 번역서로 나와 있으며, Clean Coder에서도 자신의 코더로써의 삶을 말하고 있듯이 (사실 Clean Coder는 저자의 전기와 같다는 생각이 든다.) 코딩에 대한 열정을 볼 수 있는 책이다.
105. The Object-Oriented Thought Process (3rd Ed), 2008. 9. 4, Addison-Wesley, Matt Weisfeld
국내에는 '객체지향적으로 생각하라'라는 제목으로 번역되어 있으며, 객체지향 개념에 대해서 설명하고 있다. 사실 인간은 객체지향적으로 사고한다고 한다. 하지만, 이를 SW로 옮기는 과정에서 절차지향적이냐 객체지향적이냐가 나뉘며 인간에게 편한 코드는 절차지향적인 것이 직관적일 수 밖에 없다. 따라서, 객체지향으로 프로그래밍을 하다보면 코드를 보는 눈이 편하지 않은 경우도 많다. 하지만, 객체지향 코드에 대해서 익숙해지는 과정은 필히 겪을 필요가 있으며, 이를 극복하기 위한 과정으로 이 책 역시 도움이 될 것이다.
106. Maven: The Definitive Guide, 2008. 9. 24, O'Reilly, Sonatype Company(@SonatypeNexus, @SonatypeM2E, @SonatypeInfra)
Maven은 아파치 프로젝트에서 시작해서 거의 모든 오픈 소스 프로젝트에서는 표준화되어서 사용되는 도구이다. 또한, CI나 TDD에 적용될 수 있으며, 수많은 플러그인들이 있다. 프로젝트의 개발환경은 사실 Maven에서부터 시작된다고 해도 과언이 아니다. (이를 Mavenize 라는 표현을 쓰기도 한다.) 이 Maven 프로젝트는 Sonatype이라는 회사를 만들고 본격적으로 다양한 도구(Eclipse 플러그인의 경우 Indigo에서 Eclipse 산하 프로젝트로 되었지만, 그 이전에는 Sonatype에서 가지고 있었다.)들과 기술 컨설팅을 지원하며, 이 책 역시 그 회사에서 쓴 책이다. Maven을 만든 사람이 쓴 책이라 많은 도움이 될 것이다. 책의 내용은 Sonatype 사이트에 오픈되어 있으며, 계속해서 버전이 업그레이드 된다. 현재 이 책에 없는 내용들도 볼 수 있을 것이다. 국내에 번역서는 나와 있다.
107. Collective Intelligence in Action, 2008. 10. 17, Manning, Satnam Alag
집단 지성은 인터넷이 보편화되고 활성화되면서 나타나는 하나의 접근 방법으로 각광을 받는다. 사실, 이전에 집단 지성에 대한 내용이나 이론들도 있었지만, 이를 직접 시스템적으로 적용하려는 현상은 근래 들어서 일 것이다. AI 분야와 유사하기도 하지만, AI는 시스템이 인간의 지능을 가질 수 있을까라는 의문을 가지게 만들지만, 집단 지성은 다소 오류나 잡음이 있지만, 유사하게 보편적인 지능을 가질 수 있는 시스템을 구축하는데 많은 도움이 된다고 본다. 특히, Amazon의 추천 서적 메일은 집단 지성의 대표적인 사례가 아닐까 생각된다. 국내에 번역서가 나와 있다.
108. Open-Source ESBs in Action, 2008. 10. 28, Manning, Tijs Rademarkers, Jos Dirksen
ESB(Enterprise Service Bus)는 복잡한 시스템 통합에 있어서 또 다른 접근 방식을 제시한다. 그 중에서 Mule은 대표적인 오픈소스 ESB이며 이 책에서도 이에 대한 내용이 포함되어 있다. 이 책은 Enterprise Integration Patterns 책과 같이 본다면 많은 도움이 되며, 또한, ActiveMQ in Action 책도 참고하면 좋다. ActiveMQ 역시 ESB로 사용하기에 손색이 없을 만큼 성능이나 기능면에서 상용에 뒤쳐지지 않는다. 사실, ESB 도구는 상용으로 상당한 비용이 든다. 물론 기술 지원이라는 명목이 있긴 하지만, 그렇다 하더라도 도구가 모든 것을 해결해주지 않는다. 물론 중요한 인프라이긴 하지만 오픈 소스를 활용해보면 상용 못지 않는 기능을 사용할 수 있을 것이다.
109. Scaling Lean & Agile Development: Thinking and Organizational Tools for Large-Scale Scrum, 2008. 12. 18, Addison-Wesley, Craig Larman, Bas Vodde(@basvodde)
작은 단위의 조직이나 시스템에서 새로운 사상이나 기술을 적용하는 것은 그리 큰 문제가 안되지만, 대형 시스템이나 조직에 이를 적용하는 것은 또 다른 이슈나 문제가 발생되기도 한다. 이 책은 Applying UML and Patterns 책을 쓴 Craig Larman과 Bas Vodde가 이와 비슷한 내용인 Practices for Scaling Lean & Agile Development: Large, Multisite, and Offshore Product Development with Large-Scale Scrum를 작년에 또 출판한다. 이 책은 Agile이 가지고 있는 사상과 개념을 잘 설명하고 있다. 특히 거시적인 관점에서 Lean 사고 방식은 애자일을 적용하려는 사람이라면 큰 그림에서 한번쯤 집고 넘어가야 할 것이다. 1990년대에 리엔지니어링이라는 개념으로 뒤쳐진 일본을 다시 따라잡은 미국이 PI, BPR 등의 개념을 지나, 일본이 시도했던 Lean이나 Kanban 방식을 다시 추구하도록 Agile을 적용한다는 것이 아이러니하다. 어떻게 보면 Agile이라는 개념은 개인화된 서구 방식에서는 팀단위 활동으로 가치를 만드는 방식에 좀 충격적으로 다가왔을 수도 있다. 국내에서 Agile을 적용하려는 시도는 사실 서구의 방식과는 다른 방식으로 접근할 필요성을 느낀다. 미국을 따라하려는 것보다는 국내 실정에 맞는 방식을 더 고민하고 다양한 접근 방식을 시도하여 우리만의 독특한 방식을 만들어내는 노력이 필요할 것이다.
110. Hibernate Search in Action, 2008. 12. 28, Manning, Emmanuel Bernard(@emmanuelbernard), John Griffin
이 책은 Hibernate라는 강력한 ORM 도구가 가지는 불편한 기능 중에 하나인 검색의 기능을 Lucene이라는 엔진을 통해서 강화시키는 내용이 포함되어 있다. 실제 적용해보았을 때는 그리 나쁘지는 않지만 세밀한 부분에 있어서는 아직은 좀 기반이 약하다는 생각이 든다. 아무튼 이 기능이 기존의 SQL이 가진 단점을 극복하는데 조금은 도움이 될 수도 있다.
111. Agile Testing: A Practical Guide for Testers and Agile Teams, 2009. 1. 9, Addison-Wesley, Lisa Crispin, Janet Gregory
테스터를 위한 책이며, 애자일 방식의 테스팅을 적용하는 방법을 포함하고 있다. 사실 개발팀과 테스트팀이 나뉘어져 있다면 이들이 밀접하게 활동해야 한다. 이 책의 저자들은 그동안에 적용했던 방식을 소개하면서 시도했었던 것들을 나름의 방식으로 기술하고 있다. 국내의 테스트 팀이나 QA 팀이 꼭 한번 보았으면 하는 책이다.
112. Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design, 2009. 1. 20, O'Reilly, Diomidis Spinellis(@DSpinellis), Georgios Gousios(@gousiosg)
Beautiful 시리즈의 그 방면의 전문가로부터 그들이 생각하는 방식에 대해서 소개하는 책이다. 하지만, 아키텍처라는 주제로 그 짧은 이야기에 모두 다 소화하기는 힘들지 않았었나 생각해본다. 지면의 한계도 있지만, 너무 많은 사람들로부터 연관이 없는 내용을 싣다보니 본래에 의도했던 방향으로 책이 구성되지 않은 감도 없지 않아 있지만, 이들의 아이디어에 대해서는 볼 만하다고 생각된다.
113. JBoss in Action: Configuring the Jboss Application Server, 2009. 1. 28, Manning, Javid Jamae, Peter Johnson
JBoss에 관련되어서 최근에 나온 것으로 생각되며, J2EE에서 JEE로 버전이 바뀌면서 JBoss 역시 많은 내용이 바뀐다. JBoss가 오픈소스이기는 하지만, 국내에서는 대형 SI 프로젝트에서 그리 활발히 사용되지는 않는 것 같다. 하지만, 중소 규모에서는 한번 사용해보기를 권해본다. WAS는 벤더에서 제공되는 기술이 한계가 있으며, 이들이 모든 것을 해결해주기는 힘든 부분도 있다. 따라서, 나름대로 WAS에 대한 지식은 익힐 필요가 있으며, JBoss가 그 역할을 하기에 충분하리라 생각된다.
114. 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts, 2009. 2. 5, O'Reilly, Richard Monson-Haefel
97 Things 시리즈 중에 제일 첫번째 책으로 여러 아키텍트들이 짧은 글의 형태로 아키텍처에 관련된 내용을 싣고 있다. 마치 블로그를 보는 느낌도 들며, 실제로 이 책에 실린 내용은 O'Reilly 위키 사이트에 오픈되어 있다. 이 책을 번역하면서 일반 기술서적과 달리 그 느낌을 살리기가 쉽지는 않았다. 단어 하나 하나가 또 다른 의미로 사용되고 있고 문장과 문장 사이의 숨은 의미를 찾아내야 했었다. 아무튼 이 책은 가볍게, 하지만 에피소드 하나 하나가 깊게 생각할 수 있는 글로 이루져 있어서 부담없이 읽을 수 있을 것이다. 물론, 번역서를 많이 읽기를 권한다....^^
115. Mashup Patterns: Designs and Examples for the Modern Enterprise, 2009. 3. 28, Addison-Wesley, Michael Ogrinz
Mashup 이라는 단어는 원래 음악에서 기원한 장르라고 한다. 실제로 웹에서 Mashup을 검색하면 이에 속하는 음악들을 들을 수 있다. Web 2.0이 나타나면서 여러가지 서비스들을 혼합하고 새로운 부가가치를 만들어내는 방식의 서비스가 활성화되면서 Mashup은 또 하나의 트렌드가 된다. 사실 단어 상으로는 기존의 시스템 통합, EAI, EII 등의 어감보다 훨씬 정감이 간다고 생각되는데, 이에 대한 전제는 당연히 웹에서 제공되는 서비스의 오픈화이다. 지금 활성화된 사이트들을 보면 오픈 API를 제공되며 트위터의 경우 수십만개의 응용 애플리케이션들이 사용하고 있다. 이제는 트렌드라기 보다 웹을 주도하는 하나의 현상이라고도 볼 수 있다.
116. Growing Software: Proven Strategies for Managing Software Engineers, 2009. 3. 5, No Starch Press, Louis Testa
사실 책 제목으로만 보면 감이 잘 오지 않는 책이기도 하다. 하지만, 막상 내용을 보면 소프트웨어를 둘러싼 개인, 팀, 조직, 환경에 대한 내용이다. 어찌 보면 SW를 키우기 위해서는 마치 이를 만드는 대상이 중요하다는 생각이 들고, 실제로도 그렇다. 이 책은 SW를 대상으로 본 것이 아니라, SW를 만드는 주체를 대상으로 보고 있다. 이 책에서 말한 내용이 꼭 정답이라고 말할 수는 없지만, 우리에게도 SW를 만드는 환경과 그 주체들에 대해서도 한번쯤은 고민을 하는 것도 필요하다고 본다.
117. Cloud Application Architectures: Building Applications and Infrastructure in the Cloud, 2009. 4. 3, O'Reilly, George Reese (@GeorgeReese)
이 책의 저자는 활발한 트위테리언이기도 하다. 저자가 얼마전 방한했었는데, 트위터로 한국말로 연습하고 있어서 간단하게 말을 걸어봤었다. 이 책은 클라우드 중에서 AWS(Amazon Web Service)에 대한 내용을 주로 포함하고 있다. 클라우드라는 기본적인 개념과 AWS에 대한 기초적인 내용을 참고하는데 도움이 될 것이다.
118. The Economics of Iterative Software Development: Steering Toward Better Business Results, 2009. 4. 8, Addison-Wesley, Walker Royce, Kurt Bittner, Michael Perrow
이 책의 저자 중에 한명인 Walker Royce는 1998년에 Software Project Management를 냈다. IBM에 근무하면서 다양한 기법보다는 그 원리나 사고를 요하는 방식의 글을 쓴 사람이며, 이 책 역시 그 기대에 부응한다고 본다. 꼭 기술적인 내용이 아니더라도 사고를 깊게 하고 싶은 사람은 한번 읽어보기를 권한다.
119. Masterminds of Programming: Coversations with the Creators of Major Programming Languages, 2009. 5. 11, O'Reilly, Federico Biancuzzi, Shane Warden
이 책은 프로그래밍 언어를 만든 원저자들의 인터뷰를 실은 글이다. BASIC, SQL, AWK에서부터 C++, Objective-C, Java, C# 등 우리가 사용하는 언어의 창시자들을 이 한권의 책을 통해 만날 수 있다. 다만 아쉬운 점은 너무 짧은 인터뷰로 인해서 우리의 궁금증을 모두 해결할 수 있는지는 의문이 들긴 하다. 어찌되었든 지금 사용하는 언어가 누가 만들었는지는 한번쯤 코딩하다가 들지 않는가.
120. Web 2.0 Architectures: What entrepreneurs and information architects need to know, 2009. 5. 11, O'Reilly, James Governor(@monkchips), Dion Hinchcliffe(@dhinchcliffe), Duane Nickull
사실 Web 2.0은 실체가 있다기 보다는 트렌드라고 보는게 더 맞을 것 같다. 이 책 역시 Web 2.0이라고 부를 만한 특징과 기술을 소개하고 있으며, 몇가지 유형을 분석해 놓고 있다. 물론, 이제는 더 나아가서 Web 3.0까지도 거론되고는 있지만, 현재까지는 Web 2.0 시대라고 말할 수 있을 것이다. 하지만, Web 3.0으로 가기 전에 Internet of Things라는 개념이 나타나면서 앞으로의 웹이 어떻게 바뀔지는 더 두고봐야 할 것 같다. 어쩌면 걸어다니는 사람에게도 IP가 부여될런지도 모르겠다.
121. Head First Java (2nd Ed), 2009. 5. 11, O'Reilly, Kathy, Sierra, Bert Bates
Head First 시리즈는 상당한 인기가 있는 책이다. 국내에서도 많은 Head First 시리즈가 번역되어 있고, 이 책 역시 개정판으로 나와 있는 상태다. 지금의 시대는 역시 재미가 가미되어야 그 내용도 좋게 보이는 것 같다. 새로운 시도로의 접근은 필요하다고 보이지만, 이러한 자극이 한편으로는 상상력이나 추상력을 방해할 수도 있다는 차원에서 너무 깊이 빠지지 않기를 바란다. 아무튼 지루하지 않게 볼 수 있는 책이다.
122. Mashups: Strategies for the Modern Enterprise, 2009. 5. 15, Addison-Wesley, J. Jeffrey Hanson (@jjeffreyhanson)
Mashup 패턴이 다양한 Mashup 방법에 대해서 기술한 책이라고 보면, 이 책은 Mashup 구현 그 자체에 초점을 맞춰서 기술한 책이다. 하지만, 기술 관점에서 보면 다소 싱거운 내용이라는 생각도 든다. 너무나 다양한 것들을 소개하다보니 좀 더 심도있는 내용까지는 못다룬 것이 아쉽다.
123. Becoming Agile: ...in an imperfect world, 2009. 6. 1, Manning, Greg Smith, Ahmed Sidky
Agile 방식의 개발에 대한 기본적인 개념을 참고할 수 있는 책이다. 특히, 사용자 스토리에 기반한 Feature Card에 대한 사용 방식에 대해서는 이 책을 참고할 만하다고 본다. 예제와 같이 실제 저자가 적용했던 내용을 사진과 같이 싣고 있어서 많은 도움이 된다.
124. Open Source SOA, 2009. 6. 1, Manning, Jeff Davis
Open Source ESB에 이어서 Manning에서 출판한 Open Source SOA는 책 내용에 ESB 영역까지도 포함하고 있다. 하지만, 개인적으로 이책에서 참고했던 내용은 SCA(Service Component Architecture)이며, Tuscany가 그 역할을 하는 대표적인 오픈소스이다. 사실 서비스와 컴포넌트에 대한 개념을 명확하게 구분하려는 노력은 필요하다. 이 두가지를 섞어버리면 컴포넌트가 서비스와 같은 계층적인 형태로 구성되어서 재사용의 개념이 불명확해지거나 아예 없어지는 결과를 초래할 수도 있다. SCA는 조합(composition)이라는 개념을 추가하여 서비스를 퍼블리싱하는 영역으로 SDO(Service Data Object)와 같이 발전한다. 이 영역 역시 앞으로 발전할 수 있는 한 영역이기는 하지만 보편적으로 사용될지는 약간은 회의적인 생각이 든다. 그 외에도 ESB나 BPM, 그리고 비즈니스 룰엔진인 JBoss Drools에 관련된 내용들이 포함되어 있다.
125. The Process of Software Architecting, 2009. 7. 24, Addison-Wesley, Peter Eeles(@petereeles), Peter Cripps
아키텍트는 아키텍처를 만드는 사람이며, 이 아키텍트가 활동하는 행위를 아키텍팅이라고 한다. 하지만, 여기에 관련되어 프로세스를 명확하게 기술한 책은 그리 많지 않으며 거의 없다고 봐도 무방하다. 물론, 접근 방식에 대해서는 몇가지는 있지만, 이를 프로세스화시켜서 명확하게 활동으로 표현한 책은 없는데, 이 책이 이에 대해 조금은 위안을 준다고도 볼 수 있다. 하지만, 저자들이 IBM 소속이라 그런지 몰라도 마치 IBM의 또 다른 RUP를 보는 느낌이 든다. 아무튼 이러한 시도는 필요하다고 보지만, 아키텍팅이라는 활동이 워낙에 편차가 큰 활동이라 표준화시키듯이 표현하는데는 어느 정도 한계가 있는 것은 분명하다. 하지만, 역할이라는 관점에서 프로세스는 필요한 것이며, 이를 명확하게 표준화시키려는 노력 또한 필요한 것이 사실이다. 다만, 아키텍트라는 명함을 가지는 사람이 그리 많지 않은 것도 한계이기도 하다.
126. Managing the Testing Process: Practical Tools and Techniques for Managing Hardware and Software Testing (3rd Ed), 2009. 8. 11, Wiley, Rex Black
테스팅 프로세스는 테스트 조직에게 필수이기도 하지만, 프로젝트 진행시에 상당히 간과되는 부분이기도 하다. 그러한 프로세스 차원에서 필요한 개념과 여러 방식 및 표준을 포함하고 있으며, 개발 프로세스 중에서 테스트 프로세스에 대해서는 이 책으로 참고하기에 알맞는 것 같다.
127. Dependency Injection, 2009. 8. 12, Manning, Dhanji R. Prasanna
DI에 관련되어서 개념 뿐만 아니라 실제적인 접근법까지 참고할 수 있는 책이다. 기존에 Spring 프레임워크만을 사용했더라면, DI라는 개념이 어떠한 것이고 어떠한 방식으로 사용되며, 무슨 목적으로 사용되는지에 대해서 이 책을 같이 보면 목적에 맞는 DI 프레임워크를 사용할 수 있으리라 본다. Spring 프레임워크가 너무 DI를 남발하도록 만든 것은 아닌지 고민이 되기도 한다.
128. 97 Things Every Project Manager Should Know: Collective Wisdom from the Experts, 2009. 8. 14, O'Reilly, Barbee Davis, Harry Tucker
97 Things의 두번째 책으로 번역서가 나와 있다. 물론 이전 책과 같이 에피소드 형식의 글이며, 공감이 가는 내용들도 많을 것이다. 꼭 번역서를 사보시기를....
129. Growing Object-Oriented Software, Guided by Tests, 2009. 10. 22, Addison-Wesley, Steve Freeman (@sf105), Nat Pryce (@natpryce)
TDD와 객체지향에 대한 내용의 책이다. 하지만, 아주 내용이 좋다. 저자들은 jMock을 만든 사람이기도 하며, 그 노하우와 적용 방식을 이 책에 쏟아부었다고 보면 된다. 그리고 그 결과는 상당히 만족스럽다.
130. Beautiful Testing: Leading Professionals Reveal How They Improve Software, 2009. 10. 22, O'Reilly, Tim Riley, Adam Goucher
테스트는 사실 단순한 구조인 경우에는 그리 문제가 되지 않는다. 비즈니스가 복잡해지고 시스템이 복잡해지면서 점차 테스트에 대한 매력을 잃게 되고, 어느 누구 이를 해결하려고 하지 않는다. 하지만, 그럴수록 테스트는 더욱 더 필요하며 이 책에 소개된 여러가지 에피소드들은 좀더 테스트에 대한 강력한 욕구를 자극하게 만든다.
131. Succeeding with Agile: Software Development Using Scrum, 2009. 11. 5, Addison-Wesley, Mike Cohn (@mikewcohn)
애자일 접근 방식 중에서 대표적이며 유일한 것이 Scrum이며 이 방식은 많은 효과를 보고 있는 것도 사실이다. 국내 SI 프로젝트에서 Scrum을 적용한다는 것은 쉽지만은 않으며 고객과 프로젝트 관리, 개발 인력 모두가 상당한 공감이 가야한다고 본다. 해외에서는 계속해서 애자일과 같은 책이나 자료들이 쏟아지고 있지만, 현실은 이와는 다소 괴리감이 느껴지는 것이 사실이다. 어찌보면 이것 역시 한국의 특수한 상황이라고도 볼 수 있지만, 기존의 방식이 나쁘다고는 할 수 없지만 최적이라고도 볼 수 없기에 Scrum과 같은 방식의 SI 프로젝트가 점점 많아지기를 고대하기에는 관리에 대한 마인드의 변화가 가장 시급하다고도 볼 수 있을 것이다. 이 책의 저자인 Mike Cohn은 애자일과 관련된 책들을 많이 썼으며, 이 책이 가장 최근의 책이다. 그만큼 연륜이 있기에 이 책 역시 호평을 받았고 현실적인 내용이 많이 포함되어 있다. 다만 그 현실이 국내의 현실과는 다소 괴리감을 느낀다는 것이 씁쓸하다.
132. Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages, 2009. 12. 31, Pragmatic Bookshelf, Terence Parr
ANTLR이라는 도구가 있다. 사실 이 도구를 사용하기 전까지는 ANT를 활용한 도구라고만 생각했다. 하지만, ANTLR이 소스코드 파서라는 것을 알고부터 이 도구에 대한 흥미가 생겼으며, 이를 활용해서 코드를 생성시키는 방식인 DSL(Domain-specific Language)의 일종인 템플릿 엔진에도 관심이 생겼다. DSL은 사실 MDA의 반대급부로 나타난 것 같다는 생각이 든다. 하지만, 반대라기는 보다 무거운 방식의 MDA와는 달리 가벼운 방식의 DSM(Domain-specific Modeling)은 현실에 적용하기에 무리가 없다고 본다. DSM에서 필요한 것은 템플릿이며 이를 특정 메커니즘(이를 DSL이라 한다)을 통해서 대상 코드를 만드는 방식이며, ANTLR이 이를 사용하기 적합하다고 본다. 현재는 C, C++, Java, SQL 등 많은 언어로 만든 코드 파서를 지원하고 있으며, 이 모든 것이 grammar라는 설정 파일 하나로 모두 제어가 가능하다. 물론 그 문법은 이책의 저자가 쓴 The Definitive Antlr Reference 을 참고하면 된다.
이와 같이 정리해보니 상당히 많은 분량이기도 하지만, 지난 10여년 간에 경력으로 보면 그리 많지도 않을 것 같기도 하다. 물론, 위 책을 처음부터 끝까지 샅샅이 보았다는 것은 당연히 거짓말이며, 어떤 책은 주요 부분만 혹은 앞부분만 참고하기도 했다. 혹은 어떤 책은 강의 교재를 만들면서 처음부터 끝까지 참고하기도 했으며, 또 어떤 책은 해결하기 위해서 수십번을 본 책들도 있다. 어떤 책들은 원본이 아닌 카피본으로, 또 다른 책들은 전자 문서의 형태로, 혹은 인터넷 구매나, 시간이 남아 서점에 들러 눈에 띠어서 구매한 책들도 있다. 책의 내용은 순전히 내가 느낀 것만을 기술한 것으로 이 내용에 대해서 그리 신빙성을 가지지 않았으면 한다. 책은 읽는 이마다의 느낌과 생각이 다를 수 있을 뿐이다. 다만, 목록이나마 참고하고, 여기에 검색해놓은 저자들의 트위터를 팔로잉해보고(위의 저자들을 포함해서 수많은 그루가 내 트위터의 gurus 목록에 있다.), 이들이 무슨 이야기들을 하는지를 참고한다면 SW 개발 분야에 있어서는 최소한 트렌드는 놓치지 않으리라고 본다.
서적_추천_w_twitter.xlsx
또한, 요새는 트위터와 같은 SNS를 통해서 해외 유명 서적의 저자들을 직접 생생하게 접할 수 있다는 사실이 SW를 업으로 삼고 있는 나에게 너무나도 뜻깊은 일이기도 했다. 그에 맞춰서 그동안 내가 접할 수 있었던 해외 서적들과 그 저자들의 트위터 계정을 같이 공유하고자 한다. SW 분야에서 일하고 있는 많은 분들에게 도움이 되었으면 하고, 좋은 책들은 같이 공유해서 나 또한 많은 도움을 받고자 한다. (아래 나열된 책들은 발간일 순임)
1. The Object Advantage: Business Process Reengineering with Object Technology, 1994.9. 30, Addison-Wesley, Ivar Jacobson(@ivarjacobson), M. Ericsson, A. Jacobson
상당히 오래된 책이다. 나도 2000년도 초반에 접했던 책이고, UML의 3 Amigos 중의 한 사람인 Ivar Jacobson의 중요한 사상이 들어 있는 책이다. 1990년 대는 미국이 일본과의 경쟁에서 상당한 위기 위식을 느끼던 해이기도 하다. 이 시기의 핵심은 부제에 있는 Reengineering이다. 사실 이 책은 60년대부터 객체지향 기술을 연구한 Jacobson의 유스케이스에 대한 내용이 주로 핵심적으로 들어 있으며, 특히 비즈니스 관점에서 유스케이스를 어떻게 활용할지에 대한 내용이 있어서 유스케이스를 단순하게 다이어그램만을 알고 있다면 이책을 보면 많은 배경 지식을 가질 수 있을 것이다. 특이할 사항은 그의 아들인 A. Jacobson과 같이 이 책을 썼는데, 이미 60이 훨씬 넘은 Jacobson을 트위터에서도 만날 수 있다는 것이 행운이기도 하다. (Ivar Jacobson 박사는 한차례 회사에서 만난 적도 있지만, 개인적으로도 영광이었고 늘 얼굴에 웃음이 떠나지 않을 정도로 낙천적인 성격이었던 것 같다.)
2. Design Patterns: Elements of Reusable Object-Oriented Software, 1994. 11. 10, Addison-Wesley, Erich Gamma(@ErichGamma), Richard Helm, Ralph Johnson(@RalphJohnson), John M. Vlissides
너무나도 유명하고, 지금도 아직까지 많은 스터디 팀에서 공부할 정도로 유명하다. 제작년이 이 책이 출판된지 15년이 되는 해인데 SW 설계에 있어서 끼치는 영향이 상당하다. 패턴은 알다시피 건축에서 Christopher Wolfgang Alexander가 처음 소개되어서 이를 SW 분야로 결합시킨 결과이며, 아직도 이 분야의 서적들은 많은 관심과 꾸준한 결과물들을 내고 있다. 이 책에 대해서는 더 이상 강조할 필요가 없을 정도로 아주 중요한 책이라는 것은 SW 분야를 업으로 삼고 있는 분들에게는 누구나가 다들 아시리라.
최근에 Erich Gamma가 IBM의 Jazz에서 MS로 옮기다는 소식이 있었고, John. M. Vlissides는 얼마전 암으로 세상을 떠났다는 소식이 있었다. 이들을 모두 GoF (Gang of Four)라고 부르고 있다.
3. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Ed), 1995. 8.12, Addison-Wesley, Frederick P. Brooks
SW에서 사람의 투입이 생산성을 올린다는 보장을 못한다는 내용이 들어있는 책으로, 사실 이 책은 처음 책이 출판된 21년 만에 2판이 새로 개정되어서 나온 책이다. 즉, 1974년에 이러한 내용을 이미 Brooks가 말했음에도 불구하고, 지금까지도 이러한 오류를 범하는 현장이 곳곳에 있다는 사실이 안타까울 뿐이다. Brooks는 1999년에 Turing Award를 탔으며, 최근에 The Design of Design 이라는 책을 내는 등 활발하게 활동하고 있다.
4. Object Solutions: Managing the Object-Oriented Project, 1995. 10. 22, Addison-Wesley, Grady Booch
UML의 3 Amigos 중의 또 다른 한사람이 Grady Booch의 사상을 잘 나타내고 있는 책으로, UML이 처음 나타나는 시기의 그 토대를 알 수 있다. 여기에 James Rumbaugh 까지 세사람의 사상이 합쳐져서 UML이 태동하였으며, 그 이후 SW 업계는 거의 UML이 표준으로 자리잡히는데 큰 역할을 했다. 사실, 이들이 이전부터 SW에 미치는 영향력들이 상당했으며, UML로 인해서 그 세력이 상당해졌음을 부인할 수 없는 사실이다. UML의 표기법 만큼이나 이들이 어떠한 사상을 가지고 있는지를 알아보는 것도 상당한 도움이 된다.
5. Pattern-Oriented Software Architecture Volume 1: A System of Patterns, 1996. 8. 8, Wiley, Frank Buschmann, Regine Meunier, Hans Rohnet, Peter Sommerlad, Michael Stal(@MichaelStal)
POSA 패턴으로 알려져있는 내용들이 이 책에 포함되어 있으며, Design Pattern 책이 패턴을 익하는 최초의 책이라면 그 다음으로 익히는 내용들이 이 책에 포함되어 있다. 그 이후로 이 책은 Volume 5 까지 나오면서 실제 시스템 설계시에 많은 내용을 제공하기 때문에 설계시에도 늘 참조하고 있는 책이다.
6. Analysis Patterns: Reusable Object Models, 1996. 10. 19, Addison-Wesley, Marin Folwer (@martinfowler)
Martin Fowler는 너무나도 유명한 ThoghtWorker이다. ThoughtWorks 사는 Neal Ford를 포함하여 Rebecca Parsons 등이 있는 SW 회사로 이들이 낸 책들은 SW 분야에 많은 영향을 미친다. Refactoring 책으로도 유명한 Martin Fowler는 이후에 몇가지 책을 더 내면서 SW 책을 쓰는 족족 많은 호응을 받는다. Analysis 패턴은 이 당시에 UML이 표준적으로 사용되지 않던 시기라 Flower가 그 당시의 표기법을 응용하여 몇가지 규칙을 정해서 책에서 표기하였다. 이 책은 다양한 업무를 패턴 형태로 분류하고 이를 분석하는 기법들을 소개하고 있다. 사실 이 책의 내용은 이전의 데이터 모델링에서 고민했던 부분들이 상당히 많이 들어가있다. 1996년 1월달에 발행된 David C. Hay가 쓴 Data Model Patterns의 책 내용은 데이터 모델링 관점에서 Analysis 패턴과 유사한 내용들이 많이 들어가 있다. 즉, Martin Fowler는 비즈니스 로직 관점에서 DB 모델의 내용을 접근했다고도 볼 수 있다. DB 모델링에도 관심이 있다면, Hay가 쓴 책도 추천한다. Hay는 2006년도에 Data Model Patterns: A Metadata Map이라는 내용으로도 책을 내는데, 이전에 쓴 내용들의 좀 더 최근 내용과 확장된 내용이 포함되어 있다.
7. Software Reuse: Architecture, Process and Organization for Business Success, 1997. 6. 1, Addison-Wesley, Ivar Jacobson, M. Griss, P. Johsson
Ivar Jacobson이 쓴 또 다른 이 책에서는 컴포넌트라는 초기 개념을 살펴볼 수 있다. 재사용이라는 관점에서 애플리케이션을 구성하는 접근 방법이 소개되어 있다. 컴포넌트에 관심이 있다면, 이 책을 살펴보는 것도 좋다.
8. Object-Oriented Project Management with UML, 1998. 8. 3, Wiley, Murray Cantor
UML이 업계 표준이 되기 시작하면서 다양한 영역에서 UML을 사용하고자 하는 욕구들이 나타났으며, 프로젝트 관리에서도 UML을 사용하려는 시도가 나타나기 시작한다. 분석/설계에서 뿐만 아니라, UML을 좀 더 확장하여 사용하고자 한다면 이 책도 상당히 도움이 될 것이다.
9. Objects, Components, and Framework with UML: The Catalysis Approach, 1998. 10. 29, Addison-Wesley, Desmond Francis D'Souza, Alan Cameron Wills
이 책은 Catalysis 방법론으로도 유명한 책으로 컴포넌트 개발 방식에 있어서 한 영역을 차지하고 있는 책이다. 발음하기 어려운 D'Souza (드-소자)가 컴포넌트를 구성하는 방식을 객체와 객체의 협업이라는 접근 방식을 취하고 있으며, 내용이 그리 쉽지는 않다. 하지만, 컴포넌트의 내부는 객체로 이루어져 있고 객체 간의 협업을 통해 구성된다는 원론적인 취지에 맞게 책의 내용을 구성하고 있으며 컴포넌트 내부 설계를 어떻게 할지를 고민하는 사람들은 한번쯤 읽을 만하다.
10. Java Design: Building Better Apps and Applets (2nd Edition), 1998. 12, Prentice Hall, Peter Coad, Mark Mayfield, Jonathan Kern
내용이 상당히 오래된 책이라 요새 읽기에는 좀 철지난 자바 문법들이 있기는 하지만, 자바라는 언어를 사용해서 객체지향 설계를 익히는데 좋은 내용들이 더러 있다. 언어의 문법적인 측면보다 설계적인 측면으로 책을 읽으면 도움이 될 만하다.
11. Peopleware: Productive Projects and Teams (2nd Ed), 1999. 2. 1, Dorset House Publishing, Tom DeMarco, Timothy Lister
국내에 피블웨어라는 번역서로도 출판된 이 책은 SW를 만드는 사람들이 어떻게 작업을 하고 이들의 생산성을 어떻게 관리하면 더 높일 수 있는지를 알려주는 책이다. 나 또한 프로젝트가 힘들때에 이 책을 읽고 상당히 많은 위안을 받은 책으로 SW 프로젝트를 진행하는 어느 누구든지(특히, PM/PL) 이 책을 읽어볼 것을 권한다. 번역서도 번역이 잘 되어 있어서 원서로 읽지 않아도 상관이 없으며, 기술적인 측면보다 작업 방식이나 태도를 중심으로 쓰여졌기 때문에 SW 기술을 잘 모르는 사람들도 읽어도 좋을 듯 싶다.
12. Refactoring: Improving the Design of Existing Code, 1999. 6. 8, Addison-Wesley, Martin Fowler, Kent Beck(@KentBeck), John Brant, William Opdyke, Don Roberts
Martin Fowler가 잘 알려지는 계기를 만든 책인 Refactoring은 SW 개발 방식에 대한 새로운 접근법을 제시하고 있다. 이 책은 Kent Beck도 같이 참여했는데, Agile이나 TDD 방식을 소스 코드를 통해 어떻게 접근할지를 생생하게 보여주고 있다. 이 후에도 이러한 방식은 많은 접근법에 영향을 미치게 된다. 이책에서 다양한 code smell을 맛보기를 기대해본다.
13. Business Component Factory : A Comprehensive Overview of Component-Based Development for the Enterprise, 1999. 12. 20, Wiley, Peter Herzum, Oliver Sims
개인적으로 컴포넌트에 대한 개념을 확고하게 해주는 책으로, 비즈니스 관점에서 컴포넌트를 식별하고 이를 IT 관점에서 어떻게 분석/설계/구현으로 이끌고 갈 것인지를 보여주는 책이다. Oliver Sims는 이전에도 Building Business Objects라는 책을 통해 비즈니스의 개념과 IT에서의 객체에 대한 개념을 매핑하려는 노력을 했었으며, 이를 Peter Herzum과 같이 이 책에서 기술하고 있다. 이 둘은 지금은 SOA를 지향하고 있고 당시에는 컴포넌트 관련 자료들이 많았던 CBDi Forum에서 이러한 내용으로 많은 article을 썼으며, 여기에서 발행된 많은 내용들이 컴포넌트를 분석/설계하는데 있어서 상당히 도움이 되었다. 이후에도 Sims는 그러한 내용을 또 한권의 책인 Enterprise Service Oriented Architectures에 싣는다.
14. Business Modeling With UML: Business Patterns at Work, 2000. 1, Wiley, Magnus Penker, Hans-Erik Eriksson
이 책 역시 UML을 확장하여 비즈니스 모델링을 하는데에 사용하는 다양한 패턴들을 담고 있으며, 실제 SW에 대한 상세한 기술을 모르는 사람들도 같이 접하게 되면 상당히 도움이 되는 책이다. 특히, Eriksson-Penker 표기법으로 비즈니스 모델링을 표현한 방식은 SPARX systems사가 만든 UML 도구인 Enterprise Architect에서 채용할 정도로 유명해진다. 이 당시에 스터디를 할 때에서 기술을 모르는 기획팀과 같이 했던 기억이 있는데, 상당히 재미있는 비즈니스 경우(case)들이 있으며, UML을 사용해서 모델링하는 기법들이 정말 기막히다는 생각을 했었다. 특히, stereotype에 대해서 자세히 알고 싶은 사람들에게 적극 추천한다.
15. Writing Effective Use Cases, 2000. 10. 15, Addison-Wesley, Alistair Cockburn(@TotherAlistair)
국내에도 번역서가 나와 있으며, 유스케이스가 단순한 표기법 이상이라는 것을 잘 알려준 책이다. Cockburn의 발음이 '코오번' 이라고 할 만큼 트위터에서 본 저자는 상당히 자유롭다는 생각이 들 정도이다. 요새 저자는 Agile 진영에서 많은 활동을 하고 있다. 책 내용도 유스케이스를 어떻게 작성하고 어떠한 흐름들을 채워넣어야 하는지에 대해 상세한 수준까지 나와있으니 분석/설계를 할 때 상당히 도움이 될 것이다.
16. The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises, 2001. 3. 6, Wiley, Len Silverston(@Len_Silverston)
이 책은 당시 출판시 내용이 상당히 많아서 볼륨 1과 2로 나왔으며, 이후에 볼륨 3가 추가로 나와있는 상태이다. 이 책을 처음 접한 것은 오픈 소스 쇼핑몰 솔루션인 OFBiz를 통해서 이며, 초기의 OFBiz는 이 책 볼륨 1과 2의 DB 스키마를 그대로 적용하여 소스를 구현하였다. 물론, OFBiz 자체가 다양한 엔진들과 상당히 확장성이 좋은 설계 기술들로 만들어져서 그 당시에도 공부하기에도 괜찮은 오픈 소스였지만, DB 모델링에서 다양한 비즈니스 경우들을 현실감있고, 확장 가능하게 설계하는 기법을 소개하고 있는 이 책도 상당히 많은 자극을 주었다. 1과 2는 여러 비즈니스 도메인에 걸쳐서 DB 모델링이 연결되거나 확장되어 있게 구성되어 있으며, 볼륨 3에서는 이를 더 확장하여 좀 더 복잡한 비즈니스를 수용할 수 있게 DB 모델링을 기술하고 있다. DBA 역할을 수행하는 사람이나 혹은 그렇지 않다고 하더라도 SW를 개발하는 사람이라면 데이터에 대한 모델링을 어떻게 할지를 고민하는 사람들에게 정말로 권하고 싶은 책이다.
17. Component-Based Software Engineering: Putting the Pieces Together, 2001. 6. 18, Addison-Wesley, George T. Heineman, William T. Councill
이 책은 우선 두께로서도 상당한 중압감을 느끼게 하지만, 여러 단편들을 엮은 책이다. 컴포넌트라는 주제를 다양한 형태로 분류하여 여러가지 각도에서 볼 수 있는 시각을 제시한다. 실용적인 부분보다 학술적인 부분을 강조한다고 볼 수 있는데, 컴포넌트에 대해서 여러가지 측면에서 생각하게 할 수 있는 책이라고 볼 수 있다. 컴포넌트라는 단어를 마케팅적인 용어로 사용되다보니 컴포넌트에 대한 많은 부분들이 훼손되었다고도 볼 수 있는데, 본질적인 것을 찾아보려는 노력을 한다면 분명 현실에서도 많은 이점이 될 수 있도록 컴포넌트를 사용할 수 있는 영역을 찾아볼 수 있을 것이며, 이 책이 그러한 영역에 참고가 될 것이다.
18. Business Rules Applied: Building Better Systems Using the Business Rules Approach, 2001. 10. 17, Wiley, Barbara von Halle
지금은 BRMS (Business Rule Management System) 등의 다양한 이름으로 붙여진 룰서버에서 실행되는 비즈니스 룰에 대한 개념을 잘 정립하게 할 수 있는 책으로, 시스템적인 측면 뿐만 아니라, 비즈니스 룰을 어떻게 분석/설계할 것인지에 대한 접근 방식을 고민할 때 참고할 만한 책이다. 비즈니스 규칙이 상당히 복잡해짐에 따라서 어떻게 룰을 식별/정리할 것인지, 그리고 어떻게 관리할 것인지가 업계에서 상당한 부담이 되기도 한다. 구현을 룰서버로 할지, 혹은 그냥 소스 코드 내에서 할지에 대한 고민보다 어떻게 비즈니스 룰을 분석/설계할 것인지가 더 큰 고민거리이고 이에 대한 실마리를 제시해줄 수 있는 내용이 이 책에 소개되어 있다고 보면 된다.
19. Lessons Learned in Software Testing, 2001. 12. 15, Wiley, Cem Kaner, James Bach, Bret Pettichord(@bpettichord)
이 책은 테스트에 대한 기술적인 측면보다 오해하고 있는 내용들을 정리한 책이다. 293가지의 Lesson을 설명하고 있으며, 기술적인 상세한 내용을 모르더라도 테스팅시 주의할 사항들에 대해서 도움이 되는 내용을 포함하고 있다. 국내에는 '소프트웨어 테스팅 법칙 293가지'라는 제목으로 번역서가 나와 있다.
20. Building Reliable Component-Based Software Systems, 2002. 6. 15, Artech House, Ivica Cmkovic, Magnus Larsson
이 책은 실용적인 측면보다 학술적인 측면이 강해서 그리 유명하지 않은 책이지만, 컴포넌트에 대한 원론적인 내용을 살펴보는데 도움이 될 것이다.
21. Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems, 2002. 10. 3, Addison-Wesley, Bruce Powel Douglass
SW가 임베디드 분야에까지 확장되면서 어떻게 설계할 것인지 그리고, UML을 어떻게 사용할 것인지에 대한 내용이 이 책에 포함되어 있다. 임베디드 분야에서 UML을 사용하여 설계하고자 하는 사람들에게 도움이 될 것이다.
22. Documenting Software Architectures: Views and Beyond, 2002. 10. 6, Addison-Wesley, Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, Judith Stafford
현재 2nd Ed.으로 출판된 이 책은 SW 아키텍처를 고민하는 사람이면 반드시 읽어야 되는 필수 서적 중에 하나이다. 국내에도 자주 오시는 David Garlan 교수를 비롯해서 SEI에서 SW 아키텍처의 대가들이 쓴 책으로 1st Ed.은 국내에 번역서가 나와 있다. 2편에서는 1편에서 소개된 내용을 더해서 그 이후에 나온 SOA와 같은 1판 이후 새로운 기술들이 더 추가되었다. SW 아키텍트라면 필히 읽어서 소화를 시켜야 할 책이다.
23. Building Web Applications with UML (2nd Ed), 2002. 10. 13, Addison-Wesley, Jim Conallen
이 당시에 UML을 사용해서 웹 애플리케이션을 어떻게 설계할 것인지가 상당한 이슈인 가운데 이에 대한 접근 방식을 설명하고 있는 책으로 간단한 예제를 통해서 이를 설명하고 있다. 이 책의 내용의 방식이 지금의 현실에는 맞지 않는 부분도 있긴 하지만, 결국 UML을 사용해서 어떻게 설계할 것인지는 이를 사용하고자 하는 사람의 몫이기 때문에 다양한 고민을 하고 어떻게 접근할지에 대한 아이디어를 얻을 수 있을 것이다. 기술적으로는 오래된 내용이긴 하지만, UML 사용에 대한 초점을 맞춘다면 건질 수 있는 내용이 다소 있을 것이다.
24. J2EE Best Practices: Java Design Patterns, Automation, and Performance, 2002. 11. 8, Wiley, Darren Broemmer
이 책 역시 제목에서 알 수 있듯이 기술적으로는 좀 오래된 내용을 담고 있다. (J2EE는 현재 JEE로 불린다) 하지만, J2EE로 만들어진 레거시 시스템을 운영하는 사람들에게는 도움이 될 만한 내용들이 많이 있으며, 특히 성능에 관련되어서는 참조할 만하다.
25. Server Component Patterns: Component Infrastructures Illustrated with EJB, 2002. 11. 15, Wiley, Markus Volter, Alexander Schmid, Eberhard Wolff(@ewolff)
패턴의 응용 분야가 다양해지면서 J2EE 영역에서 인프라적인 측면에 유형들을 식별하여 정리한 내용으로 주로 J(2)EE WAS를 운영하는 사람들이 읽을 만한 내용들이 포함되어 있다.
26. Patterns of Enterprise Application Architecture, 2002. 11. 15, Addison-Wesley, Martin Fowler
이 책은 Martin Fowler의 저력을 아주 잘 보여주는 책으로 Addison Wesley Signature 시리즈의 첫번째 책이며, 이후의 이 시리즈의 책들은 영향력 뿐만 아니라, 실용적인 차원에서 좋은 내용들을 제공하게 된다. 이 책의 하이라이트인 도메인 모델에 대한 설계 패턴들은 엔터프라이즈 환경에서 많은 도움을 주며, 이후의 책이나 현장에서 많은 영향을 미친다. 국내에도 번역서가 나와 있으며, 엔터프라이즈 환경에서 SW를 만드는 사람이라면 한번쯤 꼭 읽어보는 것을 적극 추천한다.
27. Object Design: Roles, Responsibilities, and Collaborations, 2002. 11. 18, Addison-Wesley, Rebecca Wirfs-Brock(@rebeccawb), Alan McKean
객체지향에 대한 개념과 설계를 익히는데 많은 도움과 참조가 되는 책으로 분석/설계를 하는 입장에서 꼭 읽기를 추천한다. 특히, 레베카의 존재감을 확실히 각인시키는데 충분한 책이다. 국내에도 번역서가 나와 있으며, 책의 내용은 오래되었지만, 지금도 충분히 읽은 만한 가치가 있다. 그녀의 트윗 내용들도 많은 도움이 되고 있다.
28. Test Driven Development: By Example, 2002. 11. 18, Addison-Wesley, Kent Beck
국내에 테스트 주도 개발이라는 이름으로 번역된 책으로, Kent Beck의 이름을 각인시키기에 충분한 내용을 담고 있다. 특히, 그의 간결하고 핵심적인 내용들은 이 책을 읽어보면 긴 설명이 필요없다는 것을 깨달을 것이다. Kent Beck의 트윗들도 역시 많은 도움이 되며, 그가 실용적인 방식을 추구한다는 것을 피부로 많이 느낄 것이다.
29. Component Software, 2002. 11. 23, Addison-Wesley, Clemens Szyperski
실용적인 측면보다 이론적인 측면을 다루고 있으며, 결코 한번 읽고는 내용을 이해할 수 없는 컴포넌트의 인사이트를 알아갈 수 있는 책이다. 우리나라 발음으로 지퍼스키가 쓴 이 책 이후로 컴포넌트에 대한 개념을 더 잘 설명할 수 있는 책이 아직 나오지 않은 것 같다. 물론, 이 시기 이후로는 학계는 SOA로 기술이 이전하던 시기이지만, SOA 역시 컴포넌트에서 출발하는 것으로 보면 아직 컴포넌트라는 개념은 SW에 있어서 중요한 개념 중에 하나이다.
30. Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML (2nd Ed), Volume 1, 2002. 12. 17, Wiley, Mark Grand
디자인 패턴은 자바 진영이나 MS 진영이나 모두 중요한 설계 방식의 하나로 받아들이고 있으며, 현재도 많이 사용된다. 이 책은 자바로 구현한 디자인 패턴 쯤으로 보면 된다. 하지만, 디자인 패턴(책에서는 예제가 C++로 구현되어 있음)만 보더라도 자바로 구현하는 것에 큰 무리가 없다면 설계나 언어에 대한 지식을 충분히 가지고 있다고 보면 된다. 자바에 대한 지식이 다소 부족하더라면 이책을 같이 참조하면 좋을 듯 싶다. 이후 Volume2도 나와 있지만, 평은 그리 좋지는 않은 것 같다. 다만, 자바 진영에서 사용되는 패턴들이 더 추가되었으니 참조해볼만은 하다.
31. Large-Scale Software Architecture: A Practical Guide using UML, 2002. 12. 30, Wiley, Jeff Garland, Richard Anthony
대규모 시스템에서 아키텍처를 어떻게 설계할지를 소개한 책으로 개요 수준에서 정리를 해놓았다. 초급 아키텍트와 설계자들이 UML을 사용해서 어떻게 설계하는지를 참고하는데 도움이 될 것이다.
32. Java Performance Tuning (2nd Ed), 2003. 1, O'Reilly, Jack Shirazi
자바 언어가 많은 시스템을 만드는데 사용되면서 성능 상의 이슈와 문제들을 일으키는데 이에 대한 많은 도움을 받을 수 있는 책이다. 특히, 성능 측면에서 자바를 사용하는 내용을 접근한 책이 그리 많지 않은데 개발하면서 성능 측면에서 놓치는 부분들을 이 책을 통해서 보완할 수 있을 것이다.
33. Model Driven Architecture: Applying MDA to Enterprise Computing, 2003. 1. 17, Wiley, David S. Frankel
MDA(Model Driven Architecture)는 궁극적으로 SW 개발이 지향하는 바이기도 하다. UML이 보편화되면서 모델을 통해서 구현체를 만들 수 있다는 자신감으로 이러한 사상이 나타나게 되는데, 현실적인 측면에서는 아직은 많은 부분들이 부족한 것도 사실이다. MDA에 대한 내용을 알고 싶은 사람들에게 도움이 되는 책이다.
34. Service- and Component-based Development: Using the Select Perspective and UML, 2003. 1. 24, Addison-Wesley, Hedley Apperly, Ralph Hofman(@RalphHofman), Steve Latchem, Barry Maybank, Barry McGibbon, David Piper, Chris Simons
2000년도 초반에는 CBD(Component-Based Development) 방법론이 상당한 화제였으며, 그 중에서 Select Perspective 방법론 역시 참고할 수 있는 것 중에 하나였다. 국내에서도 많은 대형 SI 회사들이 방법론을 이시기에 만들면서 (물론, 국가적으로도 마르미와 같은 방법론을 만들기도 했다.) 외국의 방법론들을 많이 참조하였으며 이 책 역시 그러한 참고 서적 중에 하나이다. 하지만, 개인적인 생각에 국내에서 만든 대부분의 CBD 방법론들은 John Cheesma이 쓴 UML Components 책에서 설명하고 있는 단순한 프로세스를 참고하고 있다고 생각이 든다. 이 책은 일부로 추천 서적에서 제외를 했는데, 내용은 상당히 절차적으로 컴포넌트를 만드는 방식을 설명하고 있지만, 이는 컴포넌트를 만드는 한가지 방법일 뿐이지, 이대로 컴포넌트를 만든다면 상당히 모순되는 측면들이 많이 있다. UML Components의 접근 방식은 다분히 데이터 관점의 접근 방식이라 프로세스적인 측면은 컴포넌트로 나타나지 않으며, 대부분의 비즈니스 로직이 엔티티나 SQL 차원에서 구현되는 결과를 만들 수 있다는 단점이 있다. 또한, 책 내용이 많은 사람들이 좋아하는 너무나도 구체적인 단계적인 방식으로 인해서 상당히 애매하고 생각하게 하는 부분들이 과감히 생략되었다는 차원에서 많은 CBD 방법론에서 참고하지 않았나 싶다. CBD 방법론을 연구한 국내의 논문들에서도 다양한 방법론에 대한 장단점을 분석한 것도 있었지만, 장점만을 모아놓은다고 해서 좋은 방법론이라고 볼 수는 없다. 또한, 요새와 같이 잦은 비즈니스 변경에 유연하게 대처할 수 있는 방법론들을 창의적으로 고민할 필요는 있다고 본다.
35. Beyond Software Architecture: Creating and Sustaining Winning Solutions, 2003. 2. 9, Addison-Wesley, Luke Hohmann
국내에는 소프트웨어 아키텍처 2.0으로 소개된 이책은 일반적인 SW 아키텍처 분야에서 놓치기 쉬운 영역(기획 등)들에 대한 내용들을 담고 있다. 번역서의 제목으로 SW 아키텍처 2.0 이라고 붙이기는 했지만, 사실 SW 아키텍처 범주에 두기도 그렇고 기획이나 마케팅 부분에도 두기 애매모호한 것들에 대한 내용이라고 보면 될 것이다. SW 아키텍처 분야외에 그 밖에 챙겨야할 것들이 무엇인지를 알아보는 것도 도움이 될 것이다.
36. The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP, 2003. 4. 18, Addison-Wesley, Per Kroll, Philippe Kruchten(@pbpk), Grady Booch
4+1 View로 유명한 필립 크루첸이 쓴 책으로 그가 책들은 주로 RUP(Rational Unified Process)에 관련된 내용이다. 물론, RUP가 4+1 View를 채용하고 있어서 인지 모르겠지만, 이 시절까지는 RUP에 대한 내용을 많이 쓴 것 같다. 하지만, 요새 그의 트윗을 보면 Agile에 대해서 많은 관심과 참여를 하는 것으로 보아서는 아무래도 대세는 Agile로 흐르는 것 같기도 하다. 하지만, SW 개발 프로세스에 대한 내용 중에서 RUP의 영향은 상당하니 이 부분도 참고하면 많은 도움이 될 것이다.
37. Core J2EE Patterns: Best Practices and Design Strategies, 2003. 5. 10, Prentice Hall, Deepak Alur, Dan Malks(@danmalks), John Crupi(@johncrupi)
그 유명한 DTO 패턴들을 비롯하여 엔터프라이즈 자바 진영에서 사용하는 다양한 패턴을 담고 있는 책으로, 수많은 프로젝트에서도 많은 참조를 했을 것이다. 다만, 지금 이러한 패턴들이 유용할지에 대한 부분은 한번쯤은 고민하는 노력은 필요할 듯 싶다.(하지만, 많은 부분들이 아직까지 유용한 것은 사실이다.)
38. Code Generation in Action, 2003. 6. 1, Manning, Jack Herrington
MDA가 OMG에서 차세대 아키텍처로 많은 지원을 하면서 실용적이고 현실적인 부분들이 많이 약한 것이 사실인데, 이 책은 이러한 부분들을 채워주는 내용으로 가득하다. 굳이 구현되는 소스와 소스를 생성하는 프로그래밍이 같을 필요는 없다. 어차피 생성된 소스가 중요한 것이니까. 코드 생성 방식에 대한 현실적인 내용을 참고하기에 좋다.
39. Enterprise Java and UML (2nd Ed), 2003. 6. 13, Wiley, C. T. Arrington, Syed H. Rayhan
UML을 사용해서 엔터프라이즈 자바를 설계하는 내용을 담고 있는 이책은 2nd Ed.이 나올 정도로 많은 호응을 얻었다. 그렇다고 전적으로 이 책에 나와 있는 방법이 정답이라는 이야기는 아니다. 취할 것도 있고 버릴 것도 분명 있다.
40. Domain-Driven Design: Tracking Complexity in the Heart of Software, 2003. 8. 30, Addison-Wesley, Eric Evans(@ericevans0)
최근에 국내에서 도메인 주도 설계라는 제목으로 출판된 이책은 출판된지 꽤 된 책이지만, 아직까지 그 내용은 도메인 설계시 많은 도움과 참고가 되기에 충분하다고 본다. 에릭 에반스의 놀라운 통찰력과 접근 방식은 많은 자극을 준다. 하지만, 트위터에서는 별로 말이 없어서 아쉽긴 하다. 객체지향 설계의 강점은 결국 도메인 설계에 있으며 이는 비즈니스를 어떻게 효과적으로 설계할 것인지에 달려있다. 3 tier 아키텍처에서 2 tier 적인 구현을 주로 경험해본 사람이라면 이 책을 통해서 도메인 설계를 해봄으로써 그 무한한 가능성을 탐구해보았으면 한다.
41. The Object Constraint Language: Getting Your Models Reday for MDA (2nd Edition), 2003. 9. 6, Addison-Wesley, Jos Warmer, Anneke Kleppe
OCL이 처음에 UML 스펙에 포함될 때 많은 비난을 받기도 했다. 하지만, 2nd Ed.이 나올 정도로 다시 UML 스펙에 포함된 이유는 바로 컴포넌트가 많이 사용되면서 눈에 보이는 구조적인 측면과 함께 눈에 보이지 않는 행위적인 측면도 표현할 방법이 OCL로 초점이 모아지면서부터이다. OCL은 이러한 행위적인 측면을 formal한 형태로 표현하는 방식으로 MDA에서도 사용되는 방식이다. 언어이기 때문에 몇가지 문법들이 있지만, 그리 어려운 것도 아니다. 하지만, 아직까지 OCL을 현실적으로 적용한 예는 그리 경험해보지는 않았다.
42. UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Ed), 2003. 9. 25, Addison-Wesley, Martin Fowler
역시 마틴 파울러의 저력이 녹아들어가 있는 책이다. 제목 그대로 UML의 정수를 모아놓았다고 해도 과언이 아니다. 바빠서 그 많은 UML을 일일히 보기 힘들다면 이 책은 꼭 읽기를 바란다. 국내에 번역서도 나와 있다.
43. JUnit in Action, 2003. 10. 1, Manning, Vincent Massol(@vmassol), Ted Husted(@tedhusted)
지금 2nd Ed.이 나와있으며, 국내에도 번역서가 나와 있다. 1st Ed. 자체가 상당히 좋은 내용이었으며, 2nd Ed.은 여기에 그동안에 새로 나온 TDD 기법을 추가하였다. 단순히 jUnit을 사용하는 것 뿐만 아니라, TDD를 하는 방식까지도 포함하고 있으며, 개인적으로 이 책의 저자인 Vincent Massol에 흠뻑 빠지기도 했다. 이후에 그는 Maven 프로젝트에 참여하여 온라인 형태의 tutorial을 썼었는데, 그 내용 역시 Massol의 매력에 빠지기에 충분했다. 현재는 XWiki 를 만든 프랑스 기업의 CTO로 활동 중이며, 그의 트윗 역시 XWiki의 내용이 대부분이다.
44. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, 2003. 10. 20, Addison-Wesley, Gregor Hohpe, Bobby Woolf
EAI(Enterprise Application Integration)으로 알려진 영역에 대한 패턴을 담고 있는 책으로 시스템 통합에 관련된 작업을 할 때에 상당히 도움이 되는 책이다. 처음 온라인에서 패턴들을 정리했고, 이를 책으로 냈는데, 지금 Hohpe는 Google에서 이러한 패턴들을 적용하고 있을 것이다. 다소 내용이 어렵지만, 유용한 패턴들이 상당히 많으니 시스템 통합시 필히 참고할 만하다.
45. Software Configuration Management Patterns: Effective Teamwork, Practical Integration, 2003. 11. 14, Addison-Wesley, Stephen P. Berczuk, Brad Appleton, Kyle Brown
형상관리에 대한 패턴을 담고 있는 책으로 패턴이 설계 뿐만 아니라, 다양한 곳에서 사용된다는 차원에서 흥미롭다. 물론, 패턴의 형식으로 차용한 것이기는 하겠지만. 형상관리 역시 개발 환경에서 상당한 영역을 차지하는 부분이고, 요새와 같이 다양한 버전을 관리할 제품들이 나오면서 이 책의 내용들이 상당히 도움이 될 것이다.
46. The Rational Unified Process: An Introduction (3rd Ed), 2003. 12. 20, Addison-Wesley, Philippe Kruchten
Kruchten이 쓴 RUP에 대한 또 다른 책으로 개발 프로세스에 대한 내용을 담고 있다.
47. MDA Distilled, 2004. 3. 13, Addison-Wesley, Stephen J. Miller, Kendall Scott, Axel Uhl, Dirk Weise
이 책을 통해 MDA의 개념을 이해할 수 있다.
48. The J2EE Architect's Handbook, 2004. 5, DVT Press, Derek C. Ashmore
배포 레이어 (deployment layer)에 대한 내용이 포함되어 있다.
49. Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems, 2004. 5. 28, Wiley, Paul Dyson, Andrew Longshaw
성능과 고가용성에 대한 다양한 패턴들을 살펴볼 수 있으며, WAS 운영에 관련된 내용들을 참고할 수 있다.
50. Code Complete: A Practical Handbook of Software Construction (2nd Ed), 2004. 6. 7, Microsoft Press, Steve McConnell
번역서로도 많은 사람들에게 읽힌 책으로, 코드를 작성하는데 있어서 개발자에게 필요한 올바른 습관을 가지게 하는 책이다.
51. Expert One-on-One J2EE Development without EJB, 2004. 6. 21, Wrox, Rod Johnson(@springrod), Juergen Hoeller
Rod Johnson을 일약 스타로 만드는 역할을 함과 동시에 Spring 프레임워크가 탄생할 수 있었던 책이다. 이 책은 Rod Johnson이 기존 J2EE의 EJB의 대용으로 POJO를 활용하는 방법을 창안하여 그 내용을 기술했던 것으로, 당시 Wrox 출판사에 수많은 토론들이 이루어졌고, 그 중에 한사람과 같이 오픈소스인 Spring 프레임워크를 만드는 계기가 된 책이다. Rod Johnson의 위대함을 이 책을 통해서 확인해볼 수 있다.
52. JUnit Recipes: Practical Methods for Programmer Testing, 2004. 7. 15, Manning, J. B. Rainsberger
기존 JUnit in Action이 가장 기본적인 JUnit을 이야기하고 있다고 보면, 이 책은 그 기본적인 사항을 활용하고 응용하고 뒤집어볼 수 있는 시각을 갖추게 한다. TDD와 관련된 현실적이고 실용적인 면들을 살펴볼 수 있을 것이다.
53. Refactoring to Patterns, 2004. 8. 15, Addison-Wesley, Joshua Kerievsky(@JoshuaKerievsky)
Joshua Kerievsky의 트윗은 늘 도움이 된다. 그의 트윗을 보고 있으면 현장감이 있고 통찰력이 뛰어남을 느낄 수 있을 것이다. 이 책 역시 그러한 내용들이 들어있다. 다만, 리팩토링 책들이 그렇듯이 코드에 대한 비즈니스 이해도가 필요하다.
54. Java Reflection in Action, 2004. 10, Manning, Ira R. Forman, Nate Forman
Reflection 메커니즘은 자바에서 잘 사용하면 득이 되지만, 오용하게 되면 독이 되기 마련이다. 득이 되는 Reflection 메커니즘을 사용하기 위해서 읽으면 많은 참조가 될 것이다. 참고로 요새는 Reflection 메커니즘보다는 Annotation을 활용한 메커니즘을 사용하는 추세인 것 같다.
55. Working Effectively with Legacy Code, 2004. 10. 2, Prentice Hall, Michael Feathers(@mfeathers)
레거시 시스템을 사용하지 않더라도 꼭 읽었으면 도움이 되는 책이다. 레거시라는 의미는 기존에 짜여진 코드라는 의미 정도로 받아들이면 될 것이다. 확장하거나 재사용하기 힘든 코드에는 그 특징(징후)가 있으며, 이러한 코드를 품질이 더 높은 형태로 변경하기 위한 효과적인 방법들을 찾아볼 수 있다. Michael Feathers의 트윗 역시 많은 도움이 된다. 번역서도 나와있다.
56. Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Ed), 2004. 10. 22, Addison-Wesley, Alan Shalloway, James R. Trott
Design Pattern 책을 처음 접하는 사람에게는 다소 어려운 점들이 있다. 이러한 내용은 좀 더 해석이 필요하며 혼자서 공부하는 경우에는 설계 패턴에 관련된 다양한 책들을 보는 것이 도움이 된다. 즉, Design Pattern 책 하나로 통독을 하고 몇번씩 반복해서 공부를 하는 경우와 관련된 책들을 같이 보고 이해를 해가는 방식이 있는데, 후자의 경우, 이 책을 같이 보면 많은 도움이 될 것이다. 1st Ed의 경우 번역서가 나와 있다.
57. Head First Design Patterns, 2004. 10. 25, O'Reilly, Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra
Head First 시리즈는 너무나도 유명하고, 많은 내용들이 이미 출판되어 있다. 그 내용은 가히 파격이라 할 만큼 재미있고 이해가 쉽게 구성되어 있다. 꼭 한번 읽어 보는 것을 추천한다. 번역서 역시 출판되어 있으며, 읽어보면 뇌에 자극이 될 만큼 풍부한 상상력으로 가득 차 있을 것이다.
58. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Ed), 2004. 10. 30, Prentice Hall, Craig Larman
최근에는 Agile 관련된 활동을 주로 하며, 이 책은 객체지향 설계와 UML을 사용하는 내용에 대해서 기술한 것이다. 특히 도메인 모델에 대한 개념을 참고할 만하다.
59. Enterprise SOA: Service-Oriented Architecture Best Practices, 2004. 11. 19, Prentice Hall, Dirk Krafzig, Karl Banke, Dirk Slama
SOA 개념에 대해서 간략하게 관련 기술을 훑어볼 수 있으며, 몇가지 사례들이 포함되어 있다. 사례에서 보듯이 SOA를 전면적으로 도입하기에는 한계가 있으며, SOA를 도입하려는 목적과 목표가 뚜렷해야 한다. 특히 채널과 관련된 내용은 참고할 만하다.
60. Use Cases: Patterns and Blueprints, 2004. 11. 22, Addison-Wesley, Gunnar Overgaard, Karin Palmkvist
Gunnar Overgaard는 Jacobson 박사와 같이 유스케이스를 연구한 사람으로 그동안에 적용했던 다양한 유스케이스에 대한 내용들을 패턴화시켜서 정리했다. 또한, include와 extend와 같은 개념을 명확하게 설명하고 있어서 기존에 유스케이스를 단지 시나리오 차원에서 접근했다면 좀더 구조화된 유스케이스를 통해서 요구사항을 명확하게 정리를 할 수 있게 만드는 책이다.
61. Extreme Programming Explained: Embrace Change (2nd Ed), 2004. 11. 26, Addison-Wesley, Kent Beck, Cynthia Andres
1판에 이어서 2판을 낸 Kent Beck의 대표적인 책으로, 지금은 Aglie이나 Scrum과 같이 받아들이는데 크게 부담은 없지만, 1판이 나온 시점에는 상당히 업계에서는 충격적인 내용이었다. 이 책은 국내의 애자일 컨설팅의 대표주자인 김창준씨가 번역을 하기도 했다. Kent Beck은 트윗에서도 좋은 내용을 말하고 있으니 팔로잉을 하면 많은 도움이 될 것이다.
62. Lucene in Action (2nd Ed), 2004. 12. 1, Manning, Otis Gospodnetic, Erik Hatcher
오픈소스 검색 도구인 Lucene을 다룬 책은 그리 많지 않지만, 간단한 검색으로 사용하거나 무료로 검색 엔진을 사용할 수 있는 장점이 많다. 특히, 요새와 같이 검색 대상이 다양해지고, 많은 양의 데이터를 사용하는 경우에 Lucene을 사용하면 검색에 관련된 확장된 기능을 사용할 수 있을 것이다. 또한, Lucene은 Hibernate와 같이 사용되어서 기존의 ORM이 갖는 한계를 극복하는데도 많은 도움이 된다. (참고서적 : Hibernate Search in Action) 국내에 번역서도 나와 있다.
63. Agile Java: Crafting Code with Test-Driven Development, 2005. 2. 24, Prentice Hall, Jeff Langr
테스트 코드를 통해서 코드를 완성하는 TDD 방식의 프로그래밍을 소개하고 있으며, 다양한 예제를 통해서 자바의 기본적인 문법과 TDD 방식을 익힐 수 있다.
64. Java Puzzlers: Traps, Pitfalls, and Corner Cases, 2005. 7. 4, Addison-Wesley, Joshua Bloch(@joshbloch), Neal Gafter(@gafter)
Joshua Bloch는 현재 구글에 있지만, SUN에서 자바 플랫폼의 수많은 API를 만든 사람으로 이 사람의 말은 곧 자바의 기본적인 사상을 대표한다고도 할 수 있다. Effective Java (2nd Ed) 책을 쓰기도 했으며, 그의 트윗에는 정말로 참고할 만한 좋은 내용들이 많다. 국내에도 번역서가 나와 있으며, 간단한 재미있는 문제를 통해서 자바로 해결하는 방법이 들어있어서 책을 읽으면서 지루하다고 느끼지 않을 것이다.
65. Fit for Developing Software: Framework for Integrated Tests, 2005. 7. 9, Prentice Hall, Rick Mugridge, Ward Cunningham(@WardCunningham)
FIT는 Framework for Integrated Test 라는 의미이며, 위키(wiki)를 고안한 Ward Cunningham의 작품이기도 하다. 이 책은 FIT 를 사용해서 테스트하는 방법을 설명한 책으로 국내에도 번역서가 나와 있다. 비즈니스/사용자 관점에서 테스트는 하나의 시나리오에 대해서 검증해야 하는데, 이 경우 입출력 데이터의 다양성으로 인해서 상당히 많은 흐름이 존재한다. FIT는 이러한 다양한 흐름을 단순한 표 형태로 시각적으로 보여주어서 테스트 하는 사람에게 직관적으로 그 결과를 알 수 있게 해주는 프레임워크이다.
66. Service-Oriented Architecture (SOA): Concepts, Technology, and Design, 2005. 8. 2, Prentice Hall, Thomas Erl
SOA의 교과서라고도 말할 만큼 손색이 없는 책으로 Thomas Erl의 책은 SOA에 관련된 기술을 익힐 때 꼭 한번 읽어봐야 할 것이다. 국내에는 이 책이 번역서로 나와 있다.
67. Essential Business Process Modeling, 2005. 8. 18, O'Reilly, Michael Havey
BPM은 대부분 비즈니스 모델링 영역에서 사용되며, SOA가 대두되면서 BPM 역시 각광을 받기 시작한다. 하지만, 그 이전에도 비즈니스 모델링에 대해서는 많은 접근 방식들이 있었고, 표기법에 대한 고민도 많았었다. 현재는 BPMN(Business Process Modeling Notation)이 많은 도구들이 지원하면서 이 표기법이 많이 사용되는 추세이다. 이 책은 SOA 기술과 비즈니스 모델링을 어떻게 연결할지에 대한 내용으로 특히 EAI 관점에서 비즈니스 프로세스를 활용하는 관점을 참고할 만하다.
68. Practical Development Environments, 2005. 9. 23, O'Reilly, Matthew Doar
개발 환경에 관련된 기본적인 개념과 적용 방법에 대한 내용을 볼 수 있다. 수많은 다양한 도구가 관여될 수 밖에 없는 개발 환경은 개발자에게 있어서 많은 영향을 미치는 것이 사실이며, 최적의 개발 환경을 찾으려는 노력을 게을리 해서는 안된다. 이 책으로부터 이러한 개발 환경에 대한 접근 방식의 개념을 접할 수 있을 것이다.
69. Understanding Enterprise SOA, 2005. 11. 10, Manning, Eric Pulier, Hugh Taylor
기업 내에서 SOA의 적용은 사실 단순한 것이 아니다. 기업 내에 기존에 존재하던 수많은 시스템에 SOA를 적용하고, 때로는 업무 프로세스도 조정해야 하는 결과를 낳기 때문이다. 특히, 조직, 사람, 문화적인 측면에서 SOA의 적용은 또 다른 접근 방법이 필요하기도 하다. 이 책은 이러한 기술적인 측면 뿐마 아니라, 문화적인 측면에서도 SOA를 적용하는 내용을 포함하고 있다.
70. POJOs in Action: Developing Enterprise Applications with Lightweight Frameworks, 2006. 1. 23, Manning, Chris Richardson
객체지향 설계를 어떻게 시스템으로 구현할지에 대한 내용을 보려면 이책을 꼭 읽기 바란다. 특히, 엔터프라이즈에서 TDD와 객체지향, 가벼운 프레임워크를 적용하는 기술을 사용하고자 한다면 이 책이 많은 도움이 될 것이다.
71. Thinking in Java (4th Ed), 2006. 2. 20, Prentice Hall, Bruce Eckel
자바 기초 문법 책 중에서 이 책 만큼 좋은 책이 없다고 생각한다. Head First 시리즈가 나오기 이전부터 온라인 상에서 무료로 배포된 책이었고, 국내에도 매 개정판 마다 번역서가 나올 만큼 자바 초보자들에게 많이 읽히는 책이다. 다만, 저자가 더 이상 요새 이와 관련되어서 업데이트를 하지 않아서 그런지 최근의 자바 버전의 개정판이 안나오는 것 같다. 하지만, 자바 문법 이외에 객체지향 언어로서의 자바에 대한 개념을 잡기에 충분한 책이며, 기초를 다잡는데 꼭 읽어야 하는 책으로 추천한다.
72. Refactoring in Large Software Projects: Performing Complex Restructurings Successfully, 2006. 6. 5, Wiley, Martin Lippert(@martinlippert), Stephen Roock
리팩토링은 원래 외관상의 기능(API)에 대한 변경없이 내부적인 품질을 향상시키기 위해서 구조적인 변경을 시도하는 작업을 의미한다. 하지만, 대형 시스템에서 리팩토링은 그 차원을 넘어서 때로는 API 변경을 통해 전체 시스템의 구조의 변경을 가하는 경우가 많다. 저자가 독일 사람이라 독일식 영어를 구사한 것이 특징이고 내용이 다소 좀 실망스러운 감이 없지 않지만, 기존 리팩토링과는 다른 거시적인 관점에서 바라볼 수 있는 뷰를 생각해볼 수 있는 책이다.
73. Ajax Design Patterns, 2006. 6. 29, O'Reilly, Michael Mahemoff(@mahemoff)
2005년부터 폭발적으로 성장한 AJAX는 이제 보편화되어서 많은 웹 시스템에서 활용되고 있다. 또한, 브라우저나 UI 통신 기술 역시 AJAX에 특화된 것들이 많이 나온 상태라서 이 책에서 소개되는 패턴 중에는 일부 기술로 흡수된 것들도 있을 수 있다. AJAX와 관련된 다양한 기술과 표현 방법을 접할 수 있다.
74. RSS and Atom in Action: Web 2.0 Building Blocks, 2006. 7. 31, Manning, Dave Johnson
RSS는 네스케이프에서 My Netscape 프로젝트의 한 부분으로 시작되었으며, 당시에는 웹 상의 자원을 표현하는데 복잡하게 기술하는 RDF(Resource Description Framework)를 활용하는 것으로 RDF Site Summary(RSS)라는 이름으로 사용되었다. 네스케이프는 My Netscape 내에서 이 RSS를 사용해서 뉴스를 수집하고 사용자가 직접 편집할 수 있는 기능을 제공했다. 1999년 당시 네스케이프 개발자인 Dan Libby가 0.9 버전을 만들면서 사용자 커뮤니티는 두 그룹으로 크게 나뉜다. 한쪽은 RSS에서 RDF를 적극적으로 사용하자는 진영이었고, 다른 쪽은 RSS에서 복잡한 RDF를 없애자는 것이었다. 결국 상당한 영향력이 있었던 블로거인 Dave Winer의 영향으로 RDF를 제거하는 단순한 형태를 지지하는 진영이 이겼다. 그렇게 탄생한 것인 RSS 2.0 이며, 기존 버전과는 다른 형태를 띤다. ATOM은 기술의 발전으로 RSS의 명세가 애매해지면서 새로운 웹 퍼블리싱의 API의 필요로 인해서 생겨난 새로운 명세로 2005년 IETF(Internet Engineering Task Force)에서 RFC-4287 Atom Syndication Format을 표준으로 만든다.
현재는 HTML5를 사용한 다양한 웹 퍼블리싱 기술들이 새로운 국면을 맞고 있으며, 이들은 결국 기존의 RSS나 ATOM의 명세에 나타난 것들을 재활용하거나 확장하는 개념이 되고 있다. 사용자의 기기가 다양해지면서 웹 퍼블리싱에 대한 표준의 변경은 화면 기술과 같이 변하게 될 것이다.
75. Java Generics and Collections, 2006. 10. 17, O'Reilly, Maurice Naftain, Philip Wadler
JDK 5 이상에서 Generic의 도입과 Collection의 변화는 이전과는 상당히 다른 변화이다. 좀더 명확해지고 상세화지며, 기존 JDK 1.4 이하에서 문제가 되었던 Collection 부분을 Generic이라는 메커니즘을 통해 많은 향상을 가지고 왔다. 이에 대한 상세한 내용을 이 책을 통해서 접할 수 있다.
76. Java Persistence with Hibernate, 2006. 11. 24, Manning, Christian Bauer, Gavin King
In Action 시리즈 중에서 이름이 다른 Hibernate 관련된 책이다. Hibernate in Action은 2004년도에 이미 나와 있고, 이 책을 쓴 사람이 JEE의 JPA 표준이 나오고 Hibernate가 JPA 엔진으로 사용되면서 그 이전의 내용과는 다르게 쓴 책이다. Hibernate 뿐만 아니라, JPA에 대한 내용도 같이 볼 수 있어서 EJB3를 사용하는 사람은 꼭 한번 봐야 할 것이다. 현재 Hibernate는 JBoss의 JPA 엔진으로 사용되며, 꼭 EJB가 아니더라도 POJO 형태로 사용이 가능하다.
77. iBatis in Action, 2007. 1. 17, Manning, Clinton Begin, Brandon Goodin, Larry Meadors
아마도 국내 대형 프로젝트 뿐만 아니라, 여러 중소 프로젝트에서 가장 많이 사용하는 데이터 프레임워크가 iBatis일 것 같다. 2.x 버전까지는 iBatis로 불리고 3.x 부터는 myBatis로 이름을 바꾼다. myBatis는 기존 2.x 버전을 혁신적으로 바꾼 형태로 사용 방법조차도 많이 다르다. 하지만, myBatis에 관련된 책은 아직 나오지 않은 상태이고, 국내 SI 프로젝트도 2.x 버전을 더 선호하는 것 같다. 그런 차원에서 이 책은 iBatis의 모든 것을 살펴볼 수 있을 것이다. 많이 사용한 사람이라면 특히 고급 기능을 참고하면 코드가 상당히 줄어들 것이다. 번역서도 있다.
78. Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional, 2007. 2. 20, Wiley, Rex Black
테스팅에 대한 다양한 접근 방식 뿐만 아니라 프로세스도 같이 볼 수 있어서 테스트를 전문적으로 수행하는 사람들에게 많은 도움이 된다. 물론, 테스트를 그냥 개발 활동의 하나로 짧게 거쳐가는 사람들에게도 좋은 참고 자료가 될 것이다.
79. EJB 3 in Action, 2007. 4. 9, Manning, Debu Panda, Reza Rahman, Derek Lane
기존 J2EE의 EJB 2.x 하고는 확연하게 달라진 JEE의 EJB3는 사실상 POJO로의 전환이라고 볼 수 있다. 물론, POJO의 형태로 만들 수 있는 것은 메타 프로그래밍이라고 할 수 있는 Annotation 방식을 들 수 있으며 EJB 3는 그러한 메커니즘을 활용한 방식이다. 코드가 상당히 간결해짐은 물론이고, 로컬에서 WAS를 구동시키지 않고 테스트할 수 있는 방법이 만들어진 셈이다. EJB 3를 사용하고 싶은 사람은 이 책과 같이 ORM 관련 서적을 읽어야 할 것이다.
80. Object-Oriented Analysis and Design with Applications (3rd Edition), 2007. 4. 30, Addison-Wesley, Grady Booch, Robert A. Maksimchuk, Michael W. Engel, Bobbi J. Young, Jim Conallen, Kelli A. Houston
Grady Booch의 가장 최근 서적이며, 객체지향 관련된 최근 서적이다. 하지만, 기본적인 개념 위주의 내용이 주이기 때문에 객체지향의 개념을 명확하게 이해하고자 하는 학술적인 접근을 원하는 사람에게 적합할 것이다. 물론 UML 내용도 포함되어 있다. 개발 프로세스 역시 Macro와 Micro 방식이 소개되고 있으며, Agile 방식도 언급이 되어 있다. 사실, 요즘 객체지향, 컴포넌트, 개발 프로세스에 대한 내용에 대해서는 철지난 개념으로 취급받기 일쑤이지만, 현실적으로 이러한 개념들은 필수적으로 그리고 정확하게 알고 있어야 하는 내용이어야 할 것이다. 오히려 요즘은 이러한 개념들이 더 정통적인 방식이 아닌가 생각될 정도로 시간이 많이 흐른게 사실이다.
81. RESTful Web Services, 2007. 5. 8, O'Reilly, Leonard Richardson, Sam Ruby, David Heinemeier Hansson
RESTful은 HTTP이 가지고 있는 원래의 개념으로 되돌아가자는 의미로 받아들일 수도 있지만, 어찌보면 HTTP의 확장으로도 생각해볼 수 있다. RESTful은 웹 상에서의 모든 것들이 자원의 한 형태로 HTTP를 통해서 통신하는 방식으로 그동안 SOA의 반대급부의 형태로 다시 HTTP로의 회귀하려는 현상으로도 해석할 수 있지 않을까. 요새는 트위터나 페북과 같은 API를 개방하는 사이트들이 RESTful을 지원하고 (물론 SOA 역시 지원하기도 한다) 그 사용 방법 역시 단순하기 때문에 많이 사용되는 것 같다. 또한, Internet of Things 라는 개념이 등장하면 한동안은 HTTP를 활용한 RESTful의 사용은 더 다양하게 활용될 것 같다. RESTful에 대한 개념 뿐만 아니라 사용 방법에 대해서도 많은 도움을 받을 수 있다. 국내에 번역서도 나와 있다. 최근 Servlet 2.5 스펙에서는 RESTful을 지원하기도 한다.
82. Java Concurrency in Practice, 2006. 5. 19, Addison-Wesley, Brian Goetz, Tim Peierls(@tpeierls), Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea
자바에서 쓰레드, 그것도 멀티 쓰레드는 상당히 어려운 작업에 속한다. 그 어려운 작업을 Joshua Bloch가 책을 썼다는 것으로만으로도 이 책은 읽을 가치가 있을 것이다. 국내에도 번역서가 나와 있으며, 동시성에 관련된 프로그래밍시 많은 도움이 될 것이다.
83. xUnit Test Patterns: Refactoring Test Code, 2007. 5. 31, Addison-Wesley, Gerard Meszaros(@gerardmes)
단위테스트에 대한 내용을 패턴화시킨 것으로 특히 Test Double과 같은 개념은 한번쯤 알고 있는 것이 중요하며, 이책에는 다양한 패턴들을 적고 있다. 물론, 이러한 패턴을 알고 있다고 하더라도 부가적인 테스트 장치가 필요한 것은 사실이며 해당 상황에 맞게 적용하려는 노력은 필요하다. 단위테스트에 대한 개념과 junit에 대한 내용을 알고 있다면 이 책이 상당히 도움이 될 것이다. 국내에 번역서가 나와 있다.
84. Beautiful Code: Leading Programmers Explain How They Think, 2007. 6. 26, O'Reilly, Andy Oram, Greg Wilson
유명하고 연륜이 있는 프로그래머들이 자신이 가진 사고나 생각을 어떻게 코드 내에 표현하는지에 대한 과정을 볼 수 있을 것이다. 책이 나오면서 상당한 이슈가 되었으며 프로그래머로 보면 한번쯤 자신의 프로그래밍에 대해서 생각하게 하는 책이다. 번역서 역시 나와 있다.
85. Continuous Integration: Improving Software Quality and Reducing Risk, 2007. 7. 9, Addison-Wesley, Paul M. Duvall, Steve Matyas, Andrew Glover
CI는 TDD 방식을 넘어서(넘는다기 보다는 그 토대 위에서) 소프트웨어 통합을 어떻게 할 것인가에 대한 방식을 말한다. 사실, CI는 대부분이 자동화에 대한 개념으로 생각을 한다. 하지만 자동화는 어느 정도의 표준적이거나 일관적인 형태를 필요로 하며 이는 개발자에게 개발 환경이나 테스트 코드 등 여러가지로 영향을 미치는 부분이다. 국내에는 지속적인 통합이라는 제목으로 번역되어 있지만, CI는 통합 활동을 SW가 살아있는 동안 끊임없이 수행해야 할 활동임을 말하고 있다. 즉, 통합의 자동화 정도로 의역이 가능할 것이다. (물론, 자동화가 되지 않는 통합이 CI 범주에 속하지 못한다는 것은 아니지만, 누가 통합을 위해서 단순한 작업에 의미를 두는 사람이 있을지는 의문이다.) 이 책 이후에 2010년도에 Continuous Delivery라는 책이 나오는데, 이 책도 상당히 호평을 받은 책이다. 이 두가지 책을 읽는다면 통합과 배포에 관련해서 새로운 방향을 잡을 수 있을 것이다.
89. Enterprise AJAX: Strategies for Building High Performance Web Applications, 2007. 8. 4, Prentice Hall, David C. Johnson, Alexei White, Andre Charland(@AndreCharland)
이제 AJAX는 대세가 된다. 그것도 엄청난 빠른 속도로 웹에 영향을 미친다. AJAX는 기업 내에서도 많은 부분에 영향을 미치며 이를 적용할 수 있는 범위는 웹 전체로 확산된다. 그러한 적용에 대해서 이 책을 읽어보면 많은 도움이 될 것이다.
90. Spring in Action (3rd Ed), 2007. 8. 16, Craig Walls(@springinaction), Ryan Breidenbach
Spring 프레임워크 역시 국내 대형 프로젝트 뿐만 아니라 중소 규모의 프로젝트에서 상당히 많이 사용되는 프레임워크 중에 하나이다. 국내에는 이 책의 2판까지만 번역서가 나와 있지만, 3판까지 나올 정도로 그동안 많은 버전의 변화가 생겨난다. 즉, Spring 프레임워크는 초반에 J2EE의 반대급부로 나타났지만, 지금은 그 범위가 워낙 넓어지다 보니 오히려 경량 프레임워크로 이름을 불리는 것이 부담스러운 것이 사실이다. 하지만, 그만큼 사용하기 어렵지 않기에 많이 사용되고 또한 아직까지 J(2)EE 대용으로 사용하기에 그 기능면으로써도 손색이 없기에 아직까지 Spring 프레임워크를 대체할 프레임워크는 없다고 보며, 한동안 계속 이 프레임워크는 지속될 것이다. (사실 2.x 버전이나 3.x 버전이나 DI 관점에서는 기능의 차이가 거의 없다고 봐도 무방하다. Spring의 기본적인 DI 기능만을 사용한다면 1판이나 2판을 읽어도 상관은 없을 듯 싶다.)
91. Test Driven: TDD and Acceptance TDD for Java Developers, 2007. 10. 12, Manning, Lasse Koskela
Test Driven이라는 키워드로 검색을 하면 많은 책들이 나타난다. 이 책은 그 중에서 기본적인 TDD 개념을 중심으로 기술한 것으로 활용적인 측면보다는 학술적인 측면으로 읽으면 많은 도움이 될 것이다.
92. Next Generation Java Testing: TestNG and Advanced Concepts, 2007. 10. 25, Addison-Wesley, Cedric Beust, Hani Suleiman
테스트 프레임워크 중에 또 다른 프레임워크인 TestNG 프레임워크에 대한 내용이 있는 책이다. 기본적인 개념은 junit과 동일하며, junit에 조금은 싫증난 사람들인 TestNG를 사용해보는 것도 좋을 것이다.
93. Implementation Patterns, 2007. 11. 2, Addison-Wesley, Kent Beck
Kent Beck의 또 다른 패턴 책으로 여기에는 구현 관점의 패턴이 나타나 있는 것이 특징이며, Kent Beck의 세밀함과 정밀함을 볼 수 있다. 국내에도 번역서가 나와 있다. Kent Beck의 책은 항상 짧지만 깊은 인상을 준다. 그의 단순성(simplicity)을 옅볼 수 있을 것이다.
94. Wikipatterns, 2007. 12. 10, Wiley, Stewart Mader
위키는 그 어원이 하와이 말인 wiki(빨리)에서 가져왔다는 것을 알 것이다. 빠르게 웹 사이트를 만들고 공유할 수 있는 위키는 사실 어떻게 편집하고 컨텐츠를 어떻게 효과적으로 보여줄 것인가가 관건이다. 빠르게 컨텐츠를 공유할 수 있지만 효과적으로 공유하기 위해서는 구성 방법에 대한 고민이 필요하다. 이 책이 다소 도움이 될 것이다. 위키는 프로젝트 내에서도 공유하기 위한 도구로도 활용하기 좋으며, 모든 내용에 대해서 이력 관리가 가능하기 때문에 프로젝트 내의 의사소통에 상당한 도움이 될 것이다.
95. Making Things Happen: Mastering Project Management, 2008. 3. 25, O'Reilly, Scott Berkun(@berkun)
The Myth of Innovation의 저자이기도 한 Scott Berkun은 주로 창조적인 사고를 위한 내용을 유력 매체에 기고를 하기도 한다. 그가 MS에 있는 동안에 IE 관련된 프로젝트도 진행했었으며, 이 책은 프로젝트 관리에 대한 내용을 담고 있다. 이 책에서 그는 프로젝트를 진행하는 상황을 주방에서 요리를 하거나 응급실에서의 처치, 영화를 만드는 과정 등의 비유로 사용하고 있는데 그만큼 예상하지 못하는 일들이 SW 제작시에 발생한다는 것을 의미한다. 이는 비즈니스 상황에 복잡해지고 급변할수록 프로젝트는 그 강도가 더해질 것이며, 이를 관리하는 사람은 적절한 대응 전략을 구상해야 한다. 이제는 기존의 한번에 요구사항을 받고 이를 구현하는 과정의 절차지향적인 사고를 통해서 SW를 만든다는 것은 너무나도 그 결과를 뻔히 알 수 있다라는 것을 의미한다. 기존과는 다른 프로젝트 관리 기법이 정말 필요한 시기이다.
96. Implementing SOA : Total Architecture in Practice, 2008. 4. 4, Addison-Wesley, Paul C. Brown
개인적으로 보험사 프로젝트를 진행하면서 보험 시스템에 관련된 책이 그리 많지 않다는데에 놀라웠다. 이 책이 그러한 요구를 채워줄 수 있을 것이라 기대하고 봤지만, 역시 복잡한 금융시스템에 대한 뷰를 제공하기에는 여전히 한계가 있음을 인정한다. 책의 제목은 SOA이지만, 아키텍처 관점에서 접근하고 있으며, 저자가 TIBCO에 재직중이라 해당 제품을 활용한 아키텍처에 대한 접근 방식을 이야기하고 있다. 그렇다고 결코 내용이 가볍지는 않다. TIBCO를 사용하고 있는 사람에게는 좋은 참고서가 될 수 있을 것이다.
97. Java Power Tools, 2008. 4. 22, O'Reilly, John Ferguson Smart (@wakaleo)
자바 프로젝트에서 가장 보편적으로 사용하는 도구에 대한 소개로 프로젝트에서 개발환경에 대해 고민하는 사람에게는 참고가 될 것이다.
98. Struts 2 in Action, 2008. 5. 1, Manning, Don Brown, Chad Davis, Scott Stanlick
Struts가 2000년대 초반을 이끈 프레젠테이션 웹 프레임워크라면 지금은 활용도가 주춤하는 시기가 아닌가 생각된다. 번역서 역시 Struts 1.x 버전인 1판에 대해서만 나와 있고, 현재까지 2.x 책인 2판에 대해서는 번역서가 나와있지 않은 상태이다. 지금은 프레젠테이션 영역은 더 세분화되고 다양화되는 형태로 발전하고 있는 것 같다. 하지만, Struts 2 프레임워크가 1과 크게 달라지는 점들을 보면 프레임워크의 발전 방향을 볼 수 있을 것이다. 기존 XML 기반의 설정에서 어노테이션 기반의 설정으로 바뀌고 POJO 형태로의 변환은 테스트를 더 쉽고 코드가 간결하게 할 수 있는 형태로 프레임워크가 발전하고 있다는 측면을 볼 수 있을 것이다.
99. Refactoring HTML: Improving the Design of Existing Web Applications, 2008. 5. 11, Addison-Wesley, Elliotte Rusty Harold
HTML만큼 유연하고 임의적인 코드가 있을까. 하지만 이러한 특징은 UI 접근성이라는 한계에 부딪히게 되며 복잡한 화면을 만들어내는 주범이기도 하다. 물론, 이러한 현상은 CSS라는 것을 활용한 디자인과 구조(레이아웃)의 분리라는 기술로 발전하고는 있으며, HTML5와 CSS3로 진화하면서 그 현상은 더욱 가속화되고 있다. 특히, 브라우저 기술의 발전으로 기존 HTML 4에서는 여러개의 태그나 스크립트로 동작하던 것들이 단 한줄이나 두세줄로 표현되는 방식은 네트워크의 부하를 감소시키는 장점을 가지기도 한다.(특히, 무선 네트워크 상에서의 이러한 기술은 가장 큰 장점이 되기도 한다.) 말끔한 HTML을 원한다면 이 책이 많은 도움이 될 것이다.
100. Effective Java (2nd Ed), 2008. 5. 28, Prentice Hall, Joshua Bloch
Joshua Bloch의 대표적인 책인 이 책은 번역서로도 나와 있으며, 깔끔한 예제 코드로도 많은 도움이 된다. 새로운 자바 버전에서 더 깊이 있는 내용으로 효과적으로 자바를 사용할 수 있는 방법을 이 책을 통해서 배울 수 있을 것이다.
101. The Software Project Manager's Bridge to Agility, 2008. 5. 29, Addison-Wesley, Michele Sliger(@michelesliger), Stacia Broderick
Agile은 현재도 프로젝트 관리 영역에서 큰 영향을 미치고 있다. 이는 Lean 경영이나, Kanban 접근 방식으로도 같이 결합되기도 하며, 다양한 형태로 관리 영역에서 진화하고 있다. 프로젝트 관리의 공식 기구인 PMI에서도 Agile 방식을 많이 연구하고 있으며, PMBOK에서도 이에 대한 접근 방법에 대해 점차 포함하고 있는 상태이다. SW 개발에 있어서 진척도에 의존하는 관리 방식은 이제 바뀔 필요가 있으며, 이 책이 그러한 전향을 하는데 도움이 될 것이다.
102. The Productive Programmer, 2008. 7. 3, O'Reilly, Neal Ford (@neal4d)
Neal Ford는 ThoughtWorks 사의 SW 아키텍트이자 Meme Wrangler라고 소개되어 있으며, 그의 트윗은 늘 전 세계를 돌아다니며 수많은 강연을 하고 있다는 것을 말하고 있다. 그는 프로그래머의 능력은 개인에 따라서 최고 10배 이상이 난다라고 말하고 있으며, 가장 잘하는 프로그래머에게 최고의 도구를 주어서 그 능력을 배가 시켜야 한다고 주장한다. 그래서 그런지 이 책이 프로그래머가 생산성을 어떻게 더 효율적으로 낼 수 있는지 다양한 도구와 그 사용법에 대한 내용을 포함하고 있다. 국내에는 '능률적인 프로그래머'라는 제목으로 번역되어 있으며, 어찌 보면 내용이 시시하다고 생각되는 것들도 있지만, 정말 습관이 되면 좋은 방식도 꽤 포함되어 있다.
103. Agile Adoption Patterns: A Roadmap to Organizational Success, 2008. 7. 7, Addison-Wesley, Amr Elssamadisy
정말로 패턴의 전성시대인지 모르겠지만, 애자일 기법을 적용하는데 역시 패턴이 필요할까라는 의구심이 드는 책이다. 사실 애자일을 아는 사람들은 그 내용에 대해서는 크게 색다른게 없긴 하다. 다만, 애자일을 모르는 사람이나 조직에 이를 어떻게 적용할고 접근할지는 고민되는 부분들이 많다. 이 책이 그러한 상황에서 조금은 도움이 될 것이다.(국내 환경과 외국의 환경이 다르다보니 국내 현실에 적용하는 방법에 대해서는 다른 식의 접근법이 필요하지 않을까도 생각되며, 하루 빨리 이러한 지식들이 같이 공유되기를 바란다.)
104. Clean Code: A Handbook of Agile Software Craftsmanship, 2008. 8. 11, Prentice Hall, Robert C. Martin
얼마전에 Clean Coder를 내기도 했던 Robert C. Martin은 코드에 대해서는 대가라고 불를 만하다. 국내에도 번역서로 나와 있으며, Clean Coder에서도 자신의 코더로써의 삶을 말하고 있듯이 (사실 Clean Coder는 저자의 전기와 같다는 생각이 든다.) 코딩에 대한 열정을 볼 수 있는 책이다.
105. The Object-Oriented Thought Process (3rd Ed), 2008. 9. 4, Addison-Wesley, Matt Weisfeld
국내에는 '객체지향적으로 생각하라'라는 제목으로 번역되어 있으며, 객체지향 개념에 대해서 설명하고 있다. 사실 인간은 객체지향적으로 사고한다고 한다. 하지만, 이를 SW로 옮기는 과정에서 절차지향적이냐 객체지향적이냐가 나뉘며 인간에게 편한 코드는 절차지향적인 것이 직관적일 수 밖에 없다. 따라서, 객체지향으로 프로그래밍을 하다보면 코드를 보는 눈이 편하지 않은 경우도 많다. 하지만, 객체지향 코드에 대해서 익숙해지는 과정은 필히 겪을 필요가 있으며, 이를 극복하기 위한 과정으로 이 책 역시 도움이 될 것이다.
106. Maven: The Definitive Guide, 2008. 9. 24, O'Reilly, Sonatype Company(@SonatypeNexus, @SonatypeM2E, @SonatypeInfra)
Maven은 아파치 프로젝트에서 시작해서 거의 모든 오픈 소스 프로젝트에서는 표준화되어서 사용되는 도구이다. 또한, CI나 TDD에 적용될 수 있으며, 수많은 플러그인들이 있다. 프로젝트의 개발환경은 사실 Maven에서부터 시작된다고 해도 과언이 아니다. (이를 Mavenize 라는 표현을 쓰기도 한다.) 이 Maven 프로젝트는 Sonatype이라는 회사를 만들고 본격적으로 다양한 도구(Eclipse 플러그인의 경우 Indigo에서 Eclipse 산하 프로젝트로 되었지만, 그 이전에는 Sonatype에서 가지고 있었다.)들과 기술 컨설팅을 지원하며, 이 책 역시 그 회사에서 쓴 책이다. Maven을 만든 사람이 쓴 책이라 많은 도움이 될 것이다. 책의 내용은 Sonatype 사이트에 오픈되어 있으며, 계속해서 버전이 업그레이드 된다. 현재 이 책에 없는 내용들도 볼 수 있을 것이다. 국내에 번역서는 나와 있다.
107. Collective Intelligence in Action, 2008. 10. 17, Manning, Satnam Alag
집단 지성은 인터넷이 보편화되고 활성화되면서 나타나는 하나의 접근 방법으로 각광을 받는다. 사실, 이전에 집단 지성에 대한 내용이나 이론들도 있었지만, 이를 직접 시스템적으로 적용하려는 현상은 근래 들어서 일 것이다. AI 분야와 유사하기도 하지만, AI는 시스템이 인간의 지능을 가질 수 있을까라는 의문을 가지게 만들지만, 집단 지성은 다소 오류나 잡음이 있지만, 유사하게 보편적인 지능을 가질 수 있는 시스템을 구축하는데 많은 도움이 된다고 본다. 특히, Amazon의 추천 서적 메일은 집단 지성의 대표적인 사례가 아닐까 생각된다. 국내에 번역서가 나와 있다.
108. Open-Source ESBs in Action, 2008. 10. 28, Manning, Tijs Rademarkers, Jos Dirksen
ESB(Enterprise Service Bus)는 복잡한 시스템 통합에 있어서 또 다른 접근 방식을 제시한다. 그 중에서 Mule은 대표적인 오픈소스 ESB이며 이 책에서도 이에 대한 내용이 포함되어 있다. 이 책은 Enterprise Integration Patterns 책과 같이 본다면 많은 도움이 되며, 또한, ActiveMQ in Action 책도 참고하면 좋다. ActiveMQ 역시 ESB로 사용하기에 손색이 없을 만큼 성능이나 기능면에서 상용에 뒤쳐지지 않는다. 사실, ESB 도구는 상용으로 상당한 비용이 든다. 물론 기술 지원이라는 명목이 있긴 하지만, 그렇다 하더라도 도구가 모든 것을 해결해주지 않는다. 물론 중요한 인프라이긴 하지만 오픈 소스를 활용해보면 상용 못지 않는 기능을 사용할 수 있을 것이다.
109. Scaling Lean & Agile Development: Thinking and Organizational Tools for Large-Scale Scrum, 2008. 12. 18, Addison-Wesley, Craig Larman, Bas Vodde(@basvodde)
작은 단위의 조직이나 시스템에서 새로운 사상이나 기술을 적용하는 것은 그리 큰 문제가 안되지만, 대형 시스템이나 조직에 이를 적용하는 것은 또 다른 이슈나 문제가 발생되기도 한다. 이 책은 Applying UML and Patterns 책을 쓴 Craig Larman과 Bas Vodde가 이와 비슷한 내용인 Practices for Scaling Lean & Agile Development: Large, Multisite, and Offshore Product Development with Large-Scale Scrum를 작년에 또 출판한다. 이 책은 Agile이 가지고 있는 사상과 개념을 잘 설명하고 있다. 특히 거시적인 관점에서 Lean 사고 방식은 애자일을 적용하려는 사람이라면 큰 그림에서 한번쯤 집고 넘어가야 할 것이다. 1990년대에 리엔지니어링이라는 개념으로 뒤쳐진 일본을 다시 따라잡은 미국이 PI, BPR 등의 개념을 지나, 일본이 시도했던 Lean이나 Kanban 방식을 다시 추구하도록 Agile을 적용한다는 것이 아이러니하다. 어떻게 보면 Agile이라는 개념은 개인화된 서구 방식에서는 팀단위 활동으로 가치를 만드는 방식에 좀 충격적으로 다가왔을 수도 있다. 국내에서 Agile을 적용하려는 시도는 사실 서구의 방식과는 다른 방식으로 접근할 필요성을 느낀다. 미국을 따라하려는 것보다는 국내 실정에 맞는 방식을 더 고민하고 다양한 접근 방식을 시도하여 우리만의 독특한 방식을 만들어내는 노력이 필요할 것이다.
110. Hibernate Search in Action, 2008. 12. 28, Manning, Emmanuel Bernard(@emmanuelbernard), John Griffin
이 책은 Hibernate라는 강력한 ORM 도구가 가지는 불편한 기능 중에 하나인 검색의 기능을 Lucene이라는 엔진을 통해서 강화시키는 내용이 포함되어 있다. 실제 적용해보았을 때는 그리 나쁘지는 않지만 세밀한 부분에 있어서는 아직은 좀 기반이 약하다는 생각이 든다. 아무튼 이 기능이 기존의 SQL이 가진 단점을 극복하는데 조금은 도움이 될 수도 있다.
111. Agile Testing: A Practical Guide for Testers and Agile Teams, 2009. 1. 9, Addison-Wesley, Lisa Crispin, Janet Gregory
테스터를 위한 책이며, 애자일 방식의 테스팅을 적용하는 방법을 포함하고 있다. 사실 개발팀과 테스트팀이 나뉘어져 있다면 이들이 밀접하게 활동해야 한다. 이 책의 저자들은 그동안에 적용했던 방식을 소개하면서 시도했었던 것들을 나름의 방식으로 기술하고 있다. 국내의 테스트 팀이나 QA 팀이 꼭 한번 보았으면 하는 책이다.
112. Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design, 2009. 1. 20, O'Reilly, Diomidis Spinellis(@DSpinellis), Georgios Gousios(@gousiosg)
Beautiful 시리즈의 그 방면의 전문가로부터 그들이 생각하는 방식에 대해서 소개하는 책이다. 하지만, 아키텍처라는 주제로 그 짧은 이야기에 모두 다 소화하기는 힘들지 않았었나 생각해본다. 지면의 한계도 있지만, 너무 많은 사람들로부터 연관이 없는 내용을 싣다보니 본래에 의도했던 방향으로 책이 구성되지 않은 감도 없지 않아 있지만, 이들의 아이디어에 대해서는 볼 만하다고 생각된다.
113. JBoss in Action: Configuring the Jboss Application Server, 2009. 1. 28, Manning, Javid Jamae, Peter Johnson
JBoss에 관련되어서 최근에 나온 것으로 생각되며, J2EE에서 JEE로 버전이 바뀌면서 JBoss 역시 많은 내용이 바뀐다. JBoss가 오픈소스이기는 하지만, 국내에서는 대형 SI 프로젝트에서 그리 활발히 사용되지는 않는 것 같다. 하지만, 중소 규모에서는 한번 사용해보기를 권해본다. WAS는 벤더에서 제공되는 기술이 한계가 있으며, 이들이 모든 것을 해결해주기는 힘든 부분도 있다. 따라서, 나름대로 WAS에 대한 지식은 익힐 필요가 있으며, JBoss가 그 역할을 하기에 충분하리라 생각된다.
114. 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts, 2009. 2. 5, O'Reilly, Richard Monson-Haefel
97 Things 시리즈 중에 제일 첫번째 책으로 여러 아키텍트들이 짧은 글의 형태로 아키텍처에 관련된 내용을 싣고 있다. 마치 블로그를 보는 느낌도 들며, 실제로 이 책에 실린 내용은 O'Reilly 위키 사이트에 오픈되어 있다. 이 책을 번역하면서 일반 기술서적과 달리 그 느낌을 살리기가 쉽지는 않았다. 단어 하나 하나가 또 다른 의미로 사용되고 있고 문장과 문장 사이의 숨은 의미를 찾아내야 했었다. 아무튼 이 책은 가볍게, 하지만 에피소드 하나 하나가 깊게 생각할 수 있는 글로 이루져 있어서 부담없이 읽을 수 있을 것이다. 물론, 번역서를 많이 읽기를 권한다....^^
115. Mashup Patterns: Designs and Examples for the Modern Enterprise, 2009. 3. 28, Addison-Wesley, Michael Ogrinz
Mashup 이라는 단어는 원래 음악에서 기원한 장르라고 한다. 실제로 웹에서 Mashup을 검색하면 이에 속하는 음악들을 들을 수 있다. Web 2.0이 나타나면서 여러가지 서비스들을 혼합하고 새로운 부가가치를 만들어내는 방식의 서비스가 활성화되면서 Mashup은 또 하나의 트렌드가 된다. 사실 단어 상으로는 기존의 시스템 통합, EAI, EII 등의 어감보다 훨씬 정감이 간다고 생각되는데, 이에 대한 전제는 당연히 웹에서 제공되는 서비스의 오픈화이다. 지금 활성화된 사이트들을 보면 오픈 API를 제공되며 트위터의 경우 수십만개의 응용 애플리케이션들이 사용하고 있다. 이제는 트렌드라기 보다 웹을 주도하는 하나의 현상이라고도 볼 수 있다.
116. Growing Software: Proven Strategies for Managing Software Engineers, 2009. 3. 5, No Starch Press, Louis Testa
사실 책 제목으로만 보면 감이 잘 오지 않는 책이기도 하다. 하지만, 막상 내용을 보면 소프트웨어를 둘러싼 개인, 팀, 조직, 환경에 대한 내용이다. 어찌 보면 SW를 키우기 위해서는 마치 이를 만드는 대상이 중요하다는 생각이 들고, 실제로도 그렇다. 이 책은 SW를 대상으로 본 것이 아니라, SW를 만드는 주체를 대상으로 보고 있다. 이 책에서 말한 내용이 꼭 정답이라고 말할 수는 없지만, 우리에게도 SW를 만드는 환경과 그 주체들에 대해서도 한번쯤은 고민을 하는 것도 필요하다고 본다.
117. Cloud Application Architectures: Building Applications and Infrastructure in the Cloud, 2009. 4. 3, O'Reilly, George Reese (@GeorgeReese)
이 책의 저자는 활발한 트위테리언이기도 하다. 저자가 얼마전 방한했었는데, 트위터로 한국말로 연습하고 있어서 간단하게 말을 걸어봤었다. 이 책은 클라우드 중에서 AWS(Amazon Web Service)에 대한 내용을 주로 포함하고 있다. 클라우드라는 기본적인 개념과 AWS에 대한 기초적인 내용을 참고하는데 도움이 될 것이다.
118. The Economics of Iterative Software Development: Steering Toward Better Business Results, 2009. 4. 8, Addison-Wesley, Walker Royce, Kurt Bittner, Michael Perrow
이 책의 저자 중에 한명인 Walker Royce는 1998년에 Software Project Management를 냈다. IBM에 근무하면서 다양한 기법보다는 그 원리나 사고를 요하는 방식의 글을 쓴 사람이며, 이 책 역시 그 기대에 부응한다고 본다. 꼭 기술적인 내용이 아니더라도 사고를 깊게 하고 싶은 사람은 한번 읽어보기를 권한다.
119. Masterminds of Programming: Coversations with the Creators of Major Programming Languages, 2009. 5. 11, O'Reilly, Federico Biancuzzi, Shane Warden
이 책은 프로그래밍 언어를 만든 원저자들의 인터뷰를 실은 글이다. BASIC, SQL, AWK에서부터 C++, Objective-C, Java, C# 등 우리가 사용하는 언어의 창시자들을 이 한권의 책을 통해 만날 수 있다. 다만 아쉬운 점은 너무 짧은 인터뷰로 인해서 우리의 궁금증을 모두 해결할 수 있는지는 의문이 들긴 하다. 어찌되었든 지금 사용하는 언어가 누가 만들었는지는 한번쯤 코딩하다가 들지 않는가.
120. Web 2.0 Architectures: What entrepreneurs and information architects need to know, 2009. 5. 11, O'Reilly, James Governor(@monkchips), Dion Hinchcliffe(@dhinchcliffe), Duane Nickull
사실 Web 2.0은 실체가 있다기 보다는 트렌드라고 보는게 더 맞을 것 같다. 이 책 역시 Web 2.0이라고 부를 만한 특징과 기술을 소개하고 있으며, 몇가지 유형을 분석해 놓고 있다. 물론, 이제는 더 나아가서 Web 3.0까지도 거론되고는 있지만, 현재까지는 Web 2.0 시대라고 말할 수 있을 것이다. 하지만, Web 3.0으로 가기 전에 Internet of Things라는 개념이 나타나면서 앞으로의 웹이 어떻게 바뀔지는 더 두고봐야 할 것 같다. 어쩌면 걸어다니는 사람에게도 IP가 부여될런지도 모르겠다.
121. Head First Java (2nd Ed), 2009. 5. 11, O'Reilly, Kathy, Sierra, Bert Bates
Head First 시리즈는 상당한 인기가 있는 책이다. 국내에서도 많은 Head First 시리즈가 번역되어 있고, 이 책 역시 개정판으로 나와 있는 상태다. 지금의 시대는 역시 재미가 가미되어야 그 내용도 좋게 보이는 것 같다. 새로운 시도로의 접근은 필요하다고 보이지만, 이러한 자극이 한편으로는 상상력이나 추상력을 방해할 수도 있다는 차원에서 너무 깊이 빠지지 않기를 바란다. 아무튼 지루하지 않게 볼 수 있는 책이다.
122. Mashups: Strategies for the Modern Enterprise, 2009. 5. 15, Addison-Wesley, J. Jeffrey Hanson (@jjeffreyhanson)
Mashup 패턴이 다양한 Mashup 방법에 대해서 기술한 책이라고 보면, 이 책은 Mashup 구현 그 자체에 초점을 맞춰서 기술한 책이다. 하지만, 기술 관점에서 보면 다소 싱거운 내용이라는 생각도 든다. 너무나 다양한 것들을 소개하다보니 좀 더 심도있는 내용까지는 못다룬 것이 아쉽다.
123. Becoming Agile: ...in an imperfect world, 2009. 6. 1, Manning, Greg Smith, Ahmed Sidky
Agile 방식의 개발에 대한 기본적인 개념을 참고할 수 있는 책이다. 특히, 사용자 스토리에 기반한 Feature Card에 대한 사용 방식에 대해서는 이 책을 참고할 만하다고 본다. 예제와 같이 실제 저자가 적용했던 내용을 사진과 같이 싣고 있어서 많은 도움이 된다.
124. Open Source SOA, 2009. 6. 1, Manning, Jeff Davis
Open Source ESB에 이어서 Manning에서 출판한 Open Source SOA는 책 내용에 ESB 영역까지도 포함하고 있다. 하지만, 개인적으로 이책에서 참고했던 내용은 SCA(Service Component Architecture)이며, Tuscany가 그 역할을 하는 대표적인 오픈소스이다. 사실 서비스와 컴포넌트에 대한 개념을 명확하게 구분하려는 노력은 필요하다. 이 두가지를 섞어버리면 컴포넌트가 서비스와 같은 계층적인 형태로 구성되어서 재사용의 개념이 불명확해지거나 아예 없어지는 결과를 초래할 수도 있다. SCA는 조합(composition)이라는 개념을 추가하여 서비스를 퍼블리싱하는 영역으로 SDO(Service Data Object)와 같이 발전한다. 이 영역 역시 앞으로 발전할 수 있는 한 영역이기는 하지만 보편적으로 사용될지는 약간은 회의적인 생각이 든다. 그 외에도 ESB나 BPM, 그리고 비즈니스 룰엔진인 JBoss Drools에 관련된 내용들이 포함되어 있다.
125. The Process of Software Architecting, 2009. 7. 24, Addison-Wesley, Peter Eeles(@petereeles), Peter Cripps
아키텍트는 아키텍처를 만드는 사람이며, 이 아키텍트가 활동하는 행위를 아키텍팅이라고 한다. 하지만, 여기에 관련되어 프로세스를 명확하게 기술한 책은 그리 많지 않으며 거의 없다고 봐도 무방하다. 물론, 접근 방식에 대해서는 몇가지는 있지만, 이를 프로세스화시켜서 명확하게 활동으로 표현한 책은 없는데, 이 책이 이에 대해 조금은 위안을 준다고도 볼 수 있다. 하지만, 저자들이 IBM 소속이라 그런지 몰라도 마치 IBM의 또 다른 RUP를 보는 느낌이 든다. 아무튼 이러한 시도는 필요하다고 보지만, 아키텍팅이라는 활동이 워낙에 편차가 큰 활동이라 표준화시키듯이 표현하는데는 어느 정도 한계가 있는 것은 분명하다. 하지만, 역할이라는 관점에서 프로세스는 필요한 것이며, 이를 명확하게 표준화시키려는 노력 또한 필요한 것이 사실이다. 다만, 아키텍트라는 명함을 가지는 사람이 그리 많지 않은 것도 한계이기도 하다.
126. Managing the Testing Process: Practical Tools and Techniques for Managing Hardware and Software Testing (3rd Ed), 2009. 8. 11, Wiley, Rex Black
테스팅 프로세스는 테스트 조직에게 필수이기도 하지만, 프로젝트 진행시에 상당히 간과되는 부분이기도 하다. 그러한 프로세스 차원에서 필요한 개념과 여러 방식 및 표준을 포함하고 있으며, 개발 프로세스 중에서 테스트 프로세스에 대해서는 이 책으로 참고하기에 알맞는 것 같다.
127. Dependency Injection, 2009. 8. 12, Manning, Dhanji R. Prasanna
DI에 관련되어서 개념 뿐만 아니라 실제적인 접근법까지 참고할 수 있는 책이다. 기존에 Spring 프레임워크만을 사용했더라면, DI라는 개념이 어떠한 것이고 어떠한 방식으로 사용되며, 무슨 목적으로 사용되는지에 대해서 이 책을 같이 보면 목적에 맞는 DI 프레임워크를 사용할 수 있으리라 본다. Spring 프레임워크가 너무 DI를 남발하도록 만든 것은 아닌지 고민이 되기도 한다.
128. 97 Things Every Project Manager Should Know: Collective Wisdom from the Experts, 2009. 8. 14, O'Reilly, Barbee Davis, Harry Tucker
97 Things의 두번째 책으로 번역서가 나와 있다. 물론 이전 책과 같이 에피소드 형식의 글이며, 공감이 가는 내용들도 많을 것이다. 꼭 번역서를 사보시기를....
129. Growing Object-Oriented Software, Guided by Tests, 2009. 10. 22, Addison-Wesley, Steve Freeman (@sf105), Nat Pryce (@natpryce)
TDD와 객체지향에 대한 내용의 책이다. 하지만, 아주 내용이 좋다. 저자들은 jMock을 만든 사람이기도 하며, 그 노하우와 적용 방식을 이 책에 쏟아부었다고 보면 된다. 그리고 그 결과는 상당히 만족스럽다.
130. Beautiful Testing: Leading Professionals Reveal How They Improve Software, 2009. 10. 22, O'Reilly, Tim Riley, Adam Goucher
테스트는 사실 단순한 구조인 경우에는 그리 문제가 되지 않는다. 비즈니스가 복잡해지고 시스템이 복잡해지면서 점차 테스트에 대한 매력을 잃게 되고, 어느 누구 이를 해결하려고 하지 않는다. 하지만, 그럴수록 테스트는 더욱 더 필요하며 이 책에 소개된 여러가지 에피소드들은 좀더 테스트에 대한 강력한 욕구를 자극하게 만든다.
131. Succeeding with Agile: Software Development Using Scrum, 2009. 11. 5, Addison-Wesley, Mike Cohn (@mikewcohn)
애자일 접근 방식 중에서 대표적이며 유일한 것이 Scrum이며 이 방식은 많은 효과를 보고 있는 것도 사실이다. 국내 SI 프로젝트에서 Scrum을 적용한다는 것은 쉽지만은 않으며 고객과 프로젝트 관리, 개발 인력 모두가 상당한 공감이 가야한다고 본다. 해외에서는 계속해서 애자일과 같은 책이나 자료들이 쏟아지고 있지만, 현실은 이와는 다소 괴리감이 느껴지는 것이 사실이다. 어찌보면 이것 역시 한국의 특수한 상황이라고도 볼 수 있지만, 기존의 방식이 나쁘다고는 할 수 없지만 최적이라고도 볼 수 없기에 Scrum과 같은 방식의 SI 프로젝트가 점점 많아지기를 고대하기에는 관리에 대한 마인드의 변화가 가장 시급하다고도 볼 수 있을 것이다. 이 책의 저자인 Mike Cohn은 애자일과 관련된 책들을 많이 썼으며, 이 책이 가장 최근의 책이다. 그만큼 연륜이 있기에 이 책 역시 호평을 받았고 현실적인 내용이 많이 포함되어 있다. 다만 그 현실이 국내의 현실과는 다소 괴리감을 느낀다는 것이 씁쓸하다.
132. Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages, 2009. 12. 31, Pragmatic Bookshelf, Terence Parr
ANTLR이라는 도구가 있다. 사실 이 도구를 사용하기 전까지는 ANT를 활용한 도구라고만 생각했다. 하지만, ANTLR이 소스코드 파서라는 것을 알고부터 이 도구에 대한 흥미가 생겼으며, 이를 활용해서 코드를 생성시키는 방식인 DSL(Domain-specific Language)의 일종인 템플릿 엔진에도 관심이 생겼다. DSL은 사실 MDA의 반대급부로 나타난 것 같다는 생각이 든다. 하지만, 반대라기는 보다 무거운 방식의 MDA와는 달리 가벼운 방식의 DSM(Domain-specific Modeling)은 현실에 적용하기에 무리가 없다고 본다. DSM에서 필요한 것은 템플릿이며 이를 특정 메커니즘(이를 DSL이라 한다)을 통해서 대상 코드를 만드는 방식이며, ANTLR이 이를 사용하기 적합하다고 본다. 현재는 C, C++, Java, SQL 등 많은 언어로 만든 코드 파서를 지원하고 있으며, 이 모든 것이 grammar라는 설정 파일 하나로 모두 제어가 가능하다. 물론 그 문법은 이책의 저자가 쓴 The Definitive Antlr Reference 을 참고하면 된다.
이와 같이 정리해보니 상당히 많은 분량이기도 하지만, 지난 10여년 간에 경력으로 보면 그리 많지도 않을 것 같기도 하다. 물론, 위 책을 처음부터 끝까지 샅샅이 보았다는 것은 당연히 거짓말이며, 어떤 책은 주요 부분만 혹은 앞부분만 참고하기도 했다. 혹은 어떤 책은 강의 교재를 만들면서 처음부터 끝까지 참고하기도 했으며, 또 어떤 책은 해결하기 위해서 수십번을 본 책들도 있다. 어떤 책들은 원본이 아닌 카피본으로, 또 다른 책들은 전자 문서의 형태로, 혹은 인터넷 구매나, 시간이 남아 서점에 들러 눈에 띠어서 구매한 책들도 있다. 책의 내용은 순전히 내가 느낀 것만을 기술한 것으로 이 내용에 대해서 그리 신빙성을 가지지 않았으면 한다. 책은 읽는 이마다의 느낌과 생각이 다를 수 있을 뿐이다. 다만, 목록이나마 참고하고, 여기에 검색해놓은 저자들의 트위터를 팔로잉해보고(위의 저자들을 포함해서 수많은 그루가 내 트위터의 gurus 목록에 있다.), 이들이 무슨 이야기들을 하는지를 참고한다면 SW 개발 분야에 있어서는 최소한 트렌드는 놓치지 않으리라고 본다.
서적_추천_w_twitter.xlsx
반응형
'Homo Ware' 카테고리의 다른 글
집단 사고와 집단 지성 (0) | 2011.10.18 |
---|---|
SW 프로젝트와 여행 (0) | 2011.09.30 |
개발 프로세스, 논리적인 연결고리가 필요하다. (0) | 2011.09.15 |
생각하지 않는 개발자들 (2) | 2011.09.14 |
'프로젝트 관리자가 알아야 할 97가지' - 탈고를 마치고 (5) | 2011.08.31 |