Certificate/정보처리기사

[2과목 소프트웨어 개발] 애플리케이션 테스트 관리 - 065. 애플리케이션 성능 개선

S_sun 2024. 8. 2. 14:21

1. 소스 코드 최적화

  • 나쁜 코드(Bad Code)를 배제하고, 클린 코드(Clean Code)로 작성하는 것
  • 클린 코드(Clean Code) : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드
  • 나쁜 코드(Bad Code) : 로직이 복잡하고 이해하기 어려운 코드
    • 스파게티 코드(Spaghetti Code) : 로드의 로직이 서로 복잡하게 얽혀 있는 코드
    • 외계인 코드(Alien Code) : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드

2. ⭐ 클린 코드 작성 원칙

  • 가독성
    • 누구든지 코드를 쉽게 읽을 수 있도록 작성
    • 코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용
  • 단순성
    • 코드를 간단하게 작성
    • 한 번에 한 가지를 처리하도록 코드를 작성
    • 클래스/메소드/함수 등을 최소 단위로 분리
  • 의존성 배제
    • 코드가 다른 모듈에 미치는 영향을 최소화
    • 코드 변경 시 다른 부분에 영향이 없도록 작성
  • 중복성 최소화
    • 코드의 중복을 최소화
    • 중복된 코드는 삭제하고 공통된 코드를 사용
  • 추상화
    • 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용을 하위 클래스/메소드/함수에서 구현

3. 소스 코드 최적화 유형

  • 클래스 분할 배치 : 하나의 클래스는 하나의 역할만 수행하도록 응집도 높이기
  • 느슨한 결함(Loosely Coupled) : 인터페이스를 이용해 의존성 최소화
  • 코딩 형식 준수 : 줄바꿈, 지역변수 맨처음, 호출 - 선배치, 호출됨 - 후배치
  • 좋은 이름 사용
  • 적절한 주석문 사용

4. 소스 코드 품질 분석 도구

1) 정적 도구 분석

  • 코드를 실행하지 않고 코딩 표준, 코딩 스타일, 결함 등 확인하는 코드 분석 도구
  • 개발 초기의 결함을 찾는데 사용
  • 개발 완료 시점에서는 개발된 소스 코드의 품질 검증하는 차원에서 사용
  • 자료 흐름, 논리 흐름 분석을 통해 비정상적인 패턴 찾음
  • 발견하기 어려운 결함을 찾아냄
  • 코딩의 복잡도, 모델 의존성, 불일치성 등을 분석
  • pmd, dppcheck, SonarQube, checkstyle, ccm, cobertura

2) 동적 분석 도구

  • 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결합 등을 분석하는 도구
  • Avalanche, Valgrind

소스 코드 품질 분석 도구의 종류

종류 도구 설명 지원 환경
정적 pmd 미사용 변수, 최적화되지 않은 코드 등 결함을 유발할 수 있는 코드 검사 Linux, Windows
정적 cppcheck C/C++ 코드에 대한 메모리 누수, 오버플로우 등 분석 Windows
정적 SonarQube 중복 코드, 복잡도, 코딩 설계 등 소스 분석 통합 플랫폼 Cross-Platform
정적 checkstyle 자바 소스 코드 표준 검사, 다양한 개발도구 통합 사용 가능 Cross-Platform
정적 ccm 다양한 언어의 코드 복잡도 분석 Cross-Platform
정적 cobertura 자바 코드 복잡도 분석 및 테스트 커버리지 측정 Cross-Platform
동적 Avalanche Valgrind 프레임 워크 및 STP 기반으로 구현됨, 프로그램 결함 및 취약점 분석 Linux, Android
동적 Valgrind 프로그램 내 메모리 및 스레드 결함 분석 Cross-Platform

 

 

 

📖 Reference
 

2023 시나공 정보처리기사 필기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

728x90
반응형