Files
2nd/10_Wiki/Topics_Dev/Static_and_Dynamic_Analysis.md
T

3.1 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, tags, raw_sources, last_reinforced, github_commit
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score tags raw_sources last_reinforced github_commit
P-REINFORCE-WIKI-DEV-ANALYSIS-HYBRID 정적 및 동적 분석 방법론 (Static and Dynamic Analysis) 10_Wiki/💻 Topics_Dev verified
정적 분석
동적 분석
SAST
런타임 분석
코드 분석
A 1.0
Code_Analysis
Static_Analysis
Dynamic_Analysis
Debugging
Code_Quality
Datacollector_Export_2026-05-02
2026-05-02

정적 및 동적 분석 방법론 (Static and Dynamic Analysis)

1. 개요

소프트웨어 시스템을 해독하고 품질을 확보하기 위해서는 코드를 실행하지 않고 분석하는 정적 분석과 실제로 실행하며 관찰하는 동적 분석의 상호보완적 활용이 필수적이다. 정적 분석은 구조와 잠재적 결함을 조기에 식별하며, 동적 분석은 실제 런타임 동작과 복잡한 제어 흐름을 명확히 한다.

2. 정적 분석 (Static Analysis)

  • 정의: 코드를 실행하지 않은 상태(Rest)에서 소스 코드의 구문, 구조, 보안 취약점 등을 스캔.
  • 핵심 가치: 개발 초기 단계에서 버그 발견, 코딩 표준 준수 강제, 보안 취약점(SAST) 조기 차단.
  • 주요 도구: SonarQube, ESLint, Checkmarx, 정적 의존성 분석 도구.

3. 동적 분석 (Dynamic Analysis)

  • 정의: 애플리케이션을 실제로 실행하면서 발생하는 런타임 행위와 데이터 흐름을 추적.
  • 핵심 가치: 메모리 누수 탐지, 호출 스택(Call Stack) 분석, 실제 변수 상태 관찰, 성능 병목 구간(Profiling) 식별.
  • 주요 기법: 디버깅(중단점 활용), 로그 분석, 런타임 프로파일링, 분산 트레이싱.

4. 실전 활용: 하이브리드 접근 (Hybrid Approach)

  1. 정적 파악: 아키텍처 다이어그램과 소스 코드 구조를 통해 시스템의 전체 지형 파악.
  2. 동적 검증: 주요 진입점(Entry Point)에 중단점을 설정하고 실제 데이터를 흘려보내며 코드의 반응과 흐름을 역추적.
  3. 실험적 수정: 테스트 코드를 수정하거나 의도적으로 예외를 발생시켜 시스템의 예외 처리 로직과 복구 메커니즘 검증.

5. 트레이드오프

  • 정적 분석: 오탐지(False Positives)로 인한 개발자 피로도 발생 가능. 실행 환경이 불필요하여 도입이 쉬움.
  • 동적 분석: 실행 가능한 환경 구축(로컬 셋업 등)에 비용 소요. 실제 동작을 보장하므로 신뢰도가 높음.

🧪 검증 상태 (Validation)

  • 정보 상태: 검증 완료 (Verified)
  • 출처 신뢰도: A
  • 검토 이유: 코드 품질 확보와 아키텍처 이해를 위한 엔지니어링 분석 표준 정립.