Tag Archives: Metric

소프트웨어 메트릭의 올바른 사용법

코드 품질의 관리를 위한 방안을 고민하다 보면 메트릭에 기반한 품질 기준을 수립하게 되는 경우가 많다. 하지만, 우리가 일반적 건축물들을 보며 아름답다거나 살고 싶다고 평가하는 데 정량화 된 기준을 찾기 어렵듯, 소프트웨어도 그 품질을 완벽히 숫자로 변환할 수는 없는 노릇이다.

독립적인 개별 메트릭은 소프트웨어를 하나의 시점에서 바라본 단편적 상에 지나지 않는다. 특정 방향에서 고정된 시점으로 비춰지는 빛에 소프트웨어를 투영시킨 매우 제한적인 하나의 그림자일 뿐이다. 복잡한 물체의 상을 몇 가닥의 빛에 의해 만들어진 그림자들 만으로 완전히 유추할 수 없듯이, 여러 메트릭을 조합해 평가 지표를 만든다고 하더라도 그 수치가 얼마나 효과적으로 쓰일 수 있을지는 장담할 수 없다.

최근 회사에서 특정 시스템의 구조적 문제를 지적하기 위해 메트릭을 사용했었는데, 때 마침 마틴 파울러의 블로그에 메트릭에 대한 글(“An Appropriate Use of Metrics” by Petrick Kua)이 올라왔다. 업무에서 메트릭을 사용한 목적은 분석 결과에 대한 근거를 만들기 위함이었고, 이런 제한적인 사용 목적에서는 나름 효과적인 결과를 얻을 수 있었다. 하지만 그 이후에 메트릭을 바탕으로 코드 품질을 정량화 하려는 움직임이 있어, 메트릭 적용의 확장에 따른 효과를 고민하던 시점이었는데. 이 블로그의 글이 경험없는 나의 생각을 정리하는 데 많은 도움이 된 것 같다.

블로그의 글에서는 메트릭의 수치가 갖는 한계를 지적하며, 소프트웨어 개발이 본래의 목적은 망각하고 ‘메트릭’이라는 잘못된 목표만을 향해 진행되는 상황을 걱정하고 있었다. 소프트웨어에 대해 잘 모르는 관리자의 입장에서는 유용해 보이는 지표일 수 있지만, 메트릭에 대해 고민해 본 이라면 누구나 알 수 있듯이, 어떠한 메트릭이나 어떠한 메트릭들의 조합으로도 소프트웨어의 품질을 100점 만점의 절대 값으로 환산할 수 없음은 분명한 사실이다.

다음은 블로그에서 제안하고 있는 메트릭 사용의 가이드라인이다. 이를 염두에 두고, 메트릭이 효과를 발휘할 수 있는 범위와 메트릭이 갖고 있는 한계 간의 경계를 나름대로 분명히 그어 두도록 해야겠다.

  • 메트릭과 개발 목표 간의 관계를 분명하게 정의하라.
  • 메트릭의 정량화 된 수치의 절대 값을 사용하기 보다는, 해당 값의 변화 추이를 추적하라.
  • 추적하는 주기를 짧게 가져가라.
  • 메트릭이 더 이상 긍정적인 영향을 미치지 못한다면, 효과적인 다른 메트릭을 찾아라.