태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

VS 2010 ALM2011.11.17 16:08
저와 저희 팀원들이 함께 번역한 책이 출간되어 소개합니다.




성공적인 프로젝트를 위한 Visual Studio ALM 지침서

마이크로소프트 직원들이 저자로 참여한 이 책은 Visual Studio를 이용하여 ALM을 수행하려는 여러분에게 도구 사용법과 지침, 방법론 등에 대한 기본적인 가이드를 제공한다. 이 책은 실무에 바로 적용할 수 있는 기술과 모범 사례를 중심으로 설명하고 있으며 자세한 샘플 코드와 예제도 함께 제공한다. 여러분은 이 책을 통해 새로운 UML 모델링 도구와 향상된 디버깅 기술, 수동 테스트 기능, TFS의 새로운 아키텍처 등에 대해서 배우게 될 것이다. 이 책을 읽고 나면 여러분은 Visual Studio를 사용하여 기업 솔루션을 모델링 및 디자인할 수 있으며 체계적으로 구성할 수 있다.

이 책의 특징

Architecture Explorer 사용 예제와 이를 통해 응용 프로그램의 아키텍처를 쉽게 이해하는 방법을 다룬다.
Visual Studio로 응용 프로그램을 구현하는 개발자들이 관심을 갖는 최근 이슈를 다룬다.
테스터를 위한 다양한 테스트 도구와 새롭게 추가된 테스트 랩 관리 기능에 대해 설명한다.
TFS 2010의 새로운 아키텍처와 버전 제어 기능에 대해 자세히 설명한다.
최신 프로세스 템플릿과 여기에 포함된 백로그 및 용량 계획 기능에 대해 다룬다.

Wrox Professional 가이드는 현직 프로그래머에 의해 계획되고 집필되었기 때문에 프로그래머와 개발자, IT 전문가들이 실무에서 필요로 하는 내용을 담고 있다. 이 가이드는 기술 전문가들이 매일 직면하는 이슈에 초점을 맞추고 프로그래머가 더 나은 일을 할 수 있도록 여러 예제와 실무에 도움에 되는 해결 방법, 새 기술에 대한 전문 교육 내용 등을 제공한다.

누구를 위한 책인가?

이 책은 상업용 소프트웨어 개발 및 기업용 소프트웨어 개발 분야의 전문 개발 팀, 다시 말해 중급 및 고급 개발자를 주요 대상으로 한다. 여러분이 다음에 속한다면 이 책에서 유용한 정보를 얻을 수 있을 것이다.

자신의 역할을 수행하는 데 Visual Studio 2010 제품군을 어떻게 활용하는지 배우고자 하는 개발자, 테스터 및 아키텍트
소프트웨어 개발 프로젝트를 관리해야 하는 프로젝트 관리자

이 책은 완전 초보자를 위한 것은 아니다. 이 책에서는 도구, 코드 샘플, 실습 시나리오의 실제 응용에 중점을 두고 있다.

Visual Studio 2010은 모든 규모의 소프트웨어 개발 팀에 맞게 설계되었다. 따라서 팀 구성원이 5명이든 2,000명이든 이 책에서 Visual Studio 2010과 응용 프로그램 생명 주기 관리와 관련된 유용한 정보를 얻을 수 있을 것이다. 대부분의 Wrox 책과 달리, 이 책은 개발자뿐만 아니라 소프트웨어 개발 조직의 모든 역할자 -아키텍트, 개발자, 테스터, 프로젝트 관리자- 를 위한 책이다.

코드 다운로드 및 정오표
http://as.wiley.com/WileyCDA/WileyTitle/productCd-0470484268.html

이 책에는 Visual Studio 2010의 응용 프로그램 생명주기 관리 기능에 대한 전체 개요가 포함되어 있다.

1부: 아키텍트
이 섹션에서는 아키텍트 역할과 관련된 Visual Studio 2010의 기능에 대해 알아본다. 아키텍처 개념에 대한 간략한 소개 후에 새로운 UML 도구와 유스 케이스 다이어그램(use case diagram), 액티비티 다이어그램(activity diagram), 시퀀스 다이어그램(sequence diagram), 클래스 다이어그램(class diagram), 컴포넌트 다이어그램(component diagram)에 대해 자세히 다룬다. 그 다음으로, 아키텍터 탐색기에 대한 소개와 이것을 사용해서 응용 프로그램의 아키텍처를 이해하는 방법에 대해 설명한다. 마지막으로, 레이어 다이어그램에 대해 알아본다.

2부: 개발자
이 섹션에서는 Visual Studio 2010으로 응용 프로그램을 개발하는 개발자들이 가장 관심을 갖는 내용을 모두 다룬다. 단위 테스트, 리팩터링, 정적 코드 분석, 코드 검사(code coverage)에 대해 자세히 설명한다. 데이터베이스 응용 프로그램 개발, 테스트, 배포 기능에 대해서도 다루며, IntelliTrace 기능을 사용한 향상된 응용 프로그램 디버깅 기술에 대해서도 설명한다.

3부: 테스터
Visual Studio 2010에는 테스터가 사용할 수 있는 많은 도구가 있는데, 이 섹션에서는 그 도구들에 대해 다룬다. 웹 성능 테스트 및 부하 테스트를 살펴보는 것을 시작으로, 새로운 수동 테스트 기능과 자동화된 사용자 인터페이스 테스트 기능에 대해 설명한다. 이 섹션에서는 새로운 기능인 Lab Management에 대해서도 설명되는데, 이 기능은 가상 컴퓨터를 사용해 테스트를 실행할 수 있는 테스트 환경을 자동으로 재구성하는 데 사용된다.

4부: Team Foundation Server
이 섹션에서는 Team Foundation Server가 제공하는 모든 기능에 대해 살펴본다. Team Foundation Server 2010의 새로운 아키텍처에 대해 설명하며, 버전 제어 시스템과 Team Foundation Server를 이용한 분기 및 병합의 모범 사례 몇 가지를 다룰 것이다. 마지막으로, Team Foundation Build의 자동 빌드 절차가 어떻게 새로워졌는지 자세히 살펴본다.

5부: 프로젝트/프로세스 관리
이 책의 마지막 섹션에서는 Visual Studio 2010과 Team Foundation Server의 프로젝트 및 프로세스 관리 기능에 대해 다룬다. Team Foundation Server에 새로 추가된 프로세스 템플릿에 대해 살펴보며, 그와 더불어 백로그 및 용량 계획 기능에 대해서도 살펴본다. Team Foundation Server에 포함된 보고서에 대해서도 알아본다. 마지막으로, 좀 더 일반적인 프로세스 템플릿 커스터마이징 방법 몇 가지에 대해 살펴본다.
Posted by webmars
VS 2010 ALM/TFS 20102011.08.04 16:04

TFS 11에는 새로운 버전 제어 기능이 추가된다고 하네요.

Local Workspace가 그것인데요.

기존의 Workspace는 Server Workspace로 서버가 'master'였고, Local Workspace는 클라이언트가 'master'입니다.

TFS 11에서는 두 유형 모두 지원하며, Local Workspace가 default라고 하네요.


자세한 내용은 아래 URL을 따라가 보시기 바랍니다.


http://blogs.msdn.com/b/bharry/archive/2011/08/02/version-control-model-enhancements-in-tfs-11.aspx


아마도, 이 기능은 TFS와 연결이 끊긴 상황에서의 작업이 많은 또는 잦은 사이트에서 유용할 것 같습니다.


몇 개월 전에 어느 고객 사이트를 방문했을 때, 개발자 몇 분이 Local Workspace와 같은 기능이 있었으면 좋겠다라고 저에게 얘기한 적이 있었습니다. 현재 TFS의 버전 제어 기능(Server Workspace)으로는 불편하다고 하면서요.

아마도, 그 분들이 이 소식을 알게되면 좋아라 하지 않을까 싶습니다.


그 고객 사이트는 기계를 제어하는 소프트웨어를 개발하는 업체인데,

소스 코드가 변경되면 기계가 설치된 곳에 직접가서 실전 테스트를 하고, 거기서 직접 소스 코드를 수정하곤 한답니다.

즉, TFS와 연결이 끊긴 상황에서 소스 코드를 수정하는 것이지요.

그리고, 본사로 복귀해서 변경된 내용을 TFS에 반영합니다.


그래서, 이런 분들에게는 Server Workspace가 아닌 Local Workspace 기능이 매우 유용할 것 같습니다.



감사합니다.

webmars.
Posted by webmars
VS 2010 ALM/TFS 20102011.08.02 16:52

최근에 TFS 팀 빌드를 하다가 다음과 같은 오류가 나타났었다.


c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1835,9): error MSB4018: "GenerateResource" 작업에서 예기치 않은 오류가 발생했습니다.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1835,9): error MSB4018: System.Runtime.InteropServices.ExternalException (0x80004005): GDI+에서 일반 오류가 발생했습니다.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1835,9): error MSB4018:    위치: System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams) c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1835,9): error MSB4018:    위치: System.Drawing.Image.Save(MemoryStream stream)

<이하 생략>


그 동안 TFS 빌드를 많이 사용해 봤지만, 이런 오류 메시지를 본 것은 처음이었다.

이상한 것은 Visual Studio에서 빌드를 하면 정상적으로 빌드가 되는데, TFS 빌드를 하면 위와 같은 오류가 나타난다는 것이었다.


여느때처럼 Visual Studio Team System 포럼과 구글을 뒤지기 시작했다.

관련 글이 많지는 않았지만, 그래도 가장 근접한 질문과 답변이 있는 글을 찾았다.

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/00092964-946f-42f1-b4d4-2afeab13f9e3/


위의 글을 보면 알겠지만, 질문을 올린 것은 2006년 6월 20일인데 그 이후로 2010년 3월 5일까지 댓글들이 달렸다. ㅡㅡ;;

어찌보면, 위와 같은 오류의 원인이 오랜 시간 동안 완전히 해결되지 않고 있다는 반증인 것 같다.

아니면, 오류가 발생하는 원인이 다양하던가...


어쨌든, 여기서 제시하는 몇 가지 방법을 시도해 보았다.

하지만, 소용이 없었다.


그래서, 원점에서부터 생각을 다시 해 보았다.

Visual Studio를 사용할 때와 TFS 빌드를 사용할 때의 차이점이 무엇일까?


동일한 컴퓨터에서 빌드를 했기 때문에 빌드 환경에는 차이가 없음이 분명했다.


유일한 차이점이라면, 빌드를 하는 계정이 다르다는 것이었다!

Visual Studio에서는 내가 로그인한 계정으로 빌드를 하지만, TFS 빌드는 빌드 서비스 계정이 빌드를 하는 것이다.


그래서, 사용자 계정에 대한 권한의 문제로 생각하고,  TFS 빌드 서비스 계정에 대한 권한을 다양하게 변경해 보았다.

그러나, 이것도 소용없었다.



혹시나 하는 마음에 cache 정보를 삭제하기로 했다.

각 사용자 별 cache 정보는 다음 위치에 있다.

C:\Users\<사용자ID>\AppData\Local\Microsoft\Team Foundation\3.0\Cache

* C:\Users\<사용자ID>\AppData 폴더가 안 보인다면, Windows 탐색기의 폴더 옵션에서 숨김 폴더에 대한 설정을 변경해야 한다.


Windows 탐색기에서 이 폴더로 이동한 다음 Cache 폴더 밑에 있는 모든 폴더 및 파일을 선택하고 삭제를 했다.

그런데, 특정 폴더 하나가 삭제가 안 되면서 다른 프로세스에서 사용 중이라 삭제가 안 된다는 메시지가 나타났다.


순간, 어떠한 이유에서인지는 몰라도 어떤 프로세스가 이 cache 폴더에 lock을 걸고 있어서 그럴 것이라고 생각을 했고, 그 어떤 프로세스는 분명 빌드 프로세스일 거라는 확신이 들었다.

그래서, 빌드 프로세스를 중지했다가 다시 시작하기로 했다.


빌드 프로세스를 다시 시작하려면 관리 도구의 서비스에서 빌드 관련 서비스를 다시 시작해도 되고, Team Foundation 관리 콘솔에서 빌드 서비스를 다시 시작해도 된다.


Team Foundation 관리 콘솔에서 빌드 서비스를 다시 시작하기로 했다.


  1. 시작->모든 프로그램->Microsoft Team Foundation Server 2010->Team Foundation 관리 콘솔 클릭
  2. Team Foundation 관리 콘솔 화면의 왼쪽 패널에서 빌드 구성 클릭
  3. 빌드 구성 화면에서 빌드 서비스의 다시 시작 클릭
  4. 빌드 컨트롤러 및 빌드 에이전트가 준비 상태인지 확인


빌드 서비스를 다시 시작한 후, 다시 cache 폴더로 가서 아까 삭제되지 않았던 폴더를 다시 삭제해 보았다.

이번에는 삭제가 잘 됐다. 역시, 빌드 프로세스가 그 폴더에 lock을 걸고 있었던 거다.

근데, 왜 그랬지??? 그 원인은 알 수가 없었다. 쩝~~~ (뭔가 찝찝해... ㅡㅡ)


폴더를 삭제한 후, TFS 빌드를 다시 수행했다. 아무 문제없이 TFS 빌드가 성공되었다.

휴~~~


여러분들 중 만약 TFS 빌드를 하다가 저와 같은 오류가 발생하거든 먼저

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/00092964-946f-42f1-b4d4-2afeab13f9e3/

에 있는 해결 방법들을 따라해 보시고, 그래도 안 될 경우 cache 폴더 밑에 있는 모든 폴더 및 파일을 삭제해 보길 바란다.


소 뒷걸음질치다가 쥐 밟는 격이지만... 그래도 누가 아는가? 저처럼 문제가 해결될지... ㅋㅋㅋ... ㅡㅡ;;;


감사합니다.

webmars.

Posted by webmars
VS 2010 ALM/TFS 20102011.07.29 15:52

[TFS 2010, Team Explorer 2010, TF Build 2010]

TFS 빌드를 사용해서 솔루션 및 프로젝트를 빌드하면, 빌드된 파일들은 하나의 폴더(drop location)로 복사된다.

그런데, 어떤 경우에는 빌드된 파일을 drop location이 아닌 특정 폴더로 복사해야 하는 경우가 있다.

예를 들어, xap 파일을 ClientBin 폴더로 복사를 해야한다거나, aspx 파일을 웹 사이트의 가상 경로로 매핑된 폴더로 복사를 해야하는 경우가 그렇다.


이 글에서는 Build Process Tempate을 수정해서, 빌드 후에 파일을 특정 폴더로 복사하는 방법에 대해 설명할 것이다.


자세한 방법을 설명하기 전에 먼저 전체적인 진행 과정을 요약해 보면 다음과 같다.

  1. 새 빌드 정의를 만든다.
  2. 기본 빌드 프로세스 템플릿(DefaultTemplate.xaml)을 기반으로 새 빌드 프로세스 템플릿을 만든다.
  3. 새 빌드 프로세스 템플릿에 파일을 복사하는 절차를 추가한다.
  4. 새 빌드 정의를 실행시킨다.



그럼, 이제 위의 과정 별로 자세한 절차에 대해 살펴보자.

[1.새 빌드 정의 만들기]

  1. 이 과정은 MSDN 라이브러리 참조



[2.새 빌드 프로세스 템플릿 만들기]

  1. '1. 새 빌드 정의 만들기'에서 만든 빌드 정의 화면을 닫았을 경우, 팀 탐색기에서 새로 만든 빌드 정의에 마우스 오른쪽 클릭 후, 빌드 정의 편집 클릭
  2. 프로세스 탭 클릭
  3. 빌드 프로세스 템플릿에서 자세한 정보 표시 클릭
  4. 새로 만들기 클릭
  5. 기존 XAML 파일 복사 선택
  6. 복사할 파일 선택에 DefaultTemplate.xaml이 선택되었는지 확인
    1. 만약, 선택되어 있지 않다면 찾아보기를 눌러 DefaultTemplate.xaml을 선택
  7. 새 파일 이름에 새 빌드 프로세스 템플릿 이름 입력 (예: FileCopyTemplate)
  8. 확인 클릭
  9. 빌드 프로세스 파일의 값이 새로 만든 빌드 프로세스 템플릿으로 변경됨



[3.새 빌드 프로세스 템플릿에 파일을 복사하는 절차 추가]

  1. '2.새 빌드 프로세스 템플릿 만들기'에 이어서, 버전 제어 경로의 하이퍼링크 클릭
  2. 소스 제어 탐색기에서 7에서 명명한 빌드 프로세스 템플릿을 찾아 마우스 오른쪽 클릭 후, 최신 버전 가져오기 클릭
  3. 다시 템플릿에 마우스 오른쪽 클릭 후, 편집하기 위해 체크 아웃 클릭
  4. 또 다시 템플릿에 마우스 오른쪽 클릭 후, 보기 클릭
  5. 빌드 프로세스 템플릿 편집 화면의 오른쪽 위에 있는 복원 클릭 후, 모두 축소 클릭. 만약, 복원이 안 보인다면 모두 축소 클릭.
  6. 다음의 순서대로 각 활동 요소를 확장
    1. 에이전트에서 실행
    2. 변경 집합과 작업 항목 컴파일, 테스트 및 연결 시도
    3. Sequence
    4. 변경 집합과 작업 항목 컴파일, 테스트 및 연결
    5. 컴파일 및 테스트 시도
    6. 컴파일 및 테스트
    7. For Each Configuration in BuildSettings.PlatformConfigurations
    8. 구성에 대해 컴파일 및 테스트
    9. If BuildSettings.HasProjectsToBuild
    10. For Each Project in BuildSettings.ProjectsToBuild
    11. 프로젝트 컴파일 시도
    12. 프로젝트 컴파일
  7. 도구 상자에서 제어 흐름 도구 그룹의 Sequence를 프로젝트에 대해 MSBuild 다음으로 끌어다 놓음.
  8. 새로 추가한 Sequence 선택 후, 빌드 프로세스 템플릿 편집 화면의 왼쪽 아래에 있는 변수 클릭
  9. 변수 목록의 맨 마지막에 다음과 같이 변수 추가
    1. 이름: FileCopyDirectory
    2. 변수 유형: String
    3. 범위: Sequence
    4. 기본값: 파일을 복사할 폴더의 경로(예: D:\output\binaries).
    • 참고: 기본값에 기존에 있는 폴더를 지정해야 함. 빌드 과정에서 폴더를 새로 만들지 않음
  10. 변수를 다시 한 번 클릭하여 변수 목록 화면을 닫음
  11. 새로 추가한 Sequence 활동 요소를 확장
  12. 도구 상자에서 Team Foundation 빌드 활동 도구 그룹의 InvokeProcess를 7에서 추가한 Sequence 안으로 끌어다 놓음
  13. 새로 추가한 InvokeProcess에 마우스 오른쪽 클릭 후, 속성 클릭
  14. 속성 창에서 다음과 같이 각 항목 편집
    • DisplayName: Output File Copy
    • FileName: "xcopy.exe"
    • Arguments: String.Format("""{0}"" ""{1}"" /r/c/y", outputDirectory+filename, FileCopyDirectory)
      • filename: 복사할 파일 이름
      • 예: "\CoreBin.dll", "\*.dll", "\*.*"
  15. Ctrl+s를 눌러서 변경 내용 저장
  16. 소스 제어 탐색기에서 새 빌드 프로세스 템플릿에 마우스 오른쪽 클릭 후, 보류 중인 변경 내용 체크 인 클릭
  17. 체크 인 창에서 설명에 내용 입력 후, 체크 인 클릭
  18. '1.새 빌드 정의 만들기'에서 만든 빌드 정의 화면에서 Ctrl+s를 눌러 빌드 정의 저장
  19. 빌드 정의 화면을 닫음



[4.새 빌드 정의 실행]

  1. '1.새 빌드 정의 만들기'에서 만든 빌드 정의에 마우스 오른쪽 클릭 후, 새 빌드 큐 대기 클릭
  2. 빌드 큐에 대기 창에서 큐 클릭
  3. 빌드 탐색기에서 실행 중인 빌드 정의에 마우스 더블 클릭
  4. 빌드 상세 화면에서 빌드 진행 상황 확인




빌드가 성공적으로 끝나면, Windows 탐색기에서 FileCopyDirectory(여기서는 D:\output\binaries) 폴더에 빌드된 파일이 복사되었는지 확인한다.


이 글에서는 빌드된 파일 중 일부 또는 전부를 특정 폴더로 복사하는 방법에 대해 알아보았다.


빌드 프로세스 템플릿 편집 화면에서 Parallel, ForEach<T>, FindMatchFiles 등의 활동 요소들을 활용하면 더욱 다양하고 복잡한 활동을 디자인 할 수 있다.


이 외에도 MSDN 라이브러리에는 빌드한 파일을 솔루션 및 프로젝트 구조 그대로 복사하는 방법에 대해 잘 설명되어 있다.

* 참고: 빌드 시스템에서 이진 파일을 배치하는 위치 제어(http://msdn.microsoft.com/ko-kr/library/ff977206.aspx)



감사합니다.


webmars.

Posted by webmars
VS 2010 ALM/TFS 20102011.07.21 18:32

최근에 한 사이트에서 TFS 환경을 구축하는데, TFS와 Build Service를 별도의 서버에 설치해야 하고, 기본적으로 방화벽이 모든 포트를 막고 있었기 때문에 필요한 포트를 신청해서 열어야 하는 상황이었다.


이런 상황에서 TFS 환경을 구축하다보니, '아, 포트 설정이 쉬운게 아니구나!'라는 걸 절실히 깨달았다.


다음은 그 사이트에서 TFS 환경을 구축하면서 설정했던 포트 중 Build Service에 대한 것만 간략하게 정리한 것이다.


================================================================================================

기본적으로 TFS Build Service는 9191 포트를 사용한다.

따라서, TFS의 빌드 자동화 기능을 사용하기 위해서는 방화벽에서 9191 포트에 대한 연결을 허용해야 한다.


TFS와 Build Service를 별도의 서버에 설치할 수도 있다.

만약, 두 서버 사이에 방화벽이 있다면 방화벽 설정에 유의해야 한다.


첫 번째로 Build Service 서버에서 TFS 서버로 8080 포트로 연결할 수 있도록 방화벽을 설정해야 한다.

이는 TFS Web Service를 사용하기 위한 것이다.


그리고, 두 번째로 TFS 서버에서 Build Service 서버로 9191 포트로 연결할 수 있도록 방화벽을 설정해야 한다.

만약, 이 포트가 열려있지 않으면 Build Service를 구성할 때 끝점(endpoint)에 연결할 수 없다는 오류 메시지가 나타날 것이다.


===================================================================================================

감사합니다.

webmars.
Posted by webmars
VS 2010 ALM/TFS 20102011.07.19 18:35

TFS 2010에는 팀 프로젝트 컬렉션이라는 개념이 새로 도입되었다. 팀 프로젝트 컬렉션은 여러 개의 팀 프로젝트를 묶는 하나의 그룹이라고 생각하면 이해하기 쉽다.

팀 프로젝트 컬렉션 끼리는 데이터(작업 항목, 변경 집합 등)를 공유하지 않기 때문에 논리적으로 분리된 별도의 TFS처럼 사용하면 된다.

팀 프로젝트 컬렉션 중에 더 이상 사용하지 않는 컬렉션은 삭제하는 것이 좋다. 관리적인 측면에서나 시스템 성능적인 측면에서 불필요한 컬렉션이 계속해서 존재하는 것은 효율성을 떨어뜨리기 때문에 그렇다.


참고로, TFS 2010에는 팀 프로젝트 컬렉션 및 팀 프로젝트 개수에 제한이 있다. 하나의 팀 프로젝트 컬렉션에 만들 수 있는 최대 팀 프로젝트 수는 200개이며, 하나의 SQL Server 인스턴스에 만들 수 있는 최대 팀 프로젝트 컬렉션 수는 50 ~ 200 (RAM 8GB ~ 60GB)이다.



팀 프로젝트 컬렉션 삭제는 Team Foundation 관리 콘솔에서 하면 된다. 다음은 Team Foundation 관리 콘솔을 사용해서 팀 프로젝트 컬렉션을 삭제하는 방법이다.

  1. 시작->모든 프로그램->Microsoft Team Foundation Server 2010->Team Foundation 관리 콘솔 선택
  2. Team Foundation 아래에서 서버의 이름을 확장하고 응용 프로그램 계층을 확장한 다음 팀 프로젝트 컬렉션 클릭
  3. 컬렉션 목록에서 삭제할 컬렉션의 이름을 클릭
  4. 일반 탭에서 팀 프로젝트 컬렉션 분리를 클릭
  5. (선택 사항) 팀 프로젝트 컬렉션에 대한 서비스 메시지를 제공하십시오. 페이지의 서비스 메시지에 이 컬렉션의 프로젝트에 대한 연결을 시도하는 사용자를 위한 메시지를 입력
  6. 다음을 클릭
  7. 팀 프로젝트 컬렉션을 분리하는 데 사용할 설정을 검토
  8. 변경할 설정이 있으면 이전을 클릭. 설정이 올바른 경우 확인을 클릭
  9. 모든 준비 검사가 완료되면 분리를 클릭
  10. 모든 프로세스가 완료되면 다음을 클릭
  11. 닫기를 클릭



팀 프로젝트 컬렉션은 하나의 데이터베이스와 연결되어 있기 때문에 관련 데이터베이스도 삭제해야 한다.

  1. SQL Server Management Studio를 열고 컬렉션 데이터베이스를 호스팅하는 SQL Server 데이터베이스 엔진의 인스턴스에 연결한 다음 해당 인스턴스를 확장
  2. 삭제할 데이터베이스를 마우스 오른쪽 단추로 크릭한 다음 태스크->오프라인으로 전환 클릭
  3. 오프라인으로 전환된 후, 삭제할 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 삭제를 클릭
  4. 올바른 데이터베이스가 선택되었는지 확인하고 확인을 클릭



이번엔 팀 프로젝트 컬렉션 사이트를 삭제하는 방법이다.

  1. SharePoint 중앙 관리를 열고 SharePoint 중앙 관리의 위쪽 링크 모음에서 응용 프로그램 관리를 클릭
  2. 응용 프로그램 관리 페이지의 SharePoint 사이트 관리 섹션에서 사이트 모음 삭제를 클릭
  3. 사이트 모음 드롭다운 목록에서 아래쪽 화살표를 클릭하고 사이트 모음 변경을 클릭
  4. 사이트 모음 선택 페이지의 URL 목록에서 삭제할 사이트를 클릭하고 확인 클릭
  5. 사이트 모음 삭제 페이지에서 삭제를 클릭
  6. 삭제할지 묻는 메시지 상자에서 확인을 클릭



마지막으로, 팀 프로젝트 컬렉션의 보고서 폴더를 삭제한다.

  1. Internet Explorer 실행한 다음 주소에 http://<tfsservername>/reports 입력
  2. tfsreports 폴더를 클릭
  3. 삭제할 팀 프로젝트 컬렉션과 이름이 같은 폴더의 드롭다운 버튼을 클릭
  4. 삭제를 클릭

그런데, Team Foundation 관리 콘솔에서 팀 프로젝트 컬렉션을 분리할 때 오류가 발생하는 경우가 있다. 특히, 팀 프로젝트 컬렉션이 오프라인 상태일 때 그렇다.

이런 경우에는 팀 프로젝트 컬렉션을 TFSConfig Collection이라는 명령어로 삭제해야 한다.

이 명령어는 C:\Program Files\Microsoft Team Foundation Server 2010\Tools 폴더에 있다.


다음은 TFSConfig Collection 구문이다.

TFSConfig Collection {/attach | /detach | /delete} [/collectionName:CollectionName] [/collectionDB:ServerName;DatabaseName] [/clone]


이 구문의 옵션에 대한 자세한 설명은 MSDN 라이브러리(http://msdn.microsoft.com/ko-kr/library/ee349263.aspx)를 참고하기 바란다.


다음은 MyTeamProjectCollection이라는 팀 프로젝트 컬렉션을 삭제하는 예제 구문이다.

TFSConfig Collection /delete /CollectionName:MyTeamProjectCollection


이와 같이 TFSConfig Collection 명령어로 팀 프로젝트 컬렉션을 삭제한 후, 데이터베이스, 팀 프로젝트 컬렉션 사이트, 보고서 등을 삭제한다.


감사합니다.

webmars.

Posted by webmars
VS 2010 ALM/TFS 20102011.07.19 17:32

TFS 운영하다 보면, 통합 성능, 업그레이드 등의 이슈 때문에 새로운 TFS 구축하는 경우가 있다.

새로운 TFS 구축할 가장 중요한 사항이 기존 TFS 있는 데이터를 어떻게 TFS 옮길까하는 것이다.

 

Microsoft MSDN 라이브러리 사이트(http://msdn.microsoft.com/ko-kr/library/ms404879.asp ) 보면, TFS 이동에 대해 자세히 설명이 되어 있다.

그런데, 문제는 설명이 너무 복잡하다는 것이다.

여기에는 소스 코드뿐만 아니라 작업 항목, SharePoint 사이트, 보고서 TFS 모든 구성 요소를 이동시키는 경우를 고려한 절차가 포함되어 있기 때문이다.

 

만약, 소스 코드와 이력만 옮기려고 하는데도 그런 복잡한 절차를 따라야 할까?

 

TFS Integration Tools 사용하면 소스 코드 작업 항목을 비교적 쉽게 TFS 옮길 있다.

 

TFS Integration Tools TFS TFS 또는 TFS 3rd-party 솔루션과의 데이터 이관 동기화를 위한 도구이다.

예를 들면, TFS 2005 있는 데이터를 TFS 2008 마이그레이션한다든지, IBM Rational ClearCase 있는 데이터를 TFS 2010으로 마이그레이션한다든지 사용된다.

도구에 대한 자세한 내용은 http://visualstudiogallery.msdn.microsoft.com/f854dd59-8eeb-4673-8d9a-ae012989bfa2 (영문) 참조하기 바란다.

 

[Note]
사례로 현재 제가 기술지원 중인 사이트에서 도구를 사용해서 대의 기존 TFS에서 새로운 TFS 소스 코드와 이력을 마이그레이션하여 통합했습니다.

실제로 사용해 보니, 사용하기도 쉽고 마이그레이션도 되더군요

특히, 소스의 폴더 구조를 새롭게 정의하고, 이전 소스 코드들을 폴더 구조로 마이그레이션하는데도 유용했습니다.

  

글에서는 TFS Integration Tools 사용해서 TFS 2010에서 다른 TFS 2010으로 소스 코드와 이력을 마이그레이션하는 방법에 대해 설명한다.

 

먼저, http://visualstudiogallery.msdn.microsoft.com/f854dd59-8eeb-4673-8d9a-ae012989bfa2 에서 TFS Integration Tools 다운로드 받는다.

설치하는 방법은 그냥 Next, Next, … 누르면 되므로 생략!

 

다음은 TFS Integration Tools 초기 화면이다.

 

 

 

그럼, 이제 도구를 사용해서 소스 코드와 이력을 옮겨보자!

 

1.        시작->모든 프로그램->Microsoft Team Foundation Server Integration Tools->TFS Integration 차례로 선택

2.        TFS Integration Tools 초기 화면의 왼쪽 패널에서 Create New 클릭

3.        Choose a template 창에서 Team Foundation Server 폴더 클릭 , VersionControl.xml 파일 선택


4.        열기 클릭

5.        Configuration 화면에서 Left Source Configure.. 클릭 , TFS 2010 Migration VS Provider 클릭


6.        Connect to Team Project 창에서 옮길 소스가 있는 TFS 서버, 프로젝트 컬렉션, 프로젝트를 차례로 선택한 다음, 연결 클릭.


7.        Right Source Configure.. 클릭 , TFS 2010 Migration VS Provider 클릭

8.        Connect to Team Project 창에서 소스를 옮길 TFS 서버, 프로젝트 컬렉션, 프로젝트를 차례로 선택한 다음, 연결 클릭.

9.        Paths에서 왼쪽 버튼을 클릭하여 옮길 소스 코드가 있는 폴더(소스 폴더) 선택한 다음, 오른쪽 버튼을 클릭하여 소스 코드를 옮길 폴더(타깃 폴더) 선택

A.        만약, 옮길 폴더가 여러 개일 경우에는 Add New 버튼을 클릭하여 폴더 추가

B.         주의: 아래 그림에서와 같이 소스 폴더를 WiBoard/source, 타깃 폴더를 MyTeamProject/source 설정했을 경우, WiBoard폴더에 포함된 모든 폴더/파일이 MyTeamProject 폴더 밑으로 복사됨



10.     소스 폴더와 타깃 폴더 설정이 끝나면, Save to Database 클릭


11.     설정 내용이 Database 저장되고 나면, 화면이 다음과 같이 전환됨


12.     왼쪽 패널에서 Current Migration 밑의 Start 클릭

A.        소스 코드 이력의 마이그레이션이 시작된다.

13.     마이그레이션이 완료되면 화면 위쪽에 ‘Your current session completed successfully.’라는 문구가 나타남


14.     MyTeamProject/source 폴더 밑으로 소스 폴더에 포함된 폴더들이 마이그레이션된 것을 확인할 있음


15.     폴더뿐만 아니라 폴더/파일의 이력도 마이그레이션되었음

A.        TFS Integration Tools 마이그레이션 방법은 이전 TFS 버전 제어 이력대로 하나 하나 체크 인을 하는 같음.

B.         따라서, 아래 그림에서와 같이 새로운 TFS 체크 인된 이력의 설명에 이전 TFS 이력이 기록되어 있음.

 

 

외에도 TFS Integration 통해 작업 항목도 마이그레이션 있다.

그러나, TFS 모든 데이터를 마이그레이션 있는 것은 아니다. 마이그레이션 없는 것들도 많이 있다.

 

다음은 도구로 마이그레이션 없는 것들이다.

l  Check-in notes

l  Labels

l  Permissions

l  Workspaces

l  Pending Changes

l  Shelvesets

l  File encodings

l  Subscriptions

l  Test Cases

l  Check-in policies

l  Reports

l  Team Portal / SharePoint

l  Process Templates

l  Work item queries

l  Builds

l  Warehouse data

 

 감사합니다.

 webmars.

Posted by webmars
VS 2010 ALM/VS 20102011.07.08 16:44

Visual Studio 2010에는 Coded UI TestManual Test라고 하는 새로운 테스트 유형이 추가되었다.

(Coded UI Test는 VS Premium 또는 Ultimate Edition에서, Manual Test는 Test Professional 또는 VS Ultimate Edition에서 사용할 수 있다.)


이 두 개의 테스트 유형에는 테스터의 행위를 기록 및 재생하는 기능이 있다.
이는 응용 프로그램을 테스트하는 테스터의 마우스 및 키보드 이벤트를 기록해 두었다가 나중에 자동으로 다시 실행할 수 있도록 하는 기능이다.

다시 말하면, 테스터가 어느 화면에서 조회 조건에 값을 입력한 후 조회 버튼을 클릭하면 이 행위들을 기록해 두었다가, 나중에 그 행위들을 자동으로 재생하는 것이다.


참고로, Web Performance Test(예전엔 Web Test였죠)에도 웹 페이지에서의 행위들을 기록하는 기능이 있는데, 이는 HTTP Request와 Response를 기록해 두는 것이어서, Action Recording과는 다르다.


이 기능을 사람들에게 소개하면 많은 사람들이 긍정적인 반응을 나타낸다.
매번 동일한 테스트 행위를 반복하는 것이 아니라, 한 번할 때 기록해 두었다가 다음엔 재생을 할 수 있으므로.

하지만, 이 기능은 .NET Framework 2.0 이상의 버전을 사용하여 개발한 응용 프로그램에 대해선 완벽하게 지원하지만, 그 외의 응용 프로그램에서 대해서는 일부 기능이 제한되기 때문에 실무에 적용하기에 앞서 제약 사항을 꼼꼼히 살펴보아야 한다.

특히, 3rd-Party 컨트롤을 사용하는 경우에는 그 컨트롤을 식별하지 못할 수도 있기 때문에, 나중에 재생을 할 수가 없다.


최근에 모 사이트에서 Silverlight 기반의 응용 프로그램에 대해 Coded UI Test 및 Manual Test의 Action Recording을 적용해 보려고 하다가, 위와 같은 문제에 부딪혔었다.

우선, Action Recording 기능은 Silverlight 3을 지원하지 않으며, Silverlight 4에 대해서는 VS 2010 Feature Pack 2를 설치해야 한다.

다행이 이 사이트에서는 Sliverlight 4를 기반으로 응용 프로그램을 만들고 있어서, 이 두 가지 유형의 테스트를 적용해 보기로 했다.
그런데, Visual Studio에서 기본적으로 제공하는 Silverlight 컨트롤에 대해서는 Action Recording이 정상적으로 기록되고 재생되지만, 3rd-Party 컨트롤의 경우에는 해당 컨트롤에 대한 이벤트를 기록하지 못했다.


그 이유를 찾아 본 결과, Coded UI Test 및 Action Recording을 만들 때, 해당 Silverlight 컨트롤을 식별할 수 있도록 구현이 되어 있어야 하는데, 3rd-party 컨트롤들은 그렇게 하지 않았기 때문이었다.
어찌보면, 당연한 것을 간과하고 적용하려 했던 것이다.


그렇다면, Silverlight 컨트롤을 식별할 수 있도록 하려면 어떻게 해야 할까?

다음 URL을 참조하기 바란다.


그리고, Coded UI Test 및 Action Recording을 지원하는 구성 및 플랫폼에 대한 정보는 다음 URL을 참조하기 바란다.



현재, 이 사이트에서는 Silverlight 4 응용 프로그램에 대한 Coded UI Test 및 Action Recording 기능을 배재하고 있다. 3rd-pary 컨트롤을 개발한 회사에서 컨트롤을 식별할 수 있도록 수정해 주지 않는 한 다른 방법이 없기 때문이다.



감사합니다.

webmars.

Posted by webmars
VS 2010 ALM/TFS 20102011.07.04 16:38

TFS 2010 버전에서는 하나 이상의 Team Project(이하 TP)를 묶어서 하나의 그룹으로 만들 수가 있다. 이 그룹을 Team Project Collection(이하 TPC)이라고 한다.


 TPC는 논리적으로 독립된 하나의 TFS라고 생각하면 이해하기 쉽다. 즉, TPC 별로 사용자 그룹, 프로세스 템플릿, 변경 집합 번호, 작업 항목 번호 등을 공유하지 않는다.

TPC 별로 SQL Server에 하나의 데이터베이스가 생성되며, 같은 TPC 에 포함된 모든 TP의 데이터(소스 코드, 작업 항목, 문서, 테스트 결과 등)는 하나의 데이터베이스에 저장된다.


 실무에서는 솔루션을 개발하는 조직인 경우, 각 솔루션 별로 TPC를 만들어서 소스 코드, 산출물, 테스트 결과, 자원 등을 따로 관리한다. 또한, 개발 프로젝트에서는 각 프로젝트 별로 TPC를 만들어서 프로젝트 산출물들을 관리한다.

그런데, TFS 2005와 TFS 2008버전에는 TPC가 없었기 때문에, 솔루션이 다르거나 프로젝트가 달라도 사용자 그룹, 변경 집합 번호, 작업 항목 번호 등을 공유해야만 했다.

그렇다면, TFS 2005와 TFS 2008을 사용하던 조직에서 TFS를 2010 버전으로 업그레이드하고, 기존의 TP들을 여러 TPC로 나누는 방법은 없을까?

다행히도, TFS 2010은 이러한 기능을 제공하며, 이를 'Team Project Collection을 분할한다'라고 한다.


 TPC를 분할하는 절차를 간략하게 설명하면 다음과 같다.

(이 글에서는 TPC 분할에 대한 상세한 절차는 생략한다. 다만, 전체적으로 어떤 절차를 거쳐 TPC를 분할하는지 이해하는 것이 목적이다.

TPC 분할에 대한 자세한 내용은 http://msdn.microsoft.com/ko-kr/library/dd936158.aspx 를 참조한다.)
 

  1. TFS를 2010버전으로 업그레이드한다.
  2. 원래 TPC을 중지한다.
  3. 원래 TPC 데이터베이스를 백업한다.
  4. 다른 이름으로 TPC 데이터베이스를 복원한다.
  5. 원래 TPC 데이터베이스와 새 TPC 데이터베이스를 연결(attach)한다.
  6. 원래 TPC와 새 TPC에서 TP를 삭제한다.
    • 두 TPC에 포함된 TP가 서로 중복되지 않을 때까지 반복한다.
  7. 원래 TPC와 새 TPC를 시작한다.
  8. 원래 TPC와 새 TPC에 대한 사용자 및 그룹을 구성한다.


참고로, 위의 절차에는 Lab Management 및 SharePoint 사이트, 보고서, MS Project Server와 관련된 절차는 생략하였다.


그렇다면, 어떤 상황에서 TPC를 분할해야 할까? MS에서는 다음과 같은 상황에서 TPC 분할을 고려하라고 말하고 있다.

  • 조직의 부서 단위에 맞춰 컬렉션의 프로젝트를 배치하고 컬렉션의 프로젝트를 각 부서에서 개별적으로 소유하게 하려는 경우
  • 이전 버전의 Team Foundation Server에서 업그레이드한 후 컬렉션이 한 개뿐인 상황에서 보안이나 효과적인 업무 배치 등을 위해 프로젝트를 개별 컬렉션으로 구성하려는 경우
  • 컬렉션의 일부 프로젝트에 대한 소유권을 Team Foundation Server가 자체 배포되어 있는 원격 사무실로 이전하려는 경우. 이 시나리오를 수행하려면 먼저 컬렉션을 분할한 다음 분할된 컬렉션 중 하나를 원격 사무실 배포로 이동해야 합니다.


위와 같은 상황은 국내에서도 충분히 있을 수 있고, 그러한 상황에서 TPC를 분할하는 것이 TFS를 효과적으로 활용할 수 있다는데 공감한다.


감사합니다.


webmars.

Posted by webmars
VS 2010 ALM/TFS 20102011.06.30 11:23

TFS 2010에서는 CAL(Client Access License)없이 작업 항목을 만들거나 조회할 수 있게 되었네요.

이렇게 하려면, 엑세스하려는 팀 프로젝트 및 팀 프로젝트 컬렉션을 호스팅하는 TFS의 Work Item Only VIew Users라는 그룹에 추가되어야 하고, 작업 항목을 만들고 조회하려는 팀 프로젝트의 Contributors 그룹의 멤버이거나 이 노드의 작업 항목 보기이 노드의 작업 항목 편집 권한이 허용으로 되어 있어야 합니다.

위와 같이 사용자를 그룹에 추가하거나 권한을 주면,Team Web Acces에서 해당 팀 프로젝트에 작업 항목을 만들 수도 있고, 자신이 만든 작업 항목을 조회할 수도 있습니다.




그런데, 자신이 만든 작업 항목만 조회할 수 있다는 점이 좀 당황스러운데요.
즉, 다른 사람이 나한테 할당한 작업은 조회할 수가 없다는 거죠.

그렇지만, 아래 두 가지 경우에서는 활용성이 있어 보입니다.

  1. 팀원들에게 작업을 할당하고, 진행 상황을 모니터링하는 관리자
  2. 전산 부서에 CSR(Customer Service Request)을 요청하는 현업 부서 사용자(End User)

위의 두 경우에 해당하는 사용자라면 CAL없이 TFS를 활용할 수 있기 때문에 비용 절감 측면에서 도움이 될 것 같습니다.
예전에는 전산 부서 20명에 현업 부서 1000명이고, 현업 부서에서 TFS에 CSR을 요청하려면 CAL이 1020개 필요했었는데, 이제는 20개만 있으면 될 것 같네요.


[NOTE]
Work Item Only VIew Users 그룹에 속한 사용자라도 팀 탐색기에서 TFS 기능들을 사용하는데는 문제가 없습니다.
즉, 팀 탐색기에서 쿼리를 사용해서 작업 항목을 조회(다른 사용자가 만든 것도 가능)한다거나, 버전 제어 기능을 사용한다거나, 팀 프로젝트 포탈 및 보고서 사이트를 사용하는데 전혀 문제가 없습니다.
다만, Team Web Access의 UI 및 기능에만 제한이 있습니다.
하지만, 팀 탐색기를 사용해서 TFS를 사용하려면 Work Item Only View Users 그룹에 속한 사용자라도 CAL이 있어야 하겠죠.


감사합니다.

webmars.
Posted by webmars