본문 바로가기

Development

Visual Studio Team System과 협업

특집 6부에서는 전체 개발팀의 협업 향상을 통한 생산성을 향상을 위한 방안 최근 2~3년 사이에 주목 받고 있는 ALM의 현재 위치를 짚어보고, 제 2세대 마이크로소프트(이하 MS)의 ALM 솔루션으로 MS의 VSTS(Visual Studio Team System)가 개발 조직에 가치를 제공하는지 알아본다.

비즈니스는 치열한 경쟁 구도 속에서 빠르게 변화하고 있다. 이러한 비즈니스적인 변화는 오늘날 비즈니스 가치 창출에 지대한 영향을 미치는 IT 환경에도 많은 변화를 요구하고 있다. 애플리케이션 개발 환경 역시 이러한 변화에 의해 애플리케이션 수명 주기 관리, 팀 협업 환경 제공, 전체 개발팀의 생산성 향상 및 소프트웨어의 품질 및 성능 향상을 지속적으로 요구 받고 있다.

그러나 실제로 오늘날의 IT 개발 조직에서는 여전히 팀 간의 협업이나 전체 개발팀의 생산성 향상, 품질 향상은 해결해야 하는 중요한 고민 중의 하나로 자리 잡고 있다.

ALM(Application Life Cycle Management, 이하 ALM)은 최근 2~3년 전부터 이러한 개발 조직에서의 고민을 해결하기 위한 솔루션으로 대두되어 왔다. 특집 6부에서는 ALM이 현재 어떻게 진화되어 가고 있는지 설명하고, ALM 솔루션으로 MS의 Visual Studio Team System(이하 VSTS) 이 개발 조직에 어떤 가치를 제공할 수 있는지에 대해 살펴본다.

  개발 생산성 향상을 위한 솔루션: ALM

ALM은 애플리케이션 개발의 전체 주기, 즉 요구 사항 수집에서부터 모델링과 프로그래밍(개발), 형상관리 그리고 테스트와 프로젝트 관리로 이어지는 애플리케이션 개발의 전 과정을 체계적으로 통합하고 시각화해 관리하기 위한 접근방법이다.

이러한 ALM은 애플리케이션 개발 프로젝트가 복잡해짐에 따라 프로젝트의 성공률을 높이고 개발 작업을 보다 효율화하기 위해 애플리케이션 관점에서 개발과정의 통합이 절실히 필요하다는 요구로 인해 주목 받기 시작했다.

ALM에 대한 정의는 각 벤더나 애널리스트에 따라 약간의 차이가 존재한다. 포레스터(Forrester)는 “ALM이란 요구사항과 모델링, 개발, 빌드, 테스팅과 같은 애플리케이션 개발 라이프사이클과 관련된 활동들을 강제하는 프로세스와 개발 산출물과 활동 간의 관계 추적, 개발 진행에 대한 리포팅을 통해 관리하는 것을 의미한다”고 ALM을 정의하고 있다.

그렇다면 이러한 목적의 ALM은 현재 시장에서 어떤 위치에 있으며, 개발 환경에서 협업과 생산성 향상 측면에서 기대한 만큼의 성과를 거두고 있는 것일까?

2005년 11월 포레스터의 ALM 조사 자료에 따르면 조사 고객 중 29%가 이미 ALM 솔루션을 사용하고 있으며, 48%가 ALM 솔루션에 대해 인지하고 있는 것으로 나타났다.

반면에 실제 ALM 솔루션에 대한 이해도나 적용을 계획하고 있는 고객은 그 관심도에 비해 그다지 높지 않다고 보고되었다. 해당조사 결과는 북미 유럽을 대상으로 한 것으로 국내와 다소 차이가 있을 수 있지만 ALM은 많은 사람들이 관심의 대상이었고, 많은 사람들이 그 의미를 알고 있는 것에 비해, 실제 제대로 이해되고 있다.

실제 도입되어 개발 환경에서의 생산성 향상에 기여하고 있는가에 대한 부분에 대해서는 국내 역시 위의 결과와 크게 다르지 않다고 볼 수 있을 것이다.

<그림 1> ALM 솔루션 관련 설문조사 결과(출처: Forrester Research, Inc)

이에 대한 원인은 과연 무엇일까? 이를 자세히 살펴보면 기존의 ALM 솔루션들이 각각 역할을 담당하는 하는 툴과 툴 간의 미미한 통합을 주축으로 하는 개발 관리 솔루션에만 머물러 있어 있었으며, 실제로는 전체 개발 단계의 작업들을 유연하게 엮어내지 못함으로써 고객이 투자한 만큼의 성과를 거둘 수 없었던 데에 있다.

<그림2> 1세대 ALM 솔루션(출처: Forrester Research, Inc)

그림 1에서 보듯이 1세대 ALM 솔루션은 툴 자체의 복잡도로 인해 생산성 측면에서 크게 효과를 보지 못했을 뿐 아니라, 중복되고 조화되지 않은 ALM 기능들로 인해 전체 라이프사이클에 대한 투명성을 얻을 수 없었다.

따라서 각 툴에 속해 있는 ALM 기능 및 프로세스들을 통합하기 위해 구현 및 관리를 위한 부수적인 노력들이 필요했으며, 이런 전체적인 프로세스 자산들이 불투명하고 관리하기가 어려웠다.

이러한 제 1세대 ALM 솔루션들의 한계를 극복하고 개발 조직에서 겪는 문제를 해결하기 위한 진정한, 구현에서부터 유지보수, 사용에 이르기까지 개발 조직으로 하여금 더 나은 소프트웨어를 구현할 수 있게 하는 서비스로써의 ALM 플랫폼이 바로 2세대 ALM 솔루션이다.

2세대 ALM 솔루션에서는 필요한 기능 들을 플러그인(Plug-in) 형태로 지원 한다. 즉, 필요로 하는 기능에 대해서만 가격을 지불하여 사용할 뿐 아니라 관련 기능들을 더 빨리 찾을 수 있게 하고 확장을 위한 API를 공유하여 고객과 파트너로 하여금 쉽게 써드파티 툴을 구현하여 기존 ALM 솔루션에 통합 할 수 있게 한다.

프로세스 자체를 공통 컴포넌트의 하나로 인식하여 공유하는 것이다. 살아 있는 유기체와 같은 ALM 솔루션이 2세대 ALM 솔루션이라고 할 수 있다.

<그림 3> 2세대 ALM 솔루션(출처: Forrester Research, Inc)

즉, ALM은 기존의 각 단계별 작업 중심에서부터 프로젝트에 참여하는 각 참여자들의 역할에 기반 한 프로세스 중심으로 진화해 가고 있는 것이다. 이러한 흐름에 따라 MS, IBM, 볼랜드, 컴퓨웨어와 같은 주요 ALM 벤더들은 다양한 전략으로 2세대 ALM 솔루션을 제시하고 있다.

  Microsoft 의 제 2세대 ALM 솔루션: Microsoft VSTS

이제 구체적으로 MS의 ALM 전략과 ALM 솔루션인 VSTS의 주요 특징에 대해 좀 더 구체적으로 살펴보자.

마이크로소프트의 ALM 접근 전략 – 통합 개발 플랫폼
마이크로소프트의 2세대 ALM 전략은 통합 개발 플랫폼과 이를 통합, 운영 지원하는 IT 프레임워크다.

<그림 4> 통합 개발 플랫폼을 지원하는 마이크로소프트 프레임워크

소프트웨어 개발 라이프 사이클(SDLC)에 관한 모든 자산들을 단일 리파지토리에 저장하고, 궁극적으로는 이를 엔터프라이즈 프로젝트 관리 솔루션과 연계함으로써 측정, 변경, 워크플로우, 이슈 추적, 정책, 리소스 및 스케줄 관리에 관한 모든 데이터들이 IT의 프로젝트 수행과 통합을 위한 지표로 활용된다.

이는 결과적으로 CIO에게 비즈니스 요구사항과 일치하는 IT정책을 결정할 수 있는 핵심 프레임워크로 자리 잡게 된다. 이러한 IT 프레임워크의 가장 중심에 자리 잡고 있는 것이 통합 개발 플랫폼인 VSTS이다.

MS의 통합 개발 플랫폼 – VSTS (Visual Studio Team System)
특정 기능을 지원하는 툴이 아닌 소프트웨어 개발 라이프 사이클(SDLC)과 함께 살아 움직이는 ALM 솔루션을 제공하는 것이 MS의 2세대 ALM 솔루션이자 통합 개발 플랫폼인 VSTS의 핵심 전략이다.

Ovum의 2006년 ‘Microsoft Application Lifecycle Evaluation’ 보고서에서도 VSTS는 운영 및 하드웨어 아키텍처와 관리에 관한 전체적인 설계 Framework을 제공하고 있으며, 하나의 단일화된 서버로 버전 제어 및 작업 항목과 빌드를 관리하는 통합 개발 플랫폼이라고 설명하고 있다.

VSTS는 기존의 개발 환경을 확장하여 프로젝트에 참여하는 다양한 역할의 사람들(CIO, 비즈니스 분석가, 프로젝트 관리자, 설계자, 개발자, DB전문가, 테스터, 디자이너 등)이 보다 유기적으로 협업할 수 있도록 설계된 통합 개발 플랫폼으로써의 다음과 같은 부분에 중점을 두고 설계되었다.

• 개발팀 전체의 생산성 향상
• 실시간으로 프로젝트 상태를 파악 및 예측성 증대
• 원활한 팀 내의 의사소통 지원
• 모든 팀원을 위한 통합된 품질 도구 제공
• 도구의 확장을 통한 다양한 프로세스 및 개발 지원

  팀 협업 향상을 위한 VSTS 의 주요특징

한 조사 결과에 따르면 프로젝트에 참여하는 사람들이 많아질수록 개인의 생산성은 급격히 저하된다고 한다. 이는 프로젝트 관리와 각 참여자들 간의 협업의 어려움, 의사소통의 어려움에 기반 한 것이라고 할 수 있다. VSTS는 이러한 팀 협업을 최대한 지원하여 전체 개발 팀의 생산성 향상을 지원한다.

이제 보다 구체적으로 ALM 솔루션으로써 VSTS가 제공하는 특징들을 중심으로 VSTS가 팀 협업 및 개발팀의 생산성 향상이란 측면에서 조직에 어떤 가치를 제공할 수 있는지에 대해 살펴보자.

프로젝트에 대한 가시성 및 통찰력 확보
프로젝트 관리자들은 현재 프로젝트의 진행상황을 모니터링하고 이에 따른 적절한 의사결정을 신속하게 내려야 한다. 이를 위해 각 참여자들은 또한 자신의 작업 진행 상태를 전체 팀원들에게 적절하게 공유할 필요가 있다. 그러나 이러한 작업은 생각만큼 쉽지 않다.

프로젝트에 참여하는 사람들은 일정 주기 별로 자신들의 작업 결과와 이슈 사항들을 적절한 양식에 근거하여 보고해야 하고 각 팀장 혹은 전체 개발 프로젝트 매니저는 이를 취합하여 프로젝트의 진행 상황을 확인해야 한다. 현재 개발 조직에서 이러한 작업들은 대부분 문서에만 의존하여 수동적으로 관리되고 있다.

따라서 팀원들은 이러한 부가적인 작업을 위한 시간을 할애해야 함을 물론이고, 이렇게 수집된 정보에 대한 신뢰도 또한 낮아진다.

ALM 솔루션이 제공해야 하는 기본적인 기능 중 하나로 프로젝트에 대한 가시성과 통찰력 확보라는 기능을 꼽는 이유가 바로 여기에 있다. 과거의 수동적이고 부정확한 작업 대신 자동화되고 통합된 정보의 제공을 통해 불필요한 작업을 줄이고 정확한 의사결정을 지원하게 하는 것이다.

VSTS는 다음의 기능들을 통해 프로젝트에 대한 가시성 및 통찰력 확보를 가능하게 하고 이를 기반으로 효율적인 팀 협업을 돕는다.

● 요구사항에서부터 테스트에 이르는 전체 개발주기에 걸친 추적 관리 기능 제공
특정 소스나 산출물을 생성하거나 수정할 때 이것이 어떤 작업을 위한 요구사항으로 인한 것인지, 혹은 어떤 버그를 수정하기 위한 것인지 추적하는 일이나, 거꾸로 특정 요구사항을 변경하기 위해 수정된 산출물이 어떤 것인지, 누구에 의해 언제 수정된 것인지를 추적하는 일을 오늘날 개발 조직에서는 효율적인 개발 관리를 위한 필수적인 기능이라 할 수 있다.

VSTS는 프로젝트의 각 단계별 산출물을 관리하고 이에 대한 버전관리 기능을 제공함은 물론 이를 작업 항목과 연계하여 관리함으로써 이러한 산출물 간의 추적 기능을 효과적으로 제공한다.

<그림 5>는 개발에 참여하는 각 담당자들과 이들 간의 작업 흐름을 MS의 개발 프레임워크인 MSF(Microsoft Solution Framework)를 기반으로 정의한 것이다.

<그림 5> 개발 협업 흐름도

이러한 작업 흐름 및 역할에 대한 정의는 개발 프로세스에 따라 다르게 정의될 수 있다. VSTS를 통해 사용자들은 프로젝트에서 다양한 역할들이 서로 공유해야 하는 작업 내용(예: 요구 사항, 시나리오, 변경요청사항, 작업, 버그, 에러 등)들을 작업항목을 통해 정의할 수 있다. 또, 이를 기반으로 서로 필요한 의사소통 작업을 수행할 수도 있다.

또한 이러한 작업 항목은 VSTS 내에서 관리되는 산출물에 대한 버전관리와도 연계되어 각 작업 항목과 연계된 소스나 기타 산출물에 대한 변경 이력을 손쉽게 확인할 수 있다.

● 다양한 리포팅 기능 제공
VSTS는 각 개발 조직의 개발 프로세스를 프로세스 템플릿으로 자동화하고 이를 기반으로 프로젝트의 진행 상황과 프로세스, 산출물 간의 추적성을 파악할 수 있는 다양한 쿼리 및 리포트 기능을 제공한다. 이를 통해 프로젝트 관리자는 물론이고 개발에 참여하는 참여자들은 현재 프로젝트의 진행상황이나 문제점에 대해 보다 쉽고 빠르게 인식할 수 있게 된다.

각 개발자들은 자동화된 개발 프로세스를 기반으로 자신의 작업 내용을 VSTS에 입력하고 수정한다. 이러한 결과들은 별도의 작업 없이 실시간으로 수집되어 미리 정의된 리포트 형태로 프로젝트 관리자를 비롯한 팀원들에게 공유된다.

<화면 1> VSTS 에서 제공되는 리포트 | 일자별 작업 항목 변화 추이

<화면 1>은 VSTS를 통해 제공되는 리포트의 한 예이다. 이는 현재 프로젝트의 Scope의 변동 사항을 나타내는 리포트이다. 프로젝트 관리자는 현재 계획된 Scope 대로 프로젝트가 수행되고 있는 예상치 못한 작업으로 인한 프로젝트 일정에 무리가 없는지를 정의된 리포트를 통해 쉽게 확인 가능하다.

VSTS에서 제공되는 리포트의 또 다른 예를 살펴보자.

<화면 2> VSTS 에서 제공되는 리포트 | 담당자별 업무 현황

이는 현재 각 프로젝트에 참여하는 각 담당자 별 업무 현황을 나타낸다. 이를 통해 관리자는 각 작업자들에게 할당된 작업을 확인하고, 새로운 작업이 발생하면 이를 기반으로 적절하게 리소스를 할당할 수 있다. 또, 필요한 경우 일정의 수정이나 새로운 리소스의 투입을 고려하는 등 프로젝트의 진행 상황에 대한 의사결정을 내릴 수 있게 된다. 물론 이러한 리포트는 해당 조직의 개발 프로세스에 따라 커스터마이징 할 수 있다.

향상된 팀 협업 환경 제공
ALM이 제공해야 하는 또 다른 주요 기능으로 팀 협업 환경을 들 수 있다. 앞서 언급했듯이 제 2세대 ALM 솔루션들은 이러한 협업 환경을 통합된 개발 환경의 제공과 필요에 따라 플러그인 형태로 개발 환경을 확장하는 방식을 지원한다.

VSTS는 기존의 많은 개발자들에게 이미 익숙한 개발 환경인 비주얼 스튜디오를 기반으로 하여 통합 개발 환경을 제공한다. 이를 전체 개발 팀으로 확장하여 분화된 각 파트의 프로젝트 참여들을 위한 협업 환경을 제공함으로써 모든 팀원들이 유기적으로 연결되어 신속하고 긴밀한 의사소통(Communication)을 할 수 있다.

● 친숙하고 직관적인 도구 제공
VSTS는 기존의 비주얼 스튜디오를 전체 개발 조직으로 확대한 솔루션이다. 따라서 기존에 비주얼 스튜디오를 사용하던 개발자들에게는 자신들의 개발 환경 내에서 프로젝트 관리와 형상관리, 변경관리, 각 프로젝트 산출물에 대한 작업 등을 할 수 있다는 장점이 있다.

또한 비주얼 스튜디오는 MS 프로젝트, 엑셀과의 양방향 동기화 기능을 통해 프로젝트 관리자나 업무 분석가와 같은 사람들 역시 기존에 자신들이 익숙하게 사용하던 MS 프로젝트나 엑셀을 이용해 VSTS와 연계된 프로젝트 관리 및 요구사항 관리를 가능하게 한다. 이처럼 VSTS는 프로젝트에 참여하는 다양한 사용자들이 자신들에게 친숙하고 직관적인 도구를 그대로 활용함과 동시에 이를 전체 개발 조직과 효과적으로 공유할 수 있는 방안을 제공한다.

<화면 3>은 프로젝트 관리자가 MS 프로젝트를 통해 정의한 작업내용을 VSTS를 통해 공유하는 예이다.

<화면 3> MS 프로젝트와 VSTS 내의 작업 항목과의 양방향 동기화를 이용한 프로젝트관리

MS 프로젝트나 엑셀은 프로젝트에서 관리자나 업무 분석가들이 친숙하게 사용하는 도구다. 프로젝트 관리자는 기존에 자신이 익숙한 환경에서 프로젝트에서 진행할 작업 목록을 정의하고 일정을 수립하고 리소스를 할당할 수 있다.

이렇게 정의된 데이터는 VSTS로의 동기화할 수 있기 때문에, 각 개발자들은 비주얼 스튜디오 내에서 자신에게 할당된 작업 내용을 실시간으로 확인할 수 있으며 필요한 경우 이를 수정할 수 있게 된다. 프로젝트 관리자는 이렇게 수정된 내용을 다시 MS 프로젝트에서 동기화해서 확인 할 수 있다.

이러한 도구의 제공은 VSTS의 사용자들이 도구를 익히는 데 걸리는 시간을 줄일 수 있게 해 줄뿐 아니라, 불필요한 작업으로 인한 시간의 낭비를 줄이고 서로 다른 역할의 사람들 간의 보다 원활한 의사소통을 가능하게 한다.

● 개발 프로세스와 도구를 긴밀하게 통합
ALM 솔루션이 제공해야 하는 중요한 기능으로 개발 프로세스에 대한 자동화를 꼽을 수 있다. 이러한 개발 프로세스를 지원하려면 각 조직의 개발 프로세스에 맞게 도구를 얼마나 유연하게 커스터마이징 해서 사용 가능한지가 중요한 관건이 된다. VSTS 내에는 MS의 개발 프레임워크인 MSF(Microsoft Solution Framework)를 지원하기 위한 프로세스로 MSF for Agile과 MSF for CMMI라는 두 개의 개발 프로세스가 포함되어 있다.

뿐만 아니라 사용자가 자신의 개발 프로세스에 맞게 개발 프로세스를 손쉽게 정의할 수 있도록 하는 프로세스 템플릿 에디터를 제공된다. 프로세스 템플릿을 통해 사용자는 프로젝트에서 관리하고자 하는 작업 항목 및 작업 항목별 특성, 각 산출물과 이에 대한 템플릿, 소스 제어 정책, 개발 프로세스에 대한 가이던스를 정의하고 이를 공유할 수 있다.

<화면 4>는 VSTS를 통해 정의된 프로세스 템플릿의 한 예이다.

<화면 4> VSTS를 이용한 개발 프로세스 커스터마이징

모든 개발 조직들은 자신의 개발 조직에 맞는 정형화 혹은 비정형화된 프로세스를 가지고 있다. 하지만 이러한 개발 프로세스가 제대로 활용되는 경우는 드물다. VSTS는 이러한 개발 프로세스를 조직에 맞도록 정의할 수 있도록 하며, 이를 도구를 통해 자동화하는 것을 가능하게 한다.

단순히 문서상으로 존재했던 개발 프로세스가 이제는 도구 내에서 정의되고 공유되면서 자동화된 프로세스 내에서 유기적으로 통합되는 것이 가능하게 된다.

● 팀 협업을 위한 단일화된 서버 제공
개발 프로젝트에서는 개발 단계별로 다양한 산출물이 생성 및 관리된다. 이러한 산출물들은 그들 간의 연관관계를 가지게 된다. 일반적으로 이러한 산출물들은 다양한 형태의 문서로 개인이나 팀에 의해 관리 되고 있으나 체계적인 통합 관리는 어려운 것이 사실이다.

VSTS는 팀 협업을 위해 프로젝트 내에서 공유하여야 하는 소스 및 작업항목, 산출물들을 단일 서버 내에서 통합해서 관리한다. VSTS를 적용한 많은 사례에서는 이러한 단일화된 서버의 사용으로 인해 분산된 개발자 개인 혹은 팀 별로 작업한 개발 결과가 단일 데이터 리포지토리(repository)에 저장되어 전체 개발 프로세스에 대한 가시성 및 통찰력을 확보할 수 있었다고 보고되고 있다.

글로벌 IT 업체인 EDS의 사례가 그 좋은 예이다. EDS는 분산된 개발 조직들 내에서 각각 필요한 인력을 교육하고 개발시킴으로서 전문성과 효율성이 크게 저하된다고 판단했다. 이를 개선하기 위해 특정 개발 기술이나 언어에 특화된 전문 센터를 상시로 운영하는 체제로 변화하면서 이들 간의 효율적인 협업 및 개발 생산성 향상을 지원할 수 있는 도구로서 VSTS를 도입하였다.

단일화된 서버의 활용을 통해 코드 수정과 협업, 문제 해결, 디버깅, 품질 관리에 드는 시간 을 줄임으로서 개발자 뿐 아니라 프로젝트 관리자 등 전체 개발팀의 생산성을 대폭 향상시키는 효과를 거둘 수 있었다.

뿐만 아니라 VSTS는 단일 서버를 이를 접근할 수 있는 다양한 방법들을 제공함으로서 사용자들이 보다 쉽고 효과적으로 의사소통을 하게 한다. 그 대표적인 예로 VSTS는 프로젝트 팀을 위한 프로젝트 포털 사이트를 자동으로 생성한다.

많은 프로젝트에서는 효과적인 팀 내의 의사소통, 산출물에 대한 공유 등을 고민하고 이에 대한 솔루션으로 포털 사이트를 별도로 구축하거나 혹은 메일이나 여타의 다른 솔루션을 활용하기도 한다. VSTS에서 제공되는 포털 사이트를 통해 사용자는 팀원들 간의 효율적인 의사소통 및 프로세스 가이던스, 산출물, 리포트 등에 대한 공유가 가능하게 된다.

<화면 5>은 VSTS에 의해 제공되는 팀 포털 사이트의 예이다.

<화면 5> VSTS를 통해 제공되는 팀 포털 사이트

다양한 프로젝트의 참여자들과 커뮤니케이션해야 하는 프로젝트 환경에서는 이러한 협업 환경의 제공은 팀 전체가 보다 원활한 협업을 할 수 있도록 해준다. 나아가 팀 전체의 개발 생산성을 향상 시키는 중요한 요소가 된다.

소프트웨어 품질 향상
복잡하고 다양한 기술에 기반을 둔 오늘날의 소프트웨어는 품질에 대한 검증 작업 또한 점점 더 복잡하고 어려워지고 있다. 개발 단계별 소프트웨어의 버그를 발견하고 수정하는 데 비용을 산정한 한 통계에 따르면 개발 초기에 발견된 버그를 수정하는 데 드는 비용에 비해 사용자에게 전달된 이후에 버그를 수정하는 드는 비용은 10배에서 수천 배에 이른다고 한다.

따라서 이제 소프트웨어 품질에 대한 고민은 테스터들뿐만 아니라 전체 개발팀에서 해결해야 하는 과제로 부각되고 있다.

VSTS는 개발자 및 테스터들이 사용할 수 있는 다양한 테스팅 도구들을 제공한다.

우선 개발자들을 위한 테스팅 도구를 살펴보면 코드를 실행하기 전에 코드 상에 보안이나 성능 상의 문제를 사전에 분석 검증하는 정적 코드 분석 도구, 실행되는 코드의 애플리케이션 성능 분석 및 함수 수행 시간, Deadlock, Call Tree, Object Allocation 정보, 런타임 문제 등을 진단하는 코드 프로파일링, 작성된 코드에 대한 테스트 코드를 자동으로 생성함으로써 특정 코드가 제대로 동작하는 지를 조기에 판단할 수 있도록 하는 단위 테스트 도구 등이 포함되어 있다.

이러한 기능들은 개발자가 자신의 코드에 대한 테스트를 충분히 거치도록 하여 가능한 테스트를 조기에 수행하도록 하는 데 목적이 있다. 이는 또한 개발자의 생산성 향상에도 기여하게 된다. 많은 개발자들은 오히려 이러한 테스트 도구들로 인해 자신의 작업이 더 많아 질것이라고 생각할 수 있다.

실제 우리나라 개발자들 중 이러한 테스트를 충분히 거쳐 소스를 생성해 내는 개발자는 그다지 많지 않을 것이다.

그러나 개발자들의 작업을 자세히 들여다보면 그들 작업의 80%가 디버깅이고 20%가 코드를 작성하는 데 걸린다는 통계가 있다. 여기서 의미하는 디버깅에는 개발자가 단순히 코드를 수행하고 디버깅 도구를 사용하는 데뿐만 아니라 통합 시, 혹은 실제 운영상에서 문제가 생겼을 때 이를 해결하는 데 드는 시간을 모두 포함한 것이다.

이러한 디버깅 시간을 줄일 수 있다면 개발자는 보다 더 많은 시간을 자신의 코딩 작업에 할애 할 수 있게 된다. 결과적으로 이러한 테스트 도구는 개발자가 자신의 코드에 대한 문제를 해결하는 데 드는 시간을 최소화함으로서 개발 생산성을 향상을 가능하게 한다.

특히 VSTS는 이러한 테스트 도구를 각 산출물에 대한 버전관리와 연계하여, 특정 테스트를 수행하지 않은 코드, 즉 문제의 여지가 많은 코드는 서버에 체크인하지 못하도록 강제하는 기능도 함께 제공하여 전체 팀 코드의 품질 향상을 통제할 수 있도록 하며, 테스트 결과를 특정 작업 항목으로 등록하는 기능을 통해 관련된 사람들 사이의 효과적인 의사소통을 지원한다.

품질 향상을 위한 또 다른 도구 VSTS는 테스터들을 위한 완성된 웹 애플리케이션에 대한 기능 및 성능 테스트를 지원한다. 이를 통해 사용자는 완성된 애플리케이션이 원하는 기능을 제공하는지, 여러 명의 동시 사용자의 접근 시 원하는 성능을 내는지에 대한 검증이 가능하다.

또한 테스트 결과는 앞에서 설명한 팀 협업 환경에 유기적으로 통합되어 있어서 전체 개발 작업과 자연스레 연결 될 수 있다.

<화면 6> VSTS를 통해 실행된 부하 테스트 결과

실제로 전 세계 수백만 사용자들을 위한 고품질의 안정적인 서비스를 제공해야 하는 MSN의 핫메일 서비스 사례에서는 성능테스트 도구로 VSTS의 테스팅 도구를 사용하여 기존 도구에 비해 20% 이상의 테스트의 정확도를 향상시켰으며 결과적으로는 고성능의 확장 가능한 솔루션 윈도우 라이브 핫메일 구축할 수 있었다고 한다.

지금까지 개발 조직의 생산성 향상을 목표한 ALM 솔루션의 진화와 제 2세대 ALM 솔루션의 VSTS가 팀 협업과 생산성 측면에서 고객에게 주는 가치에 대해 살펴보았다.

앞에서 포레스터가 정의한 ALM을 인용하면서 ALM의 솔루션이 제공해야 하는 세 가지 주요영역으로 프로젝트 단계별 산출물 간의 추적성, 상위 레벨의 프로세스를 자동화, 가시성 확보를 위한 리포팅 기능을 언급했었다.

MS의 VSTS는 이러한 ALM의 주요 기능에 맞춰 충실하게 설계된 도구로 앞에서 설명한 다양한 기능을 통해 팀원 간의 원활한 협업을 통한 전체 개발팀의 생산성 향상을 가능하게 한다.

실제 VSTS를 적용해 프로젝트를 수행한 KT 글로벌OSS개발부 홍원규 부장은 “요구 분석부터 설계, 구현, 검사, 운영까지의 개발 프로세스 상에서 각 업무를 수행하는 프로젝트 구성원들 간의 유연성을 높여 생산성과 예측성을 동시에 높이는 방법을 찾는 것이 프로젝트의 커다란 숙제 중의 하나였다”고 설명하고 “처음 Visual Studio Team System을 선택한 뒤 새로운 환경에 뛰어드는 단계에서 약간의 적응 기간을 갖기도 했으나 불과 2~3주도 지나지 않아 개발자들 모두가 빠르게 새로운 개발 환경에 적응하게 되는 등 기대 이상의 효과를 거두며 이번 프로젝트를 성공적으로 마무리하는 데 큰 역할을 해 주었다”고 말했다.

애플리케이션 개발 환경은 급속히 변화하고 있고 이는 새로운 애플리케이션 개발 방식을 요구하고 있다. ALM은 이러한 새로운 기술 및 비즈니스적인 요구를 기반으로 새로운 애플리케이션 개발 방식으로 자리 잡게 될 것이다. 하지만 ALM 솔루션의 도입만으로 이러한 개발 환경에서의 도전들이 모두 해결된다고 단언할 수는 없다.

ALM은 단순한 도구를 의미 한다기보다 개발 프로세스의 변화가 선행돼야 함을 의미한다. 도구를 통해 보다 유기적이고 효과적으로 프로젝트를 관리하는 것이 가능해 지는 것을 의미하기 때문이다.

ALM을 도입하여 팀 협업 환경을 구축하고 이를 통한 개발 생산성 향상을 도모하고자 한다면 우선 개발 프로세스 자체의 변화를 인지해야 하며 이를 위한 의지와 준비가 필요하다.

새로운 개발 프로세스의 정의, 요구 사항 및 변경, 형상 관리를 위한 방안들을 고려되고 이러한 맥락 하에서의 ALM 솔루션의 활용 범위 및 각 도구들의 통합 방안에 대한 논의가 시작 되어야 할 것이다. @



출처 : ZDNet Korea