코드 품질 검사

완료됨

코드의 품질을 주관적으로 측정해서는 안됩니다. 코드를 작성하는 개발자는 자신의 코드 품질을 높게 평가하겠지만 이것은 코드 품질을 측정하는 좋은 방법이 아닙니다. 팀 마다 컨텍스트에 따라 다른 정의를 사용할 수 있습니다.

고품질로 간주되는 코드는 자동차 개발자에게 한 가지를 의미할 수 있습니다. 웹 애플리케이션 개발자에게는 또 다른 것을 의미할 수 있습니다.

코드의 품질은 전체 소프트웨어 품질에 영향을 미치기 때문에 필수적입니다.

"소프트웨어 결함 원인 및 제거 방법"에 대한 연구에 따르면 개인 프로그래머가 자신의 소프트웨어에서 버그를 찾는 효율성은 50% 미만이라고 합니다. 그리고 대부분 테스트 형태의 효율성은 35%에 불과합니다. 그래서 품질을 판단하기가 어렵습니다.

품질 향상을 위한 측정에는 5가지 주요 특성이 있습니다.

안정성

안정성은 시스템이 특정 작동 기간 동안 오류가 발생하지 않고 실행될 확률을 측정합니다. 소프트웨어의 가용성 및 결함 수와 관련이 있습니다. 정적 분석 도구를 실행하면 몇 가지 결함을 측정할 수 있습니다.

소프트웨어 가용성은 MTBF(평균 장애 간격)를 사용하여 측정할 수 있습니다.

적은 결함 수는 안정적인 코드베이스를 개발하는 데 중요합니다.

유지 관리

유지 관리성은 소프트웨어를 얼마나 쉽게 유지 관리할 수 있는지를 측정합니다. 코드베이스의 크기, 일관성, 구조, 복잡도와 관련이 있습니다. 그리고 유지 관리가 가능한 소스 코드를 보장하려면 테스트 용이성 및 이해 용이성과 같은 몇 가지 요소에 의존해야 합니다.

단일 메트릭을 사용하여 유지 관리 가능성을 보장할 수는 없습니다.

유지 관리를 개선하기 위해 고려할 수 있는 몇 가지 메트릭은 스타일 경고 수와 Halstead 복잡도 측정값입니다.

자동화 및 사람인 검토자 모두 유지 관리 가능한 코드베이스를 개발하는 데 필수적입니다.

테스트 가능성

테스트 용이성은 소프트웨어가 테스트 작업을 얼마나 잘 지원하는 지를 측정합니다. 다른 요인들 중에서 테스트를 얼마나 잘 제어, 관찰, 격리 및 자동화할 수 있는지에 달려 있습니다.

테스트 용이성은 시스템에서 잠재적인 결함을 찾는 데 필요한 테스트 사례의 수를 기반으로 측정할 수 있습니다.

소프트웨어의 규모와 복잡도는 테스트 용이성에 영향을 줄 수 있습니다.

따라서 코드 수준에서 메서드를 적용하면(예: 순환 복잡도) 구성 요소의 테스트 용이성을 향상시킬 수 있습니다.

이식성

이식성은 다른 환경에서 동일한 소프트웨어를 얼마나 사용하기 좋은지를 측정합니다. 이것은 플랫폼 독립성과 관련이 있습니다.

이식성에 대해 특정한 측정값은 없습니다. 하지만 이식 가능한 코드를 확인할 수 있는 몇 가지 방법이 있습니다.

개발이 끝날 때까지 기다리지 말고 다른 플랫폼에서 정기적으로 코드를 테스트하는 것이 중요합니다.

컴파일러 경고 수준을 최대한 높게 설정하고 둘 이상의 컴파일러를 사용하는 것도 좋습니다.

코딩 표준을 적용하는 것도 이식성에 도움이 됩니다.

재사용 가능성

재사용성은 기존 자산(예: 코드)을 다시 사용할 수 있는지 여부를 측정합니다.

자산에 모듈성 또는 느슨한 결합 특성이 있으면 자산을 더 쉽게 재사용할 수 있습니다.

상호 종속성 수는 재사용 가능성을 측정할 수 있습니다.

정적 분석기를 실행하면 이러한 상호 의존성을 식별하는 데 도움이 됩니다.