오버라이딩과 실제 객체
재정의된 인스턴스 메서드는 실제 객체에서 찾습니다.
시험장에서 떠오르는 한 줄
긴 설명은 접고, 답안으로 꺼낼 한 줄만 훑습니다.
재정의된 인스턴스 메서드는 실제 객체에서 찾습니다.
필드는 참조 선언 타입, 오버라이딩 메서드는 실제 객체 기준입니다.
같은 이름의 메서드 중 매개변수 타입에 맞는 것을 컴파일할 때 선택합니다.
자식 객체를 부모 타입 변수로 다룰 수 있지만 보이는 멤버는 부모 타입 기준입니다.
부모 참조를 자식 타입으로 바꿀 때 실제 객체가 그 자식인지 확인합니다.
객체를 만들 때 부모 생성자 본문이 자식 생성자 본문보다 먼저 실행됩니다.
this(...)는 같은 클래스, super(...)는 부모 클래스의 생성자를 호출합니다.
static 필드는 클래스가 공유하고 인스턴스 필드는 객체마다 따로 존재합니다.
추상 클래스는 직접 만들 수 없으며 구체 자식이 추상 메서드를 구현합니다.
인터페이스 타입으로 구현 객체를 다루며 implements로 계약을 이행합니다.
예외가 발생하면 try의 남은 문장을 건너뛰고 맞는 catch로 이동합니다.
일반적인 try/catch 종료 때 finally가 실행되며 반환값 계산 시점을 구분합니다.
배열의 첫 인덱스는 0이고 마지막 인덱스는 length - 1입니다.
배열 인자는 참조값의 복사이므로 같은 배열의 원소 변경은 전달자에게도 보입니다.
String 내용 비교에는 equals를 사용하고 인덱스 범위는 끝 직전까지입니다.
String 연산은 원래 객체를 고치지 않으며 결과를 다시 저장해야 합니다.
continue는 현재 회차의 나머지를 건너뛰고 다음 회차로 이동합니다.
안쪽 반복은 바깥쪽 각 회차마다 처음부터 다시 시작합니다.
전통적인 switch 문은 break가 없으면 다음 case의 문장으로 이어집니다.
재귀는 종료 조건까지 호출한 뒤 되돌아오며 남은 계산을 수행합니다.
전위는 증가한 값을 쓰고 후위는 기존 값을 쓴 뒤 증가합니다.
&&는 앞이 false, ||는 앞이 true이면 뒤를 평가하지 않습니다.
정수끼리 나눈 뒤 변환하는 것과 나누기 전에 실수로 바꾸는 것은 다릅니다.
같은 객체를 가리키는 참조는 상태를 공유하고 new 객체는 독립 상태를 갖습니다.
같은 이름의 static 메서드는 오버라이딩이 아니라 선언 타입 기준으로 선택됩니다.
instanceof는 실제 객체가 해당 타입으로 다뤄질 수 있는지 검사합니다.
참조 타입의 멤버, final 제한, 추상 메서드 구현 여부는 실행 전에 검사합니다.
대입은 오른쪽 값을 계산한 후 왼쪽 변수에 저장합니다.
정수 나눗셈은 0 방향으로 소수 부분을 버리며 %는 나머지를 구합니다.
배열의 첫 원소는 0번이며 유효한 인덱스 범위 안에서 접근합니다.
C 문자열은 문자 배열이며 끝에 널 문자 \0이 들어갑니다.
&x는 x의 주소이고 *p는 p가 가리키는 저장칸의 값입니다.
포인터는 주소를 저장하며 역참조로 가리키는 값을 읽거나 수정합니다.
대부분의 식에서 배열 이름은 첫 원소를 가리키는 포인터로 변환됩니다.
p + k는 같은 배열에서 k개의 원소만큼 이동한 위치입니다.
x++는 현재 값을 식에 제공한 후 x를 1 증가시킵니다.
++x는 x를 1 증가시킨 값을 식에 제공합니다.
*p++는 *(p++)이고 (*p)++는 가리키는 값을 증가시킵니다.
일반 정수 인자는 값이 복사되므로 매개변수만 바꿔도 호출자 변수는 그대로입니다.
함수에 변수 주소를 넘기고 역참조하면 호출자 저장칸을 수정할 수 있습니다.
구조체는 여러 값을 하나로 묶으며 일반 변수의 멤버는 .으로 접근합니다.
p->member는 (*p).member와 같은 멤버 접근입니다.
재귀 함수는 종료 조건에 도달한 뒤 호출 순서의 역순으로 복귀합니다.
int **pp는 int 포인터의 주소를 저장하며 **pp로 정수 칸에 접근합니다.
비트 AND는 같은 자리의 비트가 둘 다 1일 때 1입니다.
부호 없는 정수의 왼쪽 이동은 비트를 왼쪽으로 옮기고 오른쪽 이동은 낮은 자리를 버립니다.
XOR는 서로 다른 자리만 1, OR는 한쪽이라도 1이면 1입니다.
반복 조건과 증가식 순서대로 매 회차의 누적값을 추적합니다.
안쪽 범위가 바깥 변수에 의존하면 회차별 횟수를 더합니다.
조건이 참이면 첫 값, 거짓이면 두 번째 값을 선택합니다.
함수의 지역 static 변수는 호출이 끝나도 값을 유지합니다.
break가 없으면 다음 case의 문장도 이어서 실행됩니다.
문자도 배열 원소이며 인덱스와 종료 문자를 구분합니다.
a[r][c]는 r행 c열이며 행마다 연속된 원소들이 배치됩니다.
같은 배열 원소를 가리키는 두 포인터의 차이는 원소 개수입니다.
실제 배열의 원소 수는 sizeof 배열 / sizeof 첫 원소로 구할 수 있습니다.
&&와 ||는 결과가 정해지면 오른쪽을 생략하며 결과는 0 또는 1입니다.
List는 순서가 있고 원소를 바꿀 수 있습니다.
b=a는 같은 리스트를 가리키고 a[:]는 바깥 리스트의 얕은 복사를 만듭니다.
Tuple은 원소를 직접 바꿀 수 없으며 한 원소 튜플은 쉼표가 필요합니다.
Dictionary는 키로 값을 찾으며 같은 키에 다시 대입하면 값을 갱신합니다.
Set은 중복을 제거하며 출력 순서를 전제로 하지 않습니다.
a[start:stop:step]은 시작을 포함하고 끝은 제외합니다.
-1은 마지막 원소, -2는 뒤에서 두 번째 원소입니다.
문자열은 불변이며 replace·upper 등의 결과를 저장해야 합니다.
range의 끝값은 포함되지 않으며 continue는 다음 회차로 이동합니다.
if-elif-else는 처음 참인 가지 하나만 실행하며 //는 아래로 내립니다.
인자는 객체의 참조를 전달하고 매개변수 재대입은 지역 이름만 바꿉니다.
기본 인자의 리스트는 함수 정의 시 한 번 만들어져 호출 사이에 공유될 수 있습니다.
함수 안에서 대입한 이름은 기본적으로 지역 변수이며 global 선언은 전역 이름을 사용합니다.
self로 저장한 인스턴스 속성은 객체마다 따로 관리됩니다.
자식이 재정의한 메서드를 호출하며 super는 부모 구현을 연결합니다.
표현식, 반복 범위, 조건 순서로 결과 원소를 만듭니다.
오른쪽을 먼저 계산한 뒤 왼쪽 이름들에 순서대로 넣습니다.
sorted는 새 목록을 반환하고 list.sort는 원본을 정렬한 후 None을 반환합니다.
and와 or는 단순한 True/False 대신 평가한 피연산자 값을 반환할 수 있습니다.
종료 조건까지 내려간 뒤 결과를 합쳐 올라옵니다.
유일성은 있지만 불필요한 속성을 포함할 수 있습니다.
유일성 + 최소성
후보키 중 대표로 선택한 키
기본키로 선택되지 않은 후보키
다른 관계의 키를 참조하여 관계를 연결합니다.
기본키는 NULL과 중복을 허용하지 않습니다.
외래키 값은 참조 대상에 존재하거나 허용된 NULL이어야 합니다.
속성 값은 정해진 타입과 허용 범위를 따릅니다.
스키마는 구조, 인스턴스는 특정 시점의 데이터
튜플은 행, 속성은 열, 도메인은 허용 값 집합
X → Y: 같은 X이면 항상 같은 Y
삽입·갱신·삭제 이상은 중복 설계의 부작용
모두 성공하거나 모두 취소합니다.
트랜잭션 전후에 정의한 무결성 규칙을 만족합니다.
동시에 실행되는 거래의 간섭을 제어합니다.
커밋된 결과는 장애 후에도 유지되어야 합니다.
아직 커밋하지 않은 다른 거래의 값을 읽습니다.
S는 읽기 공유, X는 쓰기 배타
확장 단계는 획득, 축소 단계는 해제
데이터 페이지보다 관련 로그를 먼저 안정 저장합니다.
회복 때 살펴볼 로그 범위를 줄이는 기준점
조회 위치를 빨리 찾는 보조 구조
SELECT로 정의하는 가상 테이블
데이터 변경 등의 이벤트에 의해 실행됩니다.
CREATE → DDL · 테이블 생성
ALTER → DDL · 컬럼 추가
DROP → DDL · 테이블 정의 삭제
TRUNCATE → DDL · 전체 행 비우기
SELECT → DML · 행 조회
INSERT → DML · 행 추가
UPDATE → DML · 행 변경
DELETE → DML · 행 삭제
GRANT → DCL · 권한 부여
REVOKE → DCL · 권한 회수
COMMIT → TCL · 거래 확정
ROLLBACK → TCL · 거래 취소
SAVEPOINT → TCL · 부분 취소 기준점 설정
조건이 맞는 양쪽 행의 조합만 반환
왼쪽은 전부 유지, 미대응 오른쪽은 NULL
오른쪽은 전부 유지, 미대응 왼쪽은 NULL
양쪽의 미대응 행까지 유지
같은 테이블에 다른 별칭을 붙여 연결
모든 행 조합: m×n
WHERE는 그룹 전, HAVING은 그룹 후
NULL은 미지 값, COUNT(col)은 NULL 제외
선택한 컬럼 조합의 중복을 제거
IN은 값 집합, EXISTS는 행 존재 여부
UNION은 중복 제거, UNION ALL은 유지
BETWEEN은 양 끝 포함, LIKE _는 한 글자
개체는 대상, 속성은 특징, 관계는 대상 사이의 연결입니다.
C 생성 / R 조회 / U 변경 / D 삭제
등록한 작업 루틴을 호출하여 데이터 조작을 묶습니다.
계산을 함수로 정의하고 반환값을 SQL 표현식에 사용합니다.
이벤트에 연결되어 자동 실행하며 변경 전·후 행을 참조합니다.
ROW_NUMBER는 행 번호 / RANK는 동점 뒤 건너뜀 / DENSE_RANK는 순위 연속
OVER는 행을 유지하며 PARTITION BY와 프레임으로 집계 범위를 정합니다.
ROLLUP은 계층 소계, CUBE는 모든 차원 조합의 소계
1NF → 속성에 원자값
2NF → 비주요 속성의 부분 종속 제거
3NF → 비주요 속성의 이행 종속 제거
BCNF → 비자명 함수 종속의 결정자는 슈퍼키
4NF → 비자명 다치 종속의 결정자는 슈퍼키
5NF → 후보키로 설명되지 않는 조인 종속을 분해
기밀성은 비밀 보호, 무결성은 변조 방지, 가용성은 필요할 때 사용입니다.
인증은 누구인지, 인가는 무엇을 할 수 있는지 확인합니다.
DAC는 소유자에게 접근 권한 결정의 재량을 줍니다.
MAC는 중앙 정책과 보안 등급으로 접근을 강제합니다.
사용자 → 역할 → 권한으로 연결합니다.
업무에 필요한 최소 권한만 줍니다.
대칭키는 암호화와 복호화에 같은 비밀 키를 씁니다.
공개키와 개인키는 서로 연결된 다른 키입니다.
해시는 요약값이며 복호화하는 암호문이 아닙니다.
개인키로 서명하고 공개키로 검증합니다.
인증서는 공개키와 주체의 연결을 확인하게 합니다.
TLS는 통신 구간을 보호하며 사이트 내부의 모든 취약점을 없애지는 않습니다.
입력값을 SQL 명령과 분리해서 바인딩합니다.
브라우저가 입력을 실행 코드로 해석하지 않게 합니다.
로그인된 브라우저의 권한을 악용한 요청 위조입니다.
버퍼 범위를 넘는 쓰기는 다른 메모리를 손상시킬 수 있습니다.
입력을 셸 명령문과 직접 합치지 않습니다.
사용자가 정한 경로가 허용된 디렉터리 밖으로 나가지 않게 합니다.
피싱은 믿을 만한 상대인 척하여 정보를 빼냅니다.
랜섬웨어는 데이터나 시스템 사용을 막고 대가를 요구합니다.
DoS는 서비스 방해, DDoS는 여러 출발지에서 분산된 서비스 방해입니다.
과거의 유효한 메시지를 다시 보내는 공격입니다.
비밀번호는 Salt와 적절한 비용의 전용 해시로 저장합니다.
위협은 해칠 가능성, 취약점은 약점, 위험은 가능성과 피해를 함께 봅니다.
내부 네트워크라는 이유만으로 자동 신뢰하지 않습니다.
IDS는 탐지·알림, IPS는 탐지에 더해 차단을 수행할 수 있습니다.
물리 → 데이터 링크 → 네트워크 → 전송 → 세션 → 표현 → 응용 순서입니다.
TCP는 순서 있는 바이트 스트림을 신뢰성 있게 전달합니다.
UDP 자체는 전달·순서·중복 방지를 보장하지 않습니다.
IPv4는 32비트이며 마스크로 네트워크와 호스트 부분을 나눕니다.
IPv6는 128비트이며 브로드캐스트 주소를 사용하지 않습니다.
DNS는 이름에 대한 레코드를 조회하는 분산된 계층 체계입니다.
Discover → Offer → Request → ACK로 설정을 받습니다.
ARP는 같은 링크의 IPv4 주소에 대응하는 MAC 주소를 찾습니다.
ICMP는 IP 전달의 제어·오류 정보를 알립니다.
HTTP는 요청·응답이며 메서드의 의미와 상태 코드를 구분합니다.
IP는 호스트를, 전송 포트는 통신하는 끝점을 구분하는 데 사용합니다.
SMTP는 전송, POP3·IMAP은 메일함 접근입니다.
FTP와 SFTP는 다른 프로토콜이며 SFTP는 SSH 기반 파일 전송입니다.
NAT는 주소를, NAPT는 주소와 포트를 변환합니다.
일치하는 경로 중 가장 긴 접두사를 우선합니다.
RIP는 거리 벡터 방식이며 홉 수를 비용으로 사용합니다.
OSPF는 링크 상태 정보를 사용하며 최단 경로를 계산합니다.
BGP는 자율 시스템 사이의 경로와 정책을 다룹니다.
L2 스위치는 MAC 주소로, 라우터는 목적 IP 경로로 전달합니다.
흐름은 수신자 용량, 혼잡은 네트워크 용량을 고려합니다.
VPN은 공유망 위에 논리적인 사설 연결을 구성합니다.
MAC은 링크 전달, IP는 네트워크 사이의 전달을 이해하는 주소입니다.
/n은 주소 앞부분 n비트가 접두사라는 뜻입니다.
프로세스는 실행 중인 프로그램이며 PCB에 실행 상태를 관리합니다.
같은 프로세스의 스레드는 주소 공간을 공유하되 실행 문맥은 따로 가집니다.
준비는 CPU 대기, 대기는 사건 대기, 실행은 CPU 사용입니다.
중단한 실행 문맥을 저장하고 다음 실행 문맥을 복원합니다.
FCFS는 먼저 도착한 작업부터 비선점 실행합니다.
SJF는 준비된 작업 중 짧은 실행 시간을 우선하는 비선점 방식입니다.
SRTF는 남은 실행 시간이 가장 짧은 작업을 우선합니다.
정해진 시간 할당량만큼 실행하고 남으면 큐 뒤로 보냅니다.
낮은 우선순위의 기아를 줄이기 위해 대기 중 우선순위를 높일 수 있습니다.
상호 배제·점유 대기·비선점·순환 대기를 확인합니다.
Need = Max − Allocation이며 안전 순서를 확인합니다.
공유 자료에 대한 실행 순서가 결과를 바꾸면 경쟁 상태를 의심합니다.
뮤텍스는 배타적 소유, 세마포어는 허용 개수나 신호를 관리합니다.
프로세스의 가상 주소를 물리 메모리 등에 매핑합니다.
페이징은 고정 크기, 세그먼테이션은 논리 단위의 가변 크기입니다.
TLB는 최근 주소 변환 정보를 빠르게 찾는 캐시입니다.
필요한 페이지가 메모리에 없으면 가져오는 처리가 필요합니다.
가장 먼저 들어온 페이지부터 교체합니다.
가장 오랫동안 사용하지 않은 페이지를 교체합니다.
앞으로 가장 늦게 사용하거나 다시 쓰지 않을 페이지를 교체합니다.
페이지 교체에 시간을 대부분 쓰면 스래싱을 의심합니다.
디렉터리는 이름을 연결하고 inode는 파일 메타데이터 등을 관리합니다.
프로세스 간 자료 전달과 동기화를 별도로 생각합니다.
CLI는 명령을 입력하고 GUI는 창·메뉴 등 화면 요소로 조작합니다.
ls 목록 · cp 복사 · mv 이동/이름 변경 · rm 삭제입니다.
pwd는 현재 위치를 보여 주고 cd는 셸의 작업 디렉터리를 바꿉니다.
|는 출력→다음 입력, <는 파일 입력, >는 출력 덮어쓰기, >>는 출력 추가입니다.
r=4 · w=2 · x=1을 소유자/그룹/기타 사용자 순으로 더합니다.
ps는 프로세스 정보를 보고 kill은 신호를 보냅니다.
LFU는 참조 횟수가 가장 적은 페이지를 교체합니다.
APT는 표적에 발판을 유지하며 목적을 지속적으로 추구하는 위협입니다.
Rootkit은 호스트 기능을 은밀하게 바꾸어 공격 활동을 숨기는 도구 묶음입니다.
테스트는 결함을 찾지만 결함이 전혀 없음을 증명하지 못한다.
Verification은 명세를 제대로 구현했는지, Validation은 사용자 목적에 맞는지 확인한다.
정적은 실행하지 않고 검사, 동적은 실행하며 검사한다.
블랙박스는 명세·입출력, 화이트박스는 내부 구조를 기준으로 시험한다.
같은 처리를 예상하는 입력 집합마다 대표값을 고른다.
범위가 바뀌는 경계와 그 가까운 값을 집중 검사한다.
조건의 조합과 그 조합에 따른 행동을 표로 검사한다.
현재 상태와 사건에 따라 바뀌는 다음 상태를 시험한다.
실행한 문장 수 ÷ 실행 가능한 전체 문장 수 × 100.
각 분기의 가능한 결과를 실행한다.
복합 조건 안의 각 기본 조건이 참·거짓을 갖도록 검사한다.
하나로 연결된 흐름 그래프에서는 V(G)=E−N+2.
작은 구성요소 → 연결 → 전체 시스템 → 사용자 수용 목적.
스텁은 호출되는 하위 모듈 대역, 드라이버는 호출하는 상위 모듈 대역.
하향식은 위부터 스텁, 상향식은 아래부터 드라이버.
확인은 고친 결함, 회귀는 변경 때문에 다른 곳이 깨졌는지.
입력·사전조건·기대 결과를 정하고, 기대 결과를 판단할 근거를 둔다.
사람의 오류 → 산출물의 결함 → 실행 중 관찰되는 실패.
알파는 개발 조직 환경, 베타는 외부 사용자의 실제 환경.
부하는 예상 사용량, 스트레스는 한계나 과도한 조건을 확인한다.
학습·테스트 설계·실행을 함께 진행하며 발견에 따라 다음 시험을 바꾼다.
워크스루는 작성자 설명 중심, 인스펙션은 정해진 절차와 역할 중심.
발생 가능성과 영향이 큰 위험에 테스트를 우선 배분한다.
정확한 기능·안정적인 운영·빠른 처리·쉬운 변경 등 서로 다른 품질을 구분한다.
생성 패턴 · 서로 맞는 제품 계열을 함께 만든다.
생성 패턴 · 복잡한 객체의 조립 과정과 최종 표현을 분리한다.
생성 패턴 · 생성할 구체 제품의 선택을 하위 클래스로 미룬다.
생성 패턴 · 원형 객체를 복제하여 새 객체를 만든다.
생성 패턴 · 클래스 인스턴스를 하나로 제한하고 접근 지점을 제공한다.
구조 패턴 · 기존 인터페이스를 사용자가 기대하는 인터페이스로 맞춘다.
구조 패턴 · 추상화와 구현을 분리하여 각각 독립적으로 바꾼다.
구조 패턴 · 트리의 낱개와 묶음을 같은 인터페이스로 다룬다.
구조 패턴 · 같은 인터페이스의 래퍼로 객체 기능을 겹쳐 추가한다.
구조 패턴 · 복잡한 하위 시스템에 간단한 통합 진입점을 제공한다.
구조 패턴 · 반복되는 내부 상태를 공유하고 개별 외부 상태를 따로 전달한다.
구조 패턴 · 대리 객체로 실제 객체 접근을 통제한다.
행위 패턴 · 여러 처리 후보를 연결하여 처리할 객체까지 요청을 넘긴다.
행위 패턴 · 요청을 객체로 만들어 저장·대기·취소 같은 처리를 분리한다.
행위 패턴 · 작은 언어의 문법을 객체로 표현하고 문장을 해석한다.
행위 패턴 · 내부 저장 구조를 드러내지 않고 요소를 순서대로 접근한다.
행위 패턴 · 여러 객체의 복잡한 상호작용을 중재 객체에 모은다.
행위 패턴 · 캡슐화를 지키며 이전 상태를 저장하고 복원한다.
행위 패턴 · 한 객체의 상태 변경을 등록된 여러 관찰자에게 알린다.
행위 패턴 · 현재 상태를 객체로 분리하여 상태에 따른 동작을 바꾼다.
행위 패턴 · 알고리즘 대안을 캡슐화하여 교체한다.
행위 패턴 · 전체 알고리즘 순서는 유지하고 일부 단계를 하위 클래스가 바꾼다.
행위 패턴 · 객체 구조의 요소 클래스와 그 요소에 수행할 연산을 분리한다.
클래스도는 타입의 구조, 객체도는 특정 시점 인스턴스의 모습.
시스템 밖의 역할과 그 역할이 시스템으로 이루려는 목표를 표현한다.
include는 포함할 행동 쪽, extend는 확장될 기본 유스케이스 쪽으로 화살표.
시퀀스도는 메시지 순서, 통신도는 협력 연결과 번호를 강조한다.
행동의 흐름, 조건 분기, 병렬 작업과 합류를 표현한다.
객체의 상태와 사건에 따른 전이를 표현한다.
컴포넌트도는 소프트웨어 구성·인터페이스, 배치도는 실행 노드와 배치.
일반화는 특수→일반, 실체화는 구현→계약, 의존은 사용→대상.
빈 마름모는 공유 집합, 채운 마름모는 강한 소유 관계인 합성.
+ public, − private, # protected, ~ package; 0..*는 0개 이상.
무엇을 하는가는 기능, 어떤 품질·제약을 지키는가는 비기능.
필요 수집 → 충돌·우선순위 분석 → 문서화 → 의도·품질 확인.
모호하지 않고 일관되며 검증 가능하고 추적 가능한 요구로 작성한다.
요구의 출처와 설계·구현·시험 사이 연결을 유지한다.
모듈 안은 응집도 높게, 모듈 사이는 결합도 낮게.
전통적 순서: 우연 → 논리 → 시간 → 절차 → 통신 → 순차 → 기능.
전통적 약→강: 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용.
무엇을 관리할지 식별하고 변경을 통제·기록·감사한다.
상태 기록은 변경·버전 현황, 감사는 산출물과 요구·기록의 일치 확인.
commit은 로컬 변경 기록, push는 원격 저장소 전송.
폭포수는 단계 흐름, 나선형은 위험 분석 반복, V 모델은 개발과 테스트 대응.
협력·작동하는 제품·변화 대응을 중시하며 짧게 피드백한다.
Product Owner는 가치·백로그, Developers는 인크리먼트, Scrum Master는 Scrum 효과성.
짧은 피드백과 품질을 위해 테스트·짝 프로그래밍·리팩터링 등을 함께 실천한다.
실패 테스트 → 최소 구현으로 성공 → 동작 보존 리팩터링.
자원을 일관된 인터페이스로 다루고 각 요청은 처리에 필요한 맥락을 제공한다.
JSON은 이름-값·배열 등의 값 구조, XML은 태그 기반 요소 구조.
SOAP는 메시지 틀, WSDL은 서비스 인터페이스 설명.
RPC는 원격 기능 호출 추상화, 메시징은 메시지 전달로 협력한다.
IaaS는 기반 자원, PaaS는 앱 실행 플랫폼, SaaS는 완성된 앱 서비스.
IoT는 물리 세계와 연결된 장치가 네트워크로 데이터와 동작을 주고받는 구조.
기본 3V: Volume 규모, Velocity 속도, Variety 다양성.
SRP 책임, OCP 확장, LSP 대체, ISP 작은 계약, DIP 추상 의존.
Model은 데이터·업무, View는 표현, Controller는 입력 반응을 조정.
재현 조건·기대/실제 결과·영향을 기록하고 심각도와 수정 우선순위를 구분한다.
공유 원장의 블록을 암호학적으로 연결하여 변조 탐지·저항을 돕는다.
자료 흐름도는 처리·자료 흐름·자료 저장소·외부 개체로 데이터 이동을 표현한다.
자료사전은 데이터 이름·의미·형식·범위·단위 등 정의를 한곳에 기록한다.
FP는 코드 줄 수보다 사용자에게 제공하는 기능을 기준으로 소프트웨어 크기를 센다.
전통적 COCOMO 81은 규모와 개발 모드 등으로 노력·일정을 추정하는 모형이다.
노력은 인원×투입 기간, 비용은 노력×인월 단가로 조건에 맞춰 계산한다.
프로토타입은 빠른 시제품으로 요구·기술 가정을 확인하고 피드백을 얻는다.
배포·설치할 산출물을 버전·의존성·설명과 함께 일관된 단위로 준비한다.
Blue-Green은 두 환경의 전환, Canary는 작은 대상부터 점진 적용, Rollback은 이전 상태로 복귀한다.
변경 요청 → 영향 분석 → 승인·거절 → 구현·검증 → 상태 기록으로 기준선을 통제한다.
데이터 형식·의미·단위·순서·예외·시간 조건을 양쪽 계약과 대조한다.
미들웨어는 시스템 간 연결을 돕고 ESB는 라우팅·변환·연계를 중개한다.
SOA는 필요한 기능을 서비스로 제공하고 명시한 계약·인터페이스를 통해 이용하는 접근이다.
스택은 LIFO, 큐는 FIFO이며 실제 연산을 순서대로 추적한다.
순차는 하나씩, 이진은 정렬된 범위를 절반씩 줄여 찾는다.
선택은 최솟값 선택, 삽입은 정렬된 앞부분에 끼우기, 버블은 이웃 비교·교환이다.
병합은 정렬된 부분을 합치고, 퀵은 피벗으로 나누며 퀵의 최악은 O(n²)이다.
전위는 루트-왼쪽-오른쪽, 중위는 왼쪽-루트-오른쪽, 후위는 왼쪽-오른쪽-루트이다.
BFS는 가까운 단계부터 큐로, DFS는 한 갈래를 깊게 스택·재귀로 탐색한다.
해시 함수는 키를 위치로 대응하고, 충돌은 서로 다른 키가 같은 위치를 얻는 경우이다.
차수는 입력 n이 커질 때 작업 수가 어떤 비율로 늘어나는지 나타낸다.
사용자 요구와 UI 지침에 맞춰 일관된 메뉴·입력·피드백·화면 흐름을 설계한다.
묶인 작업을 대화식 개입 없이 처리하며 시작 조건·선후 관계·마감·복구를 정한다.
요구 지연·처리량에 맞춰 주기를 정하고 실패·재시도·중복·데이터 표준을 명세한다.
설치 매뉴얼은 환경·설치·확인 절차, 사용자 매뉴얼은 목적별 사용·오류 해결을 안내한다.
DRM은 콘텐츠 사용을 허가된 권한·조건에 맞춰 통제하는 기술 체계이다.
최대 힙은 부모≥자식, 최소 힙은 부모≤자식이며 루트에서 우선값을 꺼낸다.
MC/DC는 각 조건이 전체 결정 결과를 독립적으로 바꾸는 테스트쌍을 확인한다.