요즘 들어서, 실제 방법론에 따른 프로젝트 진행 과정을 다룬 책들이 많이 출시되고 있습니다.
이 책 또한, 웹애플리케이션을 제작할때, ICONIX라는 프로세스에 따라서, 설계부터 구현까지
차근차근 다루고 있습니다.
처음 1부에서는 모델링 관련 과정을 다루고 있구요. 2부에서는 업무상 발생할 수 있는 여러 문
제를 독립적으로 해결하는 과정을 보여주고 있습니다.
개인적으로 이 책을 훌륭하게 평가하는 것은, 실제 프로젝트에서 진정 고민할 만한 여러 주제
를 다루고 있다는 겁니다. 저자 분의 경험에 입각해서, 집필되었음을 느낄 수 있었죠.
예를 들어서,
JSP/Servlet 모델링을 페이지 중심으로 할 것인가, 서블릿 중심으로 갈 것인가 부터,
데이터베이스 관련 질의를 외부 파일에 둘 것인가, 자바 코드 내부에 둘 것인가, 데이터베이스
에 둘 것인가..
사용자 권한 문제 (Access Control List)에 대한 문제, 리스트 오브 밸류에 대한 문제, 데이터
유효성 체크를 클라이언트에서 할 것인가, 서버에서 할 것인가, 코드 관리 문제,
기존 시스템과의 연동 문제, 메일 문제, 엑셀과의 연동 등등...
이론으로 배울 수 없는, 실제 프로젝트에서 고민해야만 하는 금쪽 같은 내용을 미리 볼 수 있다
는 장점이 있습니다.
아마도, 프로젝트 프로세스를 따라서 모델링 부터 시작해서, 구현단계를 다룬 책은 많고, 이 책
보다 더 훌륭한 책이 있다고 봅니다.
하지만, 그런 책들은 단지 이론에 따른 책일뿐, 실용적인 내용을 다루지 못한 것이 사실입니다.
이 책은 전략보다는 전술적인 면에서 우수하다고 볼 수 있겠죠.
전쟁은 이기는 것이 목적입니다.
- 프로젝트는 성공하는 것이 목적이죠.
- 전쟁에서는 전체적인 비전을 제시하는 전략이 필수적입니다.
- 프로젝트에서도 성공하기 위한 전체적인 전략이 있습니다.
- 전쟁에서는 각각의 전투를 승리로 이끌기 위한 전술이 존재합니다.
- 프로젝트에서도 각각의 문제상황을 해결하기 위한 전술이 존재합니다.
이 책은 전술적인 가치를 지닌 책입니다. 많은 책들이 전략적으로 우수한 책이었다고 본다면, 이
책은 전술적으로 전투에서 이기기 위한 책이라고 보면 됩니다. 알지 못했다면, 많이 고민했어야
했고, 시행착오를 겪었어야 할 문제들에 대해 각각의 해결방법과 그것의 장단점을 소개한 점이
이 책을 훌륭하다고 보는 첫번째 이유입니다. 그렇다고 해서 이 책이 전체적인 전략이 존재하지
않는다는 얘기가 아닙니다. 다만, 그렇게 전략적인 가치를 가진 책이 많이 존재했고, 단지 "착하
게 살면, 해탈하게 된다"는 추상적인 내용보다, 실제적인 내용을 다루고 있다는 점이 더 높게 평
가한다는 것이지요.
개인적으로는 책을 구입했지만, 그와 더불어 필자의 귀한 경험을 옅볼 수 있다는 사실 자체가 제
게는 행운이었습니다.
ps. 음, 한가지 불만이 있다면, 클래스 명명법, 유스케이스 명명법이 너무 실제 내용과 관련없는게
아닌가 합니다. 이건 개인적인 생각이구요.
소프트웨어 공학이라는 학문이 계속 부상하고는 있지만 아직도 자신만의 방법론이나 모델링 도구를 이용하여 프로젝트를 수행하는 경우는 일부 대형 SI업체를 제외한 나머지 개발 업체에게는 아직도 갈 길이 먼 이야기일 뿐 입니다. 그렇기 때문에 막상 개발은 하고 문제 해결을 한 듯 보이지만 유지보수, 추가 개발의 어려움 때문에 다시 새롭게 프로젝트를 수행하는 경우도 빈번합니다. 문제는 개발단계가 명확하지 않고 단계별 산출물 관리가 제대로 이루어 지지 않기 때문입니다.
이 책은 이러한 문제들에 대해서 습관처럼 수행했던 프로젝트를 좀더 명확하고 단계별로 이루어 질 수 있도록 하는 가이드의 역할을 목적으로 하고 있습니다. 크게 1부/2부/부록으로 이루어져 있으며 1부/2부는 각각 10개의 챕터로 구성되어 있습니다.
1부: 기능적 모델링 - 주로 프로젝트의 기술적인 구현 측면에 중점을 두고 설명하고 있습니다. 프로젝트를 시작하기에 앞서 UML에 대한 간략한 설명 및 방법론의 이해와 이책에서 사용할 방법론 설명을 시작으로 서두를 시작하고 있습니다. 저자분 이 현업에 계신 분이라 그런지 요구 분석에서는 무척 실감나게 진행이 되더군요. 간혹 사용자의 대화에서는 이 부분에서 웃어야 하나라는 갈등도 들게 하구요..^^ 이 책 전체적으로 프로젝트가 실제로 진행되는 것 같은 느낌이 들곤 했습니다. 먼저 이 책에서는 J2EE중심으로 이루어 졌기 때문에 Bean 모델링과 Servlet과 JSP 모델링을 설명하고 있습니다. 책의 수준이 중급 이상이기 때문에 모델링일 뿐이지 아주 구체적인 설명은 나와 있지 않습니다.
2부: 업무별 모델링 – 1부에서 기술적인 구현 측면에 바탕을 두었다면 2부에서는 이러한 바탕 위에 업무 프로세스에 대한 설명을 덧붙여 더욱 더 생생한 프로젝트 체험을 할 수 있게 해줍니다. 이러한 구성은 저자의 노력 때문에 가능할 수 있었던 것 싶습니다. 사용자에게 편리한 데이터 입력을 가능케 하는 LOV(List Of Value) 라던가 DB Table에서 핵심인 코드에 대한 코드 관리 프로그램은 여느 책에서 볼 수 없는 내용이었고 특히 엑셀 연동하는 부분과 사내 뉴스 프로그램 플러그인 같은 기능은 사용자의 요구가 얼마나 다양해 질 수 있는가를 체험하기에 충분한 부분 이었습니다.
부록: 이 책에서 사용되는 UML 표기법, UML CASE TOOL인 Rose를 이용한 자바 소스 코드 생성법, 웹 애플리케이션 서버인 웹로직 설치 가이드, Oracle 9iAS Forms 서버 연동법을 설명하고 있습니다.
책 이곳 저곳에서 ‘꼭 기억하고 넘어가세요’라는 코너는 ‘하나의 챕터를 정리하여 어떠한 부분을 자신에게 적용할 수 있을까?’에 대해 생각할 수 있는 시간을 갖게 해주더군요. 또한 ‘여기서 잠깐’이라는 코너에서도 이미 개념은 알고 있지만 혼동되어 책을 찾아 봐야만 하는 수고를 덜어 주고 있습니다. 보통 대부분의 책에서 이러한 코너는 용어 선정에 실패해서 쉬운 용어가 나오는 경우도 있지만 이책의 경우는 용어 선정에 성공한 편이라고 말할 수 있습니다.
몇 가지 아쉬운 점은 이책의 부제인 “레거시 시스템을 웹으로” 부분 이었습니다. 제목만 보면 기존의 레거시 시스템을 웹으로 Migration 하려고 했을 때 실제 기술적으로 어려운 점이라던가, 문제점들을 보여주지 않을까 라는 생각을 했었거든요. 어느 정도 웹 프로그래밍의 한계에 대해서는 얘기가 있었지만 조금 아쉽네요. 차라리 부재를 “레거시 시스템에서 웹으로” 라면 어떨까 라는 생각을 해보았습니다. 또한 이책에서는 오직 J2EE 뿐만 다루었는데 경쟁(?) 관계에 있는 Microsoft .Net에 대한 언급도 약간 있었다면 하는 바람도 생기더군요.
전체적으로 소스는 많은 편은 아니었지만 이 책의 대상을 생각해 볼 때 기본적인 구현 부분(예를 들어 간단한 HTML 태그 부분 이던지 JSP import tag 부분)은 과감하게 생략하고 핵심 부분만 나타냈으면 좀더 책이 간결하지 않았나 싶습니다. 마지막으로 욕심을 부리자면 이 책에서 구현한 시스템을 실행시켜 볼 수 있도록 사이트나 Deployment 설명이 있었으면 좋겠다는 생각을 해봤습니다.
덧붙이는 말
이러한 몇 가지 단점에도 불구하고 현업을 체험하지 못하는 전산학과 관련 학생이나 초급 개발자에게 이 책을 추천하고 싶네요.
거의 모든 개발자들이 한 번씩은 “MVC 모델”이라는 말을 들어보았을 것이다. 각 단어가 무엇을 의미하는지는 모른다 하더라도 이 모델이 주장하고 있는 바는 Model, View, Control를 분리하라는 것이다. 그리고 원서에서 대형 프로젝트를 가정하는 경우, 각 파트를 담당하는 사람들은 서로 다른 사람이라는 것을 무의식적으로 전제하고 있다. 그리고 프로젝트의 각 단계를 수행하는 사람들도 다르다는 것을 가정하고 있다. 그러나 나는 수행했던 프로젝트 중에 절반 이상에서 분석, 설계, 개발, 구현을 모두 담당했다. 경험에 비추어 볼 때 대부분의 프로젝트에서는 업무를 나눌지언정 Model, View, Control은 한 사람이 담당한다. 이런 상황에서는 이 책이 매우 유용하다. 전 개발과정에 대한 상세한 설명을 제공하고 있기 때문이다. 또한 프리젠테이션부터 데이터베이스까지의 내용도 유기적으로 포함하고 있다. 내가 필자에 대해 감탄하는 또 다른 이유는 기술적인 설명 뿐 아니라 업무적인 설명이 자세하다는 것이다. 적어도 나에겐 얼마나 지루하고 하기 싫은 작업인지 모른다.
목차에서도 알 수 있듯이 이 책은 세부적인 내용까지 담고 있다. 기능별(조회, 입력, 수정/삭제) 모델링 뿐 아니라 업무별 모델링도 제공하고 있다. 실제 프로젝트에서 그대로 사용할 수 없다 하더라도 사용자 권한, 코드 관리, 데이터 유효성 체크, 엑셀 연동, 배치 작업 같이 피할 수 없는 업무에 대한 부분도 자세하게 다루고 있다. 책 전체를 읽지 않더라도 이러한 문제에 대해 고민하고 있는 사람들은 그 부분만 따로 참고해도 될 것이다.
책에서는 프로젝트 수행시 유념해야할 몇 가지 지침을 제공하고 있다. “위험요소를 프로젝트 초기에 파악하라, 파일럿 프로젝트를 먼저 시행하라, 알맞은 방법론을 선택하라.” 이러한 내용은 주로 프로젝트 매니저를 대상으로 한 말일 것이다. 이 책의 주요 독자가 개발자임에도 불구하고 프로젝트 수행시 그들을 위한 조언은 별로 없다. 책 전체가 조언이라면 할 말 없지만. 나의 신조는 “믿지 마라”이다. “아무도 믿지 말고, 이 책을 포함해서 아무리 유명한 책이라 하더라도 믿지 말고, 자신이 개발한 소스도 믿지 마라.” 그래서 나는 모든 책에 대해서 비판적인지도 모른다. 이 책도 여전히 나의 비판을 피할 수 없다. 그건 내가 책을 써도 마찬가지일 것이다. 그러나 여기서는 나의 비판을 다른 독자들의 판단에 맡겨두련다. 그래도 내가 나쁜 책을 좋은 책으로 속였다고 하지는 못할 것이다.
웹 기반의 전사적 기간 업무 시스템 구축에
필요한 분석, 설계, 개발(유형별)등 실제로
경험한 모든 이론과 실무를 군더더기 없이
생생하게 전달해 줄 수 있는 책으로, 프로젝트
를 시작하기전, 수행 중 여러 차례의 시행착오
를 겪고 있는 개발자들에게 강력히 추천하고
싶은 책이다.
시중에 나와 있는 많은 관련 도서들 중, 입맞에
딱 들어맞거나 누구나 공감하는 내용을 담고
있는 책들을 찾기는 무척이나 어려운 것이
현실 상황이다. 그 이유는 외서를 각 분야별
로 번역 또는 참조하였거나 프로젝트 전체 과정에 걸쳐 분석가/설계자/수행자/테스터/관리자 등을 두루 경험하지 못한데서 오는 이론과 실무(경험)의 괴리가 아닐까? 이러한 것을 충분히
만족시켜 줄 수 있는 저자의 세심한 배려가
여러 곳에 배어 있으며, 웹 어플리케이션 개발에 필요한 요소 기술을 한데 모아 단 한 권으로
도 충분한 효과를 나타낼 수 있으니 더욱 좋다.
프로젝트 수행 및 방향 설정에 여러모로 큰
도움이 될 것으로 믿는다.