겐도형의 개발 환경을 공개합니다.을 읽고 나도 한번 공개해 본다.
데이터베이스 – Microsoft SQL Server 2000
기본적으로 제공되는 엔터프라이즈 매니저, 쿼리 분석기, 프로필러 모두를 상황에 따라 사용한다. 프로필러는 성능 문제가 발생했을 때만 사용한다. 엔터프라이즈 매니저는 거의 사용하지 않고, 대부분의 작업은 쿼리 분석기 하나로 끝낸다. 웬만한 명령어는 숙지하고 있기 때문에 엔터프라이즈 매니저는 데이터 내보내기나 DTS 패키지 기능이 필요할 때만 사용한다.
IDE – Microsoft Visual Studio .NET 2003
주력 분야가 C#인 만큼 당연히 VS.NET을 사용한다. 최근에 2005가 출시되기는 했지만 .NET Framework 1.1을 주로 사용하기 때문에 원고 쓸 때만 사용한다.
VS.NET는 편리한 도구일 뿐만 아니라 강력하기까지 하다. 무엇보다도 기본 탑재된 디버거의 성능과 기능이 매우 훌륭하다. 몇번 이클립스로 자바 어플리케이션을 디버깅해 봤는데, 나의 자바 경력이 짧아서인 탓인지 몰라도 여간 불편한 것이 아니었다.
Refactoring – Jetbrains ReSharper
VS .NET 2005에 들어서면서 리팩토링 기능이 기본 탑재되기 시작했지만, 아무리 그래도 ReSharper의 기능은 따라올 수가 없다. ReSharper를 리팩토링 도구로 소개했지만, ReSharper는 단순한 리팩토링 도구를 넘어선다. 방금 작성한 코드에서 오류를 찾아내서 바로 알리기도 하고, 새로운 클래스가 등장하면 해당 클래스를 가진 참조 어셈블리의 이름으로 using 키워드가 추가된다. 상용 라이센스는 199$이고 교육 및 연구 라이센스는 49$인데 투자비용을 뽑아내는 것은 순식간이다.
최근 릴리즈에서는 유닛 테스트나 빌드 스크립트 지원 기능 등이 추가된 것 같다. – 기능 보기
Version Control System – Subversion
최초로 접한 소스 관리 시스템이 Subversion이다. 그리고 제대로 다뤄본 유일한 시스템이다. 그런 까닭에 Subversion이 최고라고 말할 생각은 없다. 다만 CVS은 커밋이 파일 단위로 이뤄진다고 하는데 골치 아플 것 같다. 처음부터 매우 편리한 환경에서 작업해 온 것 같다.
Client Tool
-
스크린 샷을 보면 알 수 있지만, AnkhSVN은 VS.NET에 통합된 Subversion 클라이언트 도구다. TortoiseSVN와 같은 프로젝트와 달리 참여자가 많지 않은 탓에 성가신 버그가 종종 눈에 띈다. 하지만 매우 편리한 도구임에는 틀림없다. AnkhSVN로 할 수 없는 작업에만 TortoiseSVN를 활용한다.
비슷한 유료 소프트웨어(VisualSVN, PushOK’s SVN SCC provider)가 있다고 하는데 사용해 본 적은 없다.
-
TortioseSVN은 윈도우 쉘에 통합된 Subversion 클라이언트 도구다. 하위 디렉토리에 수정된 파일이 있으면 상위 폴더에 빨강색 아이콘이 보이기 때문에 어서 빨리 커밋해야겠다는 강박 관념을 심어준다. 웬지 당장 커밋하지 않으면 안 될 것 같다.
Unit Testing
-
TestDriven .NET이 없다면 단위 테스트는 고역이다. VS.NET으로 열심히 단위 테스트 코드를 작성한 후에 빌드한다. NUnit 콘솔에서 NUnit 실행 명령어를 입력한다. 만약 단위 테스트 오류가 발생하면 다시 VS.NET을 돌아가서 오류가 난 테스트 코드를 살펴봐야 한다.
TestDriven .NET은 VS.NET의 Addin 형태로 설치되는데, NUnit 뿐만 아니라, MbUnit과 MS Team System를 지원한다. VS.NET에서 신나게 단위 테스트 코드를 작성한 후, 바로 컨텍스트 메뉴에서 Run Test를 선택하면 단위 테스트가 진행된다. 테스트 결과는 출력 창에 출력된다.
그러나 TestDriven .NET을 사용하는 가장 큰 이유는 단위 테스트 코드 자체를 디버깅할 수 있다는 점이다. 만약
ThisIsTest()
라는 테스트 메써드에서 실패했다면,ThisIsTest()
에 중단점을 설정하고 컨텍스트 메뉴에서 Test With Debugger를 선택한다. 그러면 VS.NET이 어플리케이션의 진입점으로 들어가지 않고, 단위 테스트 코드를 실행시킨다.
Peformance Tuning
-
CLR Profiler
Microsoft에서 샘플처럼 배포한 프로필러인데, 아직까지도 이만한 메모리 프로필러를 찾아보기 쉽지 않다. 어플리케이션의 생명주기 동안의 메모리 할당, 가비지 콜렉터의 행동 등을 파악할 수 있다. 더욱이 ASP.NET 어플리케이션마저 프로필링할 수 있다. 메모리 튜닝을 위해서는 필수 도구다.
-
DevPartner Profiler Community EditionCPU 프로필링의 원시적인 도구는 역시
DateTime
객체다. 한동안DateTime
으로 어떻게 버텨오다가 쓸만한 CPU 프로필러를 찾아봤다. 무료로 사용할 수 있는 도구 중에는 NProfiler가 나름대로 쓸모 있었다. 하지만 알파 릴리즈라 그런지 ASP.NET 어플리케이션은 프로필링하지 못했다. XML 웹서비스 개발을 하려니 NProfiler로는 부족했다.
DevPartner Profiler Community Edition는 정말 최고다. 우선 VS.NET에 Addin 형태로 통합된다. 콘솔, 윈도우폼, 그리고 ASP.NET 어플리케이션 모두 프로필링할 수 있다. 마지막으로 CPU와 메모리를 한꺼번에 프로필링한다. 안타깝게도 메모리 프로필링은 CLR Profiler보다 못하지만, 문제를 종합적으로 볼 수 있게 해 준다는 점이 마음에 든다.
Continous Integration Tool – CruiseControl .NET
소스 코드 커밋, 빌드, 단위 테스트, 그리고 문서 생성으로 이어지는 일련의 과정을 자동화하기 위해서 CruiseControl .NET을 사용한다. 여러 어플리케이션이 공유하는 비즈니스 계층을 수정하다 보면 다른 프로젝트의 빌드가 깨지기도 하는데, 이런 경우에 바로 보고가 전달된다.
-
Build Tool – NAnt
VS.NET으로는 부족한 부분을 채울 수 있다. 하지만 메모장 열어서 빌드 스크립트를 작성해야 하는 것은 귀찮다. 설정 편집 도구가 있었으면 좋겠다.
-
Code Documentation Generator – NDoc
VS.NET에서 작성한 주석을 토대로 클래스 명세서를 만들어 준다. 어차피 주석은 달아야 하니 NDoc을 사용한다고 추가로 노력이 드는 것은 아니다.
저는 오로지 vim + Makefile + gcc… =3=3==3 (SP가 이렇게 만들었습니다 -_-)
근데, Unit Test라는 게 정확히 어떤 원리로 진행되는 건가요? Python 같은 데도 관련 라이브러리가 있는 것 같던데 어떤 식으로 동작하는지 몰라서 못 써먹고 있습니다.
또 리눅스에서 C/C++ 개발할 때도 사용할 수 있는 게 있는지도 궁금합니다.
CppTest는 VC++/GCC 모두 지원합니다. 예전에 VC++ 환경에서 사용해 본 적이 있습니다. 아무래도 개발 환경 자체가 C#만큼 자동화하기 힘들어서 불편한 점도 있었습니다만, 대체로 쓸만 하더군요. CppTest 외에도 GCC를 지원하는 단위 테스트 라이브러리가 꽤 많습니다.
단위 테스트를 쉽게 생각하면 Assert의 모임입니다. 보통 Assert는 주 소스코드 내에 들어가게 되는데 단위 테스트는 외부로 빠집니다. 외부에서 테스트할 클래스의 공개된 메써드에 대해 Assert를 추가하는 것입니다. 그러니 별로 어려운 작업은 아닙니다. 한번 예제를 살펴보시면 금방 이해가 될 겁니다.
Hi Kaistizen,
I found a link to VisualSVN on your blog. Unfortunatelly I can’t understand the text in Korean even with Google Translator’s help
May I ask you to write your opinion about VisualSVN in english to [email protected]. It would be very valuable for us. Thanks in advance
TestDriven .NET 무료가 아닌것 같은데
구입하셨나요? 아니면 예전 무료 버전 사용하시나요?
예전 무료 버전은 어디서 구할 수 있을까요?
네. 예전엔 무료였답니다. 지금은 유료라 안 씁니다. 사실 Visual Studio 2005부턴 자체 단위 테스트 프레임워크를 지원하기 때문에 필요 없기도 하구요. 또 ReSharper 같은 리팩토링 제품에 단위 테스트를 지원하는 기능이 추가되기도 해서 TestDriven .NET의 유용성이 많이 떨어진 시점이죠.