|
600페이지가 조금 넘는 꽤 두꺼운 분량의 Agile Software Development, Robert C. Martin 2005 을 지난 4일에 걸쳐 열심히 읽고나서 이 글을 쓰고 있습니다.
이책에 대한 소감을 한마디로 말하면, 이 책은 Refactoring 에 대한 pattern 책이라는 느낌입니다.이 책은 총 6개의 장으로 구성되어 있는데, 1장은 Agile 개발의 특징들 예를 들어, 짝 프로그래밍, 테스팅 주도, 빠른 주기등을 설명하고 있습니다. 2장에서는 코딩 할때 지켜야할 다섯가지 원칙을 잘 정리하고 있습니다. SRP (Single Response Principle) : 하나의 객체는 하나의 책임만을 담당해야한다. OCP (Open-Close Principle) : 추상 인터페이스는 공개하고 구현은 감춘다. LSP (Liskov Substitution Principle) : 상속된 클래스는 부모가 하던 일을 빠짐 없이 모두 처리해야한다. DIP (Dependency Inversion Principle) : 클래스 사용자는 클래스 구현에 종소되지 않고 클래스 인터페이스에 종속되어야 한다. ISP (Interface Seperation Principle) : 인터페이스는 하는 일에 따라 조각으로 분리되어야 한다. 3장에서부터 6장까지는 총 4개의 예제를 중심으로 20여개의 디자인 패턴을 자세히 설명하고 있습니다. 개인적으로 2장에서 정의 하는 SRP 와 OCP 그리고 LSP 는 정말 중요한 개념이라고 생각합니다. 그리고 3장에서부터 소개 되는 디자인 패턴들은 GoF 스타일의 디자인 패턴책과는 달리 좀 더 상세한 예시와 큰 그림에서의 원칙을 서로 잘 엮어가면서 설명하고 있습니다.그리고 개인적으로는 부록A 부터 D 까지 모두 마음에 들었습니다. 부록 A 와 B 에서는 UML 을 짧고 간단하게 잘 설명해주고 있어서 다시 한번 기억을 되살리는데 도움이 되었고, 특히 부록 C 에서는 이야기 형식으로 Agile 을 사용하는 팀의 가상 소설을 보여주면서 Agile 적용의 구체적인 예를 제시하고 있어서 크게 도움이 되었습니다. Agile 이라는 것이 그간 상당히 모호한 형태로 주변에서 여기서 조금 저기서 조금 주워들어왔었는데요, 이렇게 잘 정리된 책으로 읽고나니까 이전에 주워들어서 알고 있던것과는 상당히 다르다는 느낌이었습니다. 흔히 설계를 하지 않고 코딩부터 한다고 했을때, 설계를 무시한다는 뉘앙스를 갖게 되는데, 알고보니 Agile 책은 온통 설계에 관한 이야기였습니다. 기존의 설계 방식과 차이가 있다면, 기존에는 UML 을 사용해서 문서로 정형화 시키면 코딩을 거기에 맞추려하는 식이었으나 UML 의 한계상 막상 코딩을 할려고 보면 문제가 들어난다는 것입니다. 그러니 중심을 UML 에 두지 말고 코딩에 두고 UML 을 중간 중간 프로그래머들끼리 대화하는 수단으로 사용하고 숭배하지 말라는 이야기입니다. 그리고 Agile 방식에서 크게 마음에 들었던 부분은 실제 프로젝트를 진행할때 발생하는 프로젝트 지연의 문제를 프로그래머들이 책임지고 떠맏는 방식이 아니라 프로젝트 진행 상태를 투명하고 객관적으로 다 보여주면서 관리자가 우선순위에 따라 선택하고 포기 하도록 만드는 부분입니다. 예를 들어 용산에서 컴퓨터를 조립할때 구매자가 터무니 없이 낮은 가격을 제시하면서 엄청 좋은 컴퓨터를 요구하면, 용팔이들은 부품 하나 하나의 가격들을 구체적으로 보여주면서 왜 그 가격에 살수 없는지 설명합니다. 프로젝트도 마찬가지로 프로그래머가 작업 내역을 하나 하나 투명하게 공개하면서 최대한 빠르게 사용자와 Feedback 을 주고 받기 때문에, 프로젝트 지연이 발생하는 것을 (사용자로 하여금 우선순위가 덜 중요한 것을 포기하게 만듦으로써) 미연에 방지하는 것입니다. ![]() | ||||