2003-04-21

The Unified Software Development Process

1999년 중반부터 2001년 초반까지는 Addison Wesley의 "Object Technology Series"(흰 바탕 겉표지 하단 오른쪾에 Booch, Jacobson, Rumbaugh의 이름을 담은 사각형 박스 낙인(?)이 찍힌 그 책들)가 90년대를 뜨겁게 달구었던 백가쟁명의 시대를 마감하고 천하를 통일한(Unified) 시대로 역사(?)에 오랫동안 기억될 것입니다. 진시황의 진나라처럼 너무나 짧은 기간이었지만...
 

법가(Capability Maturity Model, CMM)에 기반한 그 짧았던 왕조는 자신만의 것이 옳다고 주장하며 분서갱유를 마다하지 않았으며, 불로장생(Model-Driven Architecture, MDA) 꿈을 버리지도 못했습니다. 그러나 그런 왕조의 폭정에 항거하여 단호하게 일어난 이들이 있었으니 그들이 바로 그 자랑스런 에자일 연합(Agile Alliance)이었으며, 그들에 의해 왕조는 그 막을 내렸습니다. 그러나 진시황이 동시에 도량형, 화폐, 거궤, 문자를(Unified Modeling Language, UML) 통일하는 등의 업적이 있었음은 부정할 순 없을 겁입니다.

아마도 탁월한 합리주의자이자 기능주의자인 시황제가 아니었더라면 이런 대업적을 단기간에 이룩하는 것은 불가능했을 것이다. 진시황은 극단적인 합리성과 동시에 극단적인 비합리성이 기묘한 형태로 어우러져서, 아주 꼼꼼하게 정무에 힘쓰는 반면에, 거대건축을 세우거나 선약찾기에 막대한 재정을 쏟아부어 부질없이 낭비를 거듭하는 양극단을 오고가는 극과 극의 이중성을 지닌 인물이었던 것으로 생각된다.
                                                                                                       - 어느 인터넷 사이트에서 펌
 
 
그 시대를 빛냈던 그러나 상대적으로 큰 주목을 끌지 못했던 책이 바로 Ivar Jacobson, Grady Booch, James Rumbaugh가 쓴 [The Unified Software Development Process (이하 UP)] 입니다. 동시에 나온 책 중 [The Unified Modeling Language User Guide]는 Booch 주도로, [The Unified Modeling Language Reference Manual]은 Rumbaugh 주도로 쓰여졌고, UP는 Jacobson 박사(일반적인 그에 대한 존칭임) 주도로 작성되었다고 할 수 있습니다. 사실 UML Reference Manual은 저자가 세명이기 때문에 나온 저주받은 책이라는 느낌이 들고 Rumbaugh 역시 상대적으로 과소평가를 받고 있습니다.


RUP(Rational Unified Process, 이걸 '러프'라고 읽는다면서요?)는 UP(Unified Process)를 상품화한 방법론입니다. 사실 RUP와 관련된 책들이 20권 정도가 있는데, 대표적인 책들이 위의 UP를 비롯해 Philippe Kruchten의 [The Rational Unified Process: An Introduction, 2nd]와 Craig Larman의 [Applying UML and Patterns, 2nd]라고 할 수 있습니다. UP는 깊은(?) 철학에 대해서 설명하는 책이고, Kruchten의 책은 제목 그대로 기대할 것 없는 소개서이며 동시에 Rational 사 툴의 광고 팜플렛 같고, Craig Larman의 책은 Agile에 입각한 실천적인 분석·설계 지침서라고 할 수 있습니다.

 
그리고 RUP에 대한 좋은 자료는 Rational의 [Object-Oriented Analysis and Design Using UML] 교육자료입니다. 현재 야간에 교육하고 있는 수업에서 사용하고 있는 그 자료입니다. 전 2001년 여름에 이 수업을 들었는데, 강사말고 교재만 좋습니다.(강사 멀리서 보면 이쁘고(?) 사람은 무척 좋았습니다. 당시 전 안경을 쓰지 않았슴.) 당시 강사가 RUP를 쓰는 프로젝트에서도 실제로는 Iterative하게 개발하지 않는다고 너무 솔직하게 말하더군요. UP 책의 1/3을 Iterative and Incremental Process 설명에 쏟아부은 Jacobson 박사가 알면 눈물 흘리며 슬퍼했을 겁니다.

글고 한 수강생이 CBD에 대해 질문하자 다른 강사는 이런 말은 했습니다. "CBD의 대가인 Jacobson 박사도 아직 CBD는 시기 상조고 어렵다고 했다. CBD는 현실에 적용하기 힘들거다.(뭐 대충 이런투로)". 솔직히 이 답변은 문제가 될 것이 없습니다. 저 스스로도 그 답변에 동의하고, 당시 RUP는 CBD를 주장하던 사람들로부터 RUP는 CBD 방법론이 아니다라는 공격을 받던 시기였으니까요. 근데 요즘은 RUP = CBD 더군요. 2년만에 RUP가 엄청난 발전을 한건지 아니면... "뻥"이 는건지...
 

개인적인 생각으로는 이정도 자료를 접한 다음은 더 볼 책도, 필요도 없다고 생각합니다. 필요한 건 단지 RUP로 진행되는 프로젝트 경험일 겁니다.
 
하여간 이 책들 중 UP를 읽지 않고 RUP는 논한다면 그는 사기꾼입니다. (UP가 담고 있는 내용을 다른 형태로 접했거나 프로젝트 경험이 많은 사람은 예외입니다.) 그 정도로 중요한 책이라고 할 수 있습니다.
 
 
UP는 크게 3 부분으로 구성되어 있습니다.
 
첫번째는 "The Unified Software Development Process"로 책 제목과 같으며, UP의 핵심 사상을 담고 있습니다. 그 핵심 사상은 "A Use-Case-Driven Process", "An Architecture-Centric Process", "An Iterative and Incremental Process"입니다. 그리고 "People are Crucial"이라는 내용도 있습니다. 이 내용을 보면 Agile로부터 공격받는 RUP를 바라보는 Jacobson 박사의 심정이 궁금합니다. Alistair Cockburn은 Use Case는 Drawing하는 것이 아니라 Writing하는 것이다로 더 많은 지지자(?)를 확보했고(Craig Larman의 책도 Cockburn의 Use Case를 따릅니다), 최소한 J2EE와 .NET 환경의 개발에서 4+1 View에 기반한 아키텍쳐는 아키텍쳐를 위한 아키텍처라는 느낌이 들기도 하며, 마지막 Iterative Process는 현실 프로젝트에서 세부적이고 복잡한 RUP의 개발 단계로 인해 사실상 Waterfall을 벗어나지 못했습니다.
그럼에도 불구하고 그 기본철학은 구구절절히 맞는 이야기들입니다


두번째는 "Core Workflows"로 요구사항 분석부터 테스트까지의 단계별 기법들에 대해서 설명하고 있습니다. 이 부분을 이해하기 위해서는 큰 그림을 그릴 수 있어야 합니다. 그 큰 그림을 그리지 못하면 망(?)합니다. UP를 이해하는데 있어서 가장 어렵고 무시되는 부분이 Iterative Process인데 그 이유가 책에서는 Core Workflows를 Waterfall 형태로 설명하고 있기 때문입니다. 이렇게 평면적으로 판단하면 안되고 입체적인(Iterative)를 것을 고려해서 큰 그림을 그릴 수 있어야만 Core Workflows를 바로 이해할 수 있습니다. 그럼에도 불구하고 Core Workflows는 너무 많은 내용과 형태의 중간 산출물과, 활동(Activity), 역할(Role)들로 필요 이상으로 복잡하며, 이 부분이 Agile 진영이 RUP(UP보다 더 복잡한)를 비판하는 가장 큰 논거입니다.

 
세번째는 "Iterative and Incremental Development"로, Core Workflows가 기술적 기법 중심이었다면, 이부분은 프로젝트 관리 측면에서 다루고 있습니다. 그 관리의 중심에 바로 "Iterative and Incremental" 철학이 녹아들어가 있습니다. 이 부분은 UP에서 가장 중요하지만 가장 재미없는 부분입니다. 2000년 여름인가 Jacobson 박사가 한국에 왔을 때 멀리서나마 볼 수 있는 기회가 있었습니다. 참석자 중 한명이 Jacobson 박사에게 Iterative Process가 "Divide and Conquer"와 뭐가 다르냐고 했을 때, 그리고 실제 Waterfall가 뭐가 다르냐고 했을 때, Jacobson 박사의 대답이 기억에 없습니다. 그 역시 "Iterative and Incremental"이라는 개념이 프로젝트 성공을 위해서 얼마나 중요한 것인가에 대해서는 명확하게 알고 있음에도, 복잡한 UP의 Workflow(Unified라는 말처럼 4가지 방법론이 합쳐져서 발생하며, 동시에 모델링 툴을 비롯한 도구에 대한 의존도 때문에) 때문에 실제 프로젝트에서 Iterative하게 간다는 것이 불가능(?)하다는 것을 인정하지 않을까하는 주제넘는 생각을 합니다.
 
 
잡설 하나.
 
5월에 있는 "XP 2003", 6월에 있는 "Agile Development Conference"와 함께 3대 Agile Conference인 "XP Agile Universe 2003(8월)"에 Ivar Jacobson 박사가 강연자로 나온다고 합니다. 그가 어떤 이야기를 할지가 벌써부터 궁금합니다. UP를 통해 그를 보면 Agile과 그 사이에는 종이보다도 작은 차이만이 있음을 믿게합니다.
 

잡설 둘.
 
위의 3개 Agile 관련 Conference의 공통점은 뭘까요? MS .NET이 모두 후원을 하고 있다는 점입니다. 삥을 뜯겨도 단단히 뜯기는군요.
 

잡설 셋.
 
Agile Alliance는 Agile 진영의 느슨한(?) 연합이라고 생각하시면 됩니다. Agile Alliance 현 이사회(Grady Booch)에 놀랍게도 Grady Booch가 있습니다.

No comments: