| 항목 | INSERT INTO 학생 (컬럼명 나열) | INSERT INTO 학생 (컬럼명 생략) |
|---|---|---|
| ✅ 컬럼명 지정 여부 | 컬럼명을 명시적으로 지정 → 명확하고 안전 | 컬럼명을 생략함 → 테이블 구조에 전적으로 의존 |
| ⚠️ 컬럼 순서의 영향 | 작성자가 지정한 순서대로 값이 매핑됨 | 테이블 생성 시 정의된 컬럼 순서에 따라 자동 매핑됨 |
| 🔄 테이블 구조 변경 시 | 컬럼 순서가 바뀌거나 추가되어도 영향 적음 (컬럼명만 일치하면 OK) | 컬럼 추가/순서 변경 시 데이터가 잘못 들어갈 가능성 높음 |
| 🛠️ 실무 사용 권장 여부 | ✅ 실무에서 권장 (유지보수 및 안전성 확보에 유리) | ❌ 테스트용 또는 컬럼 구조 고정된 경우에만 제한적으로 사용 권장 |
| 항목 | 설명 |
|---|---|
❗ gets(n) 사용 | 사용자의 입력을 버퍼 크기 확인 없이 n에 저장→ 버퍼 오버플로우 위험 있음 |
⚠️ return n 포인터 | n이 지역 변수일 경우, 해당 포인터는 함수 종료 후 무효됨→ 미정의 동작 위험 |
| 항목 | 설명 |
|---|---|
| 연산자 | == |
| 결과 타입 | boolean |
| 출력값 형태 | true 또는 false → 모두 소문자로 출력됨 |
| 주의사항 | 기본 타입은 값 비교, 참조 타입은 주소 비교에 사용됨 |
| 커버리지 유형 | 정의 | 장점 | 단점/한계 |
|---|---|---|---|
| 문장 커버리지 (Statement Coverage) | 코드 내 각 문장이 최소한 한 번 실행되었는지 확인 | - 구현이 간단 - 테스트 누락을 빠르게 파악 가능 | - 조건 분기 및 로직 완전성 검증에 취약 |
| 분기 커버리지 (Branch Coverage) | if/else, switch 등 분기의 각 갈래(true/false)가 모두 실행되었는지 검증 | - 주요 분기 로직 커버 - 테스트의 논리 흐름 검증에 유용 | - 개별 조건식의 평가 경로(조합)는 확인하지 않음 |
| 조건 커버리지 (Condition Coverage) | 복합 조건식 내 각각의 조건이 true/false 모두인 경우 실행되었는지 확인 | - 조건 하나하나의 로직 확인 가능 | - 조건 조합 전체 경로 검증 부족 |
| 분기/조건 커버리지 (Branch/Condition Coverage, MC/DC) | 분기와 개별 조건 모두 충분히 검증되며, 각 조건이 결정적 역할을 하나 이상 증명 | - 테스트의 완전성 및 신뢰도 매우 높음 - 항공·의료 등 고신뢰도 도메인 필수 | - 테스트 설계 복잡 - 케이스 수 급증, 구현 비용 부담 가능 |
| 항목 | 분기 커버리지 (Branch Coverage) | 조건 커버리지 (Condition Coverage) |
|---|---|---|
| 정의 | 모든 분기(outcome), 즉 if/else 등의 true/false, switch 분기를 최소 한 번씩 실행 (geeksforgeeks.org) | 복합 조건식 내 각 개별 조건이 각각 true/false 모두 평가되도록 테스트 |
| 테스트 대상 | 분기점 자체: true 분기와 false 분기만 점검 | 복합 조건식 내부의 각 서브 조건 (predicate) 별로 true와 false 평가 여부 점검 |
| 예시 | if(a && b): a&&b가 true와 false가 되도록 실행 | if(a && b): a=true/b=false, a=false/b=true, a=true/b=true 등 다양한 조합 필요 |
| 커버리지 기준 | 총 분기 수 대비 실행된 분기 수 비율 | 모든 개별 조건이 true, false 각각 한 번씩 평가된 비율 |
| 강도 | 상대적으로 약함: 분기만 커버되면 충분 | 더 강함: 조건 하나하나의 변화까지 살펴야 함 |
| 한계 | 복합 조건에서 특정 서브 조건이 평가되지 않았어도 100% 달성 가능 | 각 조건 결과를 모두 점검해도, 조건 간 상호 의존성(여러 조합 경로)은 확인 불가 |
| 언제 사용? | 조건식 없이 간단한 분기 로직 중심일 때 | 복잡한 논리 연산, 보안·오류 처리 등 조건의 세부 평가가 중요한 경우 유리 |
| 단계 | 포함 항목 | 설명 |
|---|---|---|
| 요구 / 분석 (Requirements Analysis) | • 요구 조건 분석 | 사용자 요구사항 수집·정의 단계로, 시스템 전체의 요구가 무엇인지 파악 |
| 개념적 설계 (Conceptual Design) | • 개념적 설계 | ER 다이어그램 등으로 주요 엔티티와 관계를 추상적으로 모델링 (geeksforgeeks.org) |
| 논리 스키마 설계 (Logical Schema Design) | • 논리 스키마 설계 • 논리적 설계 | 개념모델을 DBMS 친화적 논리 구조(테이블, 칼럼, 정규화)로 변환 |
| 인터페이스 설계 (Interface Design) | • 인터페이스 설계 | 사용자·시스템 간 화면/UI 또는 API 설계 단계로, 입출력 구조 설계 |
| 물리적 설계 (Physical Design) | • 물리적 설계 | 논리모델을 저장소·인덱스·파티셔닝 등 DBMS 물리 구조로 구현 |
| 구현 / 개발 (Implementation / Coding) | • 데이터베이스 구현 • 트랜잭션 작성 | SQL이나 코드로 스키마 생성, 트랜잭션 로직, 저장 프로시저 등을 실제 구현 |
| 테스트 / 트랜잭션 작성 | • 트랜잭션 작성 (검증 포함) | 구현된 기능과 트랜잭션 흐름을 유효성 및 무결성 기준으로 테스트 |
| 배포 / 유지보수 (Deployment / Maintenance) | (미포함 항목들) | 구현 후 실제 시스템에 배포·운영하며 유지보수 진행 |
| 항목 | 유형 | 설명 & 역할 |
|---|---|---|
| NAK | 프로토콜 신호 | "Negative Acknowledgement": 오류 시 재전송 요청 |
| Parity | 단일 패리티 비트 검사 | 데이터 비트의 1 개수(짝/홀)로 단순 오류 감지 (gisafirst.com, en.wikipedia.org, freeedeveloper.tistory.com) |
| CRC | 순환 중복 검사 | 다항식 나눗셈을 기반으로 블록 단위 오류 감지 |
| Hamming | 블록 오류 정정 코드 | 중복 비트를 추가해 1비트 오류를 자동 정정, 2비트 오류 감지 |
| FEC | 전진형 오류 정정 | 재전송 없이 수신 측에서 오류 정정, Hamming 등이 활용됨 |
| MD5 | 암호학적 해시 함수 | 데이터 무결성 검증에 사용되며, 변조 탐지 목적, 오류/변조 모두 감지 가능 |
| BCD | 부호화 방식 (2진-coded decimal) | 숫자를 이진으로 표현하는 방식, 오류 처리 목적은 아님, 표현 형식 |
| BEC | 채널 모델 (Binary Erasure Channel) | 통신 이론 상 '지워짐' 오류를 가정한 이론 채널 모델 |
| 항목 | 결론 |
|---|---|
| CRC | 🎯 다항식 나눗셈 방식 사용 → Generator Polynomial로 나머지 계산해 오류 탐지 |
| BEC | 📡 채널 모델: 오류 감지(지워짐 인지)는 가능하지만, 자동 재요청은 없음 → 복구는 별도 메커니즘 필요 |
| 항목 | 설명 |
|---|---|
| 플래그 (Flag) | 프레임의 시작과 끝을 나타내는 고유 비트 패턴 (01111110) (seb.kr) |
| 주소부 (Address Field) | 송·수신 스테이션 식별 (브로드캐스트는 11111111, 시험용은 00000000) |
| 제어부 (Control Field) | 프레임 종류 표시(IF, S‑frame, U‑frame 등), ARQ 및 흐름 제어 기능 포함 |
| 정보부 (Information Field) | 실제 사용자 데이터가 담기는 가변 길이 필드 |
| 감독 (S‑frame 종류) | 흐름·오류 제어용 프레임: RR, RNR, REJ, SREJ 등 |
| 모드명 (영문 / 한글) | 구성 | 특징 |
|---|---|---|
| NRM (Normal Response Mode) | 불균형 / 반이중 | 주국의 허가(Poll) 있어야 종국 송신 가능 (seb.kr) |
| ARM (Asynchronous Response Mode) | 불균형 / 전이중 | 종국이 주국 허가 없이 송신 가능, 제어권은 주국에 있음 |
| ABM (Asynchronous Balanced Mode) | 균형 / 전이중 | 주/종국 구분 없이 동등하게 자유 전송 가능 |
| 알고리즘 | 유형 | 블록/키 크기 | 주요 특징 및 활용 |
|---|---|---|---|
| RSA | 비대칭 | 키 길이: 일반적으로 2048–4096비트 (en.wikipedia.org, preyproject.com) | 공개키/개인키 사용, 보안 수준은 큰 소수 분해 어려움에 기인. SSL/TLS, 디지털 서명에 사용 |
| DES | 대칭 (블록암호) | 블록 64비트, 키 56비트 | 초기 표준, 현대에선 취약(작은 키 길이), 3DES로 연장 사용 |
| ARIA | 대칭 (블록암호) | 블록 128비트, 키 128/192/256비트 | AES 구조 기반, 한국 표준 채택. 12/14/16 라운드로 키 길이에 따라 다양 |
| ECC | 비대칭 | 키 길이: 160–512비트 이하 | 타원 곡선 수학 기반, RSA보다 짧은 키로 같은 보안 수준 제공 |
| SEED | 대칭 (블록암호) | 블록 128비트, 키 128비트 | 한국산 암호, Feistel 구조, 금융 및 정부 시스템에 사용 |
| AES | 대칭 (블록암호) | 블록 128비트, 키 128/192/256비트 | 현재 국제 표준, 빠르고 안전, FBI/NSA에서도 채택. 다양한 모드(CCM, GCM 등) 지원 |
| 항목 | 대칭키 (Symmetric Key) | 비대칭키 (Asymmetric Key) |
|---|---|---|
| 키 개수 | 하나의 비밀키로 암·복호화 모두 수행 (deviceauthority.com, en.wikipedia.org) | 공개키 + 개인키 한 쌍 사용 (공개키로 암호화, 개인키로 복호화) |
| 속도 및 성능 | 매우 빠르며, 대량 데이터 암호화에 적합 | 계산량이 많아 느리며, 소량 데이터나 키 교환에 적합 |
| 보안 및 키 관리 | 키 분배 과정에서 비밀 키 노출 위험 있음 | 공개키는 자유롭게 배포, 개인키는 비밀 유지 → 키 공유가 안전 |
| 기능적 특징 | - 빠른 암호화 - 대규모 데이터에 적합 | - 디지털 서명, 인증 가능 - 키 교환 경험 보안성 확보 |
| 사용 사례 | AES, DES 등 → 파일암호화, VPN, 데이터베이스, 스트리밍 | RSA, ECC 등 → SSL/TLS 핸드셰이크, 이메일 인증(PGP), 디지털 서명 |
| 키 길이 예시 | 128~256비트 (AES) 등 → 짧아도 높은 보안성 | RSA 2048비트, ECC 256비트 등 더 긴 키 필요 |
| 속도 대비 보안 | 빠르지만 키 유출 시 치명적 위험 가능 | 느리지만 높은 보안성과 키 분배 용이성 제공 |
| 용어 / 개념 | 정의 & 특징 |
|---|---|
| Hash (해시) | 임의 길이 데이터를 고정된 길이의 값(메시지 다이제스트)으로 변환하는 일방향 함수. 데이터 무결성, 무결성 검사, 인증 등에 사용됨 (csrc.nist.gov, link.springer.com) |
| 고정 길이 출력 | 입력 데이터 길이와 상관없이 일정한 길이의 해시 값을 생성 (예: MD5 = 128 bit, SHA‑256 = 256 bit) |
| 일방향 함수 | 해시 결과값으로부터 원본 데이터를 복원하는 것이 실질적으로 불가능한 특성 (Pre‑image resistance) |
| SHA 시리즈 | Secure Hash Algorithm - SHA‑1: 160bit, 과거 TLS/SSL에 사용됨 - SHA‑2/3: 향상된 안전성, 현재 권장 표준 |
| MD5 | 128 bit 출력, Merkle‑Damgård 구조 기반. 현재는 취약점(충돌)으로 암호학적 해시로는 부적합, 체크섬 등 비보안 목적으로 주로 사용됨 |
| N‑NASH | NIST 기구에서 제안된 one-way 해시 함수. 현재는 SHA 계열에 밀려 사용은 제한적이며, 해시 함수 경쟁에서 제외됨. |
| SNEFRU | Ralph Merkle가 개발한 해시 알고리즘 (128/256bit). 초기에는 안전성을 가졌으나, 충돌 공격이 가능해짐 |
| 용어 | 유형 | 설명 |
|---|---|---|
| CASCADE | 외래키(FK) 옵션 | 부모 테이블 변경(DELETE/UPDATE)이 발생할 때, 자식 테이블의 데이터도 자동으로 연쇄 반영됩니다. – ON DELETE CASCADE: 부모 행 삭제 시 자식 행도 삭제 (geeksforgeeks.org)– ON UPDATE CASCADE: 부모 키 변경 시 자식의 FK 컬럼도 자동 변경 (geeksforgeeks.org) |
| 항목 | 설명 |
|---|---|
| 등차수열 일반항 | 여기서는 (공차 4, 초항 4로 가정 시) |
| 조건 | 마지막 항 |
| 계산 방법 | |
| 정수로 내림 | |
| 결론 | 4의 배수는 총 505개 존재 |
| 항목 | 설명 |
|---|---|
| 정의 | 프로그램이나 데이터가 변조되었는지 탐지하거나 방지하는 기술 |
| 주요 목적 | 해커가 프로그램 내부를 조작하거나 수정하지 못하도록 보호 |
| 활용 예시 | 게임 프로그램, 보안 소프트웨어, 라이선스 검사 등 |
| 방법 예시 | - 체크섬/해시 검증 – 코드 난독화 – 메모리 변조 감지 |