Toolbox
코드 탐색, SQL 쿼리 및 기타 정보
Scott Mitchell

목차
응용 프로그램의 아키텍처를 분석하고 그래픽 방식으로 살펴보기
규모가 큰 Microsoft .NET Framework 응용 프로그램은 응용 프로그램 아키텍처의 고유한 계층을 구성하는 다양한 어셈블리를 이루는 수백에서 수천의 클래스를 포함할 수 있습니다. 대부분의 개발자들은 특정 아키텍처 영역만을 다루지만 선임 개발자 및 시스템 설계자들은 대개 아키텍처의 각 구성 요소와 이들 사이의 상호 관계에 영향을 미치는 코드 및 디자인을 결정하는 역할을 합니다. 이러한 코드 변경과 아키텍처 관련 결정을 수행하려면 선임 개발자 및 시스템 설계자들이 아키텍처 구조와 상호 종속성에 대해 제대로 이해하고 있어야 합니다. 보통 개발자들은 소스 코드만으로 문제를 해결하려 하기 때문에 오류가 발생하기 쉽고 많은 시간이 소요됩니다.
다양한 어셈블리 간의 종속성을 보여 주는 매트릭스를 제공하는 NDepend(더 크게 보려면 이미지를 클릭하십시오.)
다행히 .NET Framework 응용 프로그램의 아키텍처를 자세히 살펴볼 수 있는 쉬운 방법이 있습니다. SMACCHIA.COM의 NDepend version 2.0은 응용 프로그램 아키텍처 각 구성 요소 사이의 메트릭, 복잡성 및 종속성을 살펴보고 분석하는 데 유용한 도구입니다. 응용 프로그램의 어셈블리와 소스 코드를 선택하고 분석한 후에는 NDepend에서 다양한 메트릭과 정보를 살펴볼 수 있는 풍부한 사용자 인터페이스를 제공합니다.
기본 인터페이스에는 아키텍처 어셈블리의 트리맵이 있습니다. 트리맵은 "가중치"에 따라 각 요소의 크기가 결정되는 그래프입니다. 트리맵은 코드 줄 수, 메서드 수 등의 다양한 메트릭을 보여 주므로 아키텍처에서 각 구성 요소 간의 상대적인 복잡성을 빠르게 파악할 수 있습니다.
NDepend는 다양한 어셈블리 간의 종속성을 보여주는 매트릭스를 제공합니다. 사용자는 어셈블리의 클래스를 자세히 살펴볼 수 있으며 각 클래스의 메서드도 확인할 수 있습니다. 마우스 오른쪽 단추를 클릭하면 선택한 어셈블리, 클래스 또는 메서드를 직접 또는 간접적으로 호출하거나 사용하는 네임스페이스, 클래스 또는 메서드를 볼 수 있습니다. 매트릭스는 또한 순환 종속성을 파악하는 데에도 유용합니다.
NDepend의 가장 탁월한 기능은 SQL 구문과 비슷한 쿼리 언어인 CQL입니다. CQL 문은 특별 보고서 작성에 사용할 수 있습니다. 다음 CQL 쿼리는 대부분의 형식이 포함된 10개의 네임스페이스를 반환합니다.
SELECT TOP 10 NAMESPACES ORDER BY NbTypes DESC
CQL 쿼리는 코드 품질 감사 작업에도 유용합니다. 이 쿼리는 소스 코드 줄이 30개가 넘어 리팩터링될 필요가 있는 복잡한 메서드가 있을 경우 다음과 같이 경고를 표시합니다.
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbLinesOfCode > 30
NDepend는 UI뿐 아니라 명령줄을 통해서도 액세스할 수 있으므로 쉽게 자동화된 단일 빌드 프로세스로 통합할 수 있습니다.
가격: 단일 사용자 라이선스당 411달러
SQL 쿼리 편집기의 업그레이드
Enterprise Manager 및 SQL Server™ Management Studio는 데이터베이스 관련 작업을 수행할 수 있는 사용하기 쉬운 그래픽 환경을 제공하지만 기본 제공되는 쿼리 편집기에는 대부분의 텍스트 편집기처럼 최신 기능이 없습니다. 예를 들어 이러한 쿼리 편집기에는 IntelliSense®가 없거나 통합 소스 컨트롤이 지원되지 않습니다. Visual Studio®는 CREATE 스크립트와 IDE에서 일반적으로 사용되는 다른 T-SQL을 그룹화하는 데이터베이스 프로젝트를 제공하지만 이 데이터베이스 프로젝트는 쿼리를 작성, 테스트 및 실행하기 위한 인터페이스보다는 데이터베이스 관련 스크립트용 리포지토리 역할을 합니다.
더 뛰어난 기능을 갖춘 쿼리 편집기를 원한다면 개발자들이 환영할만한 많은 기능을 제공하는 타사 SQL 쿼리 편집기를 사용할 수 있습니다. 이러한 제품 중 하나가 ApexSQL의 ApexSQL Edit 버전 2005.03입니다. ApexSQL Edit는 쿼리 작성 시간을 절약해주는 다양한 기능을 갖고 있는데 그 중에서 가장 두드러진 것이 바로 IntelliSense와 비슷한 기능을 제공하는 Object MemberLists입니다. "SELECT * FROM..."과 같은 쿼리를 입력하는 즉시 드롭다운 목록에 데이터베이스의 테이블이 표시됩니다. 이 기능은 또한 열, 변수, 프로시저 등으로 확장할 수 있습니다. MemberLists를 사용하여 쿼리 작성을 시작한 다음에는 손쉽게 다시 편집기로 돌아갈 수 있습니다. 이 기능 하나만으로도 수많은 키 입력을 줄일 수 있으며 ApexSQL Edit를 모든 개발자가 관심을 가질만한 유용한 도구로 만들 수 있습니다.
쿼리 작성, 테스트, 실행(더 크게 보려면 이미지를 클릭하십시오.)
쿼리 작성 시간을 절약할 수 있는 다른 기능으로 Object Explorer를 들 수 있습니다. Object Explorer는 선택한 테이블, 저장 프로시저, 뷰, UDF 또는 다른 데이터베이스 개체에 대한 상세 정보를 표시합니다. 이 정보에는 개체의 데이터, 개체를 삭제하거나 다시 생성하기 위한 T-SQL 문, 해당 권한과 종속성 등이 포함되어 있습니다. 또한 개체에 관한 사용자의 의견을 추가할 수 있는 메모 탭도 있습니다(사용자 의견은 맨 먼저 데이터베이스에 추가되어야 하는 데이터베이스 테이블에 저장됩니다). 또한 데이터베이스 테이블을 선택한 경우는 테이블의 열과 인덱스가 표시되므로 Object Explorer를 통해 사용자가 현재 쿼리 작성에 사용 중인 테이블, 뷰 또는 다른 개체에 대한 정보를 신속하게 찾아볼 수 있습니다.
ApexSQL Edit는 또한 SQL Server Reporting Service 통합, 기본 제공 단위 테스트 지원, 강력한 찾기 및 바꾸기 기능, 사용자 지정 SQL 형식 지정 등의 기능을 제공합니다. Enterprise Manager나 Management Studio에서 제공하는 쿼리 편집기에서 쿼리를 작성, 테스트 및 실행하는 데 많은 시간을 소모하는 사용자라면 쿼리 편집기를 ApexSQL Edit로 업그레이드하여 사용해 볼 것을 권합니다.
가격: 단일 사용자 라이선스당 349달러
빠르고 쉽게 스크린샷 만들기
개발자가 스크린샷을 사용하는 경우는 아주 다양합니다. 스크린샷은 문서 내에 뛰어난 시각 자료를 만들거나 테스트 또는 디버깅 작업에서 문제나 오류 메시지를 캡처하는 데 유용합니다. Windows®에서 Print Screen 키를 누르면 현재 창이 클립보드에 복사됩니다. 그런 다음 스크린샷을 직접 문서에 붙여 넣거나 이미지 편집기에 붙여 넣은 다음 여러 이미지 파일 형식 중 하나로 저장할 수 있습니다. 하지만 많은 스크린샷을 캡처해서 파일로 저장할 경우 Print Screen 키를 누르고 스크린샷을 이미지 편집기에 붙여 넣고 이미지를 자르고 필요한 경우 이미지를 디스크에 저장하는 워크플로는 느리고 반복적입니다.
이러한 단조로움을 방지하고 효율성을 개선할 수 있는 다양한 프리웨어나 타사 제품을 구할 수 있습니다. 이런 제품 중 하나가 C#으로 작성되어 있고 소스 코드가 무료로 제공되는 Brian Scott의 Cropper 버전 1.9입니다. Cropper는 전체 창 또는 지정한 영역을 캡처할 수 있습니다. 전체 창을 캡처하려면 Print Screen 키를 누르면 됩니다. 작업 트레이에 있는 Cropper 아이콘을 두 번 누르면 캡처 영역의 위치와 크기를 지정하는 부동 프레임이 나타납니다.
Cropper를 사용하여 캡처한 화면은 클립보드에 저장하여 직접 프린터로 전송하거나 자동으로 BMP, PNG, JPG 파일로 디스크에 저장할 수 있습니다. 미리 보기 기능이 활성화되어 있으면 전체 화면 크기 스크린샷과 지정한 크기의 축소판 이미지가 모두 저장되며 사각형이 아닌 창을 캡처할 경우 곡선으로 된 모서리 바깥의 투명한 부분을 특정 색으로 채우도록 Cropper를 구성할 수 있습니다.
가격: 소스 코드 포함하여 무상 제공
.NET 응용 프로그램 개발
성공을 거둔 대부분의 컴퓨터 서적은 한 기술의 특정 부분을 중점적으로 다루거나 아니면 기술 전반에 대해 광범위하게 설명하고 있지만 Christian Gross의 How to Code .NET(Apress, 2006)은 이 두 가지 중 어디에도 속하지 않습니다. 제목을 보면 이 책이 .NET 응용 프로그램 작성에 초점을 맞춘 것 같아 보이지만 책 분량이 232페이지에 불과한 것을 보면 그렇지 않다는 것을 알 수 있습니다. 이 책은 .NET의 특정 부분을 다룬다거나 전체적인 개요를 제공하지도 않습니다. 대신 이 책에서는 TDD(테스트 기반 개발 방식), 하위 수준 .NET 런타임 및 프레임워크 정보, 텍스트 처리 팁, C# 코딩 비결 등 4가지 주제에 대해 각각 30 ~ 50페이지 분량을 할애하여 설명하고 있습니다.
첫 번째 주제는 TDD에 관한 것입니다. 장황한 부연 설명 없이 간결하고 핵심적으로 TDD의 원리와 NUnit를 살펴보고 테스트 코드 작성에 대해 설명합니다. 이어서 이 단원의 나머지 부분에서는 TDD의 원칙을 TDD를 사용하지 않고 개발한 프로젝트에 적용하는 등의 일반적인 TDD 과제에 대한 해결책에 대해 다루고 있습니다. 2장에서는 .NET 런타임 및 Framework 관련 솔루션에 대한 내용으로, 하위 수준의 여러 주제에 대한 설명, 팁, 비결 등을 제공합니다. 예를 들면 값 및 참조 형식 간의 차이점, 대리자가 갖는 장점을 설명하는 코드 예, Object 클래스의 Equals 및 GetHashCode 메서드에 대한 내용과 이를 다시 정의하는 방법에 대해 살펴봅니다.
3장에서는 문자열을 구문 분석하고 검색하는 방법에 대한 설명 및 코드 조각과 같은 간단한 텍스트 관련 솔루션에 대해 다루고 있습니다. 이 책에서 가장 긴 장인 C# 코딩 솔루션에서는 상속, Null 허용 형식, 오버로드된 함수, 인터페이스, 팩토리 패턴 등의 다양한 C# 기능 및 패턴에 대해 살펴봅니다.
총 232페이지로 이루어진 How to Code .NET에서는 위 4가지 주제에 대해 자세히 다루지 않기 때문에 이들 주제에 대해 깊이 알고자 하는 독자에게는 적합하지 않습니다. 그러나 How to Code .NET은 위에서 언급한 주제에 관해 개략적으로 잘 설명해 놓은 유용한 책이라 할 수 있습니다. 대부분의 중급 .NET 개발자의 경우 How to Code .NET은 다양한 유용한 팁을 제공하고 고급 .NET 개념을 익힐 수 있는 좋은 출발점이므로 많은 도움을 받을 수 있을 것입니다.
가격: 29.99달러
Scott에게 질문이나 의견이 있으면 다음 전자 메일 주소로 보내시기 바랍니다: toolsmm@microsoft.com.