정보처리기사/필기

[2과목-4장-059] 애플리케이션 성능 개선

여니두 2020. 4. 26.

* 소스 코드 최적화

: 나쁜 코드 배제, 클린 코드로 작성하는 것

- 클린 코드 (Clean Code): 단순, 명료한 코드. 잘 작성된 코드

- 나쁜 코드 (Bad Code): 로직이 복잡, 이해하기 어려운 코드. 스파게티 코드, 처리 로직 중복 작성된 코드가 해당됨

- 나쁜 코드 > 수정 > 애플리케이션 성능 개선된다.

 

- 클린 코드 작성 원칙

1) 가독성

- 쉽게 읽을 수 있도록 작성

2) 단순성

- 간단히 작성

- 한 번에 한 가지 처리하도록 최소 단위로 분리

3) 의존성 배제

- 다른 모듈에 미치는 영향 최소화

- 코드 변경 시 다른 부분에 영향 없도록 작성

4) 중복성 최소화

- 중복 최소화

- 공통된 코드 사용

5) 추상화

- 상위 함수 > 애플리케이션 특성 / 하위 함수 > 상세 내용 구현

 

- 유형

1) 클래스 분할 배치

: 하나의 클래스는 하나의 역할만 수행하도록 응집도 높이고 크기 작게 작성

2) 느슨한 결합(Loosely Coupled)

: 인터페이스 클래스 이용하여 추상화된 자료구조와 메소드 구현 > 의존성 최소화

3) 코딩 형식 준수

(1) 줄 바꿈 사용

(2) 개념적 유사성 높은 종속 함수 사용

(3) 호출 함수 - 선배치 / 호출되는 함수 - 후배치

(4) 지역 변수는 각 함수 맨 처음에 선언

4) 좋은 이름 사용

: 명명 규칙 정의

5) 적절한 주석문 사용

 

** 소스코드 품질 분석 도구

: 소스코드 코딩 스타일, 코딩 표준, 복잡도, 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구

1) 정적 분석 도구

- 개발 초기 결함 찾는 데 사용.

- 개발 완료 시점 > 개발된 소스코드의 품질 검증 차원

- 동적 분석 도구로 발견하기 어려운 결함 찾아냄.

- 복잡도, 모델 의존성, 불일치성 분석 가능

 

*** 종류

(1) pmd: 결함 유발 가능 코드 검사

(2) cppcheck: C/C++ 에 대한 메모리 누수, 오버플로우 분석

(3) SonarQube: 중복 코드, 복잡도, 코딩 설계 등 분석

(4) checkstyle: 자바에 대해 소스코드 표준 따르는지 검사

(5) ccm: 다양한 언어 복잡도 분석

(6) cobertura: 자바 복잡도 분석 및 테스트 커버리지 측정

 

2) 동적 분석 도구

- 메모리 누수, 스레드 결함 등 분석 가능

 

*** 종류

(1) Avalanche

- Valgrind 프레임워크 및 STP 기반 구현

- 결함 및 취약점 분석

(2) Valgrind: 메모리 및 쓰레드 결함 등 분석

댓글