당신은하지 않습니다.
소프트웨어 품질은 객관적으로 측정하기가 어렵습니다. 해결책이 없을 정도로 힘들다. 나는이 대답에서 전혀 해결책이있을 수 있는지에 대한 질문에 손을 대지 말고 하나를 정의하는 것이 왜 정말로 어려운지 지적하십시오.
현 상태에 의한 추론
Kilian Foth가 지적했듯이 "좋은"소프트웨어에 대한 간단한 조치가 있다면 모두 사용하고 있으며 모든 사람들이 요구할 것입니다.
관리자가 특정 지표를 시행하기로 결정한 프로젝트가 있습니다. 때로는 효과가 있었고 때로는 효과가 없었습니다. 중요한 상관 관계는 없습니다. 특히 중요한 시스템 소프트웨어 (비행기, 자동차 등)는 SW 품질을 "보장"하기위한 많은 메트릭 요구 사항을 가지고 있습니다. 이러한 요구 사항이 실제로 더 높은 품질을 가져온다는 것을 보여주는 연구는 없습니다. 반대로.
반 지능에 의한 추론
또한 Kilian은 이미 힌트를 받았고 더 일반적으로 "모든 메트릭은 재생할 수 있고 재생됩니다"라고 말합니다.
메트릭을 재생한다는 것은 무엇을 의미합니까? 개발자를위한 재미있는 게임입니다. 메트릭 값이 정말 좋아 보이는 동시에 정말 까다로운 작업을 수행 할 수 있습니다.
LOC 당 결함을 측정한다고 가정 해 봅시다. 어떻게하면 되나요? 쉬움-더 많은 코드를 추가하십시오! 100 줄 이상 작동하지 않는 어리석은 코드를 만들고 갑자기 LOC 당 결함이 줄어 듭니다. 무엇보다도 : 실제로 소프트웨어 품질을 저하 시켰습니다.
도구의 단점이 남용되고 정의가 최대로 확장되고 완전히 새로운 방식이 발명되었습니다. 기본적으로 개발자는 정말 똑똑한 사람이며 팀에서 재미있는 메트릭스를 가진 한 명의 개발자 만 있으면 메트릭스에 의문이 생길 수 있습니다.
그렇다고 메트릭이 항상 나쁜 것은 아닙니다. 그러나 이러한 메트릭에 대한 팀의 태도는 매우 중요합니다. 특히 이는 하도급 업체 / 타사 공급 업체 관계에서 제대로 작동하지 않음을 의미합니다.
잘못된 타겟팅으로 추론
측정하려는 것은 소프트웨어 품질입니다. 측정하는 것은 하나 이상의 메트릭입니다.
당신이 측정하는 것과 그것이 당신에게 말할 것이라고 믿는 것 사이에는 차이가 있습니다. 이 격차는 거대합니다.
그것은 우리 주변의 모든 종류의 사업에서 항상 발생합니다. KPI (핵심 성과 지표)를 기반으로 한 결정을 본 적이 있습니까? 그것은 단지 똑같은 문제입니다-회사가 잘하기를 원하지만 다른 것을 측정하십시오.
정량화에 의한 추론
측정 항목을 측정 할 수 있습니다. 이것이 우리가 전혀 다루지 않는 유일한 이유입니다. 그러나 소프트웨어 품질은 측정 가능한 엔터티를 넘어서서 정량화하기가 매우 어렵습니다. 소스 코드는 어떻게 읽을 수 있습니까? 디자인은 얼마나 확장 가능합니까? 신입 팀원이 탑승하기가 얼마나 어려운가요? 등
측정 항목으로 만 소프트웨어 품질을 판단하고 정량화 할 수없는 품질 부분에 대해 눈을 돌리는 것은 확실히 잘되지 않을 것입니다.
편집하다:
요약
위의 모든 사항은 메트릭스를 기준으로 소프트웨어의 우수 여부를 객관적으로 판단하는 것입니다. 즉, 메트릭 적용 여부와시기에 대해서는 아무 것도 말하지 않습니다.
실제로 이것은 단방향 적 의미입니다. 잘못된 메트릭은 잘못된 코드를 의미합니다. 단방향은 잘못된 코드가 잘못된 메트릭을 보장하지 않으며 우수한 메트릭이 올바른 코드를 보장하지 않음을 의미합니다. 반면, 이는 자체적으로 의미를 유지할 때 메트릭을 적용하여 소프트웨어를 판단 할 수 있음을 의미합니다.
소프트웨어 A를 측정하면 메트릭이 실제로 나쁩니다. 그러면 코드의 품질이 나쁘다는 것을 확신 할 수 있습니다. 소프트웨어 B를 측정하고 메트릭이 정상이면 코드 품질에 대한 실마리가 없습니다. 실제로 "code good => metrics good"일 때 "metrics good = code good"이라는 생각에 속지 마십시오.
본질적으로 메트릭을 사용하여 품질 문제를 찾을 수 있지만 품질 자체는 찾을 수 없습니다.