미국에서 개최된 TechEd 2011의 강연 중에서 VC++과 관련이 있는 ALM for C++ in Microsoft Visual Studio 2010이라는 세션을 소개하려고 합니다.

 

이 세션의 내용은 Visual Studio 2010(이하 VS)에서 C++에서 사용할 있는 ALM 기능을 소개하고, VS의 차기 버전(이하 vNext) 구현될 ALM 기능을 소개하고 있습니다.

사실 저는 이 세션에 대해서 별로 기대하지 않았습니다. 그러나 세션 내용을 보니 저의 생각을 완전히 뛰어 넘었습니다. VS의 차기 버전을 많이 기대하게 되었습니다.^^
이 세션의 내용 중 vNext에 관련된 내용을 정리해 보았습니다.

 

이 세션의 내용을 짧게 정리하면 기존 VS에서 닷넷만 되고 C++은 안 되는 기능을 이제는 C++에도 동등하게 지원한다’ 입니다.

저는 Visual Studio.NET 2002에서부터 VS에 대한 불만 중 하나가 닷넷 프로그래머나 C++ 프로그래머나 똑 같은 돈을 주고 VS를 구입하는데 왜 tool의 많은 기능 중 닷넷만 되고 C++은 안 되냐라는 것이었는데 이제 이런 불만이 사라질 것 같습니다.

 

그럼 ‘ALM for C++ in Microsoft Visual Studio 2010’ 세션을 간단하게 소개하겠습니다.

( 본문에 사용한 그림은 VC++ 팀 블로그에 올라온 그림을 사용하였습니다 )

 

현재 C++에서 VS ALM을 모두 사용하고 있는 사람은 3할정도

 

Visual Studio 2010에서의 ALM 기능

Premium 버전

- ALM과 관련된 기능으로 Code Coverage, Static Analysis, Profiling, Concurrency Profiling을 지원.

Ultimate 버전

- Load Testing, Lab Menagement 지원

- TFS에서는 Version Control, Team Build 지원

 

 

vNext에서의 변화

2010에서 지원하던 Architecture tools의 기능을 강화하면서 새로운 기능을 추가

Native ALM에 투자를 하여 기존의 많은 ALM 기능을 Native에 대응해 나갈 것임

 

 

코드 분석


VS2010에서도 사용할 수 있는 기능으로 vNext에서 더욱 개선
상세한 정보를 전달하기 위해서 UI를 다시 디자인
분석 엔진 개선으로 더욱 강력하게 에러나 경고를 진단
제안을 클릭하면 코드 위에 하이라이트 하여 문제점을 가시화

 

 

Architecture Tools  (VS2010에서 지원)

    Dependency diagram by binary

Native 애플리케이션의 아키텍처를 동적으로 시각화하여 의존 관계를 빠르게 파악할 수 있음

이름 공간, 타입, 함수 단위로 자유자재로 의존 관계를 시각화

 

     Dependency diagram by include files

헤더 파일의 의존 관계도 그래프화(이 기능 사용하면 빌드 시간 단축을 위해 헤더 파일 정리할 때 정말 좋을 것 같습니다).
헤더 파일에 색을 붙여서 구분이 쉬워짐. 또 이미지 파일로 저장도 가능

 

   Create a layer diagram and run validation

기존 VS 프로젝트를 드래그&드랍으로 레이어 그림으로 변환. 아키텍처 검증과 의존 관계 생성도 할 수 있음.


 아키텍처 검증은 TFS의 자동 빌드로 실행

 


그리고 드디어 vNext ALM for C++의 끝판왕 소개입니다.

.......

...........

..............

무려 C++ Unit Test Framework 지원(뭐 사실 2010에서 닷넷은 이미 지원하고 있죠^^;;).

저는 이 기능은 정말 의외였습니다. 제가 tool에서 가장 지원해주기 바라는 기능이 드디어 들어오네요. 이 세션에서도 이 C++ Unit Test Framework 소개할 때 청중들의 박수갈채가 뿜어져 나왔다고 합니다. 아마 저도 이 세션을 들었으면 기립박수를 했을 것 같네요^^

이제 우리 C++ 프로그래머들도 이제 순정(?) Unit Test Framework을 사용할 수 있어 따로 설치하지 않아도 되고 녹색 버튼과 빨간 버튼을 볼 수 있습니다.

화면 멋지지 않나요저는 지금 회사에서 구글의 C++ Unit Test Framework를 사용하고 있는데 UI면에서는 비교를 할 수 없을 정도로 좋네요^^


단위 테스트 프로젝트 템플릿이 있고, CppUnitTest.h, TEST_CLASS, TEST_METHOD 매크로가 있다고 합니다.

위 그림의 왼쪽이 Unit Test Explorer인데 테스트에 속성을 붙일 수 있는데 이 속성은 TEST_OWNER(), TEST_PRIORITY(), TEST_IGNORE() 등이 있습니다.

 

Code Coverage

 

Unit Test Explorer에서 아이콘 클릭으로 코드 커버리지 데이터 리포트를 볼 수 있습니다.

바이너리 단위, 함수 단위로도 가능합니다. 원래 이 기능은 2010에는 있었지만 닷넷만 가능했죠. 이제 이것을 C++에서도 사용할 수 있습니다.

소스 코드의 하이라이트로 커버리지 상황을 시각화 할 수도 있습니다.

 

 

 

앞서 이야기 했듯이 기존에 닷넷만 지원하는 기능을 앞으로는 C++도 사용할 수 있습니다. 그리고 당연하게 vNext에서 새로 만들어지는 기능도 이젠 차별 없이 C++도 지원한다고 합니다.

vNext에서는 VS tool 기능을 반쪽만 아닌 닷넷과 같이 모두 사용할 수 있을 것 같아서 너무 좋네요^^

 

기억을 더듬어 보면 2008이 나오기 전 2007년 겨울에 MS 본사의 VC++ PM이 왔어 앞으로 VC++의 기능이 혁신적으로 개선 될 것이라고 했을 때 일종의 립 서비스라고 생각했고, 2008이 나왔을 때 역시나(물론 이전보다는 좀 좋아졌지만) 라고 생각했습니다. 그러나 2010이 나오면서 인텔리센스를 새로 만든 것을 보고 립 서비스가 아니었구나 라고 생각하게 되었고 이번 세션을 통해서 MS VC++에 대한 확고한 의지를 볼 수 있었습니다.

 

vNext가 정확하게 언제 나올지는 모르겠지만 VC++ C++0x 기능과 C++ for ALM 기능으로 기대가 정말 많이 되고 나오면 공부할 것이 많을 것 같습니다.

 

‘ALM for C++ in Microsoft Visual Studio 2010’ 세션에 대한 정보는 VC++ 팀 블로그의 글이나 Channel 9에서 영상으로 볼 수 있습니다.