이제는 소프트웨어 품질에 대해 진지하게 생각할 시간

일반입력 :2005/12/05 16:13

류한석(컬럼니스트)

소프트웨어 개발 과정에 있어 흔히 간과되는 중요한 부분 중의 하나는 바로 품질이다. 필자는 주로 피플웨어 중심의 품질 관리에 관심이 많지만, 여기에서는 도구 중심의 품질 관리에 대해 살펴보려고 한다.

많은 사람들이 소프트웨어 개발 프로젝트에 있어 품질을 말하지만, 그것을 명확하게 정의하는 것이 쉬운 일은 아니다. 도대체 소프트웨어 품질이란 무엇인가? 사전적 의미의 품질이란 '물품의 성질과 속성'을 의미한다. 그렇다면 소프트웨어의 품질이란 소프트웨어 자체의 본질적 속성이라고 할 수 있을 것이다.

소프트웨어 품질이란

소프트웨어 품질 속성에 대해서는 논란이 많지만, 로버트 L. 글래스가 정리한 바에 따르면 그것은 이식성(portability), 신뢰성(reliability), 효율성(efficiency), 사용성(usability), 테스트 용이성(testability), 이해 용이성(understandability), 수정 용이성(modifiability) 등으로 구성된다.

소프트웨어 품질을 제대로 관리하기 위해서는, 프로젝트를 착수하는 시점에서 요구되는 프로젝트의 품질 속성을 명확히 정의하고 품질 목표를 세워야 한다. 그러한 품질 목표 하에서 개발 초기부터 품질 매니저가 참여하여 품질 관리 기획을 수행하고, 그것을 바탕으로 애플리케이션 생애주기의 전 과정에서 품질을 통제하게 된다. 물론 이것이 품질 관리의 기본이기는 하지만, 국내 업계의 현실에서는 잘 지켜지지 않는 부분이기도 하다.

단지 코딩만으로도 데드라인을 맞추어 끝내기가 힘든데, 품질은 무슨…… 일부 대기업이나 몇몇 탄탄한 중견 솔루션 업체를 제외하고는, 제대로 된 품질 관리의 개념과 체계가 없는 것이 바로 우리의 현실이다.

또한 지금까지는 손쉽게 접할 수 있는 테스트 도구 또한 많지 않았다. 기존의 Visual Studio 버전에서는 제한적인 테스트 도구가 제공되었을 뿐이고, IBM Rational이나 Compuware와 같은 전문 테스트 소프트웨어 벤더의 제품을 구매하려면 상당한 비용을 지출하여야 했고 또한 사용법을 익히는 것도 쉽지 않았다.

이에 MS는 Visual Studio 2005 Team Edition을 통해 개발자 및 테스터를 위한 각종 테스트 도구들을 제공하기 시작하였다. 뒤늦은 감이 있지만 환영할만한 점이다. 특히 Visual Studio 2005 Team Edition for Software Testers 라는, 테스터를 위한 별도의 에디션이 제공되고 있다. 이는 소프트웨어 개발에서 테스터가 담당하는 역할의 중요성이 널리 확산될 수 있다는 측면에서 각별한 의미가 있다.

프로젝트 품질 높이는 소프트웨어 개발과정

소프트웨어 개발 과정에서는 프로젝트의 품질 목표에 따라, 개발자와 테스터의 테스팅이 지속적으로 이루어진다. 개발자는 단위 테스트(unit test)를 수행하여 매니지드 코드와 웹 서비스의 코드 품질을 검증하고, 품질 표준에 따라 적절하게 코드의 품질을 향상시킨다. 개발자는 단위 테스트를 수행하는데 있어, 자동으로 관련 코드를 생성할 수 있고 통합 디버깅 및 데이터 기반 테스팅의 도움을 받을 수도 있다.

개발자는 단위 테스트 외에도 코드 분석, 프로파일링, 코드 커버리지 등을 통해 개발자 수준의 품질 향상에 노력하게 된다. 테스트 결과는 상세한 테스트 결과 리포트를 통해 확인할 수 있으며, 이러한 기능들은 Visual Studio 2005의 중요한 장점 중의 하나이다.

테스터는 개발자와는 별개로 여러 종류의 테스트를 수행하게 된다. 테스터는 Visual Studio 2005를 사용함으로써 자동화된 통합 테스트를 수행할 수 있는데, 1회성이 아니라 애플리케이션 생애주기를 통해 지속적이고 반복적으로 수행된다. 자동화를 통해 얻을 있는 이점은 상세한 테스트 결과 리포트를 자동으로 생성할 수 있고, 또한 그것을 팀 멤버들과 공유할 수 있다는 점이다. 테스터는 품질 지표(quality indicator)를 감시함으로써, 품질을 지속적으로 추적할 수 있다.

이러한 테스트 관련 기능은 Visual Studio 2005에서 제공되는 기본적인 도구에 국한되지 않으며, 써드파티 도구를 통해 확장될 수 있다. 이것은 개발자나 테스터한테도 의미 있는 일이지만, MS의 입장에서는 Visual Studio 2005 기능의 확장을 제공함으로써 기존의 협력 업체들과 계속하여 좋은 관계를 유지할 수 있게 되었다.

즉 기본적인 테스트 기능은 Visual Studio 2005를 활용하고, 보다 고급의 기능은 협력 업체의 제품을 추가로 구매하여 사용하라는 식이다. 예를 들어 Compuware의 TestPartner는 기능 테스트를 자동화 해주는 도구인데, VBA 스크립트에 기반하여 캡처하고 재생하는 기능을 제공할 뿐만 아니라 J2EE, ERP/CRM 등의 테스트도 지원하고 있다.

테스트를 넘어 소프트웨어 품질 관리로

소프트웨어 품질의 여러 속성들은 프로젝트의 특성에 따라 우선순위나 중요도가 달라질 수 있다. 예를 들면 다른 플랫폼으로의 이식이 아주 중요할 수도 있고(이식성), 또는 CPU 실행 시간과 메모리 및 스토리지 점유율을 최적화하는 것이 중요할 수 있다(효율성). 아니면 사용자 인터페이스가 특히 사용하기 쉽고 편리해야 할 수도 있고(사용성), 유지보수 시 손쉬운 수정을 보장하는 것이 중요할 수 있다(수정 용이성).

Visual Studio 2005의 테스트 관련 기능에 있어 아쉬운 점은, 테스트 수준이 아니라 품질 관리 수준의 기능을 포함하고 품질 매니저의 명확한 역할을 확립하였다면 더 좋았을 것이라는 점이다. 아마 차후 버전에서는 사용자의 피드백을 통해, 테스트를 넘어선 품질 관리 수준의 내용이 반영될 것이라고 기대해 본다.

Visual Studio 2005는 소프트웨어 품질 속성을 완벽하게 다룰 수 있지는 않지만, 적어도 품질 향상을 위한 기본적인 도구는 제공해주고 있다. 이제 우리가 할 일은 더 체계적인 품질 기반의 마인드를 갖고서, 소프트웨어 개발 작업에 임하는 것이다.

이번 글에서는 주로 도구에 대해 살펴보았다. 하지만 품질 관리는 도구만으로 완성되는 것은 아니다. 사람과 품질간의 관계에 대해서는 필자의 컬럼과 블로그를 통해 지속적으로 살펴볼 것이다. @

필자 류한석님은 소프트웨어 개발 13년의 경력을 가진 Microsoft MVP (Solutions Architect), .NET Advisor, PMP이며, 아키텍처와 프로젝트 관리에 많은 관심을 갖고 있다. 또한 CISA, CISM이며 한국CISSP협회 연구이사로서, 개발 프로세스에서의 보안 고려사항에 대해서도 지속적으로 연구하고 있다.