---
id: wiki-2026-0508-fmea
title: FMEA
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Failure Mode and Effects Analysis, DFMEA, PFMEA, FMECA]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [reliability, risk, safety, systems-engineering]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: Python
  framework: pandas, AIAG-VDA template
---

# FMEA

## 매 한 줄
> **"매 system 의 모든 failure mode 의 systematic enumeration + ranking"**. 1949 US Military (MIL-P-1629) → NASA Apollo → 자동차 (AIAG-VDA 2019, the modern standard) → 매 software / ML / SRE 의 risk-process 로 generalized. 매 "what can fail, how, what then, what to do" 의 매 4 column.

## 매 핵심

### 매 종류
- **DFMEA** (Design): 매 product / component design 단계.
- **PFMEA** (Process): 매 manufacturing / business process.
- **SFMEA** (System): 매 system-of-systems 의 interaction.
- **FMECA**: 매 + Criticality (quantitative).
- **MLFMEA / AI-FMEA** (2024+): 매 ML model failure modes (data drift, prompt injection, hallucination).

### 매 AIAG-VDA 7-step (2019, current global standard)
1. **Planning & Preparation** (5T: InTent, Timing, Team, Tasks, Tools).
2. **Structure Analysis** (system → subsystem → component tree).
3. **Function Analysis** (each element 의 functions + interfaces).
4. **Failure Analysis** (Failure Effect FE / Failure Mode FM / Failure Cause FC chain).
5. **Risk Analysis** — replaces RPN with **Action Priority (AP: H/M/L)** based on (S, O, D).
6. **Optimization** (preventive + detection actions).
7. **Results Documentation**.

### 매 scoring
- **Severity (S)** 1–10: 매 effect 의 customer / safety impact.
- **Occurrence (O)** 1–10: 매 cause 의 likelihood.
- **Detection (D)** 1–10: 매 control 의 detection ability (10 = 못 detect).
- 매 legacy **RPN = S·O·D** (deprecated by AIAG-VDA but still common).
- 매 modern **Action Priority** matrix: H / M / L.

## 💻 패턴

### Minimal FMEA table (pandas)
```python
import pandas as pd

rows = [
    {"item":"Brake pad","function":"friction","FM":"wear",
     "FE":"reduced braking","FC":"high mileage",
     "S":9,"O":4,"D":3},
    {"item":"Brake pad","function":"friction","FM":"contamination",
     "FE":"squeal","FC":"oil leak",
     "S":4,"O":3,"D":5},
]
df = pd.DataFrame(rows)
df["RPN"] = df.S * df.O * df.D
df = df.sort_values("RPN", ascending=False)
```

### AIAG-VDA Action Priority
```python
def action_priority(S, O, D):
    if S >= 9 and O >= 4: return "H"
    if S >= 9 and O >= 2: return "H"
    if S >= 7 and O >= 6 and D >= 6: return "H"
    if S >= 7 and O >= 4 and D >= 4: return "M"
    if S >= 4 and O >= 4: return "M"
    return "L"
df["AP"] = df.apply(lambda r: action_priority(r.S, r.O, r.D), axis=1)
```

### Software-FMEA (microservice)
```python
fmeas = [
    dict(component="auth-svc", FM="JWT signature mismatch",
         FE="login fails, downstream 401",
         FC="key rotation race",
         control="canary + jwks fallback",
         S=8, O=3, D=4),
    dict(component="auth-svc", FM="DB pool exhaustion",
         FE="latency spike, cascading 503",
         FC="connection leak in handler",
         control="bounded pool + timeouts + chaos test",
         S=7, O=5, D=6),
]
```

### ML-FMEA (LLM application)
```python
ml_fmeas = [
    dict(stage="prompt", FM="prompt injection",
         FE="data exfiltration via tool call",
         FC="user content concatenated unfiltered",
         control="structured prompt + injection classifier + tool allow-list",
         S=10, O=6, D=7),
    dict(stage="model",  FM="hallucinated citation",
         FE="false legal claim",
         FC="long-tail fact, no retrieval",
         control="RAG + post-hoc verifier",
         S=8,  O=7, D=5),
    dict(stage="data",   FM="distribution drift",
         FE="accuracy drop in prod",
         FC="seasonal user mix change",
         control="online metric monitor + canary",
         S=6,  O=6, D=4),
]
```

### Criticality matrix plot
```python
import matplotlib.pyplot as plt
plt.scatter(df.O, df.S, s=df.D*40, alpha=0.6)
for _, r in df.iterrows(): plt.annotate(r.FM, (r.O, r.S))
plt.xlabel("Occurrence"); plt.ylabel("Severity"); plt.grid()
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| Hardware design (auto, aero) | **DFMEA + AIAG-VDA** |
| Manufacturing line | **PFMEA** |
| Safety-critical (DO-178C, ISO 26262) | **FMEA + FTA + STPA** |
| Software service | **Software-FMEA + chaos engineering** |
| LLM / ML system | **ML-FMEA + red-team + evals** |
| Quick triage | **Risk matrix (S × O)** |

**기본값**: 매 AIAG-VDA 7-step + AP scoring (RPN deprecated).

## 🔗 Graph
- 부모: [[Risk_Management|Risk-Management]]
- 변형: [[DFMEA]] · [[PFMEA]] · [[FMECA]]
- 응용: [[SRE]]
- Adjacent: [[Chaos-Engineering]]

## 🤖 LLM 활용
**언제**: 매 new system 의 risk register 를 brainstorm; 매 architecture review 의 failure-chain 의 enumeration; 매 ML deployment 의 pre-mortem.
**언제 X**: 매 emergent / interactive failure (매 complex software) — 매 STPA 의 더 적합. 매 statistical reliability 는 FTA + Markov.

## ❌ 안티패턴
- **RPN multiplication only**: 매 (10,1,1)=10 vs (2,5,1)=10 의 same — but severity 10 의 catastrophic. **AP matrix 사용.**
- **Sev/Occ/Det 의 inconsistent scale**: 매 team-wide rubric 없으면 매 garbage.
- **One-shot document**: 매 living document 가 아니면 매 outdated. 매 design change 의 trigger update.
- **Skipping detection actions**: 매 only "add training" — 매 weak. 매 sensor / monitor / poka-yoke 의 추가.
- **Software FMEA 의 component-only**: 매 interaction failures 의 missed — 매 STPA 의 complement.

## 🧪 검증 / 중복
- Verified (MIL-P-1629; AIAG-VDA FMEA Handbook 2019; SAE J1739; ISO 26262-9).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 placeholder |
| 2026-05-10 | Manual cleanup — 7-step AIAG-VDA + 5 patterns + ML-FMEA |
