성능 분석
사용자가 요구한 기능을 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도
측정 지표
처리량 (Throughtput) |
일정 시간 내에 애플리케이션이 처리하는 일의 양 |
응답 시간 (Response Time) |
애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때 까지 걸린 시간 |
경과 시간 (Turn Around Time) |
애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때 까지 걸린 시간 |
자원 사용률 (Resource Usage) |
애플리케이션이 의뢰한 작업을 처리하는 동안의 (CPU 사용량, 메모리 사용량, 네트워크 사용량 등) 자원 사용량 |
빅오 표기법(Big-O Notation)
알고리즘 실행 시간이 최악일 때를 표기하는 방법

순환 복잡도(Cyclomatic Complexity)
한 프로그램의 논리적인 복잡도를 측정하기 위한 소프트웨어 척도
맥케이브 순환도(McCabe's Cyclomatic) or 맥케이브 복잡도 메트릭(McCabe's Complexity Metrics)이라고도 함
제어 흐름도 이론에 기초를 둠
- 순환 복잡도를 이용하여 계산된 값은 프로그램의 독립적인 경로의 수를 정의, 모든 경로가 한 번 이상 수행되었음을 보장하기 위해 행해지는 테스트 횟수의 상한 선을 제공
- 제어 흐름도 G에서 순환 복잡도 V(G) 계산
- 방법1 - 순환 복잡도 = 제어 흐름도의 영역 수 -> 제어 흐름도의 영역 수를 계산
- 방법2 - V(G) = E - N + 2
- E : 화살표 수
- N : 노드의 수
소스 코드 최적화
나쁜 코드(Bad Code)를 배제, 클린 코드(Clean Code)를 작성하는 것
나쁜 코드
- 프로그램의 로직(Logic)이 복잡하고 이해가 어려운 코드
- 스파게티 코드 : 코드의 로직이 서로 복잡하게 얽혀 있는 코드
- 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
클린 코드
- 누구나 쉽게 이해하고 수정 및 추가할 수 잇는 단순, 명료한 코드, 즉 잘 작성된 코드를 의미함
- 클린 코드 작성 원칙
가독성 | - 누구든지 코드를 쉽게 읽을 수 있도록 작성 - 코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용함 |
단순성 | - 코드를 간단하게 작성 - 한번에 한 가지를 처리하도록 코드를 작성 - 클래스/메소드/함수 등을 최소 단위로 분리 |
의존성 배제 |
- 코드가 다른 모듈에 미치는 영향을 최소화 - 코드 변경 시 다른 부분에 영향이 없도록 작성 |
중복성 최소화 |
- 코드의 중복을 최소화 함 - 중복된 코드는 삭제하고 공통된 코드를 작성함 |
추상화 | - 상위 클래스/메소드/ㅎ마수에서는 간략하게 애플리케이션의 특성을 나타냄 - 상세 내용을 하위 클래스/메소드/함수에서 구현 |
소스 코드 품질 분석 도구
소스 코드 품질 분석 도구는 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구
대분류
- 정적 분석 도구
- 작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구
- 개발 초기의 결함을 찾는데 사용
- 개발 완료 시점에서는 개발된 소스 코드의 품질을 검증하는 차원에서 사용
- 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있음
- 동적 분석 도구로는 발견하기 어려운 결함을 찾아내고, 소스 코드에서 코딩의 복잡도, 모델 의존성, 불일치성 등을 분석 할 수 있음
- 종류 : pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등
- 동적 분석 도구
- 작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 도구
- 종류 : Avalanche, Valgrind 등
EAI(Enterprise Application Integration)
기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션
비즈니스 간 통합 및 연계성을 증대시켜 효율성 및 각 시스템 간의 확장성(Determinacy)을 높여줌
구축 유형

ESB(Enterprise Ssrvice Bus)
애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션
- 통합 측면에서 EAI와 유사하지만 서비스 중심의 통합을 지향하는 점이 다름
- 특정 서비스에 국한되지 않고 범용적으로 사용하기 위하여 애플리케이션과 결합도를 약하게 유지
- 관리 및 보안 유지가 쉽고, 높은 수준의 품질 지원이 가능

인터페이스 보안 기능 적용
인터페이스 보안 기능은 일반적으로 네트워크, 애플리케이션, 데이터베이스 영역에 적용
네트워크 영역 | - 인터페이스 송, 수신 간 스니핑(Sniffing) 등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해 네트워크 트래픽에 대한 암호화를 설정 - 암호하는 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP등의 다양한 방식으로 적용 |
애플리케이션 영역 | - 소프트웨어 개발 보안 가이드를 참조하여 애플리케이션 코드 상의 보안 취약점을 보완하는 방향으로 애플리케이션 보안 기능 적용 |
데이터베이스 영역 | - 데이터베이스, 스키마, 엔티티의 접근 권한과 프로시저(Procedure), 트리거(Trigger) 등의 데이터베이스 동작 객체의 보안 취약점에 보안 기능을 적용 |
IPsec(IP Security) : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜, 암호화 수행 시 양방향 암호화를 지원
데이터 무결성 검사 도구
- 시스템 파일의 변경 유무를 확인하고, 파일이 변경되었을 경우 이를 관리자에게 알려주는 도구
- 인터페이스 보안 취약점을 분석하는데 사용
- 크래커나 허가 받지 않는 내부 사용자들이 시스템에 침입하고 그 흔적을 감추는 데(백도어, 시스템 파일 변경 등), 이를 감지할 수 있음
- 해시(Hash) 함수를 이용하여 현재 파일 및 디렉토리의 상태를 DB에 저장한 후 감시하다가 현재 상태와 DB의 상태가 달라지면 관리자에게 변경 사실을 알려줌
- 대표적인 데이터 무결성 검사도구
- Tripwire, AIDE, Samhain, Claymore, Slipwire, Fcheck등
인터페이스 구현 검증 도구
인터페이스 구현을 검증하기 위해 인터페이스 단위 기능과 시나리오 등을 기반으로 하는 통합 테스트가 필요
통합 테스트는 테스트 자동화 도구를 이용하여 효율적으로 수행
도구 | 기능 |
xUnit | - 같은 테스트 코드를 여러번 작성하지 않게 도와줌 - 테스트마다 예상 결과를 기억할 필요 없는 자동화된 해법을 제공하는 단위 테스트 프레임워크 - Smalltalk에 처음 적용되어 SUnit이라는 이름이였으나 Java용의 JUnit, C++용의 CppUnit, .NET 용의 NUnit, HTTP 용의 HttpUnit 등 다양한 언어에 적용되면서 xUnit으로 통칭 |
STAF | - 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크 - 크로스 플랫폼, 분산 소프트웨어 테스트 환경을 조성할 수 있도록 지원 - 분산 소프트웨어의 경우 각 분산 환경에 설치된 데몬이 프로그램 테스트에 대한 응답을 대신하며, 테스트가 완료되면 이를 통합하고 자동하여 프로그램을 완성 |
FitNesse | - 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크 |
NTAF | - FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크 |
Selenium | - 다양한 브라우저 및 개발 언어를 지원하느 웹 어플리케이션 테스트 프레임워크 |
watir | - Ruby를 사용하는 애플리케이션 테스트 프레임워크 |
APM(Application Performace Management/Monitoring)
애플리케이션의 성능 관리를 위해 접속자, 자원현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구
리소스 방식 - Nagios, Zabbix, Cacti등
엔드투엔드 방식(End-to-End) - VisualVM, 제니퍼, 스카우터 등
'자격증 준비 > 정보처리기사필기 - 2과목(소프트웨어 개발)' 카테고리의 다른 글
[정보처리기사 필기] 2과목 - 정렬, 검색 알고리즘 (0) | 2023.01.12 |
---|---|
[정보처리기사 필기] 2과목 - 자료구조 (0) | 2023.01.11 |
[정보처리기사 필기] 2과목 - 빌드 (0) | 2023.01.11 |
[정보처리기사 필기] 2과목 - 테스팅(2) (0) | 2023.01.03 |
[정보처리기사 필기] 2과목 - 테스팅(1) (0) | 2023.01.03 |