1. 소스 코드 최적화
- 클린 코드 : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드
- 나쁜 코드 : 로직이 복잡하고 이해하기 어려운 코드로, 스파게티 코드와 외계인 코드가 해당
- 스파게티 코드 : 로직이 서로 복잡하게 얽혀 있는 코드
- 외계인 코드 : 오래되거나 참고문서 또는 개발자가 없이 유지보수 작입이 어려운 코드
- 클린 코드 작성 원칙
가독성 | - 누구든지 쉽게 읽을 수 있도록 작성 - 쉬운 용어, 들여쓰기 기능 등을 사용 |
단순성 | - 코드를 간단하게 작성 - 한 번에 한 가지를 처리하도록 코드를 작성하고 클래스/메소드/함수 등을 최소 단위로 분리한다 |
의존성 배제 | - 코드가 다른 모듈에 미치는 영향을 최소화한다 - 코드 변경 시 다른 부분에 영향이 없도록 작성 |
중복성 최소화 | - 코드의 중복을 최소화한다 - 중복 코드를 삭제하고 공통된 코드를 사용 |
추상화 | 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위 클래스/메소드함수에서 구현 |
2. 소스 코드 최적화 유형
- 클래스 분할 배치 : 하나의 클래스는 하나의 역할만 수행하도록 응집도를 높이고, 크기를 작게 작성
-> 명령어나 호출문 등 모듈의 내부 요소들이 서로 관려되어 있는 정도
- 느슨한 결합(Loosely Coupled) : 인터페이스 클래스를 이용하여 추상화된 자료구조와 메소드를 구현함으로써 클래스 간의 의존성 최소화
- 코딩 형식 준수 : 줄 바꿈 사용, 개념적 유사성이 높은 종속 함수 사용, 호출하는 함수는 선배치, 호출되는 함수는 후배치, 지역 변수는 각 함수의 맨 처음에 선언 등
- 좋은 이름 사용
- 적절한 주석문 사용
3. 소스 코드 품질 분석 도구
- 코딩 스타일, 코딩 표준, 코드 복잡도, 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용
-> 프로세스 내에서의 작업단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 정적 분석 도구
- 종류 : pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura etc..
- 동적 분석 도구
- 작성한 소스 코드를 실행하여 메모리 누수, 스레드 결함 등을 분석하는 도구
- 종류 : Avalanche, Valgrind 등
4. 소스 코드 품질 분석 도구 종류
도구 | 설명 | 지원 환경 |
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 |
'Study > 정보처리기사' 카테고리의 다른 글
066 모듈 연계를 위한 인터페이스 기능 식별 - 5장 인터페이스 구현 - 2과목 소프트웨어 개발 (0) | 2022.01.28 |
---|---|
065 모듈 간 공통 기능 및 데이터 인터페이스 확인 - 5장 인터페이스 구현 - 2과목 소프트웨어 개발 (0) | 2022.01.28 |
063 복잡도 - 4장 애플리케이션 테스트 관리 - 2과목 소프트웨어 개발 (0) | 2022.01.28 |
062 애플리케이션 성능 분석 - 4장 애플리케이션 테스트 관리 - 2과목 소프트웨어 개발 (0) | 2022.01.28 |
061 결함 관리 - 4장 애플리케이션 테스트 관리 - 2과목 소프트웨어 개발 (0) | 2022.01.28 |