Skip to main content
QUICK REVIEW

[논문 리뷰] MetricHaven -- More Than 23,000 Metrics for Measuring Quality Attributes of Software Product Lines

Sascha El-Sharkawy, Adam Krafczyk|arXiv (Cornell University)|2021. 10. 19.
Software Engineering Research참고 문헌 17인용 수 4
한 줄 요약

MetricHaven는 소프트웨어 제품선(SPLs)에 대해 23,000개 이상의 복합 메트릭을 영속적으로 계산할 수 있도록 하는 확장성 있고 오픈소스 도구이다. 이 도구는 기존의 코드 메트릭, 가변성 인식 메트릭, 기능 모델 메트릭을 통합하여 사용하며, 프리프로세서 지시어를 포함한 C 코드를 분석하기 위해 통합된 추상구문트리(_AST_)를 사용하고, 병렬 처리를 지원하여 리눅스 커널의 모든 23,342개 메트릭 변형을 3.5시간 이내에 측정한다—평균적으로 각 메트릭당 약 0.5초이다.

ABSTRACT

Variability-aware metrics are designed to measure qualitative aspects of software product lines. As we identified in a prior SLR \cite{El-SharkawyYamagishi-EichlerSchmid19}, there exist already many metrics that address code or variability separately, while the combination of both has been less researched. MetricHaven fills this gap, as it extensively supports combining information from code files and variability models. Further, we also enable the combination of well established single system metrics with novel variability-aware metrics, going beyond existing variability-aware metrics. Our tool supports most prominent single system and variability-aware code metrics. We provide configuration support for already implemented metrics, resulting in 23,342 metric variations. Further, we present an abstract syntax tree developed for MetricHaven, that allows the realization of additional code metrics. Tool: https://github.com/KernelHaven/MetricHaven Video: https://youtu.be/vPEmD5Sr6gM

연구 동기 및 목표

  • 소프트웨어 제품선(SPLs)의 품질 속성을 측정하기 위해 기존 코드 정보와 가변성 정보를 통합한 공개 가능하고 확장 가능한 도구 세트의 부족을 해결하기 위해.
  • 기존 코드 메트릭, 가변성 인식 코드 메트릭, 기능 모델 메트릭을 하나의 분석 프레임워크 안에서 민첩하게 조합할 수 있도록 지원하기 위해.
  • 연구자들이 새로운 가변성 인식 메트릭을 개발하고 평가하며 실험할 수 있도록 재사용 가능하고 확장 가능한 인프라를 제공하기 위해.
  • 리눅스 커널과 같은 대규모 SPL에서 모든 메트릭 변형에 대해 분석 시간을 3.5시간 이내로 줄여 효율적이고 병렬화된 메트릭 계산을 가능하게 하기 위해.
  • 직접 도구를 사용하여 애너테이션 기반 SPL에서 코드 냄새와 품질 문제를 탐지할 수 있도록 실무자 지원을 제공하기 위해.

제안 방법

  • 도구는 KernelHaven의 플러그인으로 구축되어 데이터 모델과 병렬 실행 파이프라인을 재사용함으로써 확장 가능한 메트릭 분석을 가능하게 한다.
  • 프로그래밍 언어 요소(예: C 문장)와 프리프로세서 지시어(예: #if, #ifdef)를 모두 표현할 수 있도록 설계된 고유한 통합 추상구문트리(_AST_)를 개발하여 애너테이션 처리된 코드에서 일관된 메트릭 계산을 가능하게 한다.
  • 함수 수준에서 세밀한 메트릭 계산을 지원하여 복수 스레드 간 효율적인 병렬 처리가 가능하도록 한다.
  • 기능 메트릭(예: 기능당 제약 조건 수)을 가변성 인식 코드 메트릭(예: 맥코이의 순환 복잡도)의 입력으로 사용할 수 있도록 하여 메트릭의 임의 조합을 가능하게 한다.
  • 속성 파일을 통한 구성 기반 메트릭 선택을 지원하여 사용자가 모든 23,342개 메트릭 변형 또는 특정 부분집합을 실행할 수 있도록 한다.
  • 기존의 가변성 및 빌드 모델 추출기 기반으로 구축되며, 추가 추출기를 통해 새로운 SPL을 지원하기 위한 확장성도 제공한다.

실험 결과

연구 질문

  • RQ1기존 코드 메트릭을 가변성 인식 메트릭과 효과적으로 통합하여 소프트웨어 제품선의 품질 속성을 측정할 수 있는가?
  • RQ2대규모 SPL에서 23,000개 이상의 메트릭 변형을 지원하는 통합 메트릭 계산 프레임워크의 확장성과 성능은 어떠한가?
  • RQ3기능 모델 메트릭(예: 기능당 제약 조건 수)이 가변성에 기인한 복잡도를 반영하기 위해 코드 복잡도 메트릭에 얼마나 잘 통합될 수 있는가?
  • RQ4완전한 문법적 정확성 없이도 공통된 AST 표현이 소스 코드와 프리프로세서 애너테이션을 모두 효과적으로 모델링할 수 있는가?
  • RQ5확장 가능한 오픈소스 도구 인프라는 연구 실험과 산업 현장의 코드 품질 분석을 동시에 지원할 수 있는가?

주요 결과

  • MetricHaven는 기존 코드 메트릭, 가변성 인식 코드 메트릭, 기능 모델 메트릭을 조합하여 총 23,342개의 고유한 메트릭 변형을 지원한다.
  • 도구는 높은 성능을 달성하여 이중 Xeon 시스템(128GB RAM)에서 리눅스 커널(버전 4.15)의 모든 23,342개 메트릭 변형을 약 3.5시간 내에 측정하였다.
  • 전체 리눅스 커널 소스에서 평균적으로 각 메트릭 계산에 1초 미만이 소요되며, 평균적으로 함수당 약 40ms가 소요된다.
  • 통합된 AST는 프리프로세서 지시어와 코드 요소를 하나의 일관된 구조에서 정확하게 모델링할 수 있도록 하여 복잡한 메트릭 조합을 용이하게 한다.
  • 시스템은 높은 병렬 처리 효율성을 보이며, 함수별 메트릭 계산이 복수 스레드 간에 매우 효율적으로 병렬화되고 확장 가능하다.
  • 프레임워크는 기능 모델 복잡도(예: NoC-메트릭)를 순환 복잡도 계산에 가중치로 사용하는 등 새로운 메트릭 조합을 가능하게 하여 가변성에 기인한 복잡도를 반영한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.