'cvs'에 해당되는 글 4건

  1. 2007/09/27 프로젝트 관리 어떻게 시작할까요?
  2. 2007/08/27 실용주의 프로그래머를 위한 버전관리 - using CVS
  3. 2007/06/27 프로젝트 관리를 위한 필수 요건
  4. 2007/06/01 소스코드 버전관리를 활용하라. (2)

프로젝트 관리 어떻게 시작할까요?

|


프로젝트를 진행할 때, 현업에서 사용하는 방법론은 여러가지가 있습니다.
방법론!! 몇몇 사람들 특히 개발자들은 방법론은 쓸데없는 것이고 개발에 전혀 도움이 되지 않는다고 이야기 합니다.
저 역시도 RUP, 마르미, 이노베이터 등의 방법론을 토대로 프로젝트를 진행해 본 경험이 있습니다만,
솔직히 방법론이 무용지물이라는 생각을 해본 적이 꽤 있습니다.

이유는 바로 방법론에 맞추어 개발하고 산출물을 만드는 것이 아니라, 프로젝트 완료 시점에 방법론의 산출물을 한꺼번에 작성하거나 초기에 대충 작성해 놓고 나중에 한꺼번에 변경하는 것이 문제가 되는 것이었습니다.
그러다보니 오히려 방법론이 개발팀에 있어서는 짐이 되는 것이죠..

또, 방법론은 모든 프로젝트를 염두에 두고 만들어 놓은 것이므로.. 프로젝트의 특성에 따라 다시 재구성해서 진행할 필요가 있는데도 불구하고... 그냥 지난번에도 이런이런 것을 적용했으니 이번 산출물에도 이것들은 넣어야 해.. 하는 식으로 사용하므로 문제가 되는 것 같습니다.

일단, 제가 현재 사용하고 있는 제 나름대로의 방법론이 아닌 프로젝트 관리를 나열해 보고자 합니다.
물론 SI 프로젝트로서 고객에게 산출물을 제출해야 하는 경우에는 어쩔 수 없이 협의를 통해 방법론에 따른 산출물을 정의하지만.. 이것은 회사 내부 개발이나 저 혼자 개발할 경우.. 주로 사용하는 것입니다.

첫째, CVS와 같은 소스코드 관리는 필수입니다. 이게 없으면.. 소스에 대한 백업이나 통합등 여러가지를 수동으로 처리해야 하는 문제가 발생합니다. 먼저 CVS를 세팅하고 개발팀 전체가 사용할 수 있어야 합니다.
매일 CVS에 업데이터를 해야 하구요.. 프로젝트 관리자의 입장에서 수시로 들어가서 현재 진행상태를 눈으로 확인해 보는 겁니다.
소스코드의 버전관리는 이전 글(http://xmlmanager.tistory.com/6)을 참고하시기 바랍니다.
또한, CVS와 ANT를 이용해 서버에 배치하는 스크립트를 짜서 활용하기도 합니다.

둘째, 간트차트를 이용한 프로젝트 일정관리를 초기부터 합니다. 툴로는 MS Project를 사용하는데요.
여기서 중요한 점은 간트차트를 통한 일정관리를 1주일 단위로 초기에 전체적으로 잡아 놓습니다.
그리고 매주 업데이트 한다는 것입니다.
일정이라는 것이 늦어지는 경우가 많기 때문에 초기 계획시 늦어질 경우에 대한 버퍼도 마련해 두고요..
하지만, 개발팀에 절대 일정을 다그쳐서는 안됩니다. 매일 야근에 날새면서 개발한 것 치고 제대로 된 것이 없거든요.. 다만, 긴장이 풀어졌다는 느낌이 들지 않도록 유지하는게 중요하다고 봅니다. (이게 정말 어려워요.. -.-)

셋째, DB 설계입니다. DB 설계에서는 ER-Win으로 ER 다이어그램을 만들고요.. (logical, physical 두개 다 만듭니다.) CVS에 함께 공유합니다. 개발중에 DB 필드가 변경되는 경우가 종종 있는데요.. 그때는 공유된 다이어그램도 함께 변경하도록 해서.. 다이어그램과 실제 DB와 똑같이 유지시킵니다.
그리고 DB에서 사용하는 상태값들이 있습니다. 이건 메모형태로 ERD에 포함시켜 둡니다.
ER 다이어그램을 그려 놓으면 나중에 DB 관련 문서들을 만들기 편리합니다.

넷째, MiniSpecification이라는 문서를 하나 만듭니다.(MS-Word를 사용하고, 스타일을 적용함다) 초기에는 여기에 구성도, 전체 흐름, 기본 요구사항등을 자유형식으로 정리합니다. 프로젝트 진행 중에는 각 부분에서 비즈니스 로직이 들어갈 경우.. 해당 로직을 여기에도 정리해 놓습니다.
저는 이 스펙 문서를 꽤 중요하게 생각합니다. 추후 유지보수나 여러 측면에서 활용하려고 하는데요..
만약 이것이 없다면 소스코드를 추적해야 하니.. 시간이 더 걸리겠죠..
하지만, 개발자들은 이걸 그리 최신으로 유지하려고 하지 않습니다. 아무래도 소스코드 바꾸고 잊어버리는 경우가 많은 것 같습니다. 그래서 저는 소스를 확인할 때, 제가 직접 이부분을 정리하는 방향으로 하고 있습니다.
어차피 코딩을 안할 경우, 간트챠트 보고.. DB 확인하고.. 스펙 문서 다듬는 것이 기본 작업이 되니까요..

다섯째, 마지막으로 버그나 기능개선을 위한 엑셀 문서를 하나 만듭니다. 개발완료후, 사용할 것인데요..
Debug와 Enhancement 탭으로 나누고요..
우선순위, 수정여부, 수정일, 기록일, 버그재현단계, 예상수행결과, 실제수행결과, 수정처리자, 비고
의 형식으로 정리합니다.
이것 또한 CVS에 올려놓고 누구나 추가, 수정할 수 있도록 하지만.. 역시 제가 주기적으로 내용을 점검합니다.
(버그질라와 같은 것도 생각해 봤는데, 아직 적용하지는 않고 있슴다.)
이상이 프로젝트 관리만 할 때, 제가 하는 방법입니다. 문서는 MS-Project 파일, ERD 파일, Word 파일, Excel 파일 1개가 만들어집니다.
이렇게만 해도 프로젝트 진행을 관리하는데 바쁩니다. ㅋㅋ 그리고 산출물도 운영하는데 전혀 지장이 없을 만큼 충분히 나오지요..

앞으로 해보고 싶은 것은 개발자들에거 본인이 만든 로직에 대한 테스트코드를 생성하라는 주문을 하고 싶습니다. 어떤 프로젝트에서 개발자 부담을 덜어주려고 제가 직접 JUnit을 이용해 해봤는데요.. 거기까지는 힘들더라구요.. 시간이 너무 많이 걸리고.. 해당 개발자가 인터페이스나 메소드를 변경하면.. 따라서 고쳐줘야 하는데.. 관리자가 할 몫은 아니더군요..

아~ 그리고 최근에는 칠판을 하나 추가했습니다.
프로젝트별 "계획", "완료", "이번주"의 내용을 박스안에 간단하게 기록하는데요..
위 문서들을 CVS에 접속해서 직접확인하지 않는 윗사람들을 위해서.. 한눈에 볼 수 있도록 항목만 정리해 놓은 겁니다. XP 책에 있길래 해봤는데.. 나름 괜찮은 것 같더라구요..  *^^*
크리에이티브 커먼즈 라이선스
Creative Commons License


Trackback 0 And Comment 0

실용주의 프로그래머를 위한 버전관리 - using CVS

|


실용주의 프로그래머를 위한 버전 관리 using CVS
데이비드 토머스 외 지음, 정지호 옮김/인사이트

얼마전 소스코드 버전관리에 대한 포스팅을 한 적이 있습니다.

프로젝트를 진행하면서 보니 소스코드에 대한 버전관리는 프로젝트 자동화의 시작이며, 제대로 된 프로젝트를 위해서는 필수적인 요소라고 생각합니다.

그러나 실제로 소스코드 버전관리를 제대로 활용하는 개발자들이 얼마나 될까요?

그런점에서 소스코드 버전관리에 대한 책이나 글을 구해서 읽어보는 것이 도움이 될 거라는 생각이 들어.. 이 책을 소개합니다.

2005년에 이 책을 처음 읽었었구요.. 물론 그 때는 뭔내용인지 전혀 이해를 못했슴다. -.-
어떻게 활용해야 할지도 모르고 걍~ 예제에 나오는 대로 sesame이나 따라하는 정도였죠..

올 초에 다시 이책을 읽어봤습니다. 그리고 프로젝트에도 적용해 보구요..
실전에서 활용하려면 여기에 나오는 것만으로도 부족하다고 느꼈습니다.

예를 들어, 디렉토리까지 포함해서 지워진 파일들의 목록을 보고 다시 파일들을 복원하려면 어떻게 해야 할까요? 하는 문제에 대한 해답은 없는 것 같았습니다. (혹, 찾으신 분은 알려주세요 ^^)

물론 이클립스에 포함된 Restore from Repository.. 명령어로 한방에 해결하기는 했지요..

어쨌든 소스코드 버전관리에 대한 개념을 잡기 위해서라도 꼭 한번은 읽어보기를 권장합니다.
이클립스나 거북이(Tortoise)와 같은 툴만 사용할 것이 아니라 콘솔 명령어도 한번씩 보시면 도움이 될 것 같습니다.

일단, 1장 서론과 2장 버전관리란 무엇인가요? 부분은 잘 읽어보시기 바랍니다.
기본 개념을 이해하는 것은 매우 중요하니까요...

3장 ~ 6장까지는 CVS 명령어들에 대한 설명입니다.
실전에서도 활용할 수 있으므로 잘 읽어보시구요~~

7장~10장까지는 저는 아직 써보지 못한 부분이 많습니다.
내용만 이렇구나 하고 읽어봤구요..
솔직히 아직 꼬리표나 브랜치를 언제 써야 할 지..
또 이런 브랜치가 많아지면 오히려 나중에 통합이 어려울 텐데.. 하는 생각에 적용을 못해봤네요.. -.-

Appendix의 내용도 명령어 요약이나 WinCVS, 이클립스 사용방법이 포함되어 있으니 참고하시구요..

간단히 내용을 적은 것처럼 실제 책에 내용이 그리 만족스럽지는 못합니다.
오히려 인터넷 상의 자료들이 도움이 되기도 하죠..
하지만, 기본 개념을 잡기 위해서라면 한번 건드려라도 보세요~~
크리에이티브 커먼즈 라이선스
Creative Commons License


Trackback 0 And Comment 0

프로젝트 관리를 위한 필수 요건

|


프로젝트 관리에 대한 자료들을 참고하다보면.. 꼭 빠지지 않는 이야기가 있습니다.
여러분은 그것이 바로 무엇이라고 생각하나요?

간트차트(Gantt Chart)를 통한 일정관리 ??
CVS와 같은 프로그램을 이용한 소스관리 ??
PMP(Project Management Professional) 자격증을 통한 검증 ??

보통 가장 중요하게 이야기 하는 것은 바로 "인력관리"가 아닐까 생각합니다.
프로젝트라는 것도 어차피 사람이 하는 것이므로..
문제도 사람이 만들고, 해결도 사람이 하게 됩니다.

그러므로 문제를 만들고 해결할 수 있는 사람들을 관리하는 것이야말로
가장 중요한 프로젝트 관리가 아닐까 합니다.

그러나 여기에서 고려해야 하는 점은 바로 사람의 다양성을 인정해야 한다는 것입니다.
혹자의 글처럼 모든 개발자를 람보로 만들어야 한다는 생각은 매우 위험한 발상이라고 봅니다.
사람마다의 다양성이 있으므로 서로의 장점을 잘 찾아서 개발해 주는 것이 프로젝트 관리의 묘미가 아닐까 합니다.


솔직히 프로젝트 진행할 때,
개발자들을 3~4명만 두고 업무 분장을 해 봐도.. 개인적인 개발능력의 차이는 분명히 있습니다.
개발 능력이 떨어지는 것 처럼 보이는 A란 친구는 꼼꼼하게 모든 변수를 고려하는 면이 있고..
개발 스피드가 빠른 B란 친구는 눈앞의 문제만 해결하기도 합니다.
심지어 아무리 한심해 보이는 친구가 있어도.. 분명 그 친구가 잘하는 것이 있고~
그것을 이용해 프로젝트에 도움을 줄 수 있도록 만들 수 있는 것이 있을 것입니다.

이처럼 개발자들의 특성을 파악해 거기에 적합하도록 업무를 분배하고 관리하는 것이
프로젝트 성패의 중요한 요소인 것이지요..

A에게 스피드를.. B에게 꼼꼼함을 가르치려 한다면..
당장의 프로젝트에서는 좋은 결과를 기대할 수는 없겠죠~~
물론 서로의 장단점을 프로젝트 중간중간 미팅을 통해서 이야기 해주는 것은 좋죠^^

요즘 읽고 있는 "데드라인"이란 책에는 "훌륭한 관리를 위한 4가지 필수 요건"으로 다음과 같은 항목이 나옵니다.
1. 적절한 사람들을 구한다.
2. 그들에게 알맞은 일을 할당한다.
3. 항상 동기 부여를 한다.
4. 팀이 결속하도록 하고, 그 상태를 유지하도록 돕는다.


좋은 이야기인 것 같습니다. 실행하기 어려운 말이기도 하구요~~

마지막으로 ...
"믿지 못하면 맡기지 말고, 일단 맡겼으면 끝까지 믿어라"


크리에이티브 커먼즈 라이선스
Creative Commons License


Trackback 0 And Comment 0

소스코드 버전관리를 활용하라.

|


프로젝트의 규모가 점점 커지면서, 소스코드의 버전관리가 중요한 요소로 자리잡아 가고 있습니다.

혼자서 단독으로 프로그래밍을 하던 시기에는 백업 파일만 잘 보관하면 됐지.. 버전관리가 왜 필요할까? 하고 생각했던 것이 사실입니다.
하지만, 협업을 하게 되면서.. 단순히 백업만 가지고서는 발생할 수 있는 문제점들을 해결하는데 어려움이 있게 됩니다.

소스코드를 누가 변경한 것인가?
현재 소스와 이전 소스의 차이점은 무엇인가?
현재 소스를 릴리스(release)에 어떻게 반영할 것인가?
동시에 동일 파일에 대한 변경이 발생할 경우, 충돌을 어떻게 해결할 것인가?

단순한 백업에서는 해결하지 못했던 것을 소스코드 버전관리를 통해서 처리할 수 있게 되는 것입니다.

그래서 어떤 프로젝트를 막론하고.. 심지어 프로토타입이라 할지라도 소스코드 관리를 활용하는 것이 바람직하다고 생각합니다.

이런 소스코드 버전관리 프로그램으로는 CVS, Subversion, SourceSafe 등이 있습니다.
제 경우에는 CVS를 주로 사용하고 있는데요.. VC++ 프로젝트의 경우에는 SourceSafe를 사용하기도 합니다.

기본적인 소스코드 버전관리 프로그램의 특성들은 비슷하니..
한가지를 기본적으로 잘 익혀 두시면 다른 것들도 파악하는데 어려움은 없지 않을까 생각합니다.
(CVS와 Subversion의 차이 설명 : http://www.word.pe.kr/bbs/view.php?id=term&no=5)

추가적으로 CVS와 함께 ANT와 같은 툴도 병행해서 사용하기도 합니다.
기본적으로 주어진 툴을 잘 활용해서.. 노가다하는 시간을 줄이는 것도 훌륭한 프로젝트 관리의 하나가 아닐까 합니다.

CVS에 대한 설명은 다음 사이트를 참고하시기 바랍니다.

CVS를 이용한 프로젝트관리 : http://joinc.co.kr/modules.php?name=News&file=article&sid=60
CVS 이야기 : http://kldp.org/KoreanDoc/html/CVS-KLDP/index.html
CVS 사용 : http://kldp.org/KoreanDoc/html/CVS_Tutorial-KLDP/


크리에이티브 커먼즈 라이선스
Creative Commons License


Trackback 0 And Comment 2
prev | 1 | next