Files
2nd/10_Wiki/Topics/Static_and_Dynamic_Analysis.md
T
2026-05-02 23:33:34 +09:00

50 lines
3.1 KiB
Markdown

---
id: P-REINFORCE-WIKI-DEV-ANALYSIS-HYBRID
title: "정적 및 동적 분석 방법론 (Static and Dynamic Analysis)"
category: Unified
status: verified
canonical_id: ""
aliases: ["정적 분석", "동적 분석", "SAST", "런타임 분석", "코드 분석"]
duplicate_of: ""
source_trust_level: A
confidence_score: 1.0
tags: ["Code_Analysis", "Static_Analysis", "Dynamic_Analysis", "Debugging", "Code_Quality"]
raw_sources: ["Datacollector_Export_2026-05-02"]
last_reinforced: 2026-05-02
github_commit: ""
---
# [[정적 및 동적 분석 방법론 (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)로 인한 개발자 피로도 발생 가능. 실행 환경이 불필요하여 도입이 쉬움.
- **동적 분석**: 실행 가능한 환경 구축(로컬 셋업 등)에 비용 소요. 실제 동작을 보장하므로 신뢰도가 높음.
## 6. 지식 연결 (Related)
- [[Codebase_Onboarding_Guide]]: 분석 기술을 활용해 시스템을 빠르게 파악하는 절차.
- [[SAST_vs_DAST]]: 보안 관점에서의 정적/동적 분석 비교.
- [[Behavioral_Code_Analysis]]: 코드 변경 이력과 분석 데이터를 결합한 고도화된 기법.
## 🧪 검증 상태 (Validation)
- **정보 상태**: 검증 완료 (Verified)
- **출처 신뢰도**: A
- **검토 이유**: 코드 품질 확보와 아키텍처 이해를 위한 엔지니어링 분석 표준 정립.