Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 강좌/문서
Delphi Programming Tutorial&Documents
[79] 개발환경과 개발 보조 도구에 대해서
주정섭 [jjsverylong] 6646 읽음    2005-10-13 11:46
이런 저런 친분으로, 혹은 일 때문에 다른 델파이 개발자들의 개발환경을 종종 보게 된다. 그런데, 불행스럽게도 많은 나의 동족 개발자들, 즉 델파이 개발자들이 엄청 낙후된 개발 환경에서 일하는 경우를 매우 자주 보게 된다.

명필은 붓을 가리지 않는다란 속담이 있다. 사실 이 말은 말도 안되는 거짓말이다. 졸필은 좋은 붓과 나쁜 붓의 차이점을 모르지만, 명필일수록 좋은 붓과 나쁜 붓의 차이점을 잘 알기에 더욱 붓을 가리기 마련이다. 같은 이유로 뛰어난 개발자라면 각 개발 도구에 대한 장단점을 잘 파악하기 마련이다.

각 개발 도구의 장단점을 가리지 못하면 뛰어난 개발자가 될수 없다고 단정 내릴 수 있다면 과연 심한 말일까? 뛰어난 엔지니어들의 공통점은 자신의 공구(도구)를 잘 관리하고 항상 곁에 둔다는 것이다. 초보 엔지니어들은 5미리 홈을 10미리 드라이버로 돌리는 헛고생을 할지라도, 고수 엔지니어들은 잘 정비된 좋은 장비 때문에 이런 헛고생을 하지 않는다. 

간혹 이런 말을 하는 델파이 개발자들을 본다. 

"나는 델파이 이외에는 전혀 다른 툴을 설치하지도 사용도 하지 않는다. 메모리만 많이 먹고 개발 효율만 떨어뜨린다".

불행스럽게도 이런 개발자들은 다른 뛰어난 개발 도구들의 효용성을 모르는 사람들이기에, 상당히 고생스럽게 개발하며, 실제 그 개발자의 소스 또한 엄청 난잡한 경우가 많다. 더욱 불행한 것은, 이런 노가다 고생을 성스럽게 여기는 것이 개발자의 필수 불가결한 덕목처럼 생각한다는 사람도 있다는 것이다.

다음에 나열하는 항목들은 개발 환경에서 반드시 갖추어야 할 보조적 개발 도구들이라고 생각하는 것들이다. 물론 이는 나의 개인적 개발 경험에 의한 것이지만, 실제 여러 뛰어난 개발자들은 기본적으로 이런 개발 도구들을 갖추고 일하고 있다. 귀하의 개발 환경은 이 항목들 중에 몇 가지를 갖추고 있는지 한번 판단해 보라.

첫번째로, 주 개발 장비와 주 개발툴을 최신으로 가급적 유지하고 있는가?

델파이 버전이 너무 오래 되었거나, 컴퓨터가 너무 오래되지는 않았는가? 당장 2005로 업그레이드하라는 이야기가 아니다. 사실 2005는 상당히 무겁고, 불안정하다. 그러나, 귀하의 델파이 버전이 5 이하이거나, CPU가 2기가 미만이라면 문제가 있다. 개발자는 자신의 기본 장비에 대해서 최상의 상태를 유지해야 한다. 이는 자동차 경주 선수가 후진 자동차로 이길 수 있는가를 반문해 보면 이유가 아주 자명해 질 것이다. 컴이 느려 터져서 컴파일 하는 동안 담배 한개비를 피울 수 있다면 문제는 정말 심각하다. 다행히도 델파이의 컴파일 속도는 무지 빠르기 때문에 델파이 개발자들은 아무리 컴이 후지더라도 이런 경우는 없을 것이다.

두번째로, 버전 관리 툴을 사용하고 있는가?

버전 관리의 중요성을 모르는 개발자들이 아직도 무지 많다. 그날 최종 소스의 백업만이 최선이라고 생각하는 개발자들이 무지 많다. 버전 관리의 중요성을 새롭게 인식하고 반드시 버전 관리 툴을 사용하라. 버전 관리의 중요성은 여러 문서에서 언급되어 있으므로, 새삼 언급하지는 않겠다.


세번째로 테스트를 자동화하는 툴이나 환경을 구축하고 있는가?

처음부터 완벽한 프로그램을 만들기란 불가능하다. 그러므로, 테스트와 디버깅 과정을 거치기 마련인데, 버그를 찾기 위한 테스트 작업을 자동화하는 툴을 가지고 있는가? 그리고 테스트 프로그램을 적극적으로 만드는가? 프로그램의 덩치가 커질수록 테스트 환경은 복잡해 진다. 프로그램 테스트는 최종 사용자(구매자)들이 해야 한다는 생각을 버려라. 이는 졸작 프로그램을 양산하는 가장 지름길이다. 최종 사용자들을 베타 테스터와 혼동하지 말라.

네번째로, 오류 추적 툴이 있는가?

델파이에는 메모리 누수 추적, 예외 상황 추적을 용이하게 해주는 여러 공짜 및 상용 툴들이 있다. 델파이 개발 환경 자체에 상당히 복잡하고 잘 만든 디버깅 환경이 있기는 하나, 이것이 최선은 아니다. 매우 복잡한 프로그램인 경우, 브레이크 포인터와 워치 기능만으로는 매우 추적이 힘든 버그들이 있다. 브레이크 포인터로 일일이 따라가면서 버그를 잡으려는 매우 힘든 노가다 디버깅 작업이 필수 불가결 작업이며, 그래야만 고수 개발자라고 생각하지 말라. 쉽게하는 방법이 있는데도 이를 몰라 노가다를 한다면 잘난 척하는 바보일 뿐이다.

다섯번째로 프로그램 실행 속도의 병목을 찾는 툴(프로파일러:Propiler)을 사용하고 있는가?

많은 개발자들이 최적화를 매우 중요하게 생각하지만, 실제 코딩은 최적화와는 아주 동떨어진 방식으로 한다. 실수 대신 정수를 사용하고, if 대신 case 문을 사용하면 프로그램 속도가 비약적으로 빨라질 것 같은가? 천만의 말씀이다. 최적화는 상당히 어려운 부분이다. 단순히 이런 최적화 관련 몇가지 팁을 적용한다고 해서 프로그램 속도가 최적화되지는 않는다. 최적화에서 가장 어려운 부분은 프로그램이 실행되는 동안에 어떤 루틴이 가장 자주 호출되며, 어떤 루틴의 속도가 가장 떨어지는지를 판단하는 것이다. 이는 천재가 아닌 한, 단순 추론으로는 매우 힘들다.

이런 프로그램의 병목 부분을 전문적으로 찾아주는 프로그램이 프로파일러이다. 이 툴의 도움 없이 병목 부분을 찾아내는 것은 엄청난 노가다 코딩을 강요한다. 살을 빼려면 발톱과 손톱을 깍아서 소용이 없다. 가장 지방질이 많은 뱃살을 줄여야 하듯이, 프로파일러는 프로그램 실행시 뱃살 부분을 찾아주는 도구이다. 최적화에 목숨 건다면 반드시 이 툴을 구비하라. 이 툴도 없이 하는 최적화는 말짱 꽝이다라고 해도 과언이 아니다.

여섯번째로, 도큐멘트와 코딩 설계를 위한 툴이 있는가?

개발에서 문서화는 매우 중요한 작업이기도 하지만, 매우 지겨운 작업이기도 하다. 이를 자동화하는 어떤 체계나 툴이 있는가? 문서화 작업의 노가다를 줄이기 위해서 어떤 노력을 기울이고 있는가? 내쇼날 로즈같이 엄청나게 복잡하고 비싼 툴을 구입할 필요는 없다. 그렇지만 문서화 도구로는 MS워드나 아래아 한글로도 충분하다는 생각은 정말 잘못된 것이다.

마지막으로 빌더 툴을 구비하고 있는가?

볼랜드의 자바 빌더나 C++ 빌더를 이야기하는 것이 아니다. 여기서 빌더란 개발 사이클의 최종 단계인 배포본 작성 작업이나, 개발 도중 발생하는 여러 반복 작업을 자동화하는 툴을 말한다. 예를 들어, 각 버전마다 인스톨 쉴드같은 설치본 생성 프로그램을 실행하고, 이번 버전에 추가된 사항을 요약한 readme.txt를 생성하고, 백업 서버에 최종 버전의 사본을 복사하고 등등의 작업등이 반복되는데 이를 자동화하는 툴을 빌더라고 한다. 즉 빌더란 지능적인 배치 작업 실행 파일이라고 보면 된다.

---결론---

개발자들이 하는 하소연 중에 상당수가 자신의 일이 지겹다는 것이다. 그렇다면 자신의 작업 중에서 지겨운 작업을 자동화하도록 개발 환경을 바꾸면 된다. 지겹지만 어쩔 수 없이 한다보다는 개선책을 찾는게 좋지 않는가?

개발자들은 절대로 자신의 두뇌를 믿으면 안된다. 자신의 암기력, 판단력을 지나치게 과신하지 말라. 오랜 개발 경험에 의해서 오류나 병목을 찾아주는 체계적인 툴이 이미 있는데도 이를 사용하기를 거부하는 것은 오만과 무지일 뿐이다. 노가다가 싫다면 능력이 뛰어난 부하, 즉 좋은 툴을 구비하라. 자신의 노가다 코딩 작업을 절대로 성스럽게 여기지 말라. 노가다는 개발자의 자부심과 집중력에 매우 않 좋은 영향을 미친다. 반복 작업은 어떻게든 자동화 시켜라. 뛰어난 개발자들은 노가다 작업을 줄이기 위해서 최선을 다하는 사람들이라고 해도 과언이 아니다.

개발자인 우리가 하는 일, 즉 프로그램 작성의 목적은 다른 사람의 반복적인 일을 자동화해 주는 것이다. 그렇다면 개발자들이 자신의 반복적일을 자동화하지 않는다면 이는 엄청난 모순이다. 이런 모순을 가지고 있는 개발자는 결코 고수 개발자가 되지 못한다.

만일 위에서 나열한 사항들 중에 3가지 이상을 넘지 못한다면 자신의 개발 환경을 개선하도록 노력을 많이 기울여야 할 것이다.
박지훈.임프 [cbuilder]   2005-10-13 22:52 X
좋은 글이군요^^
이평섭 [wanglung]   2005-10-26 09:05 X
궁금한 것이 있습니다.

네번째로, 오류 추적 툴이 있는가?
다섯번째로 프로그램 실행 속도의 병목을 찾는 툴(프로파일러:Propiler)을 사용하고 있는가?

에 각각 사용하고 계신 툴이나 참고사이트를 알려주시면 좋겠습니다.

좋은 하루 되시구요.
잿빛날개 [ashywings]   2005-11-09 23:46 X
저는 프로파일러로 AQTime을 쓰는데 상당히 쓸만하더군요.

http://www.automatedqa.com/products/aqtime/index.asp

+ -

관련 글 리스트
79 개발환경과 개발 보조 도구에 대해서 주정섭 6646 2005/10/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.