KPI 주도 코드 분석
KPI-driven code analysisKPI 기반 코드 분석(KPI = Key Performance Indicator)은 소프트웨어 소스 코드 및 소스 코드 관련 IT 시스템을 분석하여 팀 성과, 시장 출시 시간, 리스크 관리, 장애 방지 등과 같은 소프트웨어 시스템 개발의 비즈니스 크리티컬 측면을 파악하는 방법입니다.
Hasso Plattner Institute에서 개발한 KPI 기반 코드 분석은 소프트웨어 품질 향상을 목적으로 소스 코드의 정적 프로그램 분석입니다.그러나 KPI 기반 코드 분석은 소스 코드만 분석하는 것이 아닙니다.소프트웨어 시스템의 품질 및 개발 진행 상황에 대한 포괄적인 인상을 만들기 위해 코딩 활동 등의 기타 정보 소스도 포함된다.
동작 모드
KPI에 의한 코드 분석은 완전히 자동화된 프로세스이므로 팀 활동과 소프트웨어 시스템 전체 소스 코드의 수정을 실시간으로 감시할 수 있습니다.이런 식으로 부정적인 경향은 발생하자마자 명백해진다.따라서, 이 「조기 경보 시스템」은, 코스트 삭감과 개발 속도 향상을 위한 강력한 수단을 제공합니다.KPI 기반 코드 분석의 조기 경고 접근 방식을 통해 새롭게 도입된 모든 수준의 복잡성을 적시에 발견하여 그 영향을 최소화할 수 있습니다.개발자는 기존의 복잡성을 줄이려고 귀중한 시간을 낭비하는 대신 새로운 기능에 시간을 할애하여 팀의 생산성을 높일 수 있습니다.
인적 요인
"인간적 요소"는 KPI 기반 코드 분석에 포함되며, 이는 또한 어떤 개발자가 언제 어떤 코드를 등록했는지도 살펴본다는 것을 의미합니다.이를 통해 각 개발자가 제공하는 소프트웨어의 품질을 판단하고 직원의 자격, 지시 및 동기 부여에 관한 문제를 조기에 파악하여 해결할 수 있습니다.
고려된 출처
소프트웨어 개발 프로젝트의 생산성과 성공에 중요한 핵심 성과 지표(KPI)를 결정하기 위해 소프트웨어 코드와 관련된 수많은 데이터 소스를 읽습니다.이를 위해 KPI 기반 코드 분석은 데이터 마이닝 및 비즈니스 인텔리전스에서 가져온 방법을 차용합니다. 그렇지 않으면 회계 및 고객 분석에 사용됩니다.KPI 중심 코드 분석은 다음과 같은 소스로부터 데이터를 추출하여 분석 데이터 모델에 통합합니다.이 데이터 모델에서는 주요 성과 지표의 값이 계산됩니다.데이터 소스에는 특히 다음이 포함됩니다.
- 버전 제어(버전 제어라고도 함)이 시스템에서는 소프트웨어 시스템의 전체 수명 주기 동안 각 개발자의 모든 단계가 추적됩니다.데이터에는 "어느 개발자가 언제 무엇을 변경했습니까?"라고 기술되어 있습니다.이 데이터는 "어느 분야의 코드에 어떤 노력 또는 개발 비용이 투자되었는가?"라는 질문에 답하기 위한 근거를 제공합니다.주요 리비전 제어 시스템은 Subversion, Git, Perforce, Mercurial, Synergy, ClearCase 등입니다.
- 소프트웨어 테스트 시스템이것들은, 소스 코드의 어느 부분이 이미 테스트되고 있는지를 읽어낼 수 있습니다.이 정보를 통해 테스트에 공백이 있는 곳, 심지어 이러한 공백이 의도적으로 남아 있는 곳(테스트 설정에 상당한 비용과 노력이 소요되기 때문에)이 명확해집니다.
- 버그 트래킹 시스템(버그 트래커).이 정보는 개정관리시스템에 의해 제공되는 정보와 조합하여 코드의 특정 영역의 오류율에 대한 결론을 도출하는 데 도움이 될 수 있습니다.
- 추적 시스템을 발행합니다.이러한 시스템에 의해 생성되는 정보는 개정 제어의 정보와 함께 특정 기술 요건과 관련된 개발 활동에 관한 결론을 도출할 수 있도록 한다.또한 정확한 시간 투자 데이터를 분석에 활용할 수 있습니다.
- 퍼포먼스 프로파일러(프로파일링(컴퓨터 프로그래밍)).소프트웨어 시스템의 퍼포먼스에 관한 데이터는 코드의 어느 영역이 CPU 자원을 가장 많이 소비하는지를 분석하는 데 도움이 됩니다.
분석 결과
분석 데이터 모델에 영향을 미치는 많은 요인 때문에 소스 코드를 최적화하는 방법뿐만 아니라 직원 자격, 직원 지시 및 개발 프로세스 분야의 조치 요건을 식별할 수 있습니다.
- 소스 코드가 너무 복잡하거나 런타임 성능이 떨어지기 때문에 수정해야 하는 위치에 대한 지식:
- 제어 흐름 경로 수를 기하급수적으로 증가시키는 딥 네스트.
- 여러 측면이 혼합되어 하나의 측면을 변경하려면 여러 지점에서 변경 사항을 구현해야 하는 거대한 단일 코드 단위입니다.
- 불필요한 멀티스레딩 식별멀티스레딩은 매우 큰 에러 원인입니다.멀티스레딩 코드의 런타임 동작은 이해하기 어렵기 때문에 확장이나 유지보수에 필요한 비용과 노력이 그만큼 높습니다.따라서 일반적으로 불필요한 멀티스레딩은 피해야 합니다.
- 불충분한 예외 처리 식별코드 내에 트라이캐치 블록이 너무 적거나 캐치 함수에서 아무것도 실행되지 않으면 프로그램 오류가 발생할 경우 심각한 결과를 초래할 수 있습니다.
- 마지막 소프트웨어 테스트 이후 변경된 소스 코드 섹션, 즉 테스트를 수행해야 하는 부분과 수행하지 않아야 하는 부분을 식별합니다.이 정보를 통해 소프트웨어 테스트를 보다 인텔리전트하게 계획할 수 있습니다.새로운 기능을 보다 집중적으로 테스트하거나 자원을 절약할 수 있습니다.
- 특정 소프트웨어 모듈의 개발 또는 확장에 필요한 비용과 노력에 대한 지식:
- 기존 소프트웨어 모듈을 확장하는 경우 코드 리팩터링을 수행하는 것이 권장될 수 있습니다.
- 새롭게 개발된 기능을 분석하여 비용에 대한 목표/성능 분석이 수행되었는지, 수행될 경우 그 이유를 확인할 수 있습니다.계획에서 벗어난 원인이 식별된 경우, 향후 계획에서 정확도를 높이기 위한 조치를 구현할 수 있다.
- 어느 개발자(팀)가 어떤 소스 코드를 작성했는지를 추적하여 지속적으로 작성한 소프트웨어를 조사함으로써 단발성 품질 저하, 직원 자격 향상 필요성의 증거 또는 소프트웨어 개발 프로세스에서 추가 최적화가 필요한지 여부를 식별할 수 있습니다.
마지막으로 KPI 기반 코드 분석의 분석 데이터 모델을 통해 IT 프로젝트 매니저는 매우 초기 단계에서 생산된 소프트웨어의 상태, 직원의 기술과 노력 및 소프트웨어 개발 프로세스의 성숙도에 대한 포괄적인 개요를 얻을 수 있습니다.
분석 데이터의 표현 방법 중 하나는 이른바 소프트웨어 맵이다.
「 」를 참조해 주세요.
- 프로그램 분석(컴퓨터 과학)
- 동적 프로그램 분석
- 형상 분석(소프트웨어)
- 프로그래밍 언어의 형식적 의미론
- 정식 검증
- 소프트웨어 테스트
- 코드 감사
- 문서 생성기
- 정적 코드 분석 도구 목록
외부 링크
- 복잡한 3D 트리맵의 인터랙티브 렌더링
- 실행 트레이스의 멀티스케일 비주얼 비교
- 웹 기반 소스 코드 분석을 위한 대화형 소프트웨어 맵
- 소프트웨어 맵을 사용한 권장 시스템 확장
- 완벽한 소프트웨어 유지보수를 지원하는 시각적 분석 접근법
- View Fusion(퓨전):실행 트레이스의 구조 뷰와 액티비티 뷰의 상관 관계
- 소프트웨어 리엔지니어링 계획을 위한 시각적 분석 및 설계 도구
- 대규모 소프트웨어 시스템의 3D 트리맵을 위한 인터랙티브 영역 주석
- 실행 트레이스 시각화 및 소프트웨어 유지보수에 대한 적용
- 트레이스 시각화를 사용한 복잡한 멀티스레드 소프트웨어 시스템의 개요
- 복잡한 소프트웨어 시스템의 유지보수를 용이하게 하기 위한 멀티스레드 동작 시각화
- 트레이스 탐색을 용이하게 하기 위한 대규모 프루닝 실행 트레이스 시각화
- 최근 도입된 버그의 현지화를 지원하기 위한 실행 트레이스에 대한 코드 변경 투영
- SyncTrace: 비주얼 스레드 인터랙션 분석