Search

'비주얼 스튜디오'에 해당되는 글 21건

  1. 2012.08.02 [월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며
  2. 2012.08.02 [월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어
  3. 2012.03.16 Visual Studio 11, SOLUTION EXPLORER 스마트하게 사용하기
  4. 2010.09.07 [세미나] Visual Studio Seminar #1 / 2010년 9월 28일 1
  5. 2010.09.06 [세미나 발표 자료] Visual Studio Camp #1
  6. 2010.08.30 [세미나 후기] Visual Studio Camp #1 4
  7. 2010.01.18 Visual Studio 2010 출시 일정 4
  8. 2009.12.10 [Better Code]Visual Studio Code Analysis Enhancements - 3. Data Flow Rules and Phoenix Engine
  9. 2009.12.07 VSTS 2010 공식 블로그 Viva 2010팀 멤버 추가 모집 공고 2
  10. 2009.10.20 Visual Studio 2010 Beta 2 설치 미리 보기
  11. 2009.10.07 Visual Studio 2010 확장 모델인 VSIX 버그
  12. 2009.10.07 VSTS 2010 팀 트위터를 오픈하였습니다.
  13. 2009.07.22 몽당연필과 함께하는 VSTS 2010 모델링 0/4
  14. 2009.06.15 Visual Studio 2010 Beta 1 설치부터 살펴보기 4
  15. 2009.04.19 [Better Code]Visual Studio 2010 Code Analysis Enhancements - 2. Rule Sets Feature 3
  16. 2009.04.18 [Better Code]Visual Studio 2010 Code Analysis Enhancements - 1.개요
  17. 2009.04.14 [Better Code]TDD의 개념이 완벽히 녹아 들어간 VSTS 2010 7
  18. 2009.04.12 Welcome to F#(3) - 사소한 탐색전. 3
  19. 2009.02.01 .NET 의 과거와 현재, 그리고 미래
  20. 2009.01.23 Visual Studio Team System 2010 (CTP10) - 작업 항목 링크

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다.

 

본 글 이외에 Visual Studio 팀원의 강보람 MVP님의 "Welcome to Metro User Interface" 컬럼과 남정현 MVP님의 "Windows Server 8 미리 보기" 컬럼은 필자의 블로그에 기재하지 않은 점 또한 참고하기 바라며, 저작자의 동의하에 추후에 공개가 될 수 있습니다.

 

 

시대가 바뀌면서 Windows도 전통적인 모습에서 벗어나서 새로운 흐름을 만들고자 하는 노력이 시작된 것 같다. 물론 기존의 데스크 탑은 여전히 널리 사용될 것이다. 일상적인 업무에서 사용하는 응용 프로그램이 굳이 메트로 사용자 인터페이스 형태를 띌 필요는 전혀 없을 테니 말이다. 그리고 앞으로도 계속해서 기존의 데스크 탑을 타겟으로 하는 윈폼이나, WPF의 개발도 지속될 것이다. 하지만, 새로운 기회는 작은 틈에서 나오는 것이니 이 틈새를 잘 이해하기 위해서는 Windows 8의 메트로 환경을 잘 이해할 필요가 있다.

 

Windows 8과 Visual Studio 2012은 그야말로 N스크린에 감히 필수적인 환경이라고 말하고 싶다. 그 어떤 플랫폼도 데스크 탑과 테블릿, 모바일 등의 모든 기기와 환경 모두를 지원하는 것은 매우 어려운 일이다. 일반 사용자가 기기마다 사용하는 용도와 스타일이 다르고, 모바일 기기마다 해상도와 특징이 다르기 때문이기도 하지만, 하나의 개발 도구로 모든 상황을 대응할 수 있는 통합 개발 도구가 없는 것도 한 몫을 한다. 아니라고 말하는 독자도 있겠지만, 필자는 데스크 탑 환경까지 확장하는 N스크린을 말하는 것이고, 모든 N개의 스크린에서 똑같은 사용자 경험을 제공하는 것을 말한다. 이런 관점에서 Windows 8과 Visual Studio 2012은 그 해답을 제시하고 있으며, 충분히 가치 있고, 도전해 볼만하다. 이런 이유로 벌써부터 필자는 매우 흥분이 된다.

 

그리고 이 글에서 모두 소개하기는 어려웠지만, Windows Server 8은 그 동안의 Windows 운영 체제가 보여주었던 정적인 모습을 탈피하여 대규모 데이터 센터가 아닌 비용 문제 때문에 고민이 많은 수 많은 중소 규모의 IT 인프라에서도 효율적으로 시스템을 운영하고 애플리케이션 개발자들이 핵심에만 접근할 수 있도록 도와줄 방법을 제공하고 있다. 또한 메트로 스타일의 앱은 단순히 사용자 인터페이스에 관한 새로운 접근일 뿐만 아니라 데스크톱 가상화나 서버 관리자를 위한 새로운 종류의 서비스로 자리잡을 수 있다. 여전히 Charm Bar의 기능은 유용하게 사용할 수 있으며, Application Contract를 정확하게 지원하는 서버용 메트로 앱을 만들어 서버 관리자의 일을 덜어내거나 전혀 새로운 경험의 터치 기반 KIOSK를 손쉽게 만들 수도 있을 것이다. 이것은 전적으로 여러분의 선택에 달려있는 일이 될 것이다. 더 나아가서, Windows Server 8의 여러 기술들이 각종 호스팅 환경은 물론 Windows Azure나 Amazon과 같은 Public Cloud Computing 환경에도 전면적으로 도입이 된다면 더 멋지고 유용한 서비스들이 대거 등장하지 않겠는가 하는 것이 개인적인 생각이다.

 

참고 자료

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다. 그리고 현재 필자는 NCSOFT에 재직하지 않음을 참고하기 바랍니다.



엄준일 – 현재 NCSOFT에 재직 중이며, Microsoft ALM MVP와 한국 Visual Studio 팀과 블로그를 운영하고 있다.. 주로 .NET 기술을 전파하고 있고, 마이크로소프트가 지향하는 소프트웨어 개발 프로세스와 통합 및 테스팅 분야를 4년 동안 공부해왔다. 그 외에 CodePlex 오픈 소스 사이트를 통해 프레임워크, 툴 그리고 라이브러리 등을 공개하여 운영 중이다.



 

 


C++ 매트로 앱 개발 준비 사항

C++ 매트로 앱을 개발하기 위해 C++ 개발자는 당장 개발하기 앞서 몇 가지 숙지해야 할 지식과 개념들이 있다. 그리 어려운 것들은 아니지만, 이것을 모르고 접근하려고 하면 어디서부터 시작해야 할지 매우 혼란스러울 것이다. 필자는 과거에 C와 PASCAL을 주로 사용하였고, PC통신이라는 커뮤니케이션을 통해 여러 가지 액션 게임과 대전 게임, 어드벤처 게임을 개발하여 공개해 본 적은 있으나, 최근에 사용되는 C++과 DirectX로 개발해 본 경험은 전무하다. 대신 C라는 언어와 윈도우8이라는 공통 분모를 바탕으로 최대한 C++ 개발자에게 매트로 앱을 쉽게 개발하기 위해 설명할 것이다.

 

C++/CX 란?

첫 번째 준비사항은, C++ 매트로 앱 개발의 위해 C++/CX를 이해해야 한다. C++/CX는 C++ Components Extension(C++ 컴포넌트 확장)이라는 의미로 그 문법은 C++/CLI와 매우 흡사하다. C++/CLI의 대부분은 .NET의 MSIL 형태의 목적 파일로 컴파일 되기 때문에, C++/CLI 응용 프로그램이 동작하기 위해서는 .NET Framework가 설치가 되어야 했었다. 이는 곧, C++/CLI의 gcnew 객체는 .NET 가비지컬렉션의 대상이 되기 때문에 .NET에 매우 가까운 구조였다. 반면, C++/CX은 간단하게 정의하자면 간결한 COM 프로그래밍 언어이다. 그 문법이 C++/CLI와 같지만, 완벽하게 네이티브 형태로 컴파일 된다. 이 말은 즉, .NET Framework이 필요가 없고, .NET 가비지컬렉션의 대상이 되지도 않는다.


앱 개발에 필수 런타임인 WinRT(Windows Runtime)를 이용하여 구현을 하기 위해선 IInspectable 인터페이스를 구현해야 한다. COM 프로그래밍에 직간접적으로 IUnknown 인터페이스를 구현하는 것과 같다. 왜냐하면 IInspectable 인터페이스는 IUnknwon 인터페이스를 상속하기 때문이다.

IInspectable 인터페이스는 곧 COM 개념과 같다. 컴포넌트를 다양한 언어와 공유하고 통합할 수 있는데 WinRT 프로그래밍에서 C#, VB.NET, 그리고 JavaScript에서 IInspectable을 구현하는 객체를 사용할 수 있게 된다. (단, IInspectable 인터페이스는 컴파일러에 의해 구현될 수 있다)

MIDL_INTERFACE("AF86E2E0-B12D-4c6a-9C5A-D7AA65101E90")

IInspectable : public IUnknown    

{

public:

virtual HRESULT STDMETHODCALLTYPE GetIids(

/* [out] */ __RPC__out ULONG *iidCount,

/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids) = 0;

 

virtual HRESULT STDMETHODCALLTYPE GetRuntimeClassName(

/* [out] */ __RPC__deref_out_opt HSTRING *className) = 0;

 

virtual HRESULT STDMETHODCALLTYPE GetTrustLevel(

/* [out] */ __RPC__out TrustLevel *trustLevel) = 0;

 

};

Code 1 IInspectable 인터페이스 정의

COM 프로그래밍 중 가장 빈번하게 사용되는 것 중 하나가 참조 카운팅인데, ^ 기호로 참조 카운팅을 관리하는 개체를 ref new로 인스턴스를 생성하면 더 이상 귀찮은 AddRef와 Release메서드를 호출해 줄 필요가 없다. 예를 들어, Platform::WeakReference 등을 이용하여 생성된 객체에 대해 수명 관리를 위임할 수 있는 방법들이 제공된다.


정리해보면, WRL(Windows Runtime Library)가 C#, VB.NET, JavaScript로 개발할 수 있는 환경을 제공하는 것이 바로 COM이며, 이를 쉽게 개발할 수 있는 언어가 C++/CX인 것이다.

 


프로퍼티(Property) 사용

C++/CX는 프로퍼티를 사용할 수 있는 키워드를 제공한다. C++/CX 프로퍼티는 .NET 프로퍼티와 내부적으로 똑같이 동작한다. 이 프로퍼티는 컴파일 시에 get/set 메서드를 자동으로 생성해 준다. 프로퍼티는 읽기 전용/쓰기 전용, 그리고 이 두 가지 모두를 지원하도록 구현할 수 있다.


이 프로퍼티는 매트로 앱을 개발하면서 상당히 자주 만나게 될 것이다. 왜냐하면 XAML과 함께 앱을 구현하면서 바인딩(Binding) 개념에 프로퍼티 구현이 필수적이기 때문이다. 그래서 XAML 바인딩에서 INotifyPropertyChanged 인터페이스를 구현하여 데이터 모델과 바인딩된 데이터간에 데이터 변경에 대해 알려줌으로써 1-way 또는 2-ways 바인딩을 사용한다.

#include "pch.h"

 

public ref class Person sealed

{

private:

    Platform::String^ name;

    int age;

 

public:

    Person(Platform::Stringname)

    {

        this->name = name;

    }

 

    // 읽기 전용 프로퍼티

    property Platform::String^ Name

    {

        Platform::String^ get() { return this->name; }

    }

 

    // 읽기 쓰기 프로퍼티

    property int Age

    {

        int get() { return this->age; }

        void set(int age)

        {

            ifage <=0 ) throw ref new Platform::InvalidArgumentException();

 

            this->age = age;

        }

    }

};

Code 2 C++/CX 프로퍼티

이 프로퍼티는 내부적으로 생성되는 get/set 매서드를 사용하는 것이 아니라 선언된 프로퍼티를 마치 맴버 변수처럼 사용이 가능하다. 일반적인 C++ 에서는 get/set 메서드를 구현하는 방식으로 person->setName(L"Junil Um"); 이런 코드를  이상 사용하지 않는다.

아래의 코드와 같이 프로퍼티로 선언한 이름으로 직접 엑세스할 수 있다.

Person^ person = ref new Person("Junil Um");

person->Age = 20;

 

필자는 매크로를 사용하여 좀 더 빠르고 쉽게 프로퍼티를 선언하여 사용하는 방식을 권하고 싶다. 아래의 코드는 프로퍼티의 get 또는 set, get/set 을 매크로로 대체한 것이다.

#define __PROPERTY_GET_FUNC(TYPE, NAME) TYPE get() { return m_##NAME; }

#define __PROPERTY_SET_FUNC(TYPE, NAME) void set(TYPE value) { m_##NAME = value; }

#define DEFINE_PROPERTY(TYPE, TYPENAME) property TYPE TYPENAME

#define __PROPERTY(TYPE, NAME, IMPL) \

private: \

    TYPE m_##NAME; \

public: \

    DEFINE_PROPERTY(TYPE, NAME) \

    { \

    IMPL \

    } \

 

#define PROPERTY_GET(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_GET_FUNC(TYPE, NAME))

#define PROPERTY_SET(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_SET_FUNC(TYPE, NAME))

#define PROPERTY(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_GET_FUNC(TYPE, NAME) __PROPERTY_SET_FUNC(TYPE, NAME))

 

 

안전한 포인터 사용, 대리자(Delegate)

포인터 함수는 C++에서 흔히 사용되지만, WinRT 프로그래밍에서는 직접적인 포인터 연산이 그리 좋은 코드는 아닐 수 있다. 이유는 간단하다. WinRT APIs (내장 라이브러리)들이 인자 값으로 포인터가 아닌 대리자(Delegate)를 즐겨 전달 받는다. 그리고 이벤트(Events) 프로그래밍에서 대리자를 공통적으로 사용한다.

void ShowMessageBox(Platform::String^ str)

{

    auto dialog = ref new Windows::UI::Popups::MessageDialog(str);

    dialog->ShowAsync();

}

 

 

void App::OnLaunched(LaunchActivatedEventArgs^ pArgs)

{

    auto ptr = &ShowMessageBox;

 

    ptr("Hello Metro App with C++");

}

Code 3 함수 포인터

.NET 에서는 대리자(Delegate)를 안전한 포인터 함수라고 정의한다. 포인터 함수를 사용하든, 대리자를 사용하든 결과는 똑같지만 이왕이면 안전하게 제어할 수 있는 대리자를 사용하라는 것이다. 사실, .NET 에서 대리자는 일반적인 클래스(Class)와 똑같이 취급한다. 대리자는 컴파일이 되면 일반적인 클래스로 정의되기 때문이다.

어쨌든 위의 포인터 함수를 대리자로 바꾸어보면 다음과 같다.

delegate void ShowMessageBoxHandler(Platform::String^ str);

void ShowMessageBox(Platform::Stringstr)

{

    auto dialog = ref new Windows::UI::Popups::MessageDialog(str);

    dialog->ShowAsync();

}

 

void BlankPage::OnNavigatedTo(NavigationEventArgse)

{

    auto msghandler = ref new ShowMessageBoxHandler(&ShowMessageBox);

    msghandler("Hello Metro App with C++");

}

Code 4 C++/CX 대리자

C++/CX 매트로 만들기 첫 걸음

이제 매트로 앱 코드를 작성하고 이해하기 위한 어느 정도의 준비는 된 것 같다. 매트로 앱은 처음 앱의 처음 진입점이 App클래스의 OnLaunched 메서드이다.

void App::OnLaunched(LaunchActivatedEventArgspArgs)

{

    auto sampleData = ref new SampleDataSource();

 

    auto rootFrame = ref new Frame();

    TypeName pageType = { GroupedItemsPage::typeid->FullName, TypeKind::Metadata };

    rootFrame->Navigate(pageType, sampleData->ItemGroups);

 

    Window::Current->Content = rootFrame;

    Window::Current->Activate();

}

Code 5 앱 진입점인 App 클래스

 

위의 코드의 LaunchActivatedEventArgs 인자는 main 함수의 인자 값이라고 생각해도 좋다. 단지 다른 점을 찾는다면 LaunchActivatedEventArgs 객체는 COM Proxy 개체로써, 앱 실행시 인자 값 등을 전달 받을 수 있다. .

이곳에서 앱의 초기화를 수행한 후에 Frame->Navigate 메서드로 사용자 인터페이스를 가지고 있는 화면으로 이동한다. C#,VB.NET 그리고 C++ 매트로 앱은 XAML(Extensible Application Markup Language)을 이용한다. 처음 .NET Framework 3.0에서 WPF 응용 프로그램에서 XAML을 주로 사용하였으나, .NET Framework 4.0에 와서는 별도의 구성요소로 분리가 되었고, 현 버전에서는 완전히 독립된 컴포넌트로 구성되었다. XML은 언어의 분류상 객체지향언어로 구분하게 되는데 XAML은 객체지향언어와 상호작용이 가능하여 그 확장의 가능성이 무한대로 볼 수 있다.


매트로 앱과 친해지기 위해서는 C++/CX도 이해해야겠지만, XAML도 항상 벗처럼 삼아야 한다. XML 프로그래밍에 익숙한 독자라면 XAML이 어렵지 않을 것이다. XML 프로그래밍은 책 몇 권의 분량으로도 모두 담지 못할 것이다. 그리고 XAML 또한 책 한 권 분량 이상으로 그 내용이 방대하므로 더 자세한 내용은 MSDN을 통해 천천히 익히길 바란다.

Figure 1 Blend for Visual Studio 2012

 

XAML을 처음부터 거부감을 느낄 필요는 없다. 당장은 앱을 만들기 위해 디자인을 해야 하는데, Blend for Visual Studio 2012 (과거 Expression Blend) 라는 디자인 도구가 있다. XAML은 이 도구를 이용하여 디자인을 하면 개발자도 쉽게 사용자 인터페이스를 완성할 수 있다.

지면으로 모든 것을 설명하지 못하니, 다음의 링크를 반드시 확인하기 바란다.

http://msdn.microsoft.com/en-us/windows/apps/br229516

이 링크에서 매트로 앱을 만들기 위한 개발 도구 및 SDK와 샘플 앱을 C#, C++, JavaScript로 구현해 놓았고, 마이크로소프트가 제공하는 품질 좋은 디자인 파일도 있다.


Visual Studio 11의 솔루션 탐색기는 이전 버전에 비해 매우 독특한 구조를 가지게 되었습니다. 그 중에서 Visual Studio 11에서 솔루션 탐색기 기능을 최대한 활용하는 방법을 살펴볼텐데요, 그냥 가볍게 보시면 될 것 같습니다.

1. 다중 인스턴스로 사용하기

다중 인스턴스는 솔루션 탐색기를 하나가 아닌 여러 개로 띄울 수 있는데요. 단, 현재 로드된 솔루션의 솔루션 탐색기 인스턴스를 생성할 수 있습니다. 만약, Visual Studio 11에서 여러 솔루션을 하나의 Visual Studio 11 인스턴스에서 실행할 수 있다면 다중 인스턴스의 솔루션 탐색기가 더욱 편리할 거라는 아쉬움이 있네요.

아래의 그림과 같이 우측 끝에 있는 아이콘을 클릭하면 똑같은 인스턴스를 생성한답니다.

여러 솔루션 탐색기의 인스턴스를 사용하여 프로그래을 작성하는 프로젝트에 스크롤을 위치시키고, 또 하나는 단위 테스트 프로젝트에… 또 하나는 전체 솔루션이 훤히 보이도록 띄어놓았습니다.

이제 하나의 솔루션 탐색기에서 마우스 스크롤 쫙쫙~ 올리고 내리고 할 필요가 없어졌네요. 더불어 멀티 모니터를 사용한다면 효과가 금상첨화겠지요?

   

2. 코드 파일 미리보기

중간에 보이는 아이콘의 이름 "Preview Selected Items"은 말 그대로 코드 파일을 미리 보는 기능이랍니다. 이 옵션은 Visual Studio 11을 설치하면 기본적으로 선택되는 옵션입니다.

이 기능은 솔루션 탐색기에 파일을 한 번 클릭할 때마다 에디터 창이 열립니다. 좌측의 빨간색 탭은 솔루션 탐색기에서 코드 파일을 더블 클릭하거나 F7을 누를 때 일반적으로 좌측부터 정렬되는 에디터입니다.

오른쪽의 노란색의 탭 하나가 바로 한 번 클릭할 때마다 열리는 미리 보기 탭입니다. (필자는 개인적으로 이 옵션을 껐답니다 ^^;)

   

3. 솔루션 탐색기를 격리시키기

솔루션 탐색기를 격리시키는 방법(용어는 필자가 나름대로 칭하였습니다)입니다. 이 방법이 꽤나 쓸만한 기능인데, 솔루션 탐색기의 선택된 항목이 솔루션 탐색기의 최상위 루트가 되는 기능입니다. 예를 들어, 아래와 같이 Core 프로젝트를 펼치면 굉장히 길어지는데요, 단위 테스트도 같이 하려면 Core.Tests 프로젝트도 펼쳐져 있어야 합니다. 이러다가 대부분 솔루션 탐색기가 위아래 정신 없이 스크롤하게 됩니다.

   

그럼 솔루션 탐색기 다중 인스턴스를 이용해서 좀 더 스마트하게 사용해 볼까요? 바로 "Scope to This" 기능입니다.

   

이 기능을 이용해서 아래와 같이 스마트하게 솔루션 탐색기를 배치할 수 있습니다. 자주 코딩하는 Core 프로젝트랑 Core.Tests 프로젝트랑 각각 최상위 루트에 배치해서 귀찮은 스크롤도 없어지고 하위 여러 자식의 트리구조를 없애서 보기에 깔끔해 졌네요.

   

이런 경우는 인터페이스 프로그래밍을 할 때도 매우 유용합니다. 인터페이스를 선언하고 이를 구현하면 서로간에 왔다 갔다 하는 경우가 매우 많거든요. "Scope to This" 기능으로 좌측에 인터페이스 파일 하나만 배치시키고, 우측에서는 인터페이스를 구현하고 파생되는 구현 클래스가 뭉쳐있는 폴더만 격리시켰습니다.

 

어때요? 이제 솔루션 탐색기를 스마트하게 사용할 수 있겠지요?

   

  • 주최 : 한국 Visual Studio 공식 팀
  • 일시 : 2010년 9월 28일 오후 7시 ~ 10시
  • 장소 : 한국 마이크로소프트 - 포스코 센터 5층
  • 참가비 : 무료
  • 최근 쏟아지는 기술의 홍수 속에서 '아차~' 하고 눈 깜빡할 순간 신기술에 낙오되기 쉽습니다. 한 번은 괜찮지만, 두 번은 기술 트랜드를 따라잡기가 더 힘들어 집니다. 저희 팀에서 기술을 먼저 접해보고, 먼저 고민해본 살아있는 경험을 여러분들에게 전수해 드립니다.

   

세미나 아젠다

시간

세션 내용

19:00 ~ 19:30

등록

19:30 ~ 20:10

현실적인 클라우드 컴퓨팅 이야기

남정현 C# MVP

20:20 ~ 21:00

Expression Blend 와 함께하는 윈도우 폰 7 개발 입문

조진현

21:10 ~ 21:50

Razor 로 열어가는 새로운 ASP.NET

김시원 ASP.NET MVP

   

   

발표 내용 소개

현실적인 클라우드 컴퓨팅 이야기 / 남정현 C# MVP

클라우드 컴퓨팅, 말로만 들어봤지 실제로 어디에 어떻게 사용이 될 수 있는지 알려주는 사람이 없어 답답할 때가 많습니다. 이번 세션에서는 클라우드 컴퓨팅에 관한 실질적인 이야기, 그 중에서도 특별히 마이크로소프트의 윈도 애저 플랫폼에 대한 이야기를 나누면서, 클라우드 컴퓨팅의 현실적인 사례를 간단히 들어보기로 하겠습니다.

  

Expression Blend 와 함께하는 윈도우 폰 7 개발 입문 / 조진현

윈도우 폰7 개발에 대한 간단한 소개와 방법에 대해서 살펴본다. 그리고 더 쉽고 편한 개발을 위한 고민을 해보며, 이를 위해서 Expression Blend 의 활용에 대해서 고민해 본다.

  

Razor 로 열어가는 새로운 ASP.NET - 김시원 ASP.NET MVP

Razor 는 차세대 ASP.NET 의 새로운 View Engine 으로써 , 이것 때문에 요즈음 ASP.NET 이 한창 주목 받고 있습니다. 이번 시간에는 Razor 의 등장배경과 함께 Razor 로 인해 개발 환경이 어떻게 변화하였는지 살펴보고 , 기본적인 Razor 의 사용법을 익혀보도록 하겠습니다.

   

발표자 소개

남정현 C# MVP

(주)코아뱅크에 재직 중이며, Microsoft Visual C# MVP로 활동 중입니다. DEVPIA C# Forum SYSOP, Windows Azure Cafe SYSOP을 맡고 있습니다. 여러 커뮤니티와 개인 블로그, 트위터 (@rkttu)를 통하여 윈도 애저 플랫폼에 대한 다양한 이야기를 전파하고 있습니다.

조진현

현재 게임 개발자로 재직 중이며  Visual Studio 2010 공식 팀 블로그 (http://vsts2010.net) 에서 DirectX 관련 분야에서 활동 중이다. 최근에는 '김탁구'와 '나는 전설이다' 라는 드라마에 빠져서 살고 있다.

  

김시원 ASP.NET MVP
ASP/ASP.NET MVP를 2009년 부터 계속 유지해오고 있으며 다양한 형태의 웹 어플리케이션 개발 경험과 세미나 경험을 가지고 있다. 현재 Hugeflow 웹 솔루션 개발팀에서 개발의욕을 불사르고 있다. 세상을 풍요롭게 하고 사람들에게 강한 종속성을 부여하는 프로그램을 개발하는 것이 목표이다.

   

오시는 길

한국 마이크로소프트 - 포스코 센터 5층

   

   

안녕하세요. 지난 2010년 8월 28일, '한국 Visual Studio 공식 팀(Visual Studio Korea)' 에서 주최한 Visual Studio Camp #1 세미나의 발표 자료를 공개해 드립니다. (세미나의 후기는 [세미나 후기] Visual Studio Camp #1 를 참고하세요)    

※ 세미나 발표 자료의 저작권과 권리는 발표를 진행한 스피커와 Visual Studio Korea(한국 Visual Studio 공식 팀) 에 있으므로, 영리/비영리/변경하실 수 없습니다.

PDF 문서 다운로드

   

XPS 문서 다운로드

 

세미나 아젠다

  

Native 트랙

.NET 트랙

Enterprise 트랙

14:00 ~ 14:50

Visual Studio 2010 : C++0x와 Windows 7
최성기

그것이 알고싶다 - C# 4.0의 변화, 그 진실은 무엇인가. 희망인가? 또 다른 혼란인가?
강보람 C# MVP

VS Team Foundation Server 2010 의 새로운 변화
김병진 ALM MVP

15:00 ~ 15:50

비주얼 스튜디오 2010 의 Concurrency Runtime 을 이용한 멀티 코어 제대로 활용하기
임준환

좋은 프레임워크 있으면 소개시켜줘 - ASP.NET MVC
박세식

소프트웨어 품질 향상을 위한 다양한 테스트 기법
엄준일 ALM MVP

16:00 ~ 16:50

DirectX11 을 기다리며..
조진현

Beginnig WCF
오태겸

SharePoint 2010 Enterprise 솔루션 개발
정홍주 SQL Server MVP

   

발표 내용 소개 및 세미나 PPT 자료

Native 트랙

Visual Studio 2010 : C++0x와 Windows 7
그 동안 .NET 영역으로 적잖이 편중되었던 Visual Studio의 버전업에 비해 이번 2010 버전에서는 Native Code 개발환경에서도 많은 변화가 찾아왔다. C++0x 표준 반영에 의한 문법의 변화, 새로운 라이브러리 제공(Concurrency Runtime Library), Windows 7의 최신 기능들을 제어하기 위한 SDK의 업데이트 등이 그것이다. 본 세션을 통해 C++의 문법적인 변화와 Windows 7 기능 구현을 위한 SDK의 업데이트 사항들을 정리해본다.

 

비주얼 스튜디오 2010 의 Concurrency Runtime 을 이용한 멀티 코어 제대로 활용하기
요즘 가정의 PC 에 멀티 코어 프로세서가 많이 보급되어 있습니다. 하지만 실제로 PC 에 설치된 코어들을 모두 사용하는 애플리케이션들은 많지 않습니다. 이렇게 낭비되는 자원을 C++ 개발자가 쉽게 사용할 수 있도록 도와주는 Concurrency Runtime 을 비주얼 스튜디오 2010에서 제공합니다. 이 Concurrency Runtime 을 어떻게 시작해야 할지 알아보겠습니다.

 

DirectX11 을 기다리며...
조금씩 정보가 공개되면서 많은 변화를 예고하고 있는 DirectX11 에 대해서 살펴 볼 것입니다. 특히나 Tessellation, DirectCompute, Multi-threading 을 위한 기본 개념과 작업들에 대해서 체크해 볼 것입니다.

조진현님 PPT 는 현재 비공개이며, 추후 공개하도록 하겠습니다.

.NET 트랙

그것이 알고싶다 - C# 4.0의 변화, 그 진실은 무엇인가. 희망인가? 또 다른 혼란인가?
PDC 2008에 울려 퍼진 C# 4.0의 소식. 그 소식을 듣고 많은 사람들은 기대와 혼란을 가지게 되었다. C#은 분명히 정적 언어인데, 동적 언어에나 있을 법한 기능을 추가한다니? 이제 와서 뒷북일 수도 있는 C# 4.0의 변화에 대한 진실, 그 마지막 시리즈가 이제 시작된다. :)

   

좋은 프레임워크 있으면 소개시켜줘 - ASP.NET MVC
그 동안 아주 미묘하게 아쉬웠던 ASP.NET. 가려운 곳을 긁어줄 대안의 프레임워크가 나타났다. 웹 개발자들 한테 참~ 좋은데, 웹 개발자들 한테 정말 좋은데, 이걸 말로 그냥 할 수 없어서, 이번 기회에 소개한다.

   

Beginnig WCF
WCF는 서비스 지향 프로그래밍을 위해 마이크로소프트에서 개발 및 지원하는 기반 기술이며, 기존의 .NET 웹 서비스에 비해 유연성과 확장성이 뛰어나 최근 많은 관심을 받고 있습니다. 본 세션에서는 WCF가 무엇인지? 어떤 장점이 있는지? 그리고, WCF 를 이용하기 위해선 무엇이 필요한지? 에 대해 함께 알아보고, 마지막으로, WCF의 활용 예를 알아보도록 하겠습니다.

Enterprise 트랙

VS Team Foundation Server 2010 의 새로운 변화
V
isual Studio Team Foundation Server 2010의 혁신적인 변화와 개선 부분, 프로젝트 및 형상관리와 Agile의 Scrum 을 이용한 방법론을 알아보고, 단지 소스 체크인/아웃만 하는 Visual Source Safe에서 업그레이드 하는 방법에 대하여 알아봅니다.

   

소프트웨어 품질 향상을 위한 다양한 테스트 기법
소프트웨어는 개발 및 릴리즈 과정까지 수 많은 과정을 겪는데, 소프트웨어가 점진적으로 진화함에 따라 결함의 발생률이 증가합니다. 이를 개선하기 위한 테스트 기법 중 단위 테스트, WhiteBox 테스트, 화면 테스트, 성능 테스트, 부하 테스트 등 다양한 테스트 기법을 알아봅니다.

   

SharePoint 2010 Enterprise 솔루션 개발
SharePoint 2010은 기업 협업 플랫폼으로 개발자들은 VS 2010을 이용하여 더 생산성 있고 효과적인 SharePoint 2010 개발을 진행할 수 있습니다. 본 세션에서는 SharePoint 2010 개발에 대한 가장 필요한 내용을 구체적으로 알아보며 이를 통해 가장 많은 요구사항에 대한 실무 솔루션을 구성하는 방법에 대한 내용을 알아보겠습니다.

   

   

2010년 8월 28일, 웹 타임 교육센터에서 Visual Studio Camp #1 이 개최되었습니다. 이 날 세미나는 저희 한국 Visual Studio 팀에서 주최하고, 웹 타임 교육센터와 Visual Studio 2010 이 후원한 행사입니다.

저희가 주변에서 흔히 접할 수 있는 .NET 트랙의 C#, ASP.NET MVC, WCF 세미나도 재미있는 내용으로 알차게 준비를 했습니다. 그리고 흔히 접하기 힘든 Enterprise 트랙과 Native 트랙도 가뭄의 단비와도 같은 트랙입니다.

원래 웹 타임 교육센터는 각 자리에 교육 PC 가 비치된 환경으로 책상 위에 컴퓨터 모니터와 키보드, 마우스가 비치되어 있었으나, 세미나 참가자의 쾌적한 환경을 위해 오전 10시부터 책상 위의 모니터를 치우는 작업을 하였답니다. 그리하여 아래와 같이 깨끗한 책상이 되었군요^^

  

   

이 날, 저희 팀에서 세미나를 진행하기 위해 많은 요원들이 일찍 모여 준비하고 세미나를 준비하고 접수를 받고 있습니다.

  

   

즐거운 토요일 주말에 비가 오다마다를 반복하는 짓궂은 날씨에서 불구하고 세미나에 참석해 주신 여러분들을 위해 푸짐한 경품도 준비를 하였습니다.

경품은

  • 엄준일 ALM MVP 님의 MSDN Subscription 1년 구독권 2매
  • 김병진 ALM MVP 님의 무선 마우스 3개, 무선 키보드 3개
  • Microsoft Korea 의 강성재 차장님과 Visual Studio 2010 에서 Visual Studio 2010 Professional 정품 1개

누가 경품을 가져갈 진 모르겠지만, 기뻐하실 분들을 생각하면 벌써부터 가슴이 설레입니다.^^

   

오홋.. 드디어 세미나가 오후 2시부터 시작 되었습니다.

   

.NET Track : [1] 그것이 알고싶다 - C# 4.0의 변화, 그 진실은 무엇인가. 희망인가? 또 다른 혼란인가? - 강보람 C# MVP

재미있는 블로그 아티클과 세미나 진행으로 이번 세미나에서도 유감없이 C# 4.0 의 내용을 재미있게 풀어주셨습니다. 현재는 집필 활동에 주력하고 계시는군요.

PDC 2008에 울려 퍼진 C# 4.0의 소식. 그 소식을 듣고 많은 사람들은 기대와 혼란을 가지게 되었다. C#은 분명히 정적 언어인데, 동적 언어에나 있을 법한 기능을 추가한다니? 이제 와서 뒷북일 수도 있는 C# 4.0의 변화에 대한 진실, 그 마지막 시리즈가 이제 시작된다. :)

   

   

.NET Track : [2] 좋은 프레임워크 있으면 소개시켜줘 - ASP.NET MVC - 박세식

ASP.NET MVC 를 실무적으로 사용하기 위해 정말 쉽고 재미있는 내용으로 채워졌습니다.

그 동안 아주 미묘하게 아쉬웠던 ASP.NET. 가려운 곳을 긁어줄 대안의 프레임워크가 나타났다. 웹 개발자들 한테 참~ 좋은데, 웹 개발자들 한테 정말 좋은데, 이걸 말로 그냥 할 수 없어서, 이번 기회에 소개한다.

   

   

.NET Track : [3] Beginnig WCF - 오태겸

"WCF 는 어렵다!!!" 라는 선입관을 깨주신 오태겸 님의 세미나를 들으신다면 'WCF 는 쉽구나^^' 라고 느끼실 겁니다.

WCF는 서비스 지향 프로그래밍을 위해 마이크로소프트에서 개발 및 지원하는 기반 기술이며, 기존의 .NET 웹 서비스에 비해 유연성과 확장성이 뛰어나 최근 많은 관심을 받고 있습니다. 본 세션에서는 WCF가 무엇인지? 어떤 장점이 있는지? 그리고, WCF 를 이용하기 위해선 무엇이 필요한지? 에 대해 함께 알아보고, 마지막으로, WCF의 활용 예를 알아보도록 하겠습니다.

   

   

   

Native Track : [1] Visual Studio 2010 : C++0x와 Windows 7 - 최성기

NCsoft 에 근무하시는 최성기님의 세션입니다. 여러 매체를 통해서 C++0x 와 Windows 7 의 기술을 전파하셨고, Windows 7 with C++0x 에 경험도 풍부하십니다.

그 동안 .NET 영역으로 적잖이 편중되었던 Visual Studio의 버전업에 비해 이번 2010 버전에서는 Native Code 개발환경에서도 많은 변화가 찾아왔다. C++0x 표준 반영에 의한 문법의 변화, 새로운 라이브러리 제공(Concurrency Runtime Library), Windows 7의 최신 기능들을 제어하기 위한 SDK의 업데이트 등이 그것이다. 본 세션을 통해 C++의 문법적인 변화와 Windows 7 기능 구현을 위한 SDK의 업데이트 사항들을 정리해본다.

   

   

Native Track : [2] 비주얼 스튜디오 2010 의 Concurrency Runtime 을 이용한 멀티 코어 제대로 활용하기 - 임준환

임준환님은 좋은 내용을 여러분들에게 전해드리려고 일찍부터 나오셔서 리허설도 진행하신 투혼(^^) 을 발휘해 주셨답니다.

요즘 가정의 PC 에 멀티 코어 프로세서가 많이 보급되어 있습니다. 하지만 실제로 PC 에 설치된 코어들을 모두 사용하는 애플리케이션들은 많지 않습니다. 이렇게 낭비되는 자원을 C++ 개발자가 쉽게 사용할 수 있도록 도와주는 Concurrency Runtime 을 비주얼 스튜디오 2010에서 제공합니다. 이 Concurrency Runtime 을 어떻게 시작해야 할지 알아보겠습니다.

   

   

Native Track : [3] DirectX11 을 기다리며… - 조진현

클라이언트 게임 프로그램을 개발하고 계신 조진현님의 DX11 에 대한 세션입니다. KGC 등 여러 세미나 경험을 가지고 계시지요.

조금씩 정보가 공개되면서 많은 변화를 예고하고 있는 DirectX11 에 대해서 살펴 볼 것입니다. 특히나 Tessellation, DirectCompute, Multi-threading 을 위한 기본 개념과 작업들에 대해서 체크해 볼 것입니다.

   

   

   

Enterprise Track : [1] VS Team Foundation Server 2010 의 새로운 변화 - 김병진 ALM MVP

Team Foundation Server 2010 을 이용하여 컨설팅과 실무에서 많은 경험을 토대로 세션을 진행하였습니다. 웹 타임 교육센터와 큰 기업 등에서 교육을 했던 경험도 있으시답니다.

Visual Studio Team Foundation Server 2010의 혁신적인 변화와 개선 부분, 프로젝트 및 형상관리와 Agile의 Scrum 을 이용한 방법론을 알아보고, 단지 소스 체크인/아웃만 하는 Visual Source Safe에서 업그레이드 하는 방법에 대하여 알아봅니다.

   

   

Enterprise Track : [2] 소프트웨어 품질 향상을 위한 다양한 테스트 기법 - 엄준일 ALM MVP

소프트웨어 개발의 이전의 사례를 바탕으로 테스팅의 중요성과 그 기법과 방법을 공부하면서 경험한 내용을 전달하였습니다. 소프트웨어 개발 프로세스 중 테스팅의 매력에 푹 빠져 있답니다.

소프트웨어는 개발 및 릴리즈 과정까지 수 많은 과정을 겪는데, 소프트웨어가 점진적으로 진화함에 따라 결함의 발생률이 증가합니다. 이를 개선하기 위한 테스트 기법 중 단위 테스트, WhiteBox 테스트, 화면 테스트, 성능 테스트, 부하 테스트 등 다양한 테스트 기법을 알아봅니다.

   

   

Enterprise Track : [3] SharePoint 2010 Enterprise 솔루션 개발 - 정홍주 SQL Server MVP

SharePoint 2010 으로 엔터프라이즈 환경에 필요한 실무 사례와 경험을 이 세션에서 전달하였습니다. 웹 타임교육 센터의 전임 강사이십니다.^^

SharePoint 2010은 기업 협업 플랫폼으로 개발자들은 VS 2010을 이용하여 더 생산성 있고 효과적인 SharePoint 2010 개발을 진행할 수 있습니다. 본 세션에서는 SharePoint 2010 개발에 대한 가장 필요한 내용을 구체적으로 알아보며 이를 통해 가장 많은 요구사항에 대한 실무 솔루션을 구성하는 방법에 대한 내용을 알아보겠습니다.

   

  

   

드디어 경품 추첨 시간

더 많은 분들에게 경품을 드리고 싶었지만, 자비로 경품을 준비하느라 많은 분들에게 드리지 못해서 아쉽습니다.^^ 다음엔 더 비싸고(^^), 풍성하고, 유용한 경품을 많이 준비할게요^^

   

경품은 이 날, 세미나를 위해 발표해 주신 스피커 분들께서 추첨을 통해 전달해 드렸습니다.

   

MSDN Subscription 1년 구독권 2매

이 경품으로 MSDN 을 통해서 Windows 7, Windows Server 2008, SQL Server 2008, Team Foundation Server 2010, Visual Studio 2010 Ultimate, Office 2010 등의 제품을 모두 모두 사용할 수 있답니다.

   

무선 키보드 3개

  

   

무선 키보드 3개

  

   

   

대망의 Visual Studio 2010 Professional 정품 1개 ^^

Visual Studio 2010 Professional 정품은 Microsoft Korea 의 강성재 차장님과 Microsoft Korea 의 Visual Studio 제품 관련 팀에서 후원해 주신 오늘 쵝오의 경품입니다. 강성재 차장님께서 직접 추첨을 해 주셨습니다.

   

Visual Studio Camp #1 을 마치며

저희 팀의 많은 분들께서 이 날 행사와 좋은 내용의 세미나를 준비해 주셔서 무사히 세미나를 마치게 되었습니다. Native 트랙은 C++ 개발자와 게임 개발자에게 정말 단비와도 같은 세미나였고, 많은 분들의 좋은 피드백을 받았습니다. .NET 트랙과 Enterprise 트랙도 여러 분들의 기술 트랜드가 뒤쳐지지 않도록 부지런히 기술 전파를 위해 팀 블로그를 통해 노력했고, 이번 세미나를 통해 저희 Visual Studio 팀도 매우 기뻤고, 더 많은 용기를 얻은 것 같습니다.

특히 저희 한국 Visual Studio 팀에서는 아무도 먼저 가보지 않은, 아무도 접해보지 않은 많은 기술과 트랜드의 홍수 속에서 항상 긴장감을 늦추지 않고 노력해 주셔서 오늘의 세미나가 있지 않았나 생각합니다. 앞으로도 저희 Visual Studio Korea 팀의 많은 응원 부탁 드립니다.

더 좋은 내용을 블로그 내용과 세미나, 각종 매체를 통해 여러분들에게 다시 찾아 뵙도록 하겠습니다.

Visual Studio 2010 출시 일정

Visual Studio 2010 2010. 1. 18. 09:30 Posted by POWERUMC

오늘 Visual Studio 2010 출시 일정이 나왔습니다. Rob Caron 말에 의하면 2010년 4월 12일에 출시가 된다고 합니다. Microsoft 직원이 전하는 이야기이니 아마도 이 날에 출시하는 것을 신뢰하시면 될 것 같습니다.

Rob Caron 은 Microsoft 에서 마케팅 커뮤니케이션 매니저로 일하고 있으며, Developer, User Experience Runtime, Tools 과 관련된 일을 하고 있는 분입니다. Microsoft 에 입사 하기 전에 개발자 출신인데, Microsoft 에서 이전에는 개발자 마케팅과 MSDN 개발자 센터, Visual Studio 마케팅 사이트, 개발자 이벤트, MSDN Library 에 콘텐트를 게시하는 일도 하셨다고 합니다.

  

좀 아쉬운 것은 현재 문제나 개선되고 있는 부분을 좀 더 자세히 알고 싶은데, 출시 일정 외에 다른 언급은 전혀 없네요.   

Visual Studio 2010 의 처음 출시 일정은 2010년 1월에 RC 버전, 3월에 정식 버전을 출시하기로 예정하였습니다. 그러나 가상 메모리 관련, 성능 최적화 문제로 정확한 출시 일정을 공개하지 않고 출시 기간을 연장하였습니다. 일정이 연기된 것은 개인적으로 아쉽지만, 보다 충실한 플랫폼을 만들기 위해서라면 충분히 기다릴만 하다고 생각합니다. 써본 후에 투덜댈봐엔 좀 더 완성도 높은 플랫픔을 위한 것이라면 말이죠^^ 

언제나 언급했던 이야기 이지만, 예전의 Visual Studio 2008 까지는 기능에 충실했던 강력한 개발 도구임이 틀림이 없습니다. 하지만 Visual Studio 2010 과 관련된 플랫폼은 기능은 기대 이상 완벽히 충실하고 있으며, 편의성까지 갖추게 될 그야말로 차세대 플랫폼입니다. 앞으로 다가올 4월이 정말 기대가 됩니다.

오랜만의 포스팅입니다.

지난 글에서 말씀 드렸듯이, 이번 글에서는 새롭게 추가된 Data Flow Rules에 대해서 소개 드리겠습니다.

새롭게 추가된 8개의 Data Flow 규칙들

일단, 새롭게 추가된 규칙 목록을 먼저 보도록 하겠습니다.

CA1062 ValidateArgumentsOfPublicMethods: 함수의 인자유효성 검사 여부
CA1303 DoNotPassLiteralsAsLocalizedParameters: 문자열 인자의 Globalization 처리 여부
CA2100 ReviewSqlQueriesForSecurityVulnerabilities: SQL Injection 취약점 파악
CA2202 DoNotDisposeObjectsMultipleTimes: Dispose 메서드를 여러 번 호출하는지 여부
CA2204 LiteralsShouldBeSpelledCorrectly: 스펠링 체크
CA2215 DisposeMethodsShouldCallBaseClassDispose: Base 클래스의 Dispose 메서드를 호출하는지 여부
CA2241 ProvideCorrectArgumentsToFormattingMethods: Format 함수 인자 검사
CA2000 DisposeObjectsBeforeLosingScope: Dispose 메서드를 호출하는지 여부

이 규칙들 중에서, CA2000을 제외하면 모두 Visual Studio Team System 2005에서 이미 지원했었던 규칙입니다. 그리고 사실 CA2000도 VSTS 2005에 없었다 뿐이지, FxCop 1.35버전에서는 있었구요. 하지만 이 규칙들은 FxCop 1.36과 Visual Studio Team System 2008에서는 빠져있습니다.

이 규칙들이 빠졌던 이유에 대해서는 아래 URL을 보시면 됩니다.

http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=556

즉, FxCop 1.35와 VSTS 2005에 있었던 Analysis 엔진에 성능의 결함, 버그, 일관적이지 못한 분석 결과 등의 문제가 있어서, 그 엔진을 VSTS 2008과 FxCop 1.36에서는 완전히 없애 버린 것입니다.

하지만, 이번 Visual Studio 2010에서는 화려하게 복귀가 되었습니다. 


Phoenix Framework의 탑재


그게 가능했던 이유는 새롭게 탑재된 Phoenix Framework 덕분입니다. 피닉스 프레임워크는 향후 마이크로소프트 컴파일러 기술을 위한 새로운 코드 최적화/분석 프레임워크입니다. C++/CLI 기반으로 만들어진 피닉스 프레임워크는 컴파일러, 코드 최적화, 자동 코드 생성 등 여러 분야에 사용될 수 있는 프레임워크인데요. 자세한 정보는 아래 URL에서 보실 수가 있습니다.

http://research.microsoft.com/en-us/collaboration/focus/cs/phoenix.aspx

https://connect.microsoft.com/Phoenix


그러면 다음 글을 통해서, 새로운 Analysis Engine인 Phoenix 프레임워크에 대해서 더 자세히, 그리고 어떻게 우리가 사용할 수 있을지 알아보도록 하겠습니다.


저희 Viva 2010 팀은 차세대 개발 플랫폼인 Visual Studio 2010, Visual Studio Team System 2010, C# 4.0, C++ 0x, Cloud 등을 공부하고 다양한 매체를 통해 알리는 팀 입니다.

저희 VSTS 2010 팀은 최근 Visual Studio 2010 베타 2 공개와 앞으로 곧 나오게 될 RC 및 정식 버전 출시에 발 맞춰서 활동을 더욱 강화하기 위해서 팀 멤버를 추가로 모집하고 있습니다.


그간의 활동

온라인 활동

http://vsts2010.net 블로그를 통해서 총 164개의 Article 발행, 총 방문자 약 50000, 일 평균 300명의 방문


오프라인 활동


[2009년 6월 10일 MSDN 주간 세미나]

강보람 - C#연대기 -C#의 Before/After

공성의 - VSTS2010에서의 소프트웨어 품질 관리

김병진 - VSTS 2010 Architecture & UML

엄준일 - Managed Extensibility Framework

최흥배 - Visual C++ 10, C++0x 그리고 Concurrency Runtime


[TechDays 2009 참여]

김병진, 강성재 - Visual Studio Team System 2010 Overview

최흥배새로운 시대를 여는 Visual C++ 10

강보람C# 4.0 with dynamic : 사랑과 전쟁. 그들의 4주 후…

조진현Multi-threaded rendering in DirectX11

엄준일, 공성의Visual Studio Team System 2010 With Agile

김대욱, 김태균WPF4.0 을 위한 VIsualStudio 2010



활동 영역

온라인 활동 영역

팀 블로그 활동

팀 블로그를 통해 자신의 글을 게시할 수 있습니다. 현재 수백 명의 정기 구독자에게 글이 공개가 되며, 팀 블로그가 구글 등의 검색 상위권에 이르게 됨으로 자신의 글이 상위 검색에 노출되는 간접적인 혜택을 누릴 수 있습니다.

온라인 세미나

한국 마이크로소프트와 팀 자체에서 진행하는 여러 가지 온라인 세미나의 스피커로 활동하게 됩니다.

온라인 커뮤니티(예정)

온라인 커뮤니티 활동과 함께 커뮤니티 운영 활동을 하게 됩니다.

   

오프라인 활동 영역

오프라인 스터디

오프라인 스터디를 통해 자신의 분야를 공부하고 발표합니다. 그리고 좋은 콘텐츠는 곧바로 온라인/오프라인 세미나 스피커 활동으로 이어집니다.

오프라인 세미나

한국 마이크로소프트와 팀 자체에서 진행하는 오프라인 세미나의 스피커로 활동할 수 있습니다. 팀 자체에서는 매월 오프라인 정기 세미나를 진행하며, 자신의 노하우를 오프라인 세미나를 통해 전달할 수 있는 기회를 드립니다.

기고

팀 블로그를 통해 축적된 자신의 콘텐츠는 월간 잡지 등에 기고할 수 있습니다.

책 집필, 번역(예정)

다양한 노하우를 책으로 집필하고, 외국의 유명 서적을 번역하는 활동을 계획하고 있습니다.

Microsoft MVP 추천

MVP 에 되고자 하시는 분은 한국 이크로소프트 직원과 마이크로소프트 MVP 의 추천을 드립니다.

   

모집 분야

  • Cloud Development
  • C#
  • VB.NET
  • C++
  • Agile Development
  • Parallel Development
  • Web Development
  • ASP.NET
  • Silverlight
  • Windows 7 Development
  • RIA Development
  • Architect Development
  • Office Business Application Development
  • .NET Framework 4.0
  • Visual Studio 2010
  • Visual Studio Team System 2010
  • ETC…

   

마감

정해진 마감 일자는 없습니다만, 적어도 12월 중에는 저희와 함께 할 수 있었으면 합니다. 가능한 빨리 지원해주시길 부탁드립니다.

   

지원 방법

아래의 양식을 채워주시고 kkongchi@gmail.com 으로 보내주세요.

이름

  

사진

  

블로그

  

전화번호, 이메일

  

티스토리 아이디

  

소개

(직업 및 회사명 포함)

관심 분야

(중복 가능)

   

지원해 주신 내용에 대한 심사 후, 오프라인 인터뷰를 통해서 멤버를 선정하게 됩니다. 이번에는 특히 활발한 온라인 활동, 특히 개인 블로그 활동을 많이 해오신 분들을 우선적으로 선정할 예정입니다.

   

지원 시 유의 사항

참고로 저희 스터디에서는 배우고자 지원하시는 분들은 선발하지 않습니다. 저희 팀의 스터디에서는 여러분들에게 아무것도 가르쳐주지 않습니다.

저희 팀에서는 절대 실력을 보고 맴버를 선발하지 않습니다. 물론 실력이 출중하면 좋겠지만 새로운 VSTS 2010 분야는 어느 누구도 밟아보지 않은 새로운 황야와 같습니다. 새로운 길을 함께 가실 활동력이 충분하신 분들은 꼭 지원해 주시기 바랍니다. ^^

우선 설치해서 잠깐 둘러본 결과, 가장 우려했던 IDE 의 성능 문제는 의외로 빨랐습니다. 어떤 부분은 Visual Studio 2008 보다 더 빨랐고, 기본적인 대부분의 동작의 실행 속도는 굉장히 만족스럽습니다.

마이크로소프트 Visual Studio 개발팀도 이 점을 인지하고 개선하려고 상당히 노력한 흔적이 엿보입니다. 기존 CTP 와 Beta 1 에서 기어가는 듯한 IDE 가 느렸던 문제는, Beta 2 버전에서는 걱정하지 않으셔도 될 것 같습니다. 체감적으로 Visual Studio 2008 보다 느리지 않네요.  

Visual Studio CTP 와 Beta 버전에 익숙해졌는지 외관상 크게 거부감도 없습니다. 

   

설치된 구성 요소 검색하는 화면

   

라이선스 동의 화면

   

설치 패키지 선택 화면

   

설치 시작 화면

   

설치되는 구성 요소 목록

   

   

   

   

.NET Framework Beta 2 가 설치 된 후 시스템 재시작이 필요합니다.

   

   

Visual Studio 2010 Beta 2 의 Splash 화면

   

   

Visual Studio 시작 페이지 화면

   

이전에 MousePresentationTracker 를 예제로 만들어서 공개한 적이 있습니다. 몇 번 사용해 보면서 Visual Studio 2010 의 새로운 확장 모델인 VSIX 에서는 좀 사소한 버그가 있었습니다. 이 문제 때문에 심히 불편했습니다만, 정식 버전에서는 반드시 고쳐지길 바랄 뿐입니다. ^_^;

문제는 VSIX 의 어셈블리명(DLL) 이 Umc.Core.Tools.MousePresentationTracker.dll 처럼 '.' 이 들어가면 Visual Studio 2010 이 제대로 로드하지 못합니다. 그렇기 때문에 아래와 같이 Assembly Name 은 반드시 "파일명.확장자" 와 같은 이름을 주어야 합니다.

 

기타 확장 기능 참고 

 

안녕하세요. VSTS 2010 공식 팀에서 Twitter 를 시작했습니다. Twitter 를 통해 차마 시간이 없어 정리하지 못한 정보나 알아두면 좋은 팁과 정보 등을 단문 메시지로 여러분들에게 전달해 드릴 예정입니다.

차세대 플랫폼인 Visual Studio / Team System 2010 등 관심 있는 분들의 많은 Following 을 부탁 드립니다.

http://twitter.com/vsts2010

   

 

몽당연필과 함께하는 VSTS 2010 모델링 0/4

Architect Development 2009. 7. 22. 09:39 Posted by 알 수 없는 사용자
Architect Development 의 시작은 무엇일까 생각하다가 우선 모델링 관련 부분부터 해야 겠다는 마음으로 이글을 작성하게 되었습니다. 이 글을 시작하기 전 우선 글의 성격은 Architect Development 개발의 시작으로 모델링 기반의 개발이 좋을 것 같고, 제 나름대로 프로젝트를 해 보니 문서를 기반으로 프로젝트를 시작하고 개발자들과 문서를 보면서 개발 회의를 하는 것과 또는 강의 할 때 실제 프로그램이 돌아가는 것을 보고 난 다음에 모델링 도구를 이용하여 프로그램이 운영되고 있는 영억이나 구조를 설명하면 개발자분이나 교육을 듣는 분들이 이해를 빠르게 했기 때문입니다.

그럼. 첫 시작으로 모델링을 선택하고 UML 기반의 모델링을 소개하는 것은 일반적으로 학교에서 UML은 어느 정도 접하고 졸업한 개발자분들도 있고, 개발을 오래 하다보면 UML 로 그린 다어이그램들을 보신 경우가 많기 때문입니다. 처음 발표된 VSTS 2005 는 UML이 아니라 다른 기반의 모델 기반 개발을 지원 했습니다. 저는 Visual Studio 2005에 처음 접하였지만, 그 전에는 UML을 Visio로 그리고 실 개발을 Visual Stduio 2003으로 했습니다. 개발할 때 설계를 봤을 까요? 제가 솔직히 이야기 하면 저도 100% 다 보지 않고 요구사항이 변경되거나 구조가 변경되면 먼저 코드를 작성하고 추후 Visio로 변경해야지 하는 마음만 먹고 하지 않았습니다.

VSTS의 새로운 제품은 이제 그렇지 않지 않아도 됩니다.

VSTS 2010의 Architect 부분에서는 UML을 지원하고 이 모든것이 TFS 제품과 연관이 됩니다. 개발자는 이를 확인하고 실 개발에 반영하거나 반영된 것을 아키텍처가 변경하거나 개발자가 바로 변경할 수도 있다는 것입니다.

이런 이유로 제가 첫번째 모델링을 이야기 하고 모델 기반 개발에 대하여 소개하도록 하겠습니다.

PS. 전 모델 기반 개발이 선택이 아닌 필수로 생각합니다. 그렇지 않으면?? ㅎㅎ 추후 글로..
이제 시작입니다.

Visual Studio 2010 Beta 1 설치부터 살펴보기

Visual Studio 2010 2009. 6. 15. 17:30 Posted by 알 수 없는 사용자

Visual Studio 2010 Beta 1이 일반에 공개된지도 벌써 한달이 다 되갑니다.
미래의 Visual Studio의 모습을 보기 위해 설치 해서 사용을 해보신 분들도 있으시겠지만 시간이 없거나 아직 Beta 1 단계라서 완성되지 않은 부분이 있어서 다음 기회에 사용 해보시려는 분들도 있으실겁니다.
설치 과정을 보면서 어떠한 구성요소가 업데이트 되었고 설치가 되는지 알아보고 기본적으로 변화된 IDE의 모습을 살펴보겠습니다.



먼저 오토런 화면입니다.
첫번째 인스톨 메뉴를 선택하고 설치를 시작 해 보겠습니다.



기본적인 설치 파일 작업이 끝나고 다음으로 넘어갑니다.



현재 설치되어 있는 구성 요소를 체크 하고 설치 될 요소를 알려줍니다.
VC 런타임이 9.0과 10.0 두개가 모두 설치되는 것을 볼 수 있습니다.
그리고 핵심이 되는 .NET Framework 4 Beta 1과 Visual Studio 2010 Beta 1 등이 설치 되는 것을 알 수 있습니다.
그럼 라이센스에 동의를 하고 다음으로 넘어갑니다.



지금까지는 이전과 별 다를건 없었는데 여기서 약간 달라집니다.
기존에는 전체 구성요소가 트리 구조로 한번에 나왔는데 이제 바로 나오지 않고
.NET 개발 환경과 C++ 개발 환경으로 나뉘어져 있습니다.
자신의 개발 환경에 맞게 선택을 할 수 있고 체크를 한 후 아래 보이는 Customize 버튼을 누르면 세부 선택이 가능합니다.



보시는 것처럼 이전과 같이 트리 구조로 선택 할 수 있게 나오게 되고 원하는 형태로 설치가 가능합니다.
그리고 SQL Server 2008 Express 버전이 기본적으로 선택이 됩니다.
Install 버튼을 눌러 설치를 시작하겠습니다.



.NET Framework 4 Beta 1이 설치되면 재부팅을 요구합니다. 재부팅을 하고나면 나머지 설치 과정을 이어서 진행합니다.



드디어 설치가 완료되었습니다. Windows Server 2008 SP2 VPC에서 설치를 진행했는데 중간에 디지털 서명 관련 에러가 나서 재부팅하고 다시 하니 잘 설치되었습니다.
혹시 비슷한 에러나 나면 참고하세요.

그리고 설치되는 MSDN은 베타1에 포함되지 않았습니다. 온라인 MSDN 라이브러리에서 2010에 관련된 내용을 확인 할 수 있습니다.


제어판에서 설치된 목록을 보면 다음과 같습니다.
현재 베타1 단계에서는 이정도가 설치되고 앞으로 베타2 이후에는 변화 될 수도 있습니다.



시작 메뉴에 등록된 프로그램은 다음과 같습니다. Microsoft Test and Lab Manager 등 새롭게 추가된 요소를 볼 수 있습니다.




VS2010 베타1을 실행 해 보면 시작 페이지가 많이 달라진것을 볼 수 있습니다.
전체적인 IDE에도 색도 들어가고 화려한 모습을 보여주고 있습니다.




About 메뉴에서 구성 요소를 다시 한번 보면 Silverlight도 기본으로 추가된것을 볼 수 있고 F# 등 새로운 언어도 포함되었습니다.


새 프로젝트를 열어보면 이전과 조금 다른 형태가 보입니다.
2008에서 처럼 멀티 타겟팅을 지원하고 업그레이드 된 .NET Framework 4.0도 보입니다.



F# 프로젝트 템플릿은 다음과 같습니다. .NET Framework 4.0에서 새롭게 지원하는 것이므로 3.5 이하를 선택하면 나타나지 않습니다.



새롭게 추가된 온라인 템플릿 탭을 선택하면 기본 템플릿 외에 다양한 템플릿을 추가 할 수 있습니다.



WPF 프로젝트를 생성 해 보았습니다. 전체적인 IDE가 푸른색을 기본으로 새롭게 변화되었고 WPF로 구성되었다는걸 느낄 수 있습니다.
그런데 WPF에서 폰트 처리 문제때문에 좀 뿌옇게 보이는 경향이 있는데 앞으로 개선될거라 예상됩니다.



Visual Studio 2010에서는 멀티 모니터를 지원 한다고 하는데 보시는 것처럼 탭으로 분류된 창을 분리 할 수 있습니다. 창을 드래그 해서 다른 모니터로 옮겨서 여러 모니터에서 작업을 할 수 있습니다.

지금까지 설치부터 IDE의 모습까지 간략히 살펴보았는데 여러가지 향상된 점이 많다는 것을 알 수 있습니다.
관심 있으신 분들은 설치해서 사용 해보시가 여건이 안되신다면 궁금한 점을 말씀하시면 더 자세히 알려드리도록 하겠습니다.

지난 번 포스팅에서 말씀 드렸던 것처럼 Visual Studio Team System 2010에서 이루어진 Code Analysis 기능 개선에 대해서 더 깊게 다뤄 보겠습니다. 그 첫 번째로 새롭게 추가된 Rule Sets 개념에 대해서 알아보도록 하겠습니다.


Visual Studio 2005, 2008에서의 코드 분석 설정

Visual Studio의 코드 분석 시스템에는 약 200개 정도의 규칙이 있습니다. 하지만, 사실 이 규칙들을 모두 준수를 해야 하는 것은 아닙니다. 모든 규칙이 나름의 이유와 정당성을 갖고 있다고 해도, 프로젝트의 성격에 따라, 모듈의 성격에 따라서 꼭 지켜야 할 규칙, 그렇지 않은 규칙, 심지어는 어쩔 수 없이 위반해야 하는 규칙도 있을 수 있습니다.

그래서 코드 리뷰를 할 때, 대부분의 경우 모든 규칙을 다 검사하지는 않습니다. 각각 케이스 바이 케이스로 규칙을 적절하게 조절하게 됩니다.

Visual Studio Team System 2005와 2008 버전에서는, 이런 설정을 Visual Studio Project Configuration에서 각 프로젝트 별로 할 수가 있습니다.

이 규칙 설정은 프로젝트 파일(.vbproj 혹은 .csproj)에 CodeAnalysisRules라는 Property 이름으로 아래와 같이 저장되게 됩니다. 내용을 보면 아시겠지만, “-“ 기호와 규칙 ID를 붙여 놓은 모양으로 되어있습니다. 즉, 거기에 열거된 규칙 ID를 Analysis Rules에서 빼는 형태로 저장이 되는 것입니다. 아래 샘플은 그래서 이 프로젝트는 코드 리뷰를 할 때에 Design Rule의 CA1000번 규칙을 검사하지 않는다라는 의미가 됩니다.

<CodeAnalysisRules>-Microsoft.Design#CA1000</CodeAnalysisRules>

이런 형태로 Visual Studio 프로젝트마다 다른 규칙을 적용할 수 있다는 것은 대단히 유연한 디자인이긴 하지만, 많은 수의 Visual Studio Project가 존재한다면, 관리가 참으로 어렵습니다. 그래서 예전에 Visual Studio Team System 2005 를 사용했던 프로젝트에서 전체 Visual Studio 프로젝트의 분석 규칙들을 통일하기 위해서, 개별 개발자들에게 위임하지 않고 제가 직접 모든 프로젝트를 텍스트 에디터로 열어서 저 부분만 Copy & Paste로 넣어서 Check-In하는 엄청난 단순 반복 작업을 한 적도 있습니다.

 

Visual Studio Team System 2010의 Rule Sets Feature

그래서 새롭게 출시될 Visual Studio Team System 2010에서는 Rule Sets라는 개념이 도입되었습니다. 이 Rule Sets 기능은 이름에서도 알 수 있듯이 Rule들을 미리 정해진 Set으로 관리할 수 있는 기능입니다. 이제 Visual Studio 프로젝트 별로 Rule을 하나 하나 빼는 수고를 할 필요가 없이 Visual Studio 프로젝트에 Rule Set을 지정하는 것으로 Code analysis를 커스터마이징할 수 있게 된 것입니다. 아래 그림에서 볼 수 있듯이, 하나 이상의 Rule Set을 선택하는 것도 가능합니다. (가장 아래의 Choose Multiple Rule sets를 선택하면 됩니다.)


Visual Studio Solution 전체에 Rule Set을 적용하는 것도 가능합니다. Solution Property에서 아래와 같이 설정할 수 있습니다.

 

위 그림에서 보시는 것처럼 마이크로소프트는 기본적으로 7개의 기본 Rule Set을 제공합니다. 이 기본 Rule Set의 목록은 다음과 같습니다.

  • Microsoft All Rules – 전체 Rule이 모두 포함된 Rule Set입니다.
  • Microsoft Basic Correctness Rules – 로직 에러와 자주 저지르는 실수를 예방하는 규칙들로 이루어진 Rule Set입니다.
  • Microsoft Basic Design Guideline Rules – Framework API 작성 상의 Best Practice에 집중된 Rule Set입니다.
  • Microsoft Extended Correctness Rules – Basic Correctness Rules를 확장하여, COM Interop이나 Mobile Application에도 사용 가능하도록 만들어진 Rule Set입니다.
  • Microsoft Extended Design Guideline Rules – Basic Design Guideline Rules를 확장해서, 사용성이나 유지 보수성도 체크할 수 있도록 만들어진 Rule Set입니다.
  • Microsoft Globalization Rules – Application의 Globalization에 있어서 문제가 있는지 검증하는데 집중된 Rule Set입니다.
  • Microsoft Minimum Recommended Rules - MS가 제안하는 최소한의 Rule Set입니다. 50개 정도의 규칙으로 이루어져 있습니다. 다른 대부분의 Rule Set들이 이 Rule Set을 포함하고 있습니다.
  • Microsoft Security Rules – 이름 그대로 보안에 집중된 Rule Set으로, 모든 Security 관련 규칙들이 모두 포함되어 있습니다.

 

물론 이 외에도 사용자가 직접 Rule Set을 편집할 수 있습니다. Rule Set은 .ruleset이라는 확장자를 가지는 XML 파일 포맷으로 되어 있습니다. 기본적으로 Visual Studio 2010에서 아래와 같은 UI를 통해서 편집할 수 있도록 되어 있습니다.


 

아래는 Rule Set 파일을 직접 Notepad로 열어본 것입니다.

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Microsoft Basic Correctness Rules" Description="These rules focus on logic errors and common mistakes made in the usage of framework APIs. Include this rule set to expand on the list of warnings reported by the minimum recommended rules." ToolsVersion="10.0">
  <Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
    <Name Resource="BasicCorrectnessRules_Name" />
    <Description Resource="BasicCorrectnessRules_Description" />
  </Localization>
  <Include Path="minimumrecommendedrules.ruleset" Action="Default" />
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1008" Action="Warn" />
    <Rule Id="CA1013" Action="Warn" />
    <Rule Id="CA1303" Action="Warn" />
    <Rule Id="CA1308" Action="Warn" />
    <Rule Id="CA1806" Action="Warn" />
    <Rule Id="CA1816" Action="Warn" />
    <Rule Id="CA1819" Action="Warn" />
    <Rule Id="CA1820" Action="Warn" />
    <Rule Id="CA1903" Action="Warn" />
    <Rule Id="CA2004" Action="Warn" />
    <Rule Id="CA2006" Action="Warn" />
  </Rules>
</RuleSet>

 

Team Foundation Server Check-In Policy

이 Rule Set 기능은 Team Foundation Server의 Check-In Policy에도 쓰이게 됩니다.

 

맺으며..

이번 Rule Set Feature를 통해서 확실히 이전 버전보다는 Code Analysis를 사용하는 것이 쉬워지고 편리해진 것 같습니다. 하지만, Code Analysis에서 중요한 것은 편의성보다는, Rule의 문제라고 생각됩니다. 그런 면에서 아직 FxCop이 처음 나왔을 때의 200개 정도의 Rule에서 많은 추가가 없다는 것은 굉장히 아쉽습니다. 특히 직접적인 경쟁 제품이라고 볼 수 있는 Compuware의 DevPartner Code Review가 처음 버전부터 600개 이상의 Rule을 가지고 있다는 점에 비교해 본다면 더욱 그렇습니다.

이어지는 포스팅에서는 새롭게 Code Analysis에 추가된 Phoenix 엔진과 그에 따라 다시 복귀한 Data Flow 관련 규칙들에 대해서 한 번 알아보겠습니다.

Visual Studio Team System 2005 에서 코드 분석(Static Code Analysis) 기능이 처음 소개된 바가 있습니다. 이 코드 분석은 Microsoft에서 제안하는 닷넷 프레임워크에서의 디자인 가이드라인과 성능이나 보안, 신뢰성 등의 요소에 대한 Best Practice 등으로 이루어진 200개 이상의 Rule을 기반으로 Code를 검사하고 결함을 발견해 줍니다.

 

원래 이 Code Analysis는 FxCop이란 이름의 독립된 툴로써 세상에 먼저 선을 보인 바 있습니다.

이 FxCop이 Visual Studio 2005 Team System에서 통합되면서 현재의 코드 분석 기능이 나오게 된 것입니다. 실제로 비주얼 스튜디오에서 코드 분석 기능을 담당하는 실행 파일의 이름은 아직도 FxCopCmd.exe입니다.

앞으로 나오게 될 Visual Studio Team System 2010에서는 현재까지 알려진 바로는 다음 세 가지 부분에서 코드 분석의 기능 향상이 이루어 졌습니다. (출처: http://blogs.msdn.com/fxcop/archive/2008/10/30/new-code-analysis-features-in-visual-studio-2010-september-08-ctp.aspx)

  1. Rule Sets – 드디어, 규칙을 프로젝트 별로 하나 하나 빼던 수고스러움을 덜 수 있게 된 것 같습니다. DevPartner Code Review와 같은 상용 툴에서는 진작에 제공되던 기능이었지만, 이제 드디어 Visual Studio 2010에서는 Rule들을 Set으로 만들고 그 Rule Set 기반으로 코드 리뷰를 할 수 있게 되었습니다.
  2. Check-In Policy – 당연한 말이겠지만, 바로 위에서 소개한 Rule Sets 기능이 Team Foundation Server의 Check-In 정책에도 적용할 수 있게 됩니다.
  3. 8개의 새로운 Data-Flow 규칙MSDN Code Gallery의 VS2005와 VS2008 코드 분석 비교 문서를 보시면 아시겠지만, VS2008에서 7개의 규칙이 빠진 바 있습니다. Data-Flow Analysis Engine의 각종 버그와 낮은 성능으로 말미암은 결과라고 하는데, 이번 Visual Studio Team System 2010에서는 Phoenix라는 새로운 분석 엔진의 탑재와 함께 다시 7개의 규칙들이 복귀했고, 새롭게 추가된 하나를 합쳐서 총 8개의 새로운 규칙이 추가되었습니다. 그리고 이번에 추가된 Phoenix 분석 엔진은 당연히 기존 엔진이 가지고 있었던 버그나 성능 문제를 해결한 새롭고 강력한 엔진입니다.

그러면 다음 포스팅을 통해서 이 세 가지 개선점들에 대해서 더 자세히 다뤄보도록 하겠습니다.

안녕하세요. 이번에 Visual Studio Team System 2010 공식 블로그에 새롭게 참여하게 된 LazyDeveloper.Net의 kkongchi라고 합니다. Better Code 시리즈를 통해서 Code Analysis, Unit Test 등에 대한 포스팅을 해보도록 하겠습니다. 부족한 부분 많이 지적해 주시길 바랍니다.

 

TDD?

eXtreme Programming의 창시자 중 하나인 Kent Beck의 eXtreme Programming explained라는 책을 보면 Test를 작성하는 방법에 대해서 이렇게 기술하고 있습니다.

  • If the interface for a method is at all unclear, you write a test before you write the method. (메서드의 인터페이스가 클리어하지 않다면, 메서드를 작성하기 전에 테스트를 먼저 작성해라)

  • If the interface is clear, but you imagine that the implementation will be the least bit complicated, you write a test before you write the method. (메서드의 인터페이스가 클리어하더라도 당신이 생각하기에 구현이 조금 복잡할 것 같다면, 메서드를 작성하기 전에 먼저 테스트를 작성해라)

  • 이런 eXtreme Programming의 Test-Before-Writing 전략을 개발 프로세스에 전면적으로 도입하는 것을 Test Driven Development, 즉 TDD라고 합니다. TDD에 관한 위키피디아 페이지에서 소개하는 TDD의 개발 사이클은 다음과 같습니다. “Red, Green, Refactor”라고 표현하기도 합니다.

    다들 아시다시피, Visual Studio에서는 2005 버전에서부터 Team System의 일부로써 Testing Framework을 제공하고 지원해왔습니다. 그리고 드디어 이번 Visual Studio Team System 2010에서는 완벽하게 TDD의 개념이 Visual Studio Team System안으로 녹아 들어가게 된 것 같습니다. 바로 새롭게 추가된 기능 “Generate” 기능을 통해서, Test를 먼저 작성한 후에 그 Test로부터 코드를 자동으로 Generate해주는 기능이 추가된 것입니다.

     

    TDD Development in VSTS 2010 by “Generate”

    지난 11월에 나온 Visual Studio 2010 and .NET Framework 4.0 Training Kit의 Lab을 통해서 이 기능에 대해서 좀 더 자세히 알아보도록 하겠습니다.

     

    당연히 먼저 테스트를 작성하는 것부터 시작합니다. 하지만, 아직 만들어지지 않은 클래스이기 때문에 아래 그림처럼 빨간색 물결 라인으로 경고가 뜹니다. 여기서 마우스 오른쪽 버튼을 눌러보면, 새로운 “Generate” 기능을 볼 수가 있습니다.

    Generate class를 선택하면 같은 프로젝트에 Class가 추가됩니다. 하지만 Generate other..를 선택하면 아래와 같은 팝업 윈도우가 나옵니다. 클래스를 만들 수 있는 Wizard 개념이라고 보시면 되겠습니다.

    이 Wizard를 통해서 클래스의 Access 한정자, Type, 그리고 파일을 만들 프로젝트까지 설정을 할 수가 있습니다. 이 과정을 통해서 우리는 완벽하게 Test로부터 시작해서 뼈대 코드를 만들어 낼 수가 있습니다. 아래 그림처럼 말이죠..

    이제 이 자동으로 만들어진 뼈대 코드에 구현을 추가하게 되면 여러분들은 다음과 같이 Test를 통과했다는 기분 좋은 화면을 보실 수 있으실 것입니다.


    위에서 보신 Demo Code의 시연은 http://channel9.msdn.com/shows/10-4/10-4-Episode-5-Code-Focused-in-Visual-Studio-2010/#Page=4 에서 Video로도 감상하실 수 있고, http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en 에서 Lab Document와 소스 코드도 얻으실 수 있습니다.
     

    지금까지 보신 것처럼 앞으로 출시될 VSTS 2010에서는 IDE 자체에서 완벽한 TDD 지원 기능이 통합되었습니다. TDD가 만능의 도구는 아닙니다. 하지만, 적어도 개발자가 자신의 코드에 대한 이해도가 통상적인 개발 방법보다는 훨씬 크고 깊을 것이라 기대합니다. 어설픈 문서보다는 잘 만들어진 테스트 코드들이 오히려 실제 구현 코드를 이해하는 데 더 도움이 되는 경우도 많습니다. Visual Studio Team System 2010은 효율적인 Test Driven Development를 가능하게 해주는 최고의 도구가 될 것 같습니다.

    부족한 글 읽어주셔서 감사하고, 많은 의견 부탁 드립니다.

    Welcome to F#(3) - 사소한 탐색전.

    F# 2009. 4. 12. 22:10 Posted by 알 수 없는 사용자

    -관심있으면 많이 알아봐야 하는 법.
    이제 F#과의 만남도 어느덧 세번째에 접어들었네요. 한 두번쯤 만나면 상대방에 대해 관심이 있는지 없는지 스스로 눈치챌 수 있겠죠. 그리고 관심이 있다면, 더 열심히 상대방에 대해서 알려고 노력하고 있을테구요. F#에 대해서 알려고 노력하다보니, F#의 4차원적인 면을 하나발견하고 잠깐 당황해서 허우적댔습니다. 거기에 대해서 짧게 적어보려 합니다.

    -짧은 예제를 통해 까발려본 F#의 4차원적 특징

    #light
    
    type TwoNumbers =
        {Number1 : int; Number2 : int}
    
    let num = {Number1 = 3; Number2 = 5}
    
    printfn "%d %d" num.Number1 num.Number2
    

    그리고 실행해보면 아래와 같은 결과가 나온다.


    음~ 예상했던 대로 결과가 잘 나왔습니다. 그런데 왠지 타입선언과 그 타입을 실행하는 코드는 다른 소스파일에 넣는게 맞는거 같아서 타입선언을 TwoNumbers라는 파일을 생성해서 거기에 넣자는 생각이 들었죠. 그래서 C#에서 하던것 처럼 새로운 파일을 생성해서 거기에 타입선언 코드를 집어넣고, 다시 자신있게 컴파일을 실행했습니다. 그런데! 다음과 같은 오류가 발생하더군요.

    오류 1 - The record label 'Number1' is not defined.

    오류 2 - Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved

    오류 3 - Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved



    즉, Number1이랑 Number2가 선언되어 있는 타입을 찾을 수 없다는 말인데요. 이게 무슨 소리입니까;; 같은 솔루션에 있는 파일에 클래스의 선언을 옮겼는데 못 찾다니요..? 그런데, VisualStudio의 한지붕아래에서 살아서 전혀 눈치를 못채고 있었는데, F#의 솔루션 탐색기에는 다른 언어들과는 다른 뭔가 특별한게 있더군요. 이런 4차원 F#!!!

    바로 위 그림에서 볼 수 있는 Move Up, Move Down, Add Above, Add Below말인거죠. 무슨 아이돌 그룹이라도 되는 마냥 4인조가 나란히 모여있죠. 이건 당췌 뭘까요? 아! 혹시 F#은 위에서 부터 아래로 차례대로 파일들을 컴파일 하는걸까요? 그럼 타입선언이 있는 TwoNumbers파일을 Move Up해서 다시 컴파일을 해보죠!! 자신있게 컴파일을 했건만 결과는 똑같은 에러가 납니다. 연애를 해봤거나, 작업을 절박하게 걸어본 사람은 그 사람의 성격을 알았다고 생각해서 그에 맞춰주려다가 오히려 더 곤혹스러웠던 상황이 있을겁니다.

    이런. F#은 도대체 왜 이렇게 특이한걸까요? 그래서 F#을 잘아는 사람들에게 정보를 얻어보니, F#은 위에서 부터 차례대로 컴파일을 하는 건 맞는데, 그 파일들이 자동으로 하나의 모듈단위로 컴파일이 되고, 그 모듈을 이용하려면, open을 이용해서 그 모듈의 내용을 열어야 사용이 가능하다는 거 였더군요. 그래서 아래와 같이 모듈의 이름을 open해주었습니다.


    #light
    
    open TwoNumbers
    
    let num = {Number1 = 3; Number2 = 5}
    
    printfn "%d %d" num.Number1 num.Number2
    

    이제 컴파일이 잘 됩니다.>_<! 모듈의 이름은 명시적으로 아래와같이,

    module MyCompany.MyLibrary.MyModule

    (위와 아래의 선언은 동일하다)


    namespace MyCompany.MyLibrary
    module MyModule =
        .......

    이렇게 지정해주지 않는이상 파일이름과 동일하며, 무조건 맨 앞의 문자는 대문자가 됩니다.(즉 파일의 이름이 twoNumbers 였더라도, 모듈의 이름은 TwoNumbers가 된다는 말)

    -그냥 추가로 이야기하는 공간-

    type Card =
        { Number: int; Shape: int }

    이렇게 타입(클래스)를 선언하고, 위 선언을 F# Interactive에서 평가하고 아래와 같은 결과가 나옵니다.

    type Card =
      {Number: int;
       Shape: int;}

    그리고 아래처럼 계속 평가식을 입력해보면....

    > let v = {Number = 3; Shape = 5};;

    val v : Card

    > let a = {a = 4; b = 5};;

      let a = {a = 4; b = 5};;
      ---------^^
    stdin(4,10): error FS0039: The record label 'a' is not defined.

    > v;;
    val it : Card = {Number = 3;
                     Shape = 5;}
    >

    즉, 타입이름을 명시하지 않아도 멤버의 이름과 타입을 보고 알아서 타입을 찾아서 생성한다는 겁니다. 그래서 a와 b라는 멤버로 생성하려고 했을때, 그런 멤버를 가진 타입이 없어서 에러가 발생하는 거죠.


    -어디까지 4차원일까?
    F#은 알면 알수록 4차원인거 같네요. 아... F#에 대해서 더 잘 알게되면 F#의 마음을 얻고 잘 지낼 수 있을까요? 일단 최대한 노력해보는 수 밖엔 없겠군요. 이렇게 짧은 탐색전을 마치겠습니다.

    -참고자료
    1. Expert F#, Don Syme, Adam Granicz, Antonio Cisternino, APRESS.
    2. http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec2.aspx#_Toc207785764

    .NET 의 과거와 현재, 그리고 미래

    .NET Framework 2009. 2. 1. 21:00 Posted by POWERUMC

    학창 시절 사회/역사 시간을 통해 우리나라의 역사에 대해서 공부를 하였고, 많은 한 시대를 통치하던 왕 이름과, ~시대와 수많은 ~전쟁 이름 까지 외운 적이 있을 것입니다. 그때는 시험 때문이라도 목숨(?) 걸고 외웠던 적이 있지만, 그 때 배웠던 것을 통해 우리 사회와 문화를 이해하고, 계승할 수 있던 계기가 아니었나 생각합니다. 아마 지금의 .NET 세계도 마찬가지 일 것입니다. .NET 의 과거를 모르면 현재의 .NET 도 이해할 수 없는 것들이 많을 것입니다. 그래서 오늘날 .NET 4.0 의 출연에 앞서 .NET 의 역사를 한번 짚어 보고자 합니다.

    오늘날 우리 .NET 개발자들은 수많은 개발 툴(Visual Studio IDE) 버전과 .NET Framework 버전의 홍수 속에서 처음부터 .NET 1.0 을 다루어본 독자는 그리 많지는 않을 거라고 생각합니다. 아마도 .NET 3.0, 3.5 시대에 뛰어든 독자라면 이전 .NET 버전의 특징을 잘 알 수 없기 때문에, 쓰고 있는 신 버전의 특징도 체감하기가 쉽지 않을 것입니다.

    자! 그럼 .NET 의 세계를 한번 뒤돌아 보도록 합시다.

    Visual Studio .NET 2002 / .NET Framework 1.0

      제품의 버전 / 특징
    2002년
    • Visual Studio .NET 2002 / .NET Framework 1.0
      첫 통합 개발 환경
      발매 당초의 제품명은 ‘ Visual Studio .NET
    • C# 1.0 / Visual Basic .NET (7.0)
      C# 은 마이크로소프트의 새로운 객체 지향 언어
      Visual Basic 도 객체지향 언어


    Visual Studio 와 .NET Framework 의 최초 버전이다. PDC 2000 을 통해 처음으로 Beta 버전이 세상에 공개가 되었습니다. 이 버전을 통해 Managed Code(관리 코드)가 등장 하였고, C# 이라는 객체지향 언어가 출연하였습니다. 그리고 Visual Basic 7.0 이라는 이름으로 Visual Basic 도 객체지향 언어로 탈바꿈 하였습니다. 그리고 현재까지도 특정 버전이 명시되지 않은 Visual Studio.NET 이라는 IDE(통합 개발 도구)도 공개가 되었습니다.

    Visual Studio IDE 를 통해 하나의 개발 툴에서 Web Application, Windows Application, Mobile, XML, XML Web Services 를 쉽게 개발할 수 있게 되었습니다. 그리고 Java 진영의 개발자들을 위한 J# 이라는 Java 와 쉽게 호환이 되는 언어도 제공하였습니다. Visual Studio 를 통해 개발을 단순화하는 핵심 기술에 대한 엑세스를 제공하는 .NET Framework 의 기능을 활용할 수 있습니다.

    .NET Framework 는 응용 프로그램을 빌드하고  실행하는 Windows 의 구성요소로서, ADO.NET, ASP.NET, Windows Forms 등을 포함하는 .NET Framework 클래스 라이브러리와 CLR(Common Language Runtime-공용 언어 런타임) 을 일컫습니다. 이 CLR 을 통해 공통된 API 집합을 만들어 다양한 언어간의 상속, 오류 처리, 디버깅이 가능하며 개발자들은 사용하려는 언어를 자유롭게 선택할 수 있게 되었습니다.


    Visual Studio .NET 2003 / .NET Framework 1.1

      제품의 버전 / 특징
    2003년
    • Visual Studio .NET 2003 / .NET Framework 1.1 (5월)
    • C# 1.1 / Visual Basic .NET (7.1)
      모두 버전 업
    • Windows Server 2003
      .NET Framework 1.1 표준 탑재


    하지만, 첫 출발은 대중들에게 큰 이목을 집중하기에 충분하였지만, 그 행보는 순탄치만은 않았습니다. 왜냐하면, C# 이라는 언어가 Java 의 아류작에 불과하다는 편견과 수많은 버그로 인해 사용자들에게 원성을 사야 했습니다. 그리고 얼마 지나지 않아 새로운 버그 픽스 버전인 Visual Studio.NET 2003 과 .NET Framework 1.1 을 발표하였습니다.

    C# 과 Visual Basic 의 버전을 각각 C# 1.1, Visual Basic 7.1, .NET Framework 1.1 로 버전업 하였습니다. 그리고, Windows Server 2003 제품에 표준으로 탑재하여 .NET Framework 의 확산에 큰 공을 이루게 되었습니다.

    실제로 엔터프라이즈 시장에서 이 버전을 기준으로 많은 기업용 시스템에 도입이 되었습니다. 현재까지도 이 버전을 기준으로 운영이 되는 기업용 시스템이 상당수 존재하고 있으며, 아직까지도 많은 사랑(?)을 받고 있는 버전입니다.

    Visual Studio .NET 2005 / .NET Framework 2.0

    제품의 버전 / 특징
    2005년
    • Visual Studio 2005 / .NET Framework 2.0 (12월)
      ClickOnce 배포
      제네릭 클래스 도입
      ASP.NET 2.0, ADO.NET 2.0, Windows Form 2.0
      리팩토링 기능 / 코드 스니펫
      무료 Express Edition (C#, VB, C++)
    • C# 2.0 / Visual Basic 2005 (8.0)
      제네릭 대응
    • Visual Studio 2005 Team System
    • SQL Server 2005

     .NET Framework 2.0 과 Visual Studio 2005 와 함께 .NET Framework 의 주요 컴포넌트들도 ASP.NET 2.0, ADO.NET 2.0, Windows Forms 2.0, C# 2.0 과 같이 ‘~2.0’ 이라는 버전 번호를 붙였고, 많은 기능이 확장 되었습니다. .NET Framework 2.0 의 주요 컴포넌트들은 더 이상 .NET Framework 1.1 에 의존하지 않게 되었으며, .NET Framework 2.0 은 현재까지도 .NET Framework 의 모태가 되고 있습니다.

    Visual Studio 2005 도 .NET Framework 2.0 의 새로운 기능을 제공하기 위해 외관과 내관이 보다 화려해졌습니다. ClickOnce 배포를 Visual Studio 2005 에서 쉽게 수행할 수 있게 되었으며, 리팩토링(Refectoring)과 코드 스니펫(Code Snippet) 등의 기능이 추가되었으며, 솔루션 파일을 구조적으로 분류하기 위한 솔루션 폴더 등 수많은 기능이 추가되고 개선이 되었습니다.

    C# 2.0 은 기존 C# 1.0 의 Boxing(박싱), Unboxing(언박싱)의 반복적인 캐스팅(Casting) 의 비효율을 개선하고, 보다 객체지향적인 코드 품질을 생산할 수 있는 제네릭(Generic) 이 등장하였습니다.  이와 함께 .NET Framework 클래스 라이브러리에 다수의 제네릭(Generic) 클래스가 추가되었습니다.

    그리고, 이 제품의 버전부터 Visual Studio Team Suite + Team Foundation Server 의 제품을 조합하여 Visual Studio Team System(VSTS) 라는 새로운 개발 패러다임을 .NET 에서도 지원하게 되었습니다. VSTS 를 통해 ALM(Application Lifecycle Management-애플케이션 수명 주기 관리) 을 수행할 수 있게 되었으며, IT 조직의 비지니스 전반의 생산성을 향상 시키고, 사람과 개발 조직의 변화를 가져다 주는 시초가 되었습니다.

    .NET Framework 3.0

    제품의 버전 / 특징
    2006년
    • .NET Framework 3.0 (11월)
      코어 부분은 .NET Framework 2.0 그대로
      WPF(Windows Presentation Foundation)
      WCF(Windows Communication Foundation)
      WF(Windows Workflow Foundation)
      CardSpace
    • Windows Vista
      .NET Framework 3.0 기본 탑재

    .NET Framework 3.0 은 기존 2.0 보다 한층 버전업 되었지만, 그 내용은  .NET Framework 2.0 에 비해 한층 새로워졌습니다. .NET Framework 의 버전업 보다는 전혀 새로운 기술이 대거 등장하게 되었습니다.

    단연, .NET Framework 3.0 의 가장 큰 특징이라면 WPF 를 꼽을 수 있을 것입니다. XAML(Extensible Application Markup Language) 과 함께 WPF 의 출연으로 UX(User Experience) 의 시대 흐름에 진입하게 되었습니다.

    또한, WCF 의 출연으로 여러 가지의 분산 통신 기술이 통합되었습니다. 이전의 Remoting, XML Web Services, MSMQ 등이 하나의 WCF 컴포넌트에서 제공하게 됨으로써 Messaging Model 기반으로 통합할 수 있게 되었습니다.

    Visual Studio 2005 Service Pack 1 / Expression Studio / AJAX.NET

    제품의 버전 / 특징
    2007년
    • Visual Studio 2005 Service Pack 1 (6월)
    • ASP.NET AJAX 1.0 (추가 모듈)
      AJAX Web Application 개발이 용이
    • Expression Blend
      Expression Studio 첫 제품
      WPF 어플케이션의 GUI 구축

    ASP.NET 에서 AJAX 를 지원하기 위한 코드명 “Atlas” 의 정식 이름인 ASP.NET AJAX 1.0 이 릴리즈가 되었습니다. 클라이언트 사이드의 Sys 네임스페이스의 스크립트를 제공하고, 다양한 서버 사이드 모듈과 AJAX Control Toolkit 의 오픈 컨트롤 제공으로 이벤트 기반의 프로그래밍이 가능합니다.

    WPF 도 Expression Blend 의 출시로 UI 작업을 위한 공개 도구인 XamlPad 보다 강력한 기능을 제공하게 되었습니다.

    Visual Studio 2008 / .NET Framework 3.5

    제품의 버전 / 특징
    2007년
    • Visual Studio 2008 / .NET Framework 3.5 (11월 경)
      개발 코드명 ‘Orcas’
      WPF 의 GUI 설계 가능
      Javascript 디버그 기능 및 IntelliSense
      ASP.NET AJAX 표준 탑재
      .NET Framework 2.0, 3.0, 3.5 선택 가능
    • C# 3.0 / Visual Basic 2008 (9.0)
      LINQ 기능
    • SQL Server 2008
    • Windows Server 2008
    • Visual Studio Team System 2008


    이 제품의 가장 큰 특징이라면, C# 3.0 일 것이다. C# 2.0 의 제네릭(Generic) 과 C# 3.0 의 람다식(Labmda Expression), 확장 메서드(Extension Methods) 등의 결정체로 LINQ 가 탄생하였습니다. LINQ 를 통해 강력한 프로그래밍적 쿼리가 가능해졌으며, XML, Database, Object 등의 다양한 데이터 소스(Data Source) 를 통해 동일한 코딩 패턴을 사용하여 질의가 가능해졌습니다.

    WPF 도 Visual Studio 2008 에서 디자이너를 제공하게 되었습니다. 이전의 XamlPad 나 Expression Blend 와 같은 외부 도구의 도움이 없이도 WPF 의 UI 개발이 용이해졌습니다.

    Visual Studio 2008 Service Pack 1 / .NET Framework 3.5 Service Pack 1

    제품의 버전 / 특징
    2008년
    • Visual Studio 2008 SP1 / .NET Framework SP1
      ASP.NET Dynamic Data
      ADO.NET Entity Framework / Data Services (Astoria)
      WCF Atom Pub Services
      클라이언트 프로파일(Client Profile)
    • VSTS
      Windows Server 2008 지원
      SQL Server 2008 지원
      성능 향상 및 개선
    • Visual Studio SDK 1.1 (SP1)
      Visual Studio Shell 재배포 패키지 경량화
      DSL 출력 미리보기 등…
    • Visual C++ 2008
      오피스 리본 스타일 Interface
      고급 GUI 컨트롤 등…


    이번 업데이트는 정말 손가락으로 헤아리기 힘들 정도로 많은 부분에서 기능 개선과 새로운 기능을 제공하고 있습니다. 그렇기 때문에 지면상 요약하기도 굉장히 벅차지 않을까 생각하며, 필자가 월간 마이크로소프트 10월호에 기고한 내용을 참고하기 바랍니다.

    마소10월호 - Visual Studio 2008 서비스 팩 1 알아보기
    http://blog.powerumc.kr/article/2008/10/30/Maso-October-Visual-Studio-SP1.aspx

     

    이처럼 .NET 은 그리 긴 역사는 아니지만, 많은 변화를 거듭하여 발전해왔습니다. 우리가 바라는 이상적인 개발 환경에 아직은 부족한 점도 있습니다만, VSTS 2010 은 그러한 갈증을 해소시켜 줄 수 있는 단비와도 같을 거라고 생각합니다. VSTS 2010 의 출연으로 .NET 4.0 세대 또한 우리가 바라는 최종 결정판이 아니며, 현재 진행형 입니다. 지금과 비교하면 .NET 1.0 은 초라해 보이지만, 그러한 과거를 통해 현재가 존재하고 .NET 4.0 도 거부할 수 없는 현재라는 것입니다.

    참고 문헌
    http://blog.powerumc.kr/article/2007/09/10/DotNet-Framework-AND-Visual-Studio-History.aspx

    Visual Studio Team System 2010 (CTP10) - 작업 항목 링크

    Team Foundation Server 2009. 1. 23. 16:41 Posted by 알 수 없는 사용자

    Visual Studio Team System 2010 (CTP10) - 작업 항목 링크

    지난 3년여 동안 VSTS에 대한 많은 프리젠테이션과 세미나, 교육을 하면서 가장 많이 들었던 질문 중 하나가 "작업 항목들을 hierarchy 형태로 표현할 수 있나요?"였습니다.. 그러면, 저의 대답은 항상 같았습니다. "아니요. 하지만, Rosario (VSTS 2010 코드 명)에서는 된다고 합니다." 그러면, 질문한 사람의 얼굴에는 '그것도 안 돼?'하는 실망의 빛이 역력했습니다. 사실, 저도 왜 hierarchy 표현이 안되는지 궁금하긴 했습니다.
     그래서, Visual Studio Team System 2010의 CTP가 나왔을 때 가장 먼저 확인해 본 것이 작업 항목들을 hierarchy 구조로 표현해 보는 것이었습니다. 결론적으로 말하면, '된다'입니다.

    그러면, 어떤 식으로 작업 항목의 hierarchy 구조를 표현하고, 또 어떤 식으로 조회하는지 살펴보겠습니다.

     (참고로 이 글은 Visual Studio Team System 2010 CTP10을 기준으로 작성되었습니다.)


    [작업 항목 링크 추가]

    Team Foundation Server 2010 CTP10 (이하 TFS CTP10)에는 작업 항목을 연결하는 링크 유형이 추가되었습니다. 기존의 TFS 2005/2008에는 링크 유형은 한 개 (Related - Related)였습니다.

    • 작업 항목 링크 유형
      • Parent - Child: 작업 항목을 트리 (tree) 형태로 구성할 때 사용. (MS Excel에서 표현 가능).
      • Predecessor - Successor: 작업 항목의 선행/후행 관계를 표현할 때 사용. (MS Excel, MS Project에서 표현 가능)
      • Related - Related: 위의 두 경우 아닌 단순한 relationship을 표현할 때 사용. 

    작업 항목 링크은 TFS 2005/2008에서처럼 링크 탭에서 추가합니다. 그러나, 링크 유형 별로 컨트롤이 분리되어 있다면 추가할 링크 유형에 맞는 컨트롤에서 링크를 추가해야 합니다 (그림 1 참조).
     

    [그림 1]

    링크 탭에서 Add 버튼을 클릭하면 링크 추가 창이 나타납니다. TFS CTP10에 추가된 작업 항목 링크 유형은 [그림 2]에서 보는 바와 같이 Link Type 항목에 나타납니다. 링크 유형을 선택하면 그 유형의 이해를 돕기위한 그림이 아래쪽에 표현됩니다.

     


    [그림 2]

     링크로 추가할 작업 항목을 선택하고 comment를 입력하는 방법은 TFS 2005/2008과  동일합니다.

     [그림 3]은 작업 항목에 Parent - Child 링크를 추가한 예입니다.


    [그림 3]

    작업 항목의 링크를 추가하는 방법은 링크 창을 사용하는 것 외에도 마이스로 drag&drop한다거나 Outdent, Indent 버튼을 클릭하는 것도 있습니다.

    이 기능은 작업 항목 쿼리 유형 중 Tree of Work Items 만 가능합니다 (작업 항목 쿼리 유형은 아래에 설명되어 있습니다).

    쿼리 결과에서 작업 항목 (A) 하나를 클릭한 후, 다른 작업 항목 (B) 쪽으로 drag&drop하면 A와 B 작업 항목 사이에 Parent - Child 링크가 추가됩니다 (그림 4 참조)

    [그림 4]

    또한, 쿼리 결과에서 작업 항목을 선택한 후, Outdent 버튼을 클릭하면 작업 항목의 레벨이 올라가고 아래에 있는 작업 항목들은 그 작업 항목의 Child로 추가됩니다. 만약, 그 작업 항목이 다른 작업 항목의 Child였다면 Parent였던 작업 항목과 동등한 레벨이 됩니다. Indent 버튼을 클릭하면 Outdent와 반대로 레벨이 내려갑니다.
    Outdent, Indent는 MS Project의 Outdent, Indent와 유사합니다.

     
    [그림 5]

    [작업 항목 링크 컨트롤]

    작업 항목 링크 유형이 추가되면서, 각 유형 별로 컨트롤을 분리할 수 있게 되었습니다. [그림 1]에서는 Parent - Child 링크 유형이 다른 링크 유형과 분리되어 별도의 컨트롤로 정의되었습다. 이처럼 Predecessor - Successor 링크 유형도 별도의 컨트롤로 분리될 수 있습니다.

    아래 Task.xml의 Layout은 [그림 1]의 Implementation 탭을 정의한 것입니다. 

                         <Tab Label="Implementation">
                            <Control Type="LinksControl" Name="Hierarchy" Label="Parents and &amp;Child Tasks:" LabelPosition="Top">
                                <LinksControlOptions>
                                    <WorkItemLinkFilters FilterType="include">
                                        <Filter LinkType="System.LinkTypes.Hierarchy" />
                                    </WorkItemLinkFilters>
                                    <ExternalLinkFilters FilterType="excludeAll"/>
                                    <LinkColumns>
                                        <LinkColumn RefName="System.ID" />
                                        <LinkColumn RefName="System.WorkItemType" />
                                        <LinkColumn RefName="System.Title" />
                                        <LinkColumn RefName="System.AssignedTo" />
                                        <LinkColumn RefName="System.State" />
                                        <LinkColumn LinkAttribute="System.Links.Comment" />
                                    </LinkColumns>
                                </LinksControlOptions>
                            </Control>
                        </Tab>
    [Task.xml]

    작업 항목 링크 유형 별 Reference Name은 다음과 같습니다.

    • Parent - Child: System.LinkTypes.Hierarchy
    • Predecessor - Successor: System.LinkTypes.Dependency
    • Related - Related: System.LinkTypes.Related

    작업 항목 링크 컨트롤을 분리하지 않고 TFS 2005/2008처럼 하나의 컨트롤로 정의를 하려면 예전처럼 정의하면 됩니다.

               <Tab Label="Links">
                <Control Type="LinksControl" LabelPosition="Top" />
              </Tab>

     [그림 6]은 Parent -Child 유형의 링크 컨트롤의 예입니다.


    [그림 6]

    [작업 항목 쿼리]

    작업 항목의 Parent - Child 또는 Predecessor - Successor 관계는 작업 항목 쿼리를 통해 아래와 같이 조회할 수 있습니다 (그림 7, 그림 8 참조). 작업 항목이 hierarchy 구조로 조회되는 것을 확인할 수 있습니다.

    [그림 7]

     

    [그림 8] 

    작업 항목을 hierarchy 구조로 조회할 수 있도록 작업 항목 쿼리 유형이 두 개 추가되었습니다.

    • Flat List of Work Items: 기존의 쿼리 유형
    • Work Items and Direct Links: 작업 항목과 연결된 작업 항목도 같이 조회. 단, 직접 연결된 작업 항목만 조회 (그림 8 참조)
    • Tree of Work Items: 작업 항목과 연결된 작업 항목도 같이 조회. 작업 항목의 hierarchy 구조를 tree 구조로 표현한다 (그림 7 참조)

    작업 항목 쿼리 유형은 쿼리를 작성할 때 선택합니다. 선택한 작업 항목 쿼리 유형에 따라 쿼리를 작성하는 UI가 달라집니다.

    • Flat List of Work Items

    이 유형은 기존의 TFS 2005/2008에서 쿼리를 작성하는 것과 동일합니다.

    [그림 9]

    • Work Items and Direct Links

    이 유형은 작업 항목과 연결된 작업 항목을 조회할 수 있는 서브 쿼리를 작성할 수 있습니다. 서브 쿼리에서는 링크 유형을 선택하여 해당 링크 유형만 조회가 가능합니다.

    [그림 10]

    • Tree of Work Items

    이 유형은 쿼리를 작성하는 것은 TFS 2005/2008과 같지만 쿼리를 실행했을 때 결과는 Tree 구조로 표현되는 것이 다릅니다(쿼리 결과는 그림 7 참조).

    [그림 11]

     
    이상으로 TFS CTP10의 작업 항목 링크 유형과 작업 항목 쿼리 유형에 대해 살펴 보았습니다.

    작업 항목을 hierarchy 구조로 표현할 수 있게 되므로써 얻을 수 있는 장점은 여러가지가 있습니다.

    일단, 작업 항목의 선후 관계나 상하 관계를 직관적으로 알 수 있는 장점이 있습니다. TFS 2005/2008에서는 이런 관계를 명시하기 위해서는 단지 comment에 두 작업 항목의 관계를 입력하는 정도였습니다. 하지만, 그 방법은 comment를 일일이 읽어야 한다는 불편함이 있습니다.

    그리고, MS Project와 연계에 있어서 자연스러워졌다는 점입니다. MS Project에서 작업을 tree 구조로 표현한 것과 작업의 선후 관계를 표현한 것이 그대로 TFS에서도 표현이 가능해졌습니다. 따라서, 두 도구의 작업 sync.가 더욱 쉬워졌습니다.

    예전에는 작업 항목을 hierarchy 형태로 보려면 보고서를 작성해야 했습니다. 이제 보고서를 작성해야 하는 번거로움이 줄어들었습니다.

    앞으로도 블로그를 통해 TFS CTP10에서 새로워진 기능을 중심으로 어떻게 사용하는지, 그리고 그 기능을 통해 어떤 점이 좋아졌는지를 살펴 보겠습니다.

     webmars.

     http://cafe.naver.com/teamsystem