--- 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 - **검토 이유**: 코드 품질 확보와 아키텍처 이해를 위한 엔지니어링 분석 표준 정립.