
< 애플리케이션 성능 측정 지표 >
- 처리량 (Throughput)
- 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
- 웹 애플리케이션의 경우 시간당 페이지 수로 표현
- 응답 시간 (Response Time)
- 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
- 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
- 경과 시간 (Turnaround Time)
- 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
- 자원 사용률 (Resource Usage)
- 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량
< 배드 코드 >
- 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
- 처리 로직의 제어가 정제되지 않고 서로 얽혀 있는 스파게티 코드, 변수나 메소드에 대한 이름 정의를 알 수 없는 코드, 동일한 처리 로직이 중복되게 작성된 코드
< 클린 코드 >
- 잘 작성되어 가독성이 높고 단순하며 의존성을 줄이고 중복을 최소화하여 깔끔하에 잘 정리된 코드
< 소스 코드 품질 분석 도구 유형 >
- 정적 분석 도구
- 작성된 소스 코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 여부를 확인하는 코드 분석 도구
- 동적 분석 도구
- 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고 발생한 스레드의 결함 등을 분석하기 위한 도구
< 정적 분석 도구 >
- pmd
- 자바 및 타 소스 코드에 대한 버그, 데드코드 분석
- cppcheck
- C/C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석
- SonarQube
- 소스 코드 품질 통합 플랫폼, 프로그인 확장 기능
- checkstyle
- ccm
- 다양한 언어의 코드 복잡도 분석 도구, 리눅스, 맥 환경 CLI 형 태 지원
- cobertura
- jcoverage 기반의 테스트 커버리지 측정 도구
< 동적 분석 도구 >
- Avalanche
- Vargrinf 프레임워크 및 STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구
- Valgrind
- 자동화된 메모리 및 스레드 결함 발견 분석 도구
<리팩토링 >
- 유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스 코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법
- 소프트웨어 모듈의 외보적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상시키는 기법
< 리팩토링의 목적 >
- 유지보수성 향상
- 유연한 시스템
- 생산성 향상
- 품질 향상