Software Engineering

소프트웨어공학: GQM (Goal-Question-Metric) 이란 무엇인가? - 효과적인 목표설정 및 성과 측정 방법론

habana4 2024. 9. 6. 23:25
반응형

 

소프트웨어 개발 환경은 매우 복잡하며, 효율적으로 관리되지 않으면 개발 과정에서 많은 문제가 발생할 수 있습니다. 오늘은 GQM (Goal-Question-Metric)이라는 조금 낯설 수 있지만 정말 유용한 방법론에 대해 알아보고자 합니다. 만약 소프트웨어 개발 중에 "어? 이거 제대로 진행되고 있는 건가?" 또는 "어떻게 하면 성과를 제대로 측정할 수 있을까?"라는 고민이 든 적이 있다면, GQM은 이런 문제를 해결해 주는 훌륭한 도구가 될 수 있습니다.

 

GQM은 이름 그대로 목표(Goal), 질문(Question), 그리고 측정지표(Metric)라는 세가지 단계를 통해 조직이나 프로젝트의 성과를 체계적으로 관리하는 방법입니다. 이 방법은 단순히 목표를 세우고 끝나는 게 아니라, 그 목표를 제대로 달성했는지 확인하고 개선할 수 있도 도와줍니다.

 

그럼 GQM이 왜 중요한지, 어떻게 생겨났는지, 그리고 실제로 어떻게 적용할 수 있는지 알아보도록 하겠습니다.

 

GQM은 어떻게 생겨났을까?

GQM은 1980년대 초, 소프트웨어 공학자인 Victor Basili 박사가 만들어낸 방법입니다. 당시에는 소프트웨어 개발이 지금처럼 체계적이지 않았고, 성과를 제대로 측정하기도 어려웠던 시절입니다. Basili는 이런 문제를 해결하기 위해 NASA에서 복잡한 소프트웨어 프로젝트를 진행하면서 GQM을 고안해 냈습니다. NASA처럼 고도의 정확성을 요구하는 프로젝트에서는 성과를 정확하게 측정하는 게 매우 중요했을 테니까요. 그래서 단순히 "일을 잘하고 있는지에 대해 느낌만으로 판단해서는 안된다!"는 점을 깨닫고, 명확한 목표를 세우고, 그 목표를 달성했는지 제대로 질문한 뒤, 측정할 수 있는 지표를 정해야 한다고 생각했습니다. 그 결과로 생겨난 것이 바로 GQM 입니다.

 

GQM 구성 요소

GQM은 다음 그림에서 보는 바와 같이 계층적 구조를 가지게 됩니다. 

 

1. Goal (목표): "우리가 진짜 이루고 싶은게 무엇인가요?"

GQM의 첫번째 단계는 목표 설정입니다. 목표는 "내가 정말로 이루고 싶은 것이 무엇인가?"를 구체적으로 정의하는 겁니다. 목표는 당연히 구체적이어야 하고, "이게 정말 성과를 낼 수 있을까?"라는 생각이 들 만큼 명확해야 합니다.

예) 다음 분기까지 소프트웨어 버그 발생률을 20% 줄이고, 코드 리뷰 속도를 10% 높인다.

2. Question (질문): "목표를 달성하려면 어떤 질문을 던져야 하지?"

목표를 세운 다음에는 그 목표를 달성하기 위해 어떤 질문을 해야 하는지 생각해 봐야 합니다. 예를 들어 목표가 "버그 줄이기"라면 "버그가 어디서 자주 발생하는가?" 같은 질문을 던지는 거죠. 이런 질문을 통해 우리는 문제를 더 구체적으로 분석하고, 목표를 달성할 방법을 찾을 수 있습니다. 

예) "버그는 어느 단계에서 주로 발생하는가?", "코드 리뷰 속도가 느린 이유는 뭘까?", "이 문제를 해결하려면 어떻게 해야 하지?"

3. Metric (측정 지표): "성과를 어떻게 측정할 수 있을까?"

마지막으로, 던진 질문에 답하기 위해 측정 가능한 지표를 정합니다. 예를 들어, "버그가 줄어들고 있나?"라는 질문에 답하려면, 실제로 버그 발생 건수나 버그 해결 시간 같은 구체적인 데이터를 모아야 하죠. 이 데이터를 통해 목표가 잘 진행되고 있는지 평가할 수 있습니다. 

예) "릴리스당 버그 발생 건수", "코드 리뷰 시간", "버그 해결에 걸리는 평균 시간"

 

GQM 적용을 통한 문제 해결 분야

GQM을 적용하는 과정에서, 조직은 버그 발생의 주된 원인이 프로세스 준수 미비와 소통 문제라는 사실을 확인할 수 있습니다. 또한, 개발 팀이 사용하는 도구에 익숙하지 않다는 점이 도구의 효과를 저하시키고 있다는 것을 알 수 있습니다. 이를 해결하기 위해 조직은 다음과 같은 조치를 취할 수 있습니다.

1. 프로세스 개선:

각 개발 단계별로 체크리스트를 마련하고, 프로세스 준수를 강화하기 위한 교육을 진행할 수 있습니다. 또한, 프로세스 준수 여부를 지속적으로 모니터링하고 이를 평가하기 위한 지표를 활용할 수 있습니다.

2. 소통 강화:

팀 간의 원활한 협업을 위해 정기적인 회의와 피드백 세션을 도입할 수 있으며, 소통 문제를 해결하는 데 필요한 시간이 단축되도록 명확한 의사결정 절차를 마련할 수 있습니다.

3. 도구 활용도 개선:

개발 팀에게 도구 사용법에 대한 추가 교육을 제공하고, 도구 사용의 중요성을 인식시킬 수 있습니다. 그 결과, 도구 활용도를 높일 수 있고, 이를 통해 작업 효율성을 향상시킬 수 있습니다.

 

GQM 적용 시 주의 사항

물론 GQM이 만능은 아닙니다. 실제로 GQM을 사용하다 보면 몇 가지 어려움도 있을 수 있습니다.

먼저, 목표 설정하고 질문 도출하고, 또 그에 맞는 지표를 설정하는 게 생각보다 시간이 많이 걸릴 수 있어요.

다음으로 GQM을 처음 접하면, 각 단계를 설정하는 게 어려울 수 있어요. 특히 초보자의 경우 GQM이 익숙해지기까지 시간이 좀 걸리겠죠.

마지막으로 적절한 측정 지표를 설정하지 못하면 성과를 제대로 평가하지 못할 수 있습니다. 잘못된 지표는 오히려 문제 해결을 방해할 수도 있습니다. 

 

하지만 이런 어려움에도 불구하고, GQM은 장기적으로 봤을 때 정말로 유용한 도구입니다. 팀이 성과를 내는 방법을 명확히 알고, 그 과정에서 성과를 측정하고 개선할 수 있는 프레임워크를 제공하니까요!

반응형