DB·테스트·시스템공학 답안 — 세트 C
DB 인덱스 · 인덱스 스캔 · 암스트롱 공리 · 옵티마이저(DB) · 옵티마이저(AI) · 백투백 테스트 · 성능 테스트 · SW 안전성 분석 · SIL · HIL · HW 규모산정 | 정보관리 대비
| 두문자 | 원칙 | 핵심 내용 | 예시 |
|---|---|---|---|
| 선 | 선택도(Selectivity) | 카디널리티가 높을수록(값이 다양할수록) 인덱스 효율↑. 성별(2종류)은 부적합 | 주민번호·이메일 → 적합, 성별→부적합 |
| 카 | 카디널리티 | 컬럼의 고유 값 수. 높을수록 인덱스 효과 좋음. 복합 인덱스 선두 컬럼에 배치 | Bitmap Index: 저카디널리티(상태코드 등) |
| 범 | 범위 조건 고려 | = 조건에는 Hash Index, BETWEEN·LIKE·>= 범위 조건에는 B+Tree 인덱스 필수 | Hash: 등치만. B+Tree: 범위 가능 |
| 조 | 조합(복합) 인덱스 | 자주 함께 쓰이는 컬럼을 묶어 복합 인덱스 생성. 선두 컬럼 기준 정렬 | (dept_id, salary) → dept_id 단독 사용 가능 |
| 복 | 복합 인덱스 순서 | 선두 컬럼 생략 시 인덱스 미사용. 등치 조건 컬럼을 앞에, 범위 조건을 뒤에 | WHERE dept=? AND sal>? → (dept, sal) 순 |
| 두문자 | 스캔 방식 | 사용 조건 | 특징 |
|---|---|---|---|
| 유 | Unique Index Scan | UNIQUE 인덱스에 등치(=) 조건. 반드시 1건 이하 반환 | 가장 효율적. 단 1개 리프 접근 후 종료 |
| 범 | Index Range Scan | BETWEEN·>=·<=·LIKE 'A%' 등 범위 조건. 가장 일반적 | 리프 시작점 탐색 → 범위 끝까지 순차 읽기 |
| 전 | Index Full Scan | 인덱스 전체 순차 탐색. ORDER BY 컬럼이 인덱스와 일치 시 정렬 생략 가능 | Table Full Scan보다 인덱스가 작아 유리할 때 |
| 스 | Index Skip Scan | 복합 인덱스에서 선두 컬럼 조건 없을 때. 선두 컬럼 값을 건너뛰며 탐색 | Oracle 특화. 선두 컬럼 카디널리티 낮을 때 효과적 |
| 풀 | Table Full Scan | 인덱스 미존재·선택도 낮음·대량 조회. 옵티마이저가 인덱스보다 유리하다 판단 시 | 전체 블록 순차 읽기. 대량 조회엔 유리할 수 있음 |
| 두문자 | 공리/규칙 | 형식 표현 | 활용 예시 |
|---|---|---|---|
| 반 | 반사성 | Y⊆X → X→Y (자명한 FD) | {학번,이름}→{학번} — 항상 성립 |
| 증 | 증가성 | X→Y → XZ→YZ (양변에 Z 추가) | 학번→이름 이면 {학번,과목}→{이름,과목} |
| 이 | 이행성 | X→Y, Y→Z → X→Z (전이) | 학번→학과, 학과→학과장 → 학번→학과장 |
| 합 | 합집합 | X→Y, X→Z → X→YZ | 학번→이름, 학번→전화 → 학번→{이름,전화} |
| 분 | 분해 | X→YZ → X→Y, X→Z | 학번→{이름,전화} → 학번→이름, 학번→전화 |
| 가 | 가이행성 | X→Y, WY→Z → WX→Z | 학번→학과, {부서장,학과}→급여 → {부서장,학번}→급여 |
| 두문자 | 요소 | 핵심 내용 | 세부 내용 |
|---|---|---|---|
| 통 | 통계 정보 | 행 수(cardinality)·distinct 값 수·히스토그램·페이지 수. ANALYZE TABLE로 갱신 | 통계 오래됨 → 잘못된 실행계획 → 통계 갱신 필수 |
| 조 | 조인 방식 선택 | Nested Loop(소량), Hash Join(대량 등치), Sort-Merge Join(정렬된 대량 범위) | 드라이빙 테이블 선택이 NL Join 성능 결정 |
| 접 | 접근 경로 결정 | Index Range Scan vs Full Table Scan vs Index Only Scan 비용 비교 | 선택도×행수×I/O비용으로 계산 |
| 조 | 조인 순서 | N개 테이블 조인 시 N! 가지 순서. 동적 프로그래밍으로 최적 순서 탐색 | Bushy Tree vs Left-Deep Tree 탐색 |
| 조 | 조건 푸시다운 | WHERE 조건을 조인 이전에 적용하여 처리 행 수 감소. Predicate Pushdown | 뷰·서브쿼리에 조건 밀어 넣기 |
| 두문자 | 옵티마이저 | 핵심 원리 | 장단점 |
|---|---|---|---|
| 에 | SGD (확률적) | 미니배치 기울기로 업데이트. η·∇L(θ;x,y). 단순 | 장: 빠른 계산 / 단: 진동 심함, 민감한 학습률 |
| 모 | Momentum SGD | 이전 기울기 방향(관성) 유지. v←βv-η∇L, θ←θ+v | 장: 진동↓, 빠른 수렴 / 단: 하이퍼파라미터↑ |
| 알 | AdaGrad | 파라미터별 누적 기울기 제곱으로 학습률 나눔. 자주 업데이트된 파라미터는 학습률↓ | 장: 희소 데이터 강함 / 단: 학습률 계속 감소→소멸 |
| 아 | RMSProp | AdaGrad 개선. 지수 이동 평균으로 학습률 감소 속도 제어 | 장: AdaGrad 소멸 문제 해결 / 단: 전역 최솟값 보장 없음 |
| 아 | Adam | Momentum + RMSProp 결합. 1차·2차 모멘트 추정. 편향 보정 | 장: 범용적, 빠른 수렴 / 단: 일반화 성능 SGD보다 낮을 수 있음 |
| 두문자 | 적용 맥락 | 핵심 내용 | 표준 연계 |
|---|---|---|---|
| 모 | 모델 기반 개발 (MBD) | MIL(모델in루프) vs SIL(소프트웨어in루프): 코드 자동생성 오류 탐지 | ISO 26262 Part 6 권고 |
| 회 | 회귀 테스트 | 소프트웨어 변경 후 기존 기능 동일성 확인. CI/CD 파이프라인 통합 | IEEE 829 테스트 문서화 |
| 코 | 코드 생성 검증 | Simulink/Matlab에서 자동 생성된 C코드와 원본 모델 출력 비교 | DO-178C(항공 SW) 요구 |
| 안 | 안전 무결성 검증 | 독립적으로 개발된 두 구현의 다양성 검증 (Diverse Software) | IEC 61508 다양성 기법 |
| 자 | 자동화 테스트 | 대량 테스트 케이스를 자동으로 양쪽 실행·비교. 부동소수점 허용 오차 설정 | MATLAB Test, PolySpace |
| 두문자 | 유형 | 목적 | 방법 |
|---|---|---|---|
| 부 | 부하 테스트 (Load) | 예상 최대 부하 하에서 성능 요구사항 충족 여부 확인 | 목표 TPS/동시 사용자까지 점진적 증가 |
| 스 | 스트레스 테스트 (Stress) | 시스템 한계·파괴점 탐색. 한계 초과 시 복구 동작 확인 | 한계 이상 부하 지속 → 장애점·오류 패턴 관찰 |
| 내 | 내구 테스트 (Endurance/Soak) | 장시간 정상 부하에서 메모리 누수·성능 저하 탐지 | 정상 부하를 12~72시간 지속 (메모리 모니터링) |
| 스 | 스파이크 테스트 (Spike) | 갑작스러운 부하 급증에 대한 응답 확인 | 정상→급증→정상으로 급격한 부하 변화 |
| 용 | 용량 테스트 (Capacity) | 현재 인프라로 최대 지원 가능한 사용자 수·TPS 측정 | 점진 증가로 포화점 결정 → 규모산정 기반 |
| 두문자 | 기법 | 방향 | 핵심 절차 | 적용 |
|---|---|---|---|---|
| 에 | FMEA | 귀납 (하→상) | 부품 고장 모드 열거 → 영향 분석 → RPN(심각도×발생도×탐지도) 계산 → 고위험 조치 | 부품 설계 초기. ISO 26262 HARA |
| 에 | FTA | 연역 (상→하) | 최상위 위험 사건(Top Event) 정의 → AND/OR 게이트로 원인 트리 구성 → 최소 컷셋 분석 | 시스템 설계 단계. IEC 61508 |
| 하 | HAZOP | 귀납 (팀 기반) | 프로세스를 노드로 분할 → 가이드워드(High/Low/None/Reverse) × 파라미터 조합으로 편차 탐색 | 공정 플랜트·화학 시설. IEC 61511 |
| 에 | ETA | 귀납 (시나리오) | 초기 사건 정의 → 안전 기능 작동/실패 분기 → 결과 시나리오별 확률 계산 | 초기 사건 이후 결과 분석 |
| 에스 | STPA | 시스템 제어 | 위험 분석(Hazard) → 비안전 제어 행동(UCA) 식별 → 인과 시나리오 분석 → 제어 구조 개선 | SW·AI·자율주행 복잡 시스템 |
| 구성 요소 | 역할 | 도구 |
|---|---|---|
| SUT (테스트 대상) | 자동 생성된 C/C++ 코드. 타겟과 동일한 기능 | Simulink Coder, Embedded Coder 생성물 |
| 테스트 하네스 | 입력 벡터 주입, 출력 캡처, 비교 판정 | MATLAB Test, Simulink Test |
| 백투백 비교 | MIL 출력 vs SIL 출력 비교. 허용 오차 내 일치 여부 판정 | Diff Tool, 부동소수점 허용오차 설정 |
| 커버리지 측정 | 생성 코드의 MC/DC·구문·분기 커버리지 측정 | BullseyeCoverage, VectorCAST |
| 정적 분석 | 생성 코드의 코딩 규칙(MISRA C) 준수, 미정의 동작 탐지 | PolySpace, LDRA, PC-lint |
| 비교 기준 | SIL | HIL |
|---|---|---|
| 실행 환경 | PC (호스트 컴퓨터) | 실제 ECU + 실시간 시뮬레이터 |
| 타이밍 | 비실시간 (빠름) | 실시간 (하드 리얼타임 요구) |
| HW 의존성 | 없음 | 타겟 HW 필수 |
| 탐지 가능 오류 | 코드 생성 오류, 기능 오류 | 타이밍 오류, HW 인터페이스, 인터럽트, CAN 통신 |
| 비용 | 낮음 | 높음 (dSPACE, NI HIL 장비) |
| 두문자 | 산정 요소 | 핵심 내용 | 적용 기준 |
|---|---|---|---|
| 처 | 처리 능력(CPU 성능) | TPS(Transaction Per Second) 또는 동시 접속 사용자 수 기반 CPU 성능 요구량 산출 | TPC-C: OLTP 성능. SPECint: 정수 연산 |
| 피 | 피크 부하 배수 | 평균 부하 대비 최대(피크) 부하 발생 비율. 피크 시간대 처리 능력 보장 | 공공: 피크 배수 3~5배 적용 |
| 여 | 여유율(Headroom) | 미래 증가·예측 오차를 위한 여유 성능. 통상 30~40% 여유율 적용 | CPU 사용률 목표: 최대 70% 이하 |
| 벤 | 벤치마크 기준 | 도입 장비의 공인 벤치마크 점수로 요구 성능 충족 여부 판단 | TPC-E(OLTP), TPC-H(DW), SPEC |
| 고 | 고가용성(HA) 구성 | Active-Active/Active-Standby 이중화. 단일 장애점(SPOF) 제거 | 장애 발생 시 자동 페일오버 요구 |