
1과목 소프트웨어 설계
[소프트웨어 생명 주기]
생명주기 모형 4가지 ①폭포수 ②프로토타입 ③나선형 ④애자일
*프로토타입: 원형, 견본품, 폭포수 보완
*나선형: 점진적, 위험 최소화, 유지보수 불필요
계획수립 - 위험분석 - 개발, 검증 - 고객평가
*애자일: 고객중심, 반복 (스크럼, XP, 기능중심개발FDD)
[XP (eXtreme Programming) 기법]
XP 핵심가치 5가지(용단의 피존) ①용기 ②단순성 ③의사소통 ④피드백 ⑤존중
[요구사항 분석]
타당성 조사 - 도출/수집 - 분석 - 명세 - 확인/검증
명세기법 ①정형 ②비정형
*정형: 수학적, 간결 *비정형: 자연어, 이해 쉬움, 일관성↓
요구사항 분석 방법 - 구조적 분석 기법 - 자료흐름도DFD, 자료사전DD
*자료흐름도 Data Flow Diagram: 버블차트, 도형(화살표, 원, 사각형, 직선)으로 기술
*자료흐름도 구성요소 4가지(프플스터) ①process(원) ②data flow(화살표) ③data store(직선) ④terminator(사각형)
*자료사전 기호 ①= ②+ ③() ④[] ⑤{} ⑥**
[UML]
객체지향언어 & 모델링언어
UML 구성요소 3가지(사관다) ①things 사물 ②relationship 관계 ③diagram
구조 다이어그램 6가지 ①클래스 ②객체 ③패키지 ④컴포넌트 ⑤배치 ⑥복합체구조
행위 다이어그램 7가지 ①활동 ②상태 ③시퀀스 ④타이밍 ⑤커뮤니케이션 ⑥상호작용개요 ⑦유스케이스
*정적모델링-구조다이어그램, 동적모델링-행위다이어그램
*시퀀스 - 액터, 객체, 생명선, 실행, 메시지
*유스케이스 - 시스템, 액터, 유스케이스, 관계 / 사용자 관점, 시스템 상호작용 / 기능적모델
*UML 스테레오 타입 객체 기호: << >>
[품질 요구사항]
ISO/IEC 9126, 25010: 개발자 관점 품질특성표준 (12119: 테스트 포함)
품질 요구사항 6가지 ①기능성 ②신뢰성 ③사용성 ④효율성 ⑤유지보수성 ⑥이식성
*기능성: 요구사항 만족, 기능 제공 (적합성, 정확성, 보안성, 준수성, 상호운용성) *신뢰성: 기능 정확히 오류없이 수행
*사용성(usability): 사용자 이해, 재사용의사 *효율성: 한정된 시간, 얼마나 빨리
*유지보수성: 새로운 요구사항 - 확장 *이식성(portability): 다른 환경에 적응
[객체지향(Object-Oriented)]
*객체 = 데이터 + 함수 캡슐화 *함수 = 객체의 행위 *다형성: 고유한 방법으로 응답
클래스: 데이터 추상화 단위 (객체의 집합)
연관성 종류 5가지 ①연관화(member) ②집단화(part) ③일반화 ④분류화(instance) ⑤특수화/상세화
*연관화: 상호 관련 *특수화/상세화: 하위객체구성
*집단화 vs 일반화 vs 분류화
집단화, 일반화는 상위객체구성 (집단화는 부분-전체관계 / 일반화 예시는 차-버스,트럭,택시)
[객체지향 분석 및 설계]
객체지향 분석 방법론 5가지 1Rumbaugh 2Booch 3Jacobson 4Coad&Yourdon 5Wirfs-Brock
*Rumbaugh: 일반적, 객동기(객체모델링-동적모델링-기능모델링), 그래픽표기법, =객체모델링기법
*객체모델링(object)-객체다이어그램, 동적(dynamic)모델링-상태다이어그램, 기능(function)모델링-자료흐름도
*Jacobson: Use case *Coad&Yourdon: E-R다이어그램 (객체식별 구조식별 속성인스턴스연결정의)
*Booch: 미시/거시적, 속성연산정의, 객체식별 *Wirfs-Brock: 분석설계구분없음, 고객명세서평가, 연속적수행
객체지향 설계 원칙 5가지 ①SRP ②OCP ③LSP ④ISP ⑤DIP
*Single Responsibility *Open Closed(기존코드 변경X 기능추가) *Liskov Substitution(부모-자식클래스)
*Interface Segregation(사용않는 인터페이스 의존X) *Dependency Inversion(추상성 높은 클래스 의존O)
[모듈]
모듈의 독립성(하나의 기능만 수행, 상호작용 배제)
독립성↑ ~ 결합도↓ 응집도↑ 모듈크기↓
*결합도 Coupling: 모듈 간(외부) *응집도 Cohesion: 모듈 내부요소
*결합도 비교(6가지) data(자료) < stamp < control(제어) < external(외부) < common(공통) < content(내용)
*응집도 비교(7가지) coincidental < logical < temporal < procedure < communication < sequential < functional
(우연 < 논리 < 시간 < 절차 < 교환 < 순차 < 기능)
*스탬프결합도: 인터페이스로 자료구조 전달 *공통결합도: 공유 *내용결합도: 내부기능, 자료
*우연적응집도: 서로 무관 요소 *논리적응집도: 유사한 성격 하나로 *교환적응집도: 동일입출력
*시간적응집도: 특정 시간(같은시간,함께) *절차적응집도: 순차적으로 *순차적응집도: 출력데이터를 입력데이터로
fan-in: 들어오는 화살표 개수 / fan-out: 나가는 화살표 개수
[공통 모듈]
공통 모듈 명세 기법 5가지 ①정확성 ②명확성 ③완전성 ④일관성 ⑤추적성
*정확성: 필요하다는 것 알수있게 *명확성: 중의적X 한가지로 해석되도록
*완전성: 모두 *일관성: 충돌X *추적성: 파악
공통 모듈의 재사용 규모에 따른 분류 3가지 ①함수&객체 ②컴포넌트 ③애플리케이션
[코드]
코드의 기능 5가지(식간분배표) ①식별 ②간소화 ③분류 ④배열 ⑤표준화
코드의 종류 7가지 ①순차코드 ②표의숫자코드 ③블록코드 ④10진코드 ⑤그룹분류코드 ⑥연상코드 ⑦합성코드
*순차(일련번호) *표의숫자(물리적수치,성질) *블록(구분) *그룹분류(기준,대중소) *연상(관련기호)
[디자인 패턴]
디자인패턴 구성요소 3가지(문사샘) ①문제&배경 ②사례 ③샘플코드
객체지향(절차X), GoF, 재사용(시간비용절약), 의사소통, 변경 유연 / 초기비용부담
디자인 패턴 3가지(구행생) ①생성패턴 ②구조패턴 ③행위패턴
생성패턴 5가지 Builder, Prototype, Singleton, Abstract Factory, Factory Method
구조패턴 7가지 Bridge, Proxy, Adapter, Composite, Decorator, Facade, Flyweight
행위패턴 11가지 State, Observer, Visitor, Command, Strategy, Mediator, Memento, Interpreter, Iterator,
Templete Method, Chain of Responsibility
*builder: 분리된 인스턴스 조합하여 객체 생성 *prototype: 원본 복제 *singleton: 어디서든 참조가능 but 동시X
*abstract factory: 클래스의존X, 인터페이스로 연관 *factory method: 서브클래스에서 처리하도록 캡슐화
*adapter: 변환 *bridge: 구현부/추상층 분리 *composite: 복합/단일객체 구분X *facade: 상위에 인터페이스 구성, 서브기능사용
* obsever: 상태변화 전달 *state: 같은동작 다른처리 *visitor: 처리기능분리, 별도클래스구성 *command: 요청정보저장, 로그에남김
*memento: 객체상태 특정시점으로 되돌리기 *interpreter: 문법표현정의 *strategy: 알고리즘 개별 캡슐화 *templete method: 하위클래스 구체화
*chain of responsibility: 한 객체가 처리X → 다음 객체로
[미들웨어 솔루션 명세]
미들웨어 = 미들+소프트웨어, 서버-클라이언트, 운영체제-응용프로그램 사이 서비스
미들웨어 종류 6가지 ①DB ②RPC ③MOM ④TP-Monitor ⑤ORB ⑥WAS
*DB: 클라이언트 DB연결 *Remote Procedure Call: 원격프로지저(로컬처럼)호출
*Message Oriented Middleware: 메시지기반 *Transaction Processing Monitor: 트랜잭션 처리/감시
*Object Request Broker: 객체지향 *Web Application Server: 동적처리
[기타]
5. 개발 기술 환경 파악
DBMS 요구사항분석 시 고려사항 5가지(기호가비성) ①기술지원 ②호환성 ③가용성 ④비용 ⑤성능
8. 요구사항 분석 CASE와 HIPO
CASE: 요구사항분석 자동화 도구 (그래픽지원, 생명주기전단계연결, 소프트웨어개발모형지원)
HIPO: 시스템분석/설계/문서화에 사용 (입력/처리/출력기능, 하향식 SW 개발 위한 도구,
차트 종류: 가시적/총체적/세부적도표, 기능-자료 의존관계 동시 표현, 보기쉬움, 이해쉬움)
11. 사용자 인터페이스
UI 설계원칙 4가지(직유학유) ①직관성 ②유효성 ③학습성 ④유연성
*직관성: 누구나 쉽게 사용 *유효성: 목적 달성 *학습성: 누구나 쉽게 익힘 *유연성: 요구사항 수용
21. 소프트웨어 아키텍처
소프트웨어 아키텍처 품질속성 - 시스템측면 ①성능 ②보안 ③가용성 ④기능성 ⑤사용성 ⑥변경용이성 ⑦확장성 ⑧기타-테스트용이성, 배치성, 안정성
시스템 타입 ①대화형 ②이벤트중심 ③변환형 ④객체영속성
협약에 의한 설계 - 선행조건, 결과조건, 불변조건
22. 아키텍처 패턴
①Layer Pattern 계층구조: 각 서브시스템들이 계층구조, 상위:서비스제공자, 하위:클라이언트
②Client-Server Pattern: 서버 컴포넌트 하나 + 클라이언트 컴포넌트 다수
③Pipe-Filter 파이프-필터: 데이터스트림 각 단계 필터 컴포넌트로 캡슐화, 파이프로 전송
앞 시스템 결과를 받아서 처리 → 결과를 다시 다음 시스템으로 전달, 단방향
④모델-뷰-컨트롤러: 서브시스템을 3개 부분으로 구조화
30. 인터페이스 요구사항 검증
요구사항 검토 방법 6가지 ①동료검토 ②워크스루 ③인스펙션 ④프로토타이핑 ⑤테스트설계 ⑥CASE
*동료검토: 작성자가 설명, 동료 참여 *워크스루: 미리 배포, 오류 조기검출 *인스펙션: 작성자X 전문가 검토
*프로토타이핑: 견본품, 예측 *테스트설계: 테스트케이스 생성 *CASE: 일관성 분석
2과목 소프트웨어 개발
[트리(Tree)]
단말노드: 자식이 없는 노드 / 차수: 노드에서 뻗어나온 가지 수 / 트리의 차수: 노드 차수 중 가장 높은 차수
트리 운행법 3가지 ①preorder(root-왼-오) ②inorder(왼-root-오) ③postorder(왼-오-root)
*서브트리 묶어서 하나의 노드로 생각하고 풀기
수식 표기법 3가지 ①prefix(+ab) ②infix(a+b) ③postfix(ab+)
[정렬(Sort)]
정렬의 종류 8가지 ①삽입 ②선택 ③버블 ④합병 ⑤힙 ⑥쉘 ⑦퀵 ⑧기수
삽입정렬 1회전: 2-1 / 2회전: 3-1, 3-2 / 삽입하고 한칸씩 미루기
선택정렬 1회전: 1-2, 1-3, ..., 1-끝 / 2회전: 2-3, 2-4, ..., 2-끝 / 그때마다 교환하기
버블정렬 1회전: 1-2, 2-3, ..., (끝-1)-끝 / 2회전: 1회전과 동일 / 그때마다 교환하기
합병정렬 1회전: 둘씩 묶어 정렬 / 2회전: 1의 묶음을 다시 둘씩 묶어 정렬
힙정렬:전이진트리 쉘정렬:매개변수 퀵정렬:작은값왼쪽큰값오른쪽 기수정렬:버킷
각 정렬의 시간복잡도 (n개의 데이터)
삽입, 선택, 버블: O(n^2) / 힙, 합병: O(nlog2n)
쉘: O(n^1.5), O(n^2) / 퀵: O(nlog2n), O(n^2) / 기수: O(dn)
[데이터베이스 개요]
데이터베이스 정의 4가지 ①통합된데이터 ②저장된데이터 ③운영데이터 ④공용데이터
*통합된: 중복 배제 *운영: 조직 업무에 필수적
DBMS 필수기능 3가지(정조제) ①정의(DDL-D) ②조작(DML-M) ③제어(DCL-C)
*정의: 명시 *조작: 삽입,삭제,갱신 수단 제공 *제어: 무결성유지, 권한검사, 보안유지, 병행제어
스키마: DB구조,제약조건 명세 기술한 메타데이터 집합
스키마 분류(사용자관점) 3가지 ①개념스키마 ②외부스키마 ③내부스키마
*개념: 모든 사용자 / 조직 전체 DB - 논리적구조, 유일 *외부: 개인 - 논리적구조
*내부: 물리적저장장치입장DB구조, 내부레코드 물리적순서, 레코드형식정의, 데이터항목표현
[소프트웨어 패키징]
소프트웨어 패키징 고려사항: 필요한 최소 환경 정의 / 사용자 편의성(복잡성, 비효율성) / 보안, 암호화 알고리즘 /
여러 단말기 DRM연동 / UI - 매뉴얼과 일치 / 하드웨어와 함께 관리위해 managed service 형태 제공
[디지털 저작권 관리(DRM)]
DRM 구성요소 7가지
①클리어링하우스 ②패키저 ③콘텐츠제공자 ④콘텐츠분배자 ⑤콘텐츠소비자 ⑥DRM컨트롤러 ⑦보안컨테이너
DRM 기술요소 8가지 (오류복구X, 방화벽X)
①암호화 ②키관리 ③암호화파일생성 ④식별기술 ⑤저작권표현(라이선스) ⑥정책관리 ⑦크랙방지 ⑧인증
*클리어링하우스: 키관리, 라이선스발급관리 *패키저: 메타데이터와 묶어 암호화
*제공자:저작권자 *분배자:유통자 *소비자:구매,사용자
*DRM컨트롤러: 이용권한 통제 *보안컨테이너: 안전한 유통을 위한 보안장치
[소프트웨어 버전 등록]
형상관리 SCM: 변경사항 관리 (비용X)
형상관리 항목 4가지(소정지분) ①소스코드 ②정의서 ③지침서 ④분석서
형상관리도구의 주요기능 5가지(동체가 커저) ①동기 ②체크인/체크아웃 ③가져오기 ④커밋 ⑤저장소
*체크아웃: 저장소에서 파일을 받아와서 수정 *체크인: 수정 완료 후 갱신 *커밋: 체크인 시 수정, 갱신 완료
*저장소: 최신버전 저장 *동기화: 저장소의 최신 버전으로 작업공간 동기화
형상관리 역할/중요성: 불필요한 수정 제한 / 이전 버전 정보 접근 / 배포본 관리 유용
/ 여러 개발자 동시 개발 가능 / 버그, 수정사항 추적 / 변경사항 추적 통제 / 방해요인 감소
*형상관리에 비용 관리는 포함되지 않지만 결과적으로 비용 감소의 효과
[테스트 기법에 따른 애플리케이션 테스트]
테스트 기법 종류 2가지 ①화이트박스테스트 ②블랙박스테스트
화이트박스테스트 종류 2가지 ②기초경로검사 ②제어구조검사(조건검사, 루프검사, 데이터흐름검사)
블랙박스테스트 종류 5가지 ①경계값검사 ②동치분할검사 ③원인효과그래프 ④오류예측 ⑤비교검사
*화이트박스테스트: 원시코드의 모든 논리적 경로를 테스트하여 설계, 소스코드 모든 문장 한 번 이상 수행,
모듈 안의 작동 직접 관찰 가능, 절차에 초점, 구조적테스트, 테스트 초기에 실시, 프로시저 설계의 제어 구조 사용,
선택/반복 등 수행함으로써 논리적 경로 점검
*블랙박스테스트: 기능이 의도대로 작동하는지 테스트 (기능테스트), 인터페이스에서 실시, 오류/누락 발견 위해,
테스트 후반부에 실시, 사용자 요구사항 명세 참고
[개발 단계에 따른 애플리케이션 테스트]
단위 - 통합 - 시스템 - 인수단위테스트: 최소단위 모듈/컴포넌트 테스트
인수테스트 종류 6가지
①알파테스트 ②베타테스트 ③사용자인수테스트 ④운영상인수테스트 ⑤계약인수테스트 ⑥규정인수테스트
*알파: 사용자가 개발자 앞에서 *베타: 사용자가 여러 사용자 앞에서=필드테스팅
*사용자: 사용자가 *운영상: 관리자가 *계약: 계약조건 *규정: 법규
[통합 테스트]
통합테스트 종류 2가지 ①하향식통합테스트 ②상향식통합테스트 (그외, 혼합식통합테스트, 회귀테스트)
*하향식: 상위→하위, 스텁(stub), 깊이 혹은 넓이 우선 통합방식, 초기부터 시스템구조 보여줄 수 있음
*상향식: 하위→상위, 클러스터(cluster), 드라이버(driver)
*스텁: 임시로 제공, 필요 조건만 가진, 시험용 모듈 *클러스터: 주요모듈+종속모듈 묶음
(하향식: 종속모듈 스텁으로 대체, 하위 모듈인 스텁들이 실제 모듈로 대체, 통합마다 테스트)
(상향식: 하위모듈 클러스터로 결합, 상위모듈에서 드라이버작성, 클러스터 단위로 테스트,
클러스터 상위로 이동하며 결합, 드라이버는 실제 모듈로 대체)
*깊이우선: 종속된 모듈 통합이 먼저 *넓이우선: 수평으로 통합 먼저
[복잡도]
시간복잡도 (실행시간/연산횟수) - 점근표기법(시간X실행횟수O) - 빅오표기법
O(1): n과 무관, 일정, 하나의 단계 O(n): 정비례, 선형, n과 단계가 1:1
O(n^2): 제곱에 비례 O(log2n): 로그에 비례, n또는 조건에 의해 감소 O(nlog2n):로그x변수에 비례
O(2^n): 지수에 비례 O(n!): 팩토리얼에 비례
순환복잡도(맥케이스순환도): 논리적 복잡도 척도, 화살표수-노드수+2 (화노이) / 화살표로 구분되는 영역의 수 □
[어플리케이션 성능 개선]
클린코드 작성원칙 5가지(단추가 의중) ①단순성 ②추상화 ③가독성 ④의존성배제 ⑤중복성최소화
*단순성: 한번에 하나 수행, 최소 단위 *의존성 배제: 영향X
나쁜코드 종류: 외계인코드(아는사람X), 스파게티코드(로직복잡)
소스코드 품질 분석 도구 2가지 ①정적분석도구(소스코드실행X) ②동적분석도구(소스코드실행O)
정적분석도구 종류: pmd, ccm, cppcheck, checkstyle, cobertura, SonarQube
동적분석도구 종류: Avalanche, Valgrind
[모듈 연계를 위한 인터페이스 기능 식별]
모듈연계방법 2가지 ①EAI ②EBS
EAI: 애플리케이션 상호연동, 연계성, 확장성, 효율성, 비즈니스통합
EAI 구축 유형 4가지 ①Point-to-Point ②Hub&Spoke ③Message Bus ④Hybrid
*Point-to-Point: 기본적, 1:1연결, 변경/재사용어려움
*Hub&Spoke: 허브시스템, 중앙집중형, 확장/유지보수 용이, 장애 전체 영향
*Message Bus: EBS방식, 애플리케이션 사이 미들웨어, 확장성, 대용량 처리
*Hybrid: Hub&Spoke + Message Bus, 중간에 미들웨어, 필요한 경우 한가지 방식으로 구현, 병목현상 최소화
EBS: 애플리케이션X 서비스 중심 통합
[인터페이스 보안]
인터페이스 보안 영역 3가지 ①네트워크영역 ②애플리케이션영역 ③데이터베이스영역
네트워크 영역 3가지 ①IPSec ②SSL ③S-HTTP
데이터 무결성 검사도구: 변경되면 알림 (Tripwire, AIDE, Samhain, Claymore, Slipwire, Fcheck)
*크래커 침입하여 백도어를 만들거나 시스템 변경 - 무결성 검사도구 이용
[인터페이스 구현 검증]
인터페이스 구현 검증 도구 6가지 ①xUnit ②STAF ③NTAF ④FitNesse ⑤Selenium ⑥watir
*xUnit: Java, C++ 등 언어지원 *STAF: 컴포넌트 재사용
*NTAF: FitNesse+STAF, 네이버, 협업기능+재사용/확장성
*FitNesse: 웹기반 *Selenium: 다양한 브라우저, 언어 지원, 웹애플리케이션 *watir: Ruby 사용
[기타]
36. 자료구조
선형: 스택, 큐, 리스트, 데크 VS 비선형: 트리, 그래프
스택: 리스트의 한 쪽 끝으로만 자료 삽입 및 삭제 (LIFO 후입선출 방식 처리 / 가득 차있을 때 삽입하면 오버플로우, 자료가 없을 때 삭제하면 언더플로우)
큐: 리스트 한 쪽에서 삽입하고 다른 쪽에서 삭제 (FIFO 선입선출 방식 처리 / 시작과 끝을 표시하는 포인터 2개 존재)
*push: 삽입, pop: 삭제 (ex. ABCD → CBDA 가능)
53. 애플리케이션 테스트
소프트웨어 법칙 4가지 ①Pareto ②Pesticide Paradox ③Brooks ④오류-부재의 궤변
59. 테스트케이스/테스트시나리오/테스트오라클
테스트케이스: 입력값,실행조건,기대결과, 명세기반 / 테스트시나리오: 테스트케이스집합
테스트오라클: 사전정의된 참값 대입/비교, 제한적/수학적/자동화 (참,샘플링,추정,일관성검사)
62. 애플리케이션 성능 분석
애플리케이션/플랫폼 성능 측정 지표 5가지(경사응가) ①경과시간 ②사용률 ③응답시간 ④가용성 ⑤처리량
69. 인터페이스 구현
JSON: JavaScriptObjectNotation, 용량적은데이터, 속성-값 쌍의 형태
XML: 특수 목적, 마크업언어
AJAX: 자바스크립트기반, XML데이터교환, 이용자가 웹페이지와 상호작용, 비동기통신기술
*알고리즘 설계 기법 종류 5가지
①분할정복 Divide and Conquer ②Greedy ③BackTracking
④동적계획 Dynamic Programming ⑤분기한정 Branch and Bound
*해싱함수
종류: 제곱법, 숫자분석법, 중첩(폴딩법), 제산법, 기수변환법, 무작위
폴딩법 - 레코드 키를 여러 부분으로 나누고, 각 부분을 더하거나 XOR 한 값을 홈 주소로 사용
3과목 데이터베이스 구축
[데이터베이스 설계]
데이터베이스 설계 고려사항 6가지(일회무효확보) ①일관성 ②회복성 ③무결성 ④효율성 ⑤확장성 ⑥보안성
데이터베이스 설계 순서: 요구조건분석 - 개념적설계 - 논리적설계 - 물리적설계 - 구현
*요구조건분석: 명세서작성
*개념적설계: 독립적 개념스키마 모델링(E-R모델) / 트랜잭션 모델링
*논리적설계: 논리적구조로 매핑 / 스키마 평가및정제, DBMS에 맞는 스키마설계 / 트랜잭션 인터페이스 설계
*물리적설계: 물리적구조로 변환 / 레코드 집중 분석설계, 레코드 양식설계 / 접근경로 설계 / 저장공간 효율, 응답시간, 트랜잭션 처리
*구현: DBMS의 DDL로 스키마작성, DB생성 / 트랜잭션 작성
[E-R(객체-관계)모델]
E-R Entity-Relationship: 대표적 개념적 데이터 모델, P.Chen 제안, 현실데이터→논리데이터, n:m관계가능
E-R 다이어그램: E-R모델 시각적표현
사각형-개체타입 마름모-관계타입 타원-속성 선-연결
(이중타원-다중값속성 복수타원-복합속성 밑줄타원-기본키속성 대응수-관계)
[관계형 데이터베이스 구조]
관계형 데이터베이스: 개체,관계를 릴레이션(표)으로 표현
릴레이션 = 릴레이션스키마 + 릴레이션인스턴스
튜플: 행, 레코드, 속성의모임 / 기수,대응수,카디널리티cardinality: 튜플 개수
애트리뷰트/속성: 원자값만 저장, 데이터필드 / 차수,degree: 속성 개수
도메인: 한 속성이 취할 수 있는 원자값 집합
*튜플중복불가, 속성명칭유일, 속성값중복가능 / 튜플순서없음, 속성순서무의미
*인덱스 index - 독립적 저장공간 보유, 저장된 자료 빠르게 조회 가능하게 함, 자동 생성X
[관계형 데이터베이스의 제약조건 - key]
key 키: 튜플 구분기준인 속성 / 종류 5가지 ①후보키 ②기본키 ③대체키(보조키) ④슈퍼키 ⑤외래키
후보키,기본키,대체키: 유일성O최소성O / 슈퍼키: 유일성O최소성X
*릴레이션에 후보키 적어도 하나 존재 *기본키: not null
*슈퍼키: 하나이상속성 조합 *외래키: 다른릴레이션 기본키 참조
*외래키는 참조 릴레이션 기본키에 없는 값 입력불가, null 가능
[관계형 데이터베이스의 제약조건 - 무결성]
무결성 종류 4가지 ①개체무결성 ②도메인무결성 ③참조무결성 ④사용자정의무결성
*개체: 기본키 null/중복 불가 *도메인: 속성값 도메인에 속한값 *참조: 외래키값 참조릴레이션 기본키값/null
[관계대수 및 관계해석]
관계대수: 관계형 데이터베이스, 원하는 정보, 그 정보를 검색하는 방법 - 절차적
관계해석: 원하는 정보 - 비절차적
순수 관계 연산자 4가지 ①select(σ) ②poject(π) ③join(▷◁) ④division(÷)
*select: 튜플, 수평연산, σ조건(R) *project: 속성, 수직연산, π속성리스트(R)
*join: 공통속성으로 릴레이션 합침, R▷◁키속성r=키속성sS (공통속성 한번만 표시: 자연조인, R▷◁키속성S)
*division: R÷S, R에서 S와 관련된 튜플을 ‘겹치는 속성 제외하고’ 반환 (단, 튜플은 중복 불가 _ select 연산 결과는 중복허용, 하지만 릴레이션에서는 중복X)
*cartesian product: 조건없는 join, 두 릴레이션을 카티션 프로덕트 한 결과? 행은 두 릴레이션 행 개수의 곱, 열은 두 릴레이션 열 개수 더하기
[정규화]
정규화: 종속성이론, 스키마 더 작은 속성으로 나눔
이상 anomaly: 정규화하지않아 데이터 불필요한 중복, 조작시 이상발생 - 삽입이상, 갱신이상, 삭제이상
*갱신이상: 일부만 갱신하여 모순 발생 / 삽입이상: 원하지 않는 값 함께 삽입 / 삭제이상: 의도치 않은 값도 함께 삭제
정규화조건
1NF: 도메인(속성) 원자값
2NF: 1NF + 부분적함수종속제거 (완전함수종속) 3NF: 2NF + 이행적함수종속제거
BC(Boyce-codd)NF: 3NF + 결정자이면서 후보키아닌것 제거 (결정자 모두 후보키)
4NF: BCNF + 다치종속제거 5NF: 4NF + 조인종속제거
*이행적종속: A→B 이고 B→C 이면 A→C 이다 (함수적종속 X에 따라 Y가 결정되면 X→Y)
[반정규화]
반정규화: 의도적 정규화 위배, 통합/중복/분리
중복테이블 추가 3가지 ①집계테이블추가 ②진행테이블추가 ③특정부분만포함하는테이블추가
*트리거 trigger: DB 데이터 입력/갱신/삭제 이벤트 발생때마다 자동으로 수행되는 절차형SQL
[트랜잭션 분석 / CRUD 분석]
트랜잭션: 논리적기능수행 작업단위, 한꺼번에 수행되어야 할 연산들
트랜잭션 특성(무결성보장을위한) 4가지(원일지독) ①원자성 ②일관성 ③지속성 ④독립성
*Atomicity: 모두반영OR전혀반영X - commit/rollback *Consistency
*Isolation 격리성: 다른 연산 끼어들수X *Durability 영속성: 고장나도 영구적으로 반영O
CRUD 분석: 연산에대해 매트릭스 작성하여 분석
[뷰(View) 설계]
뷰: 허용된자료만제한적으로보여줌, 보안성 / 기본테이블로부터유도됨, 기본테이블제거→뷰도자동으로제거
/ 논리적독립성, 물리적X논리적O / 데이터관리용이, 간단 / 뷰 위에 또다른 뷰 정의가능 / 정의CREATE 제거DROP
/ 연산에제약O / 독립적인덱스X / 뷰 정의 변경X
[분산 데이터베이스 설계]
분산데이터베이스: 논리적으로 하나, 물리적으로 여러개 분산
분산데이터베이스 목표 4가지(중위장병) ①중복투명성 ②위치투명성 ③장애투명성 ④병행투명성
*Replication: 하나만존재하는것처럼사용, 시스템은여러곳작업 *Location: 실제위치알필요X, 논리적명칭으로접근
*Failure: 장애에도불구, 정확히처리 *Concurrency: 다수동시실행해도 결과영향X
분산데이터베이스 설계 고려사항 5가지 ①작업부하분산 ②지역자치성 ③일관성 ④회복 ⑤원격접근
분산데이터베이스 장단점: 지역자치성, 분산제어, 성능, 용량확장, 공유성, 효용성, 융통성, 신뢰성, 가용성
/ 설계어려움, 기능복잡, 비용증가, 잠재적오류증가
[SQL의 개념]
SQL: 관계형데이터베이스 표준질의어, 비절차어
SQL 종류 3가지 ①DDL ②DML ③DCL
*DDL - CREATE, DROP, ALTER *DML - SELECT, INSERT, UPDATE, DELETE
*DCL - COMMIT, ROLLBACK, GRANT, REVOKE
*DDL 기능: 스키마,도메인,테이블,뷰,인덱스 정의/변경/삭제, 논리적/물리적 데이터구조정의
*DML 기능: 사용자가 데이터 처리, 사용자↔DBMS 인터페이스
*DCL 기능: 데이터보안, 무결성, 회복, 병행수행제어
[DDL]
> CREATE
CHECK: 속성값 제약조건 정의 CONSTRAINT: 제약조건 이름지정
CASCADE: 참조테이블튜플 삭제되면 관련튜플 모두삭제, 변경되면 모두 변경
NO ACTION / SET NULL / SET DEFAULT: 참조테이블 변화 시 조치
> ALTER
ADD: 속성추가 DROP COLUMN: 속성삭제
> DROP
스키마,도메인,테이블,뷰,인덱스 제약조건 제거
CASCADE: 제거할 요소 참조하는 다른모든개체 함께제거 (참조무결성유지)
RESTRICT: 제거할 요소를 다른 개체가 참조중이면 제거취소
[DCL]
GRANT: 권한부여 - GRANT 연산 ON 테이블 TO 사용자
REVOKE: 권한회수 - REVOKE 연산 ON 테이블 FROM 사용자
COMMIT: 완료 ROLLBACK: 복귀
[DML-SELECT-1]
SELECT 컬럼 FROM 테이블 / INSERT INTO 테이블(컬럼) VALUES (컬럼값)
UPDATE 테이블 SET 컬렴=컬럼값 / DELETE FROM 테이블 WHERE 조건
DISTINCT: 중복이면 하나만 조회 DISTINCTROW: 중복이면 하나만 조회, 단 속성X 튜플대상
ORDER BY: 특정속성기준 정렬 GROUP BY: 특정속성기준 묶음 (HAVING 조건)
ASC: 오름차순 DESC: 내림차순
<>: 같지않음 NOT IN: 포함하지않는 EXISTS: 존재하는
LIKE: 조건에서 사용 (%:문자 / _:문자하나 / #:숫자하나)
연산자 우선순위: NOT-AND-OR, 산술-관계-논리
*select 는 튜플 중복 허용 *distinct 는 select 절에 컬럼명과 함께 쓰임 *where 번호 is not null (O) 번호 != null (X)
[DML-SELECT-2]
> 그룹함수: GROUP BY 이용하여 집계
COUNT(): 튜플 수
SUM() AVG() MAX() MIN() / STDDEV():표준편차 VARIANCE(): 분산
ROLLUP(속성, 속성, ...): 주어진 속성을 대상으로 그룹별 소계 구함
CUBE(속성, 속성, ....): 주어진 속성을 대상으로 모든 조합 그룹별 소계 구함
> WINDOW함수: GROUP BY 이용하지 않고 집계
ROW_NUMBER(): 윈도우별 각 레코드에 대한 일련번호 반환
RANK(): 윈도우별 순위반환, 공동순위반환 DENSE_RANK(): 윈도우변 순위반환, 공동순위 무시하고 순위부여
> 집합연산자: 둘이상 테이블 데이터 하나로 통합
(SELECT FROM 테이블) 집합연산자 (SELECT FROM 테이블)
UNION: 합집합, 중복제외 UNION ALL: 합집합, 중복허용 INTERSECT: 교집합 EXCEPT: 차집합
[기타]
76. 데이터 모델의 개념
데이터모델에 표시할 요소 3가지 ①논리적 구조 ②연산 ③제약조건
89. 시스템 카탈로그
시스템 카탈로그: 시스템 데이터베이스 (시스템 관련 객체 정보를 포함한)
데이터 객체 정의/명세 정보 유지관리 / 자료사전에 저장 (시스템 카탈로그 = 데이터 사전)
메타데이터: 시스템 카탈로그에 저장된 정보 (데이터베이스 객체 정보 / 무결성 제약조건 / 사용자정보)
갱신은 자동 / 일반 사용자도 검색은 가능(수정 불가)
*데이터 디렉터리 data directory: 실제 정보 접근에 필요한 정보 유지관리 / 시스템만 접근 가능, 사용자 접근 불가
데이터 디렉터리 vs 데이터 사전(시스템 카탈로그) 혼동 주의
96. 파티션 설계
파티션 종류 3가지 ①범위분할(Range) ②해시분할(Hash) ③조합분할(Composite)
101. 데이터베이스 보안 - 접근통제
접근통제 종류 3가지 ①임의접근통제 DAC ②강제접근통제 MAC ③역할기반접근통제 RBAC
*DAC: 사용자신분에 따라 결정, 데이터소유자에게 권한 부여
*MAC: 보안등급에 따라 결정, 시스템에 권한 부여
*RBAC: 역할에 따라 결정, 중앙관리자에게 권한 부여
4과목 프로그래밍 언어 활용
[배치 프로그램]
배치 프로그램 Batch Program: 사용자와 상호작용 없이 작업
배치프로그램 (수행주기에따라) 분류 3가지 ①정기배치 ②이벤트성배치 ③On-Demand배치
배치프로그램 필수요소 5가지 ①대용량데이터 ②자동화 ③견고성 ④안정성(신뢰성) ⑤성능
*견고성: 중단없이 안정성: 추적가능 성능: 다른프로그램 방해X, 시간내처리
[데이터타입]

*C언어에는 부호없는 문자형/정수형 unsigned 존재 / 구조체 struct: 배열과 유사, 자료종류가 다른 변수의 모임
[변수]
변수: 변하는 값, 저장공간
변수명 규칙 (파이썬 포함) 6가지
①영어 숫자 _ 가능 ②공백, 특수문자 불가 ③첫글자 숫자 불가 ④예약어 불가 ⑤대소문자구분O ⑥글자수제한X
*선언 후 세미콜론; (파이썬 제외), 변수명 앞 데이터타입(헝가리언표기법, 파이썬 제외)
*C언어 예약어: goto, enum, extern, register, const, volatile (+ do, case, signed, typedef, union, auto)
*C언어 기억클래스 변수 4가지 ①자동변수(auto) ②레지스터변수(register) ③정적변수(static) ④외부변수(extern)
[연산자]
연산자 종류 6가지 ①산술 ②관계 ③비트 ④논리 ⑤대입 ⑥조건 + ⑦기타
*산술: + - * / % ++ -- *관계: == != > >= < <= *비트: & | ^ ~ << >> *논리: ! && ||
*대입: += -= *= /= %= <<= >>= *조건: 조건?수식1:수식2
*기타: sizeof(자료형크기), 순서연산자(,), cast연산자(형변환)
연산자 우선순위: 단항 - 이항(산술-시프트-관계-비트-논리) - 조건 - 대입 - 순서
* () 가 가장 우선, ,가 가장 나중
결합규칙 왼→오: 이항, 조건, 순서 / 오→왼: 단항, 대입
[데이터입출력]
C언어 입출력: scanf, printf, getchar, gets, putchar, puts
*scanf(서식문자열, 변수주소), printf(서식문자열, 변수)
*서식문자열: %d %u %o %x %c %s %f %e %ld %lo %lx %p (d정수, f실수, c문자, s문자열)
*제어문자: \n \b \t \r \0 \’ \” \a \\ \f (\r: 줄처음으로, \a: alert, \f: form feed 한페이지넘김)
JAVA 입출력: Scanner sn = new Scanner(System.in); a=sn.nextInt(); , System.out.print();
*print/printf/println
*Java에서 출력 시 1)print("5+2="+3+4) → 5+2=34 2)print("5+2="+(3+4)) → 5+2=7
*Java에서 do~while: do 일단 한번 실행, 이후부터 조건 만족하면 반복
*C언어에서 문자열 → 정수형 : atoi() / 문자 이어붙이기: strcat
*C언어에서 a=!3 이라고 하면 a=false (1이상 모든 수는 true 이므로 3은 true인데, !3이므로 not true, 즉 false)
*유니코드 A=65 ~, 가=44032 ~
[Python의 기초]
기본문법 5가지 ①자료형선언X ②세미콜론X ③변수 값저장 연속 가능
④명령문에서 코드블록 콜론과 여백으로 구분 ⑤여백은 4칸(1탭), 같은 수준 코드는 동일 여백
Python 입출력: input, print
*변수1, 변수2 = input(출력문자).split(분리문자)
*print(출력값1, 출력값2, sep=분리문자, end=종료문자)
☆ 배열 인덱스 주의
> Range: 연속된 숫자 생성, 리스트/반복문에서 사용
range(초기값, 최종값, 증가값) - 증가값 없으면 1씩, 초기값 없으면 0부터
ex. a = list(range(4)) 리스트a = 0, 1, 2, 3 / a = list(range(9, 4, -1)) 리스트a = 9, 8, 7, 6, 5
> Slice: 문자열/리스트에서 일부 잘라 반환
객체명[초기위치:최종위치:증가값]: 인덱스기준 초기위치~최종위치-1 반환
생략가능 - 객체명[:], 객체명[::] (모두반환), 객체명[초기위치:], 객체명[:최종위치], 객체명[::증가값]
*-인덱스: 뒤에서부터 -1, -2, -3, ...
ex. a = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’] / a[0:5:2] = [‘a’, ‘c’, ‘e’] / a[-3:-1] = [‘c’, ‘d’]
*파이썬에서 continue: continue 를 만나면 그 아래 코드를 실행하지 않고 반복문 처음으로 (조건확인) 이동하여 반복
[UNIX/LINUX/MacOS]
UNIX: 대화식운영체제, C언어, 트리구조, 멀티유저 멀티테스킹(백그라운드작업), 이식성, 호환성, 개방형시스템
UNIX 시스템 구성: 사용자, 유틸리티, 쉘, 커널, 하드웨어
커널kernal: UNIX핵심 / 주기억장치상주O / 프로그램-하드웨어 인터페이스 / 하드웨어보호 / 프로세스,기억장치,입출력 관리, 프로세스통신, 데이터전송
쉘shell: 주기억장치상주X, 파일형태, 보조기억장치에서교체처리 / 사용자-시스템 인터페이스, 사용자명령어해석기 / 공용쉘, 사용자가만든쉘 (다양)
UNIX 간 통신 ①시그널(간단한메시지) ②파이프(단방향) ③소켓(쌍방향)
LINUX: UNIX기반 / MacOS: UNIX기반, 애플
*Windows - 소스공개X, GUI 기반, 선점형 멀티태스킹, PnP자동감지기능, OLE, Single-user, 255자 긴 파일명
*DOS/UNIX 는 CLI(Command Line Interface)
[기억장치 관리의 개요]
기억장치: 레지스터, 캐시기억장치, 주기억장치, 보조기억장치
기억장치 관리전략 3가지(반교배) ①반입전략 ②배치전락 ③교체전략
반입전략(Fetch): 언제 ①요구반입Demand ②예상반입Anticipatory
배치전략(Placement): 어디에 ①최초적합FirstFit ②최적적합BestFit ③최악적합WorstFit
*요구될때, 미리예상해서 / 첫번째, 단편화최소, 단편화최대
교체전략(Replacement): 모든영역이미사용중, 어느영역교체할지 (FIFO, OPT, LRU, LFU, NUR, SCR)
[가상기억장치 구현 기법 / 페이지 교체 알고리즘]
가상기억장치: 보조기억장치 주기억장치처럼, 주기억장치용량 더 큰것처럼
가상기억장치 구현방법 2가지 ①페이징기법 ②세그먼트기법 (둘다 맵테이블 필요)
*Paging: 프로그램과 주기억장치영역 동일한크기로 나누고 페이지를 페이지프레임에 적재 / 내부단편화O
(페이지: 프로그램 일정크기로 나눈 단위, 페이지프레임: 주기억장치 일정 크기로 나눈 영역)
*Segmentation: 프로그램을 다양한 논리적 크기로 나누고 주기억장치에 적재 / 외부단편화O
(세트먼트: 프로그램을 배열/함수 등 논리적크기로 나눈 단위)
☆세크먼트기법 예제
세그먼트 테이블 주어지고 논리주소(가상주소)→물리주소(실기억주소) 찾기
논리주소(s, d) 에서 s(세그먼트번호)는 테이블의 색인 역할, d(변위)와 해당 크기(한계번지) 비교하여
d가 더 작거나 같으면 물리주소(실기억주소)=변위+시작주소(기준번지)
페이지교체알고리즘 종류 6가지 ①FIFO ②LRU ③LFU ④NUR ⑤OPT ⑥SCR
①FirstInFirstOut 선입선출: 가장먼저 들어와 가장오래 있었던 페이지 교체 (하단예제)
②LeastRecentlyUsed: 최근에 가장오래 사용하지않은 (가장 오래전에 사용된) 페이지 교체 (하단예제)
③LeastFrequentlyUsed: 사용빈도가 가장 적은 페이지 교체
④NotUsedRecently: 최근에 사용하지 않은 페이지 교체, 참조비트 변형비트 사용 (하단예제)
⑤OPTimal replacement 최적교체: 앞으로 가장오래 사용하지않을 페이지 교체
⑥SecondChanceReplacement 2차기회교체: FIFO보완, 가장오래있었지만 자주사용되는페이지 교체방지
▷예제: 다음 페이지 참조 열에 대해 페이지교체기법으로 FIFO/LRU 알고리즘 사용 시 페이지부재 횟수?
할당된 페이지프레임 수 3, 처음에는 모두 비어있음
페이지참조열: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0
1)FIFO: 7 70 701 201 231 230 430 420 423 023 013 012 712 702 - 14회
2)LRU: 7 70 701 201 203 403 402 432 032 132 102 107 - 12회
▷NUR

[프로세스의 개요]
프로세스: 실행중인프로그램, PCB존재, 실기억장치에저장된, 프로시저활동중인, 비동기적행위일으킨, 작업
PCB: ProcessControlBlock, 프로세스제어블록, 프로세스대한정보저장, 프로세스생성되면 고유의 PCB 생성됨
PCB에 저장되는 정보: (프로세스)상태, 우선순위(스케줄링), CPU레지스터, 할당된자원대한정보,
그외(주기억장치관리정보, 입출력상태, 계정, 포인터, 고유식별자)
프로세스 상태 종류 6가지 ①제출 ②접수 ③준비 ④실행 ⑤대기/보류 ⑥종료
*Submit / Hold(작업 할당위치에 저장) / Ready(프로세서 할당 기다림) / Run(프로세서할당O, 실행중)
/ Wait/Block(프로세스에 입출력 필요하여 대기) / Exit(할당 해제)
*상태전이 ①준비-실행 dispatch ②대기-준비 wakeup
스레드 thread: 프로세스 내 작업단위, 프로그램단위 (경량프로세스)
하나의 프로세스에 적어도 하나의 스레드 존재 (단일스레드/다중스레드) / 독립적다중수행가능 / CPU 받아서 수행됨
/ 병행성 / 하드웨어운영체제 성능향상 / 응용프로그램 처리율향상 / 프로세스통신향상 / 응답시간단축
/ 기억장소낭비감소 / 스레드기반시스템에서 독립적스케줄링 최소단위, 프로세스역할
스레드 분류 2가지 ①사용자수준스레드 ②커널수준스레드
*사용자: 사용자가만든라이브러리사용, 속도빠름, 구현어려움 *커널: 운영체제커널에의해, 속도느림, 구현쉬움
[주요 스케줄링 알고리즘]
스케줄링 알고리즘 3가지 ①FCFS(FIFO) ②SJF ③HRD
*FCFS: 도착한 순서대로 (간단, 기다리게됨) *SJF 단기작업우선 (무기한연기, 평균대기시간짧음)
*HRD: SJF보완, 우선순위계산=(대기시간+서비스시간)/서비스시간, 큰수부터 우선순위 부여
*대기시간: 바로 앞 프로세스까지의 진행시간 *반환시간: 대기시간+실행시간 *제출시간고려
*ex. 저장공간 8K 8K 4K 4K 에 데이터 5K 5K 10K 10K 저장할 때, 기억공간의 낭비?
10K 는 저장할 수 없고, 5K가 8K 공간에 저장됨, 3+3+4+4=14K
[인터넷]
인터넷: TCP/IP 프로토콜 기반, 전세계연결 통신망, UNIX기반, 브리지/라우터/게이트웨이 사용
IP주소: InternetProtocolAddress, 컴퓨터자원 구분위한 고유주소, 32비트(4바이트)
IP주소 A~E 5단계 (네트워크부분길이에따라)
①A:대형(0~127) ②B:중대형(128~191) ③C:소규모(192~223) ④D:멀티태스킹용(224~239) ⑤E:실험적주소(240~255)
(A~C: 네트워크부분+호스트부분)
서브네팅 subnetting: 할당된 네트워크 주소 다시 여러개 네트워크로 나눠 사용
(서브넷마스크: IP주소에서 네트워크부분 호스트부분 구분위한 비트)
▷예제: 192.168.1.0/24 네트워크를 FLSM방식으로 3개의 서브넷으로 나누기 (IP Subnet Zero 적용)
풀이) 1의 개수가 24개 / 8*3=24 / 4바이트 중 3바이트 차지, 나머지 1바이트 나누기
8비트 중 3개의 서브넷으로 나눔 / 3 표현할 비트 2개 제외(_ _ 2x2=4 라서 2비트, 4여도 2비트) / 6개의 비트 사용
64이므로 3개 서브넷 각각 64개 호스트 / 192.168.1.0~63, ...
*사용가능한 → +1 / 모두 0이거나 모두 1인 주소는 사용불가
주의) n번째 네트워크 IP? - 해당번째 a~z 에 속한 어떤 주소
IPv6: 버전6, IPv4 주소부족 해결위해, 128비트 긴 주소, 빠름, 인증성, 기밀성, 데이터무결성, 보안, 호환,
패킷크기제한X(확장가능), 네트워크기능 확장용이, 자동으로 네트워크환경구성
IPv6 주소체계 3가지 ①유니캐스트(1:1) ②멀티캐스트(1:다) ③애니캐스트(1:1,가장가까이)
도메인네임: 숫자IP주소를 이해쉬운 문자로 표현 / DNS: 도메인네임→IP주소 변환
[TCP/IP]
TCP/IP: 컴퓨터들이 데이터 송수신하도록 표준 프로토콜
TCP/IP 구조: 네트워크엑세스 - 인터넷 - 전송 - 응용

*TCP: 양방향 연결형, 순서제어, 오류제어, 흐름제어, 신뢰성, 스트림위주 패킷전달, 헤더 최대 100바이트 확장
*UDP: 비연결형, 흐름제어X, 순서제어X, 신뢰성보다 속도, 실시간전송
*RTCP: 패킷전송품질제어, 참여자에게 컨트롤패킷 전송, 패킷 항상 32비트경계로 끝, 멀티플렉싱, 제어, 인증
*ARP(논물): 논리주소IP → 물리주소MAC *RARP: 물리주소MAC → 논리주소IP
*ICMP: IP와조합, 통신오류처리, 전송경로변경, 제어메시지관리, 헤더8바이트 (Control)
*IGMP: 호스트/라우터사이 멀티캐스트그룹유지 (Group)
[기타]
127. 서버 개발
프레임워크 사용 효과: 품질보증, 개발용이, 변경용이, 복잡도감소 (반제품)
141. 객체지향 프로그래밍 언어
절차적언어: C언어 / 객체지향언어: C++, JAVA
정보은닉: 연산만을 통해 접근(캡슐화의 핵심개념) / 추상화: 불필요생략, 핵심중점 모델화 (종류 3가지 제어/자료/과정)
/ 다형성: 고유한 방법으로 응답(하위 객체들이 각 다른 형태 특성을 갖는 객체로 이용)
142. 스크립트 언어
스크립트 언어 종류: ASP, JSP, PHP, 자바스크립트, VB스크립트, 쉘스크립트, Basic, 파이썬
*파이썬은 객체지향적, 이식성이 높음
PHP연산자: @(에러제어), ===, <>(관계연산자) / 쉘스크립트 제어문: if, case, for, while, until
147. 운영체제의 개념
운영체제 OS: 시스템 자원 관리, 사용자에게 환경 제공, 프로그램 모임 (자원분배관리, 입출력장치/프로그램제어)
운영체제 목적: 처리능력, 반환시간, 사용가능도, 신뢰도
153. 가상기억장치 기타 관리사항
Locality: 주기억장치 참조 시 일부 페이지만 집중적으로 참조하는 성질
-시간구역성: 한번 참조한 페이지는 가까운 시간 내 다시 참조할 가능성이 높음 -Loop, Stack, SubRoutine, Counting, Totaling
-공간구역성: 참조한 페이지 근처의 페이지는 참조할 가능성이 높음 - 배열순회, 순차적코드실행, 변수선언기억장소
Working Set: 일정 시간동안 자주 참조하는 페이지 집합 - Locality 특징 이용
Prepaging: 필요할 것 같은 모든 페이지 한번에 적재
Thrashing: 프로세스처리시간<페이지교체시간 성능↓CPU이용률↓
-스래싱 방지 방법: 다중프로그램 적정수준 유지, 페이지 부재 빈도 조절, 워킹셋 유지, 자원증설, 일부 중단, 임계치 예상
-다중프로그래밍↑↑ ~ 스래싱↑
페이지크기↑ ~ 기억장소이용효율↑ 입출력시간↑ 맵테이블크기↑ 내부단편화↓ 페이지이동시간↓ 매핑속도↓
158. 운영체제 기본 명령어
UNIX 명령어: ls(파일목록확인), rm(파일삭제), cp(파일복사), find(파일찾기), cat(파일내용화면표시),
fsck(파일시스템검사보수), fork(새프로세스생성), exec(새프로세스수행), wait(하위프로세스기다림),
chmod(파일보호모드,사용허가지정), chdir(디렉토리위치변경), chown(소유자변경)
160. OSI 참조모델
OSI 7계층 물리-데이터링크-네트워크 - 전송-세션-표현-응용
물리: 전기적,기능적,절차적 기능정의 / 데이터링크: 링크확립유지, 노드간 에러제어/흐름제어
/ 네트워크: 네트워크연결관리, 패킷전달, 통신량폭주제어
/ 전송: 단말기사이 흐름제어, 오류수정, 신뢰성있는 데이터전달 / 세션: 프로세스간대화제어, 동기점이용데이터복구
/ 표현: 암호화, 코드변환, 데이터압축 / 응용: 사용자 접근하도록 서비스제공
*오류제어, 흐름제어 → 데이터링크(노드 간) or 전송(단말기)
5과목 정보시스템 구축 관리
[SW 공학의 발전적 추세]
소프트웨어 재사용 방법 2가지 ①합성중심 ②생성중심
*합성: 블록(모듈) 끼워맞춤 *생성: 명세 구체화 (패턴구성방법)
소프트웨어 재공학의 장점: 시간단축, 비용감소, 오류감소, 위험부담감소, 소프트웨어 수명연장, 기술향상, 프로젝트 문서 공유
/ 예방 유지보수 측면 위기 해결
단점: 새로운 개발방법론 도입 어려움
CASE: 개발 자동화 도구 (소프트웨어생명주기전단계연결 /개발모형지원 /그래픽지원 /작업공유,커뮤니케이션증대)
*CASE 원천기술: 구조적기법/ 정보저장소기술/ 프로토타이핑기술/ 분산처리기술/ 자동프로그래밍기술
(상위: 계획, 요구분석, 오류검증, 자료흐름도작성 / 중위: 상세설계, 화면출력작성 / 하위: 코드작성, 테스트, 문서화, 윈시코드생성지원, 시스템명세서)
[수학적 산정 기법]
소프트웨어 비용산정기법 종류

*하향식: 경험바탕, 비과학적 *상향식: 세부 단위별 산정
*전문가: 조직내 두명이상 전문가 *델파이: 많은 전문가
*LOC 계산방법: ①노력인월=개발기간x투입인원 ②생산성=LOC/노력인월 ③개발비용=노력인월x단위비용
*개발단계별인월수: 생명주기 단계별 필요노력
*수학적산정기법: 경험적추정모형, 실험적추정모형, 공식사용, 비용산정자동화목표
*COCOMO모델유형 ①organic(조직형,5만↓) ②semi-detached(반분리형,30만↓) ③embedded(내장형,30만↑)
*COCOMO모형종류 ①Basic(기본형,크기개발유형) ②Intermediate(중간형,15가지요인) ③Detailed(발전형,공정별)
*Putnam: Rayleigh-Norden 곡선 노력분포도 기초로, 생명주기전과정 노력분포 가정, 생명주기예측모형
*FP기능점수: 알브레히트제안, 요인별가중치 (요인:명령어(질의수)/데이터파일/출력보고서/자료입력양식/인터페이스)
[소프트웨어 개발 표준]
소프트웨어 개발표준 종류 3가지 ŗISO/IEC12207 ŘCMMI řSPICE
*ISO/IEC12207: 생명주기프로세스, 생명주기표준제공
*CMMI: 능력성숙도통합모델, 능력/성숙도평가 (단계: 초기-관리-정의-정량적관리-최적화, 계획은없음!)
*SPICE: =ISO/IEC15504, 소프트웨어처리개선및능력평가기준, 품질/생산성향상위해, 프로세스평가/개선
[네트워크 구축]
네트워크 설치구조 종류 5가지 ①성형 ②링형 ③버스형 ④계층형 ⑤망형
*성형:star,중앙집중형 *링형:루프형 *버스형:한개회선-여러대단말연결
*계층형:tree,분산형 *망형:mesh,모두연결
네트워크 분류 2가지 ①LAN(근거리) ②WAN(광대역)
LAN의 표준안 6가지 ①802.11e ②802.11 ③802.11b ④802.11g ⑤802.11a ⑥802.11n
*802.11e: MAC수정 QoS지원
*802.11: 2.4GHz, 2Mbps *802.11b: 초기버전개선안, 2.4GHz, 11bps *802.11g: 2.4GHz, 54bps
*802.11a: 5GHz, 54bps, OFDM기술 *802.11n: 2.4GHz+5GHz, 600bps
[경로 제어 / 트래픽 제어]
경로제어: 라우팅 routing, 송수신간 최적 패킷교환 경로결정
경로제어 프로토콜 3가지 ①IGP ②EGP ③BGP (GP: GatewayProtocol)
IGP 종류 2가지 ①RIP ②OSPF
*IGP: Interior 내부, 하나의 AS 내 라우팅 (AS:자율시스템)
*EGP: Exterior 외부, AS 간 라우팅 (게이트웨이 간 라우팅)
*BGP: Border, AS 간 라우팅, EGP보완, 초기에 라우팅테이블(전체경로제어표)교환
*RIP: 거리벡터라우팅프로토콜, 최대홉수15제한, 소규모적합, 최단경로탐색 Bellman-Ford알고리즘
*OSPF: RIP보완, 대규모적합, 최단경로탐색 다익스트라 알고리즘
트래픽제어 종류 3가지 ①흐름제어 ②폭주(혼잡)제어 ③교착상태방지
흐름제어 종류 2가지 ①stop and wait (정지-대기) ②sliding window
폭주제어 종류 2가지 ①slow start (느린시작) ②Congestion Avoidance (혼잡회피)
*흐름제어: 송수신 간 전송되는 패킷 양(속도) 제어, overflow방지
*stop and wait: 한번에 하나(신호받아야)전송 *sliding window: (신호이용은 하지만 안받아도)연속적 전송
*폭주제어: 네트워크 내 패킷 수 조절, overflow방지
*slow start: 윈도우크기(최대패킷수) 2배씩 지수적증가
*congestion avoidance: 느린시작 임계값도달 - 회피위해 1씩 선형적 증가
*교착상태방지: 패킷이 같은 목적지 갖지 않도록 할당, 교착상태시 패킷버퍼폐기
[회복/병행제어]
회복: 트랜잭션장애발생-DB손상 시 이전정상상태로 복구
회복 종류 4가지 ①연기갱신기법 ②즉각갱신기법 ③그림자페이지대체기법 ④검사점기법
*연기갱신: 트랜잭션완료까지 DB갱신연기, 일단 로그에 보관, Undo(X) Redo(O)
*즉각갱신: 트랜잭션완료전에도 DB반영, 로그에 보관, Undo(O) Redo(O)
*그림자페이지대체: 갱신전 복사본 보관, 로그(X) Undo(X) Redo(X)
*검사점check point: 검사점 로그에 보관
병행제어 Concurrency Control: 트랜잭션 병행수행시 DB일관성 유지하도록 트랜잭션 상호작용제어
병행제어 목적 4가지(응활공일0801) ①응답시간↓ ②시스템활용도↑ ③공유성↑ ④일관성유지
병행제어 기법 종류 4가지 ①로킹 ②타임스탬프 ③최적병행수행 ④다중버전기법
*로킹: 데이터접근 상호배타적, Lock이 허락되어야만 로킹단위 엑세스가능
*로킹단위: 한꺼번에 로킹할 수 있는 객체의 크기 / 데이터베이스,파일,레코드,필드 가능
*로킹단위↑ ~ 로크수↓ 병행성↓ 오버헤드↓ 공유도↓ 제어기법간단,관리수월
*타임스탬프: 직렬성, 처리순서미리선택, 시작전 시간표(타임스탬프)부여, 교착상태X
*최적병행수행: readonly이면 충돌성↓ 병행제어기법사용안해도 일관적유지가능
*다중버전기법: 타임스탬프개념이용, 시간표대신 버전부여
[교착상태]
교착상태: 프로세스가 자원을 점유, 서로 요구하며 무한정대기
교착상태 필요충분조건 4가지 ①상호배제 ②점유와대기 ③비선점 ④환형대기
*mutual exclusion: 한번에 한개만 사용 *hold and wait
*non-preemption: 강제로 빼앗을수없음 *circular wait: 앞/뒤요구
교착상태 해결방법 4가지 ①Prevention ②Avoidance ③Detection ④Recovery
*예방: 필요충분조건 제거 *회피: Banker’s Algorithm *발견: 자원할당그래프 *회복: 프로세스종료/자원선점
[Secure SDLC]
Secure SDLC: 보안강화 프로세스 포함 (SDLC: 소프트웨어 개발 생명주기)
Secure SDLC 방법론 3가지 ①CLASP ②SDL ③Seven Touchpoints
*CLASP: 초기단계보안강화, 활동중심, 역할기반 *SDL: 마이크로소프트, 기존개선, 나선형기반
*Seven Touchpoins: 모범사례 통합, 위험분석테스트
보안요소 5가지(무기가 부인) ①무결성 ②기밀성 ③가용성 ④부인방지 ⑤인증
*무결성: 인가된사용자만 수정가능 *기밀성: 인가된사용자만 접근가능 *가용성: 인가된사용자는 언제든지 접근가능
*부인방지: 부인할수없도록 송수신증거제공 *인증: 합법적사용자인지확인
[암호 알고리즘]
암호학 cryptography
평문: 암호화되지 않은 원본메시지 ↔ 암호문: 암호화 적용된 메시지
암호화: 평문→암호문 / 복호화: 암호문→평문
키(key): 암호화를 위해 사용하는 값
개인키: 암호화키=복호화키 →둘다 비밀키
공개키: 암호화키≠복호화키 →암호화키는 공개키, 복호화키는 비밀키 (비밀키로 복호화)
암호화방식 분류

*Stream: 비트단위 암호화 *Block: 블록을 암호화
*개인키(대칭키): 속도빠름, 알고리즘단순, 파일크기작음 / 관리할 키 많음 = 비밀키 암호화 방식
*공개키(비대칭키): 속도느림, 알고리즘복잡, 파일크기큼 / 키분배용이, 관리할 키 적음
*DES: 미국, 블록 64비트, 키 56비트 *AES: 미국, DES보완, 블록 128비트, 키 128/192/256
*SEED: 한국, 블록 128비트, 키 128/256 *ARIA: 한국, 블록 128비트, 키 128/192/256
*RSA: MIT, 소인수분해 어려움 기반, 공개키/비밀키 사용
[기타]
164. 소프트웨어 개발 방법론
CBD 컴포넌트기반방법론 (Component Based Design): 재사용, 확장성, 비용↓, 품질↑, 컴포넌트단위관리
170. 프로젝트 일정 계획
CPM (Critical Path Method) 임계경로기법: 모든 경로중 가장 오래 걸리는 경로
173. 소프트웨어 개발 방법론 테일러링
Tailoring 테일러링 개발방법: 상황특성에맞게정의됨, 절차수정보완
*내부기준: 목표환경, 요구사항, 프로젝트규모, 보유기술, 구성원능력, 비용 *외부기준: 법적제약사향, 표준품질기준
174. 소프트웨어 개발 프레임워크
프레임워크 특성 4가지
①모듈화(품질↑ 유지보수용이) ②재사용성(비용↓ 생산성↑) ③확장성 ④제어의역흐름(제어를맡김)
195. 코드 오류
코드오류: 오류예방 보안점검항목
발생할수있는 보안약점 ①널포인터역참조 ②부적절한자원해제 ③해제된자원사용 ④초기화하지않은변수사용
널포인터역참조: 널포인터가 가리키는 메모리에 값을 저장할때 발생하는 보안약점
스택가드: 메모리상 복귀주소와 변수 사이 특정 값 저장, 변경될경우 오버플로우로 가정하고 프로그램중단
(널포인터역참조같이 주소가 저장되는 스택에서 발생하는 보안약점 막는기술)
196. 캡슐화
접근제한자
①public(모두) ②protected(같은패키지&다른패키지상속관계) ③default(같은패키지) ④private(현재객체내)
*백도어 탐지방법 5가지
①무결성검사 ②열린포트확인 ③로그분석 ④SetUID 파일검사 ⑤탐지툴이용
5과목 신기술 / 공격 / 보안
[네트워크 관련 신기술]
1) IoT 사물인터넷: 사물을 인터넷으로 연결
2) M2M(Machine to Machine) 사물통신: 기계와 기계 사이 통신
3) 모바일 컴퓨팅: 휴대 기기로 네트워크 접속
4) 클라우드 컴퓨팅: 컴퓨팅 자원 중앙에 두고 언제 어디서나 작업
5) 모바일 클라우드 컴퓨팅 MCC: 클라우드 이용자 사이에 클라우드 컴퓨팅 인프라 구성하여 정보 공유
6) 인터클라우드 컴퓨팅: 클라우드 서비스 자원을 연결하여 자원 동적할당 가능
7) 메시 네트워크: 특수목적 대규모 디바이스 네트워크 생성에 최적화 된 네트워크
8) 와이선 Wi-SUN: 저전력 장거리 통신기술 (IoT 서비스를 위한)
9) NDN(Named Data Networking): 콘텐츠 자체 정보와 라우터 기능만으로 데이터 전송
10) NGN(Next Generation Network) 차세대 통신망: 유선망 기반 but 유선망 뿐 아니라 이동 사용자 목표
11) SDN 소프트웨어 정의 네트워킹: 네트워크를 컴퓨터처럼 모델링, 네트워킹 가상화, 제어, 관리
12) NFC(Near Field Communication) 근거리 무선 통신: 고주파 이용한 근거리 무선 통신
13) UWB(Ultra WideBand) 초광대역: 짧은 거리에서 많은 양의 디지털 데이터를 저전력으로 전송
14) PICONET 피코넷: 여러개의 독립된 통신장치가 UWB(Ultra Wideband)기술 또는 블루투스 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
15) WBAN(Wireless Body Area Network): 웨어러블 기기를 무선 연결하는 개인 영역 네트워킹 기술
16) GIS(Geographic Information System) 지리정보시스템: 지리적 자료 수집 저장 분석 출력 응용프로그램
17) USN 유비쿼터스 센서 네트워크: 센서로 수집할 정보를 무선으로 수집할 수 있도록
18) SON(Self Organizing Network) 자동구성네트워크: 주변 상황에 맞추어 스스로 망 구성하는 네트워크
19) 애드 혹 네트워크 Ad-hoc: 별도 고정 유선망을 구축할 수 없는 장소에 모바일 호스트만을 이용하여 구성한 네트워크
20) 네트워크 슬라이싱: 하나의 물리적인 코어 네트워크 인프라를 다수의 가상 네트워크로 분리, 각 네트워크로 맞춤형 서비스 제공
21) 저전력 블루투스 기술 BLE(Bluetooth Low Energy): 일반 블루투스와 동일하지만 연결되지 않은 대기상태에서 절전모드 유지
22) 지능형 초연결망: 증가하는 데이터 트래픽을 수용하기 위해 시행되는 정부 주관 사업
23) 파장 분할 다중화 WDM(Wavelength Division Multiplexing): 광섬유 이용, 여러 대 단말기가 동시에 통신 회선을 사용할 수 있도록 함
24) 소프트웨어 정의 데이터 센터 SDDC: 인력 개입 없이 소프트웨어 조작만으로 자동 관리 제어되는 데이터 센터 (하드웨어 무관)
25) 개방형 링크드 데이터 LOD(Linked Open Data): 누구나 사용할 수 있도록 웹상에 공개된 연계 데이터
26) Baas: 클라우드 컴퓨팅 플랫폼, 블록체인 개발환경을 클라우드로 서비스
27) 스마트그리드: 전력망 지능화, 고도화, 에너지 이용효율이 좋음
28) PaaS-TA: 국내 개방형 클라우드 컴퓨팅 플랫폼
[SW 관련 신기술]
1) 인공지능 AI (Artificial Intelligence): 인간의 두뇌처럼 컴퓨터 스스로 추론, 학습, 판단하는 작업 수행
2) 뉴럴링크(Neurallink): 일론머스크가 사람의 뇌와 컴퓨터를 결합하는 기술을 개발하기 위해 설립한 회사
3) 딥 러닝: 인간 두뇌를 모델로, 인공 신경망(ANN, Artificial Neural Network) 기반 기계 학습 기술
4) 전문가 시스템 (Expert System): 의료진단과 같은 특정 전문 분야의 업무를 지원하는 응용 프로그램
5) 증강현실 AR (Augmented Reality): 실제 촬영 화면에 가상 정보 부가하여 보여주는 기술
6) 블록체인(Blockchain): P2P 네트워크 이용, 온라인 금융 거래 정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술
7) 분산 원장 기술 DLT (Distributed Ledger Technology): 중앙 관리자나 중앙 데이터 저장소가 존재하지 않음, P2P 망 내 참여자들에게 모든 거래 목록이 분산 저장되어 거래 발생 마다 지속적으로 갱신되는 디지털 원장 (대표적 사례가 블록체인)
8) 해시(Hash): 임의의 길이의 입력 데이터를 고정된 길이의 값이나 키로 변환하는 것
9) 양자 암호키 분배 QKD (Quantum Key Distribution): 양자 통신을 위해 비밀키를 분배하여 관리하는 기술, 암호 알고리즘 동작을 위한 비밀키를 안전하게 공유하기 위해 사용
10) 프라이버시 강화 기술 PET (Privacy Enhancing Technology): 개인정보 위험 관리 기술 통칭
11) 디지털 저작권 관리 DRM (Digital Rights Management): 디지털 매체를 통해 유통되는 데이터의 저작권을 보호하기 위해 데이터의 안전한 배포를 활성화하거나 불법 배포를 방지하는 시스템
12) 공통 평가 기준 CC (Common Criteria): ISO 15408 표준으로 채택된 정보 보호 제품 평가기준
13) 개인정보 영향 평가 제도 PIA (Privacy Impact Assessment): 개인정보 관련 새로운 정보시스템 도입/변경 시 고객(국민) 사생활에 미칠 영향을 미리 조사, 분석, 평가
14) 그레이웨어(Grayware): 제공하는 입장에서는 악의적이지 않지만 사용자 입장에서 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드
15) 매시업(Mashup): 웹에서 제공하는 정보를 이용하여 새로운 소프트웨어를 만드는 기술, 다수의 정보원이 제공하는 콘텐츠 조합하여 하나의 서비스로 제공
16) 리치 인터넷 애플리케이션 RIA: 플래시 애니메이션 기술과 웹 서버 애플리케이션 기술 통합하여 기존 HTML 보다 역동적이고 인터랙티브한 웹페이지 제공하는 플래시 웹페이지 제작기술
17) 시맨틱 웹(Semantic Web): 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어낼 수 있도록 이해하기 쉬운 의미를 가진 지능형 웹
18) 증발품(Vaporware): 판매계획은 발표되었으나 실제로 고객에게 판매되지 않고 있는 소프트웨어
19) 오픈 그리드 서비스 아키텍처 OGSA: 애플리케이션 공유를 위한 웹서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준
20) 서비스 지향 아키텍처 SOA: 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
SOA 기반 어플리케이션 구성 계층: 표현, 업무프로세스, 서비스중간, 애플리케이션, 데이터저장
21) 서비스형 소프트웨어 SaaS (Software as a Service): 소프트웨어 여러 기능 중 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어
22) 소프트웨어 에스크로(임치): 개발자의 지식재산권을 보호하고 사용자는 저렴한 비용으로 안정적 사용 및 유지보수 받을 수 있도록 소스 프로그램과 기술 정보를 제3 기관에 보관하는 것
23) 디지털 트윈: 현실 속 사물을 소프트웨어로 가상화한 모델
[HW 관련 신기술]
1) 고가용성 HA (High Availability): 장애 발생 즉시 다른 시스템으로 대체 가능한 환경 구축
2) 3D Printing: 평면 출력 아닌 입체 출력
3) 4D Printing: (특정 시간/환경 조건이 갖추어지면 스스로 형태를 변화하거나 제조되는) 자가 조립 기술이 적용된 제품을 3D printing
4) RAID: 데이터 블록들을 서로 다른 디스크에 분산 저장하여 여러 디스크에서 동시에 그 블록들을 읽고 쓸수 있도록 함
5) 4K 해상도: 차세대 고화질 모니터의 해상도
6) 앤 스크린 N-Screen: N개의 서로 다른 단말기에서 동일한 컨텐츠를 이용
7) 컴패니언 스크린 Companion Screen (세컨드 스크린): N Screen 의 한 종류, 방송 내용을 공유하며 추가적인 작업을 수행
8) 신 클라이언트 PC (Thin Client PC): 하드디스크, 주변장치 없이 기본적 메모리만 갖추고 서버와 네트워크로 운용되는 PC
9) 패블릿 Phablet: 폰 + 태블릿, 태블릿 기능 포함한 5인치 이상 대화면 스마트폰
10) C형 USB (USB Type-C): USB 표준 중 하나
11) 멤스 MEMS (Micro Electro Mechanical Systems): 초정밀 반도체 제조기술 바탕으로 기계를 미세 가공하여 동작하도록 한 초미세장치
12) 트러스트존 기술 TrustZone Technology: 일반 어플리케이션 처리하는 일반구역과 보안구역을 나누어 관리하는 하드웨어 기반 보안기술
13) 엠디스크 M-DISC (Millennial DISC): 한번의 기록만으로 자료를 영구보관하는 광저장장치
14) 멤리스터 Memristor: 메모리 + 레지스터, 전류의 방향과 양 등 기존 경험을 모두 기억하는 소자
[DB 관련 신기술]
1) 하둡 Hadoop: 오픈소스 기반 분산 컴퓨팅 플랫폼, 일반 컴퓨터로 가상화된 대형 스토리지 형성, 생성된 빅데이터를 저장, 처리
2) 빅데이터: 막대한 양의 데이터 집합
3) 브로드 데이터: 소비자와의 상호작용을 통해 생성된 데이터
4) 메타 데이터: 데이터를 정의, 설명해주는 데이터 (ex. 스키마, 메타태그)
6)디지털 아카이빙: 디지털 정보 자원을 장기적으로 보존하기 위한 작업 (변환, 압축, DB화 등)
7) 맵리듀스 MapReduce: 구글 고안, 대용량 데이터를 분산 처리하기 위한 목적, 데이터 분류 Map 작업, 원하는 데이터 추출 Reduce 작업
8) 타조: 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
9) 데이터 다이어트: 데이터 삭제 아닌 압축, 중복 배제, 새로운 기준으로 저장
10) 데이터 마이닝: 데이터 웨어하우스에 저장된 대량의 데이터를 분석하여 데이터 속 내제된 변수 사이 상호관계 규명, 일정한 패턴 (유용한 정보)을 찾아내는 기법
11) OLAP (Online Analytical Processing): 데이터로부터 통계적 요약정보를 분석하여 의사결정에 활용
- OLAP 연산: roll-up, drill-down, drill-through, drill-across, pivoting, slicing, dicing
[서비스 공격 유형]
> 서비스 거부 DoS (Denial of Service) 공격: 표적 서버 자원을 고갈시킬 목적으로 대량의 데이터 집중 전송
1) Ping of Death 죽음의 핑: 패킷 크기를 허용범위 이상으로 전송
2) SMURFING 스머핑: IP, ICMP 특성을 악용, 대량 데이터 집중 전송
3) SYN Flooding: 공격자가 가상의 클라이언트로 위장, 3WH를 의도적으로 중단, 서버 대기상태
4) TearDrop: Offset 값을 변경시켜 수신측에서 패킷 재조립시 오류로 인한 과부하
5) Land: 패킷 전송시 송수신 IP주소를 모두 공격대상 IP주소로 하여 전송 (무한 응답)
6) DDoS (Distributed Denail of Service) 분산서비스거부공격: 여러곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격
→ ①Trin00 ②TFN(Tribe Flooding Network) ③TFN 2K ④Stacheldraht
> 네트워크 침해 공격
1) 스미싱 Smishing: 문자메시지 SMS 이용
2) 스피어 피싱 Spear Phishing: 이메일 (링크, 첨부파일) 클릭 이용
3) APT (Advanced Persistent Threats) 지능형 지속 위협: 조직적으로 침투해 때를 기다려 보안을 무력화 시키고 정보를 빼돌림 (이메일, USB, P2P)
4) 무작위 대입 공격 Brute Force Attack: 암호키를 찾기 위해 모든 값을 대입
5) 큐싱 Qshing: QR코드 이용
6) SQL 삽입 공격: 데이터베이스 조작 공격
7) 크로스 사이트 스크립팅 XSS: 스크립트 이용
> 정보 보안 침해 공격
1) 좀비 PC: 악성코드에 감염되어 다른 컴퓨터를 조종하도록 만들어진 컴퓨터
2) C&C 서버: 해커가 좀비 PC에 명령을 내리기 위한 용도로 사용하는 서버
3) 봇넷 Botnet: 악성 프로그램에 감염된 다수의 컴퓨터들이 네트워크로 연결된 형태
4) 웜 Worm: 자가복제하여 시스템의 부하를 높여 다운시키는 바이러스
5) 제로 데이 공격: 보안 취약점이 알려지기도 전에 이 취약점을 통해 보안공격
6) 키로거 공격 Key Logger Attack: 컴퓨터 사용자 키보드 움직임을 탐지해 개인정보 빼돌림
7) 랜섬웨어 Ransomeware: 컴퓨터에 잠입해 파일을 암호화하여 사용자가 열지 못하게 함
8) 백도어 Trap Door: 시스템 설계자가 보안을 제거하여 만들어놓은 비밀통로
☆ 백도어 탐지 방법: 무결성검사 / 열린포트확인 / 로그분석 / SetUID 파일검사 / 탐지 툴 이용
9) 트로이 목마 Trojan Horse: 정상적 프로그램으로 위장, 해당 프로그램이 동작할 때 활성화되어 부작용을 일으킴
[보안 솔루션]
보안솔루션: 접근통제, 침입차단 및 탐지 등으로 외부로부터의 불법적 침입을 막는 기술
방화벽: 조직 내부 네트워크와 인터넷 간 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능이 있음
침입 탐지 시스템 IDS: 컴퓨터 시스템의 비정상적 사용, 오용, 남용을 실시간으로 탐지
침입 방지 시스템 IPS: 방화벽 + 침입 탐지 시스템
데이터 유출 방지 DLP: 내부 정보의 외부 유출을 방지
웹 방화벽: 일반 방화벽이 탐지하지 못하는 SQL 삽입공격, XSS 등 웹기반 공격을 방어
VPN: Virtual Private Network 가상 사설 통신망, 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 함
NAC: Network Access Control, 네트워크에 접속하는 MAC 주소를 IP 관리 시스템에 등록 후 보안 제공
ESM: Enterprise Security Management, 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합 관리

1과목 소프트웨어 설계
[소프트웨어 생명 주기]
생명주기 모형 4가지 ①폭포수 ②프로토타입 ③나선형 ④애자일
*프로토타입: 원형, 견본품, 폭포수 보완
*나선형: 점진적, 위험 최소화, 유지보수 불필요
계획수립 - 위험분석 - 개발, 검증 - 고객평가
*애자일: 고객중심, 반복 (스크럼, XP, 기능중심개발FDD)
[XP (eXtreme Programming) 기법]
XP 핵심가치 5가지(용단의 피존) ①용기 ②단순성 ③의사소통 ④피드백 ⑤존중
[요구사항 분석]
타당성 조사 - 도출/수집 - 분석 - 명세 - 확인/검증
명세기법 ①정형 ②비정형
*정형: 수학적, 간결 *비정형: 자연어, 이해 쉬움, 일관성↓
요구사항 분석 방법 - 구조적 분석 기법 - 자료흐름도DFD, 자료사전DD
*자료흐름도 Data Flow Diagram: 버블차트, 도형(화살표, 원, 사각형, 직선)으로 기술
*자료흐름도 구성요소 4가지(프플스터) ①process(원) ②data flow(화살표) ③data store(직선) ④terminator(사각형)
*자료사전 기호 ①= ②+ ③() ④[] ⑤{} ⑥**
[UML]
객체지향언어 & 모델링언어
UML 구성요소 3가지(사관다) ①things 사물 ②relationship 관계 ③diagram
구조 다이어그램 6가지 ①클래스 ②객체 ③패키지 ④컴포넌트 ⑤배치 ⑥복합체구조
행위 다이어그램 7가지 ①활동 ②상태 ③시퀀스 ④타이밍 ⑤커뮤니케이션 ⑥상호작용개요 ⑦유스케이스
*정적모델링-구조다이어그램, 동적모델링-행위다이어그램
*시퀀스 - 액터, 객체, 생명선, 실행, 메시지
*유스케이스 - 시스템, 액터, 유스케이스, 관계 / 사용자 관점, 시스템 상호작용 / 기능적모델
*UML 스테레오 타입 객체 기호: << >>
[품질 요구사항]
ISO/IEC 9126, 25010: 개발자 관점 품질특성표준 (12119: 테스트 포함)
품질 요구사항 6가지 ①기능성 ②신뢰성 ③사용성 ④효율성 ⑤유지보수성 ⑥이식성
*기능성: 요구사항 만족, 기능 제공 (적합성, 정확성, 보안성, 준수성, 상호운용성) *신뢰성: 기능 정확히 오류없이 수행
*사용성(usability): 사용자 이해, 재사용의사 *효율성: 한정된 시간, 얼마나 빨리
*유지보수성: 새로운 요구사항 - 확장 *이식성(portability): 다른 환경에 적응
[객체지향(Object-Oriented)]
*객체 = 데이터 + 함수 캡슐화 *함수 = 객체의 행위 *다형성: 고유한 방법으로 응답
클래스: 데이터 추상화 단위 (객체의 집합)
연관성 종류 5가지 ①연관화(member) ②집단화(part) ③일반화 ④분류화(instance) ⑤특수화/상세화
*연관화: 상호 관련 *특수화/상세화: 하위객체구성
*집단화 vs 일반화 vs 분류화
집단화, 일반화는 상위객체구성 (집단화는 부분-전체관계 / 일반화 예시는 차-버스,트럭,택시)
[객체지향 분석 및 설계]
객체지향 분석 방법론 5가지 1Rumbaugh 2Booch 3Jacobson 4Coad&Yourdon 5Wirfs-Brock
*Rumbaugh: 일반적, 객동기(객체모델링-동적모델링-기능모델링), 그래픽표기법, =객체모델링기법
*객체모델링(object)-객체다이어그램, 동적(dynamic)모델링-상태다이어그램, 기능(function)모델링-자료흐름도
*Jacobson: Use case *Coad&Yourdon: E-R다이어그램 (객체식별 구조식별 속성인스턴스연결정의)
*Booch: 미시/거시적, 속성연산정의, 객체식별 *Wirfs-Brock: 분석설계구분없음, 고객명세서평가, 연속적수행
객체지향 설계 원칙 5가지 ①SRP ②OCP ③LSP ④ISP ⑤DIP
*Single Responsibility *Open Closed(기존코드 변경X 기능추가) *Liskov Substitution(부모-자식클래스)
*Interface Segregation(사용않는 인터페이스 의존X) *Dependency Inversion(추상성 높은 클래스 의존O)
[모듈]
모듈의 독립성(하나의 기능만 수행, 상호작용 배제)
독립성↑ ~ 결합도↓ 응집도↑ 모듈크기↓
*결합도 Coupling: 모듈 간(외부) *응집도 Cohesion: 모듈 내부요소
*결합도 비교(6가지) data(자료) < stamp < control(제어) < external(외부) < common(공통) < content(내용)
*응집도 비교(7가지) coincidental < logical < temporal < procedure < communication < sequential < functional
(우연 < 논리 < 시간 < 절차 < 교환 < 순차 < 기능)
*스탬프결합도: 인터페이스로 자료구조 전달 *공통결합도: 공유 *내용결합도: 내부기능, 자료
*우연적응집도: 서로 무관 요소 *논리적응집도: 유사한 성격 하나로 *교환적응집도: 동일입출력
*시간적응집도: 특정 시간(같은시간,함께) *절차적응집도: 순차적으로 *순차적응집도: 출력데이터를 입력데이터로
fan-in: 들어오는 화살표 개수 / fan-out: 나가는 화살표 개수
[공통 모듈]
공통 모듈 명세 기법 5가지 ①정확성 ②명확성 ③완전성 ④일관성 ⑤추적성
*정확성: 필요하다는 것 알수있게 *명확성: 중의적X 한가지로 해석되도록
*완전성: 모두 *일관성: 충돌X *추적성: 파악
공통 모듈의 재사용 규모에 따른 분류 3가지 ①함수&객체 ②컴포넌트 ③애플리케이션
[코드]
코드의 기능 5가지(식간분배표) ①식별 ②간소화 ③분류 ④배열 ⑤표준화
코드의 종류 7가지 ①순차코드 ②표의숫자코드 ③블록코드 ④10진코드 ⑤그룹분류코드 ⑥연상코드 ⑦합성코드
*순차(일련번호) *표의숫자(물리적수치,성질) *블록(구분) *그룹분류(기준,대중소) *연상(관련기호)
[디자인 패턴]
디자인패턴 구성요소 3가지(문사샘) ①문제&배경 ②사례 ③샘플코드
객체지향(절차X), GoF, 재사용(시간비용절약), 의사소통, 변경 유연 / 초기비용부담
디자인 패턴 3가지(구행생) ①생성패턴 ②구조패턴 ③행위패턴
생성패턴 5가지 Builder, Prototype, Singleton, Abstract Factory, Factory Method
구조패턴 7가지 Bridge, Proxy, Adapter, Composite, Decorator, Facade, Flyweight
행위패턴 11가지 State, Observer, Visitor, Command, Strategy, Mediator, Memento, Interpreter, Iterator,
Templete Method, Chain of Responsibility
*builder: 분리된 인스턴스 조합하여 객체 생성 *prototype: 원본 복제 *singleton: 어디서든 참조가능 but 동시X
*abstract factory: 클래스의존X, 인터페이스로 연관 *factory method: 서브클래스에서 처리하도록 캡슐화
*adapter: 변환 *bridge: 구현부/추상층 분리 *composite: 복합/단일객체 구분X *facade: 상위에 인터페이스 구성, 서브기능사용
* obsever: 상태변화 전달 *state: 같은동작 다른처리 *visitor: 처리기능분리, 별도클래스구성 *command: 요청정보저장, 로그에남김
*memento: 객체상태 특정시점으로 되돌리기 *interpreter: 문법표현정의 *strategy: 알고리즘 개별 캡슐화 *templete method: 하위클래스 구체화
*chain of responsibility: 한 객체가 처리X → 다음 객체로
[미들웨어 솔루션 명세]
미들웨어 = 미들+소프트웨어, 서버-클라이언트, 운영체제-응용프로그램 사이 서비스
미들웨어 종류 6가지 ①DB ②RPC ③MOM ④TP-Monitor ⑤ORB ⑥WAS
*DB: 클라이언트 DB연결 *Remote Procedure Call: 원격프로지저(로컬처럼)호출
*Message Oriented Middleware: 메시지기반 *Transaction Processing Monitor: 트랜잭션 처리/감시
*Object Request Broker: 객체지향 *Web Application Server: 동적처리
[기타]
5. 개발 기술 환경 파악
DBMS 요구사항분석 시 고려사항 5가지(기호가비성) ①기술지원 ②호환성 ③가용성 ④비용 ⑤성능
8. 요구사항 분석 CASE와 HIPO
CASE: 요구사항분석 자동화 도구 (그래픽지원, 생명주기전단계연결, 소프트웨어개발모형지원)
HIPO: 시스템분석/설계/문서화에 사용 (입력/처리/출력기능, 하향식 SW 개발 위한 도구,
차트 종류: 가시적/총체적/세부적도표, 기능-자료 의존관계 동시 표현, 보기쉬움, 이해쉬움)
11. 사용자 인터페이스
UI 설계원칙 4가지(직유학유) ①직관성 ②유효성 ③학습성 ④유연성
*직관성: 누구나 쉽게 사용 *유효성: 목적 달성 *학습성: 누구나 쉽게 익힘 *유연성: 요구사항 수용
21. 소프트웨어 아키텍처
소프트웨어 아키텍처 품질속성 - 시스템측면 ①성능 ②보안 ③가용성 ④기능성 ⑤사용성 ⑥변경용이성 ⑦확장성 ⑧기타-테스트용이성, 배치성, 안정성
시스템 타입 ①대화형 ②이벤트중심 ③변환형 ④객체영속성
협약에 의한 설계 - 선행조건, 결과조건, 불변조건
22. 아키텍처 패턴
①Layer Pattern 계층구조: 각 서브시스템들이 계층구조, 상위:서비스제공자, 하위:클라이언트
②Client-Server Pattern: 서버 컴포넌트 하나 + 클라이언트 컴포넌트 다수
③Pipe-Filter 파이프-필터: 데이터스트림 각 단계 필터 컴포넌트로 캡슐화, 파이프로 전송
앞 시스템 결과를 받아서 처리 → 결과를 다시 다음 시스템으로 전달, 단방향
④모델-뷰-컨트롤러: 서브시스템을 3개 부분으로 구조화
30. 인터페이스 요구사항 검증
요구사항 검토 방법 6가지 ①동료검토 ②워크스루 ③인스펙션 ④프로토타이핑 ⑤테스트설계 ⑥CASE
*동료검토: 작성자가 설명, 동료 참여 *워크스루: 미리 배포, 오류 조기검출 *인스펙션: 작성자X 전문가 검토
*프로토타이핑: 견본품, 예측 *테스트설계: 테스트케이스 생성 *CASE: 일관성 분석
2과목 소프트웨어 개발
[트리(Tree)]
단말노드: 자식이 없는 노드 / 차수: 노드에서 뻗어나온 가지 수 / 트리의 차수: 노드 차수 중 가장 높은 차수
트리 운행법 3가지 ①preorder(root-왼-오) ②inorder(왼-root-오) ③postorder(왼-오-root)
*서브트리 묶어서 하나의 노드로 생각하고 풀기
수식 표기법 3가지 ①prefix(+ab) ②infix(a+b) ③postfix(ab+)
[정렬(Sort)]
정렬의 종류 8가지 ①삽입 ②선택 ③버블 ④합병 ⑤힙 ⑥쉘 ⑦퀵 ⑧기수
삽입정렬 1회전: 2-1 / 2회전: 3-1, 3-2 / 삽입하고 한칸씩 미루기
선택정렬 1회전: 1-2, 1-3, ..., 1-끝 / 2회전: 2-3, 2-4, ..., 2-끝 / 그때마다 교환하기
버블정렬 1회전: 1-2, 2-3, ..., (끝-1)-끝 / 2회전: 1회전과 동일 / 그때마다 교환하기
합병정렬 1회전: 둘씩 묶어 정렬 / 2회전: 1의 묶음을 다시 둘씩 묶어 정렬
힙정렬:전이진트리 쉘정렬:매개변수 퀵정렬:작은값왼쪽큰값오른쪽 기수정렬:버킷
각 정렬의 시간복잡도 (n개의 데이터)
삽입, 선택, 버블: O(n^2) / 힙, 합병: O(nlog2n)
쉘: O(n^1.5), O(n^2) / 퀵: O(nlog2n), O(n^2) / 기수: O(dn)
[데이터베이스 개요]
데이터베이스 정의 4가지 ①통합된데이터 ②저장된데이터 ③운영데이터 ④공용데이터
*통합된: 중복 배제 *운영: 조직 업무에 필수적
DBMS 필수기능 3가지(정조제) ①정의(DDL-D) ②조작(DML-M) ③제어(DCL-C)
*정의: 명시 *조작: 삽입,삭제,갱신 수단 제공 *제어: 무결성유지, 권한검사, 보안유지, 병행제어
스키마: DB구조,제약조건 명세 기술한 메타데이터 집합
스키마 분류(사용자관점) 3가지 ①개념스키마 ②외부스키마 ③내부스키마
*개념: 모든 사용자 / 조직 전체 DB - 논리적구조, 유일 *외부: 개인 - 논리적구조
*내부: 물리적저장장치입장DB구조, 내부레코드 물리적순서, 레코드형식정의, 데이터항목표현
[소프트웨어 패키징]
소프트웨어 패키징 고려사항: 필요한 최소 환경 정의 / 사용자 편의성(복잡성, 비효율성) / 보안, 암호화 알고리즘 /
여러 단말기 DRM연동 / UI - 매뉴얼과 일치 / 하드웨어와 함께 관리위해 managed service 형태 제공
[디지털 저작권 관리(DRM)]
DRM 구성요소 7가지
①클리어링하우스 ②패키저 ③콘텐츠제공자 ④콘텐츠분배자 ⑤콘텐츠소비자 ⑥DRM컨트롤러 ⑦보안컨테이너
DRM 기술요소 8가지 (오류복구X, 방화벽X)
①암호화 ②키관리 ③암호화파일생성 ④식별기술 ⑤저작권표현(라이선스) ⑥정책관리 ⑦크랙방지 ⑧인증
*클리어링하우스: 키관리, 라이선스발급관리 *패키저: 메타데이터와 묶어 암호화
*제공자:저작권자 *분배자:유통자 *소비자:구매,사용자
*DRM컨트롤러: 이용권한 통제 *보안컨테이너: 안전한 유통을 위한 보안장치
[소프트웨어 버전 등록]
형상관리 SCM: 변경사항 관리 (비용X)
형상관리 항목 4가지(소정지분) ①소스코드 ②정의서 ③지침서 ④분석서
형상관리도구의 주요기능 5가지(동체가 커저) ①동기 ②체크인/체크아웃 ③가져오기 ④커밋 ⑤저장소
*체크아웃: 저장소에서 파일을 받아와서 수정 *체크인: 수정 완료 후 갱신 *커밋: 체크인 시 수정, 갱신 완료
*저장소: 최신버전 저장 *동기화: 저장소의 최신 버전으로 작업공간 동기화
형상관리 역할/중요성: 불필요한 수정 제한 / 이전 버전 정보 접근 / 배포본 관리 유용
/ 여러 개발자 동시 개발 가능 / 버그, 수정사항 추적 / 변경사항 추적 통제 / 방해요인 감소
*형상관리에 비용 관리는 포함되지 않지만 결과적으로 비용 감소의 효과
[테스트 기법에 따른 애플리케이션 테스트]
테스트 기법 종류 2가지 ①화이트박스테스트 ②블랙박스테스트
화이트박스테스트 종류 2가지 ②기초경로검사 ②제어구조검사(조건검사, 루프검사, 데이터흐름검사)
블랙박스테스트 종류 5가지 ①경계값검사 ②동치분할검사 ③원인효과그래프 ④오류예측 ⑤비교검사
*화이트박스테스트: 원시코드의 모든 논리적 경로를 테스트하여 설계, 소스코드 모든 문장 한 번 이상 수행,
모듈 안의 작동 직접 관찰 가능, 절차에 초점, 구조적테스트, 테스트 초기에 실시, 프로시저 설계의 제어 구조 사용,
선택/반복 등 수행함으로써 논리적 경로 점검
*블랙박스테스트: 기능이 의도대로 작동하는지 테스트 (기능테스트), 인터페이스에서 실시, 오류/누락 발견 위해,
테스트 후반부에 실시, 사용자 요구사항 명세 참고
[개발 단계에 따른 애플리케이션 테스트]
단위 - 통합 - 시스템 - 인수단위테스트: 최소단위 모듈/컴포넌트 테스트
인수테스트 종류 6가지
①알파테스트 ②베타테스트 ③사용자인수테스트 ④운영상인수테스트 ⑤계약인수테스트 ⑥규정인수테스트
*알파: 사용자가 개발자 앞에서 *베타: 사용자가 여러 사용자 앞에서=필드테스팅
*사용자: 사용자가 *운영상: 관리자가 *계약: 계약조건 *규정: 법규
[통합 테스트]
통합테스트 종류 2가지 ①하향식통합테스트 ②상향식통합테스트 (그외, 혼합식통합테스트, 회귀테스트)
*하향식: 상위→하위, 스텁(stub), 깊이 혹은 넓이 우선 통합방식, 초기부터 시스템구조 보여줄 수 있음
*상향식: 하위→상위, 클러스터(cluster), 드라이버(driver)
*스텁: 임시로 제공, 필요 조건만 가진, 시험용 모듈 *클러스터: 주요모듈+종속모듈 묶음
(하향식: 종속모듈 스텁으로 대체, 하위 모듈인 스텁들이 실제 모듈로 대체, 통합마다 테스트)
(상향식: 하위모듈 클러스터로 결합, 상위모듈에서 드라이버작성, 클러스터 단위로 테스트,
클러스터 상위로 이동하며 결합, 드라이버는 실제 모듈로 대체)
*깊이우선: 종속된 모듈 통합이 먼저 *넓이우선: 수평으로 통합 먼저
[복잡도]
시간복잡도 (실행시간/연산횟수) - 점근표기법(시간X실행횟수O) - 빅오표기법
O(1): n과 무관, 일정, 하나의 단계 O(n): 정비례, 선형, n과 단계가 1:1
O(n^2): 제곱에 비례 O(log2n): 로그에 비례, n또는 조건에 의해 감소 O(nlog2n):로그x변수에 비례
O(2^n): 지수에 비례 O(n!): 팩토리얼에 비례
순환복잡도(맥케이스순환도): 논리적 복잡도 척도, 화살표수-노드수+2 (화노이) / 화살표로 구분되는 영역의 수 □
[어플리케이션 성능 개선]
클린코드 작성원칙 5가지(단추가 의중) ①단순성 ②추상화 ③가독성 ④의존성배제 ⑤중복성최소화
*단순성: 한번에 하나 수행, 최소 단위 *의존성 배제: 영향X
나쁜코드 종류: 외계인코드(아는사람X), 스파게티코드(로직복잡)
소스코드 품질 분석 도구 2가지 ①정적분석도구(소스코드실행X) ②동적분석도구(소스코드실행O)
정적분석도구 종류: pmd, ccm, cppcheck, checkstyle, cobertura, SonarQube
동적분석도구 종류: Avalanche, Valgrind
[모듈 연계를 위한 인터페이스 기능 식별]
모듈연계방법 2가지 ①EAI ②EBS
EAI: 애플리케이션 상호연동, 연계성, 확장성, 효율성, 비즈니스통합
EAI 구축 유형 4가지 ①Point-to-Point ②Hub&Spoke ③Message Bus ④Hybrid
*Point-to-Point: 기본적, 1:1연결, 변경/재사용어려움
*Hub&Spoke: 허브시스템, 중앙집중형, 확장/유지보수 용이, 장애 전체 영향
*Message Bus: EBS방식, 애플리케이션 사이 미들웨어, 확장성, 대용량 처리
*Hybrid: Hub&Spoke + Message Bus, 중간에 미들웨어, 필요한 경우 한가지 방식으로 구현, 병목현상 최소화
EBS: 애플리케이션X 서비스 중심 통합
[인터페이스 보안]
인터페이스 보안 영역 3가지 ①네트워크영역 ②애플리케이션영역 ③데이터베이스영역
네트워크 영역 3가지 ①IPSec ②SSL ③S-HTTP
데이터 무결성 검사도구: 변경되면 알림 (Tripwire, AIDE, Samhain, Claymore, Slipwire, Fcheck)
*크래커 침입하여 백도어를 만들거나 시스템 변경 - 무결성 검사도구 이용
[인터페이스 구현 검증]
인터페이스 구현 검증 도구 6가지 ①xUnit ②STAF ③NTAF ④FitNesse ⑤Selenium ⑥watir
*xUnit: Java, C++ 등 언어지원 *STAF: 컴포넌트 재사용
*NTAF: FitNesse+STAF, 네이버, 협업기능+재사용/확장성
*FitNesse: 웹기반 *Selenium: 다양한 브라우저, 언어 지원, 웹애플리케이션 *watir: Ruby 사용
[기타]
36. 자료구조
선형: 스택, 큐, 리스트, 데크 VS 비선형: 트리, 그래프
스택: 리스트의 한 쪽 끝으로만 자료 삽입 및 삭제 (LIFO 후입선출 방식 처리 / 가득 차있을 때 삽입하면 오버플로우, 자료가 없을 때 삭제하면 언더플로우)
큐: 리스트 한 쪽에서 삽입하고 다른 쪽에서 삭제 (FIFO 선입선출 방식 처리 / 시작과 끝을 표시하는 포인터 2개 존재)
*push: 삽입, pop: 삭제 (ex. ABCD → CBDA 가능)
53. 애플리케이션 테스트
소프트웨어 법칙 4가지 ①Pareto ②Pesticide Paradox ③Brooks ④오류-부재의 궤변
59. 테스트케이스/테스트시나리오/테스트오라클
테스트케이스: 입력값,실행조건,기대결과, 명세기반 / 테스트시나리오: 테스트케이스집합
테스트오라클: 사전정의된 참값 대입/비교, 제한적/수학적/자동화 (참,샘플링,추정,일관성검사)
62. 애플리케이션 성능 분석
애플리케이션/플랫폼 성능 측정 지표 5가지(경사응가) ①경과시간 ②사용률 ③응답시간 ④가용성 ⑤처리량
69. 인터페이스 구현
JSON: JavaScriptObjectNotation, 용량적은데이터, 속성-값 쌍의 형태
XML: 특수 목적, 마크업언어
AJAX: 자바스크립트기반, XML데이터교환, 이용자가 웹페이지와 상호작용, 비동기통신기술
*알고리즘 설계 기법 종류 5가지
①분할정복 Divide and Conquer ②Greedy ③BackTracking
④동적계획 Dynamic Programming ⑤분기한정 Branch and Bound
*해싱함수
종류: 제곱법, 숫자분석법, 중첩(폴딩법), 제산법, 기수변환법, 무작위
폴딩법 - 레코드 키를 여러 부분으로 나누고, 각 부분을 더하거나 XOR 한 값을 홈 주소로 사용
3과목 데이터베이스 구축
[데이터베이스 설계]
데이터베이스 설계 고려사항 6가지(일회무효확보) ①일관성 ②회복성 ③무결성 ④효율성 ⑤확장성 ⑥보안성
데이터베이스 설계 순서: 요구조건분석 - 개념적설계 - 논리적설계 - 물리적설계 - 구현
*요구조건분석: 명세서작성
*개념적설계: 독립적 개념스키마 모델링(E-R모델) / 트랜잭션 모델링
*논리적설계: 논리적구조로 매핑 / 스키마 평가및정제, DBMS에 맞는 스키마설계 / 트랜잭션 인터페이스 설계
*물리적설계: 물리적구조로 변환 / 레코드 집중 분석설계, 레코드 양식설계 / 접근경로 설계 / 저장공간 효율, 응답시간, 트랜잭션 처리
*구현: DBMS의 DDL로 스키마작성, DB생성 / 트랜잭션 작성
[E-R(객체-관계)모델]
E-R Entity-Relationship: 대표적 개념적 데이터 모델, P.Chen 제안, 현실데이터→논리데이터, n:m관계가능
E-R 다이어그램: E-R모델 시각적표현
사각형-개체타입 마름모-관계타입 타원-속성 선-연결
(이중타원-다중값속성 복수타원-복합속성 밑줄타원-기본키속성 대응수-관계)
[관계형 데이터베이스 구조]
관계형 데이터베이스: 개체,관계를 릴레이션(표)으로 표현
릴레이션 = 릴레이션스키마 + 릴레이션인스턴스
튜플: 행, 레코드, 속성의모임 / 기수,대응수,카디널리티cardinality: 튜플 개수
애트리뷰트/속성: 원자값만 저장, 데이터필드 / 차수,degree: 속성 개수
도메인: 한 속성이 취할 수 있는 원자값 집합
*튜플중복불가, 속성명칭유일, 속성값중복가능 / 튜플순서없음, 속성순서무의미
*인덱스 index - 독립적 저장공간 보유, 저장된 자료 빠르게 조회 가능하게 함, 자동 생성X
[관계형 데이터베이스의 제약조건 - key]
key 키: 튜플 구분기준인 속성 / 종류 5가지 ①후보키 ②기본키 ③대체키(보조키) ④슈퍼키 ⑤외래키
후보키,기본키,대체키: 유일성O최소성O / 슈퍼키: 유일성O최소성X
*릴레이션에 후보키 적어도 하나 존재 *기본키: not null
*슈퍼키: 하나이상속성 조합 *외래키: 다른릴레이션 기본키 참조
*외래키는 참조 릴레이션 기본키에 없는 값 입력불가, null 가능
[관계형 데이터베이스의 제약조건 - 무결성]
무결성 종류 4가지 ①개체무결성 ②도메인무결성 ③참조무결성 ④사용자정의무결성
*개체: 기본키 null/중복 불가 *도메인: 속성값 도메인에 속한값 *참조: 외래키값 참조릴레이션 기본키값/null
[관계대수 및 관계해석]
관계대수: 관계형 데이터베이스, 원하는 정보, 그 정보를 검색하는 방법 - 절차적
관계해석: 원하는 정보 - 비절차적
순수 관계 연산자 4가지 ①select(σ) ②poject(π) ③join(▷◁) ④division(÷)
*select: 튜플, 수평연산, σ조건(R) *project: 속성, 수직연산, π속성리스트(R)
*join: 공통속성으로 릴레이션 합침, R▷◁키속성r=키속성sS (공통속성 한번만 표시: 자연조인, R▷◁키속성S)
*division: R÷S, R에서 S와 관련된 튜플을 ‘겹치는 속성 제외하고’ 반환 (단, 튜플은 중복 불가 _ select 연산 결과는 중복허용, 하지만 릴레이션에서는 중복X)
*cartesian product: 조건없는 join, 두 릴레이션을 카티션 프로덕트 한 결과? 행은 두 릴레이션 행 개수의 곱, 열은 두 릴레이션 열 개수 더하기
[정규화]
정규화: 종속성이론, 스키마 더 작은 속성으로 나눔
이상 anomaly: 정규화하지않아 데이터 불필요한 중복, 조작시 이상발생 - 삽입이상, 갱신이상, 삭제이상
*갱신이상: 일부만 갱신하여 모순 발생 / 삽입이상: 원하지 않는 값 함께 삽입 / 삭제이상: 의도치 않은 값도 함께 삭제
정규화조건
1NF: 도메인(속성) 원자값
2NF: 1NF + 부분적함수종속제거 (완전함수종속) 3NF: 2NF + 이행적함수종속제거
BC(Boyce-codd)NF: 3NF + 결정자이면서 후보키아닌것 제거 (결정자 모두 후보키)
4NF: BCNF + 다치종속제거 5NF: 4NF + 조인종속제거
*이행적종속: A→B 이고 B→C 이면 A→C 이다 (함수적종속 X에 따라 Y가 결정되면 X→Y)
[반정규화]
반정규화: 의도적 정규화 위배, 통합/중복/분리
중복테이블 추가 3가지 ①집계테이블추가 ②진행테이블추가 ③특정부분만포함하는테이블추가
*트리거 trigger: DB 데이터 입력/갱신/삭제 이벤트 발생때마다 자동으로 수행되는 절차형SQL
[트랜잭션 분석 / CRUD 분석]
트랜잭션: 논리적기능수행 작업단위, 한꺼번에 수행되어야 할 연산들
트랜잭션 특성(무결성보장을위한) 4가지(원일지독) ①원자성 ②일관성 ③지속성 ④독립성
*Atomicity: 모두반영OR전혀반영X - commit/rollback *Consistency
*Isolation 격리성: 다른 연산 끼어들수X *Durability 영속성: 고장나도 영구적으로 반영O
CRUD 분석: 연산에대해 매트릭스 작성하여 분석
[뷰(View) 설계]
뷰: 허용된자료만제한적으로보여줌, 보안성 / 기본테이블로부터유도됨, 기본테이블제거→뷰도자동으로제거
/ 논리적독립성, 물리적X논리적O / 데이터관리용이, 간단 / 뷰 위에 또다른 뷰 정의가능 / 정의CREATE 제거DROP
/ 연산에제약O / 독립적인덱스X / 뷰 정의 변경X
[분산 데이터베이스 설계]
분산데이터베이스: 논리적으로 하나, 물리적으로 여러개 분산
분산데이터베이스 목표 4가지(중위장병) ①중복투명성 ②위치투명성 ③장애투명성 ④병행투명성
*Replication: 하나만존재하는것처럼사용, 시스템은여러곳작업 *Location: 실제위치알필요X, 논리적명칭으로접근
*Failure: 장애에도불구, 정확히처리 *Concurrency: 다수동시실행해도 결과영향X
분산데이터베이스 설계 고려사항 5가지 ①작업부하분산 ②지역자치성 ③일관성 ④회복 ⑤원격접근
분산데이터베이스 장단점: 지역자치성, 분산제어, 성능, 용량확장, 공유성, 효용성, 융통성, 신뢰성, 가용성
/ 설계어려움, 기능복잡, 비용증가, 잠재적오류증가
[SQL의 개념]
SQL: 관계형데이터베이스 표준질의어, 비절차어
SQL 종류 3가지 ①DDL ②DML ③DCL
*DDL - CREATE, DROP, ALTER *DML - SELECT, INSERT, UPDATE, DELETE
*DCL - COMMIT, ROLLBACK, GRANT, REVOKE
*DDL 기능: 스키마,도메인,테이블,뷰,인덱스 정의/변경/삭제, 논리적/물리적 데이터구조정의
*DML 기능: 사용자가 데이터 처리, 사용자↔DBMS 인터페이스
*DCL 기능: 데이터보안, 무결성, 회복, 병행수행제어
[DDL]
> CREATE
CHECK: 속성값 제약조건 정의 CONSTRAINT: 제약조건 이름지정
CASCADE: 참조테이블튜플 삭제되면 관련튜플 모두삭제, 변경되면 모두 변경
NO ACTION / SET NULL / SET DEFAULT: 참조테이블 변화 시 조치
> ALTER
ADD: 속성추가 DROP COLUMN: 속성삭제
> DROP
스키마,도메인,테이블,뷰,인덱스 제약조건 제거
CASCADE: 제거할 요소 참조하는 다른모든개체 함께제거 (참조무결성유지)
RESTRICT: 제거할 요소를 다른 개체가 참조중이면 제거취소
[DCL]
GRANT: 권한부여 - GRANT 연산 ON 테이블 TO 사용자
REVOKE: 권한회수 - REVOKE 연산 ON 테이블 FROM 사용자
COMMIT: 완료 ROLLBACK: 복귀
[DML-SELECT-1]
SELECT 컬럼 FROM 테이블 / INSERT INTO 테이블(컬럼) VALUES (컬럼값)
UPDATE 테이블 SET 컬렴=컬럼값 / DELETE FROM 테이블 WHERE 조건
DISTINCT: 중복이면 하나만 조회 DISTINCTROW: 중복이면 하나만 조회, 단 속성X 튜플대상
ORDER BY: 특정속성기준 정렬 GROUP BY: 특정속성기준 묶음 (HAVING 조건)
ASC: 오름차순 DESC: 내림차순
<>: 같지않음 NOT IN: 포함하지않는 EXISTS: 존재하는
LIKE: 조건에서 사용 (%:문자 / _:문자하나 / #:숫자하나)
연산자 우선순위: NOT-AND-OR, 산술-관계-논리
*select 는 튜플 중복 허용 *distinct 는 select 절에 컬럼명과 함께 쓰임 *where 번호 is not null (O) 번호 != null (X)
[DML-SELECT-2]
> 그룹함수: GROUP BY 이용하여 집계
COUNT(): 튜플 수
SUM() AVG() MAX() MIN() / STDDEV():표준편차 VARIANCE(): 분산
ROLLUP(속성, 속성, ...): 주어진 속성을 대상으로 그룹별 소계 구함
CUBE(속성, 속성, ....): 주어진 속성을 대상으로 모든 조합 그룹별 소계 구함
> WINDOW함수: GROUP BY 이용하지 않고 집계
ROW_NUMBER(): 윈도우별 각 레코드에 대한 일련번호 반환
RANK(): 윈도우별 순위반환, 공동순위반환 DENSE_RANK(): 윈도우변 순위반환, 공동순위 무시하고 순위부여
> 집합연산자: 둘이상 테이블 데이터 하나로 통합
(SELECT FROM 테이블) 집합연산자 (SELECT FROM 테이블)
UNION: 합집합, 중복제외 UNION ALL: 합집합, 중복허용 INTERSECT: 교집합 EXCEPT: 차집합
[기타]
76. 데이터 모델의 개념
데이터모델에 표시할 요소 3가지 ①논리적 구조 ②연산 ③제약조건
89. 시스템 카탈로그
시스템 카탈로그: 시스템 데이터베이스 (시스템 관련 객체 정보를 포함한)
데이터 객체 정의/명세 정보 유지관리 / 자료사전에 저장 (시스템 카탈로그 = 데이터 사전)
메타데이터: 시스템 카탈로그에 저장된 정보 (데이터베이스 객체 정보 / 무결성 제약조건 / 사용자정보)
갱신은 자동 / 일반 사용자도 검색은 가능(수정 불가)
*데이터 디렉터리 data directory: 실제 정보 접근에 필요한 정보 유지관리 / 시스템만 접근 가능, 사용자 접근 불가
데이터 디렉터리 vs 데이터 사전(시스템 카탈로그) 혼동 주의
96. 파티션 설계
파티션 종류 3가지 ①범위분할(Range) ②해시분할(Hash) ③조합분할(Composite)
101. 데이터베이스 보안 - 접근통제
접근통제 종류 3가지 ①임의접근통제 DAC ②강제접근통제 MAC ③역할기반접근통제 RBAC
*DAC: 사용자신분에 따라 결정, 데이터소유자에게 권한 부여
*MAC: 보안등급에 따라 결정, 시스템에 권한 부여
*RBAC: 역할에 따라 결정, 중앙관리자에게 권한 부여
4과목 프로그래밍 언어 활용
[배치 프로그램]
배치 프로그램 Batch Program: 사용자와 상호작용 없이 작업
배치프로그램 (수행주기에따라) 분류 3가지 ①정기배치 ②이벤트성배치 ③On-Demand배치
배치프로그램 필수요소 5가지 ①대용량데이터 ②자동화 ③견고성 ④안정성(신뢰성) ⑤성능
*견고성: 중단없이 안정성: 추적가능 성능: 다른프로그램 방해X, 시간내처리
[데이터타입]

*C언어에는 부호없는 문자형/정수형 unsigned 존재 / 구조체 struct: 배열과 유사, 자료종류가 다른 변수의 모임
[변수]
변수: 변하는 값, 저장공간
변수명 규칙 (파이썬 포함) 6가지
①영어 숫자 _ 가능 ②공백, 특수문자 불가 ③첫글자 숫자 불가 ④예약어 불가 ⑤대소문자구분O ⑥글자수제한X
*선언 후 세미콜론; (파이썬 제외), 변수명 앞 데이터타입(헝가리언표기법, 파이썬 제외)
*C언어 예약어: goto, enum, extern, register, const, volatile (+ do, case, signed, typedef, union, auto)
*C언어 기억클래스 변수 4가지 ①자동변수(auto) ②레지스터변수(register) ③정적변수(static) ④외부변수(extern)
[연산자]
연산자 종류 6가지 ①산술 ②관계 ③비트 ④논리 ⑤대입 ⑥조건 + ⑦기타
*산술: + - * / % ++ -- *관계: == != > >= < <= *비트: & | ^ ~ << >> *논리: ! && ||
*대입: += -= *= /= %= <<= >>= *조건: 조건?수식1:수식2
*기타: sizeof(자료형크기), 순서연산자(,), cast연산자(형변환)
연산자 우선순위: 단항 - 이항(산술-시프트-관계-비트-논리) - 조건 - 대입 - 순서
* () 가 가장 우선, ,가 가장 나중
결합규칙 왼→오: 이항, 조건, 순서 / 오→왼: 단항, 대입
[데이터입출력]
C언어 입출력: scanf, printf, getchar, gets, putchar, puts
*scanf(서식문자열, 변수주소), printf(서식문자열, 변수)
*서식문자열: %d %u %o %x %c %s %f %e %ld %lo %lx %p (d정수, f실수, c문자, s문자열)
*제어문자: \n \b \t \r \0 \’ \” \a \\ \f (\r: 줄처음으로, \a: alert, \f: form feed 한페이지넘김)
JAVA 입출력: Scanner sn = new Scanner(System.in); a=sn.nextInt(); , System.out.print();
*print/printf/println
*Java에서 출력 시 1)print("5+2="+3+4) → 5+2=34 2)print("5+2="+(3+4)) → 5+2=7
*Java에서 do~while: do 일단 한번 실행, 이후부터 조건 만족하면 반복
*C언어에서 문자열 → 정수형 : atoi() / 문자 이어붙이기: strcat
*C언어에서 a=!3 이라고 하면 a=false (1이상 모든 수는 true 이므로 3은 true인데, !3이므로 not true, 즉 false)
*유니코드 A=65 ~, 가=44032 ~
[Python의 기초]
기본문법 5가지 ①자료형선언X ②세미콜론X ③변수 값저장 연속 가능
④명령문에서 코드블록 콜론과 여백으로 구분 ⑤여백은 4칸(1탭), 같은 수준 코드는 동일 여백
Python 입출력: input, print
*변수1, 변수2 = input(출력문자).split(분리문자)
*print(출력값1, 출력값2, sep=분리문자, end=종료문자)
☆ 배열 인덱스 주의
> Range: 연속된 숫자 생성, 리스트/반복문에서 사용
range(초기값, 최종값, 증가값) - 증가값 없으면 1씩, 초기값 없으면 0부터
ex. a = list(range(4)) 리스트a = 0, 1, 2, 3 / a = list(range(9, 4, -1)) 리스트a = 9, 8, 7, 6, 5
> Slice: 문자열/리스트에서 일부 잘라 반환
객체명[초기위치:최종위치:증가값]: 인덱스기준 초기위치~최종위치-1 반환
생략가능 - 객체명[:], 객체명[::] (모두반환), 객체명[초기위치:], 객체명[:최종위치], 객체명[::증가값]
*-인덱스: 뒤에서부터 -1, -2, -3, ...
ex. a = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’] / a[0:5:2] = [‘a’, ‘c’, ‘e’] / a[-3:-1] = [‘c’, ‘d’]
*파이썬에서 continue: continue 를 만나면 그 아래 코드를 실행하지 않고 반복문 처음으로 (조건확인) 이동하여 반복
[UNIX/LINUX/MacOS]
UNIX: 대화식운영체제, C언어, 트리구조, 멀티유저 멀티테스킹(백그라운드작업), 이식성, 호환성, 개방형시스템
UNIX 시스템 구성: 사용자, 유틸리티, 쉘, 커널, 하드웨어
커널kernal: UNIX핵심 / 주기억장치상주O / 프로그램-하드웨어 인터페이스 / 하드웨어보호 / 프로세스,기억장치,입출력 관리, 프로세스통신, 데이터전송
쉘shell: 주기억장치상주X, 파일형태, 보조기억장치에서교체처리 / 사용자-시스템 인터페이스, 사용자명령어해석기 / 공용쉘, 사용자가만든쉘 (다양)
UNIX 간 통신 ①시그널(간단한메시지) ②파이프(단방향) ③소켓(쌍방향)
LINUX: UNIX기반 / MacOS: UNIX기반, 애플
*Windows - 소스공개X, GUI 기반, 선점형 멀티태스킹, PnP자동감지기능, OLE, Single-user, 255자 긴 파일명
*DOS/UNIX 는 CLI(Command Line Interface)
[기억장치 관리의 개요]
기억장치: 레지스터, 캐시기억장치, 주기억장치, 보조기억장치
기억장치 관리전략 3가지(반교배) ①반입전략 ②배치전락 ③교체전략
반입전략(Fetch): 언제 ①요구반입Demand ②예상반입Anticipatory
배치전략(Placement): 어디에 ①최초적합FirstFit ②최적적합BestFit ③최악적합WorstFit
*요구될때, 미리예상해서 / 첫번째, 단편화최소, 단편화최대
교체전략(Replacement): 모든영역이미사용중, 어느영역교체할지 (FIFO, OPT, LRU, LFU, NUR, SCR)
[가상기억장치 구현 기법 / 페이지 교체 알고리즘]
가상기억장치: 보조기억장치 주기억장치처럼, 주기억장치용량 더 큰것처럼
가상기억장치 구현방법 2가지 ①페이징기법 ②세그먼트기법 (둘다 맵테이블 필요)
*Paging: 프로그램과 주기억장치영역 동일한크기로 나누고 페이지를 페이지프레임에 적재 / 내부단편화O
(페이지: 프로그램 일정크기로 나눈 단위, 페이지프레임: 주기억장치 일정 크기로 나눈 영역)
*Segmentation: 프로그램을 다양한 논리적 크기로 나누고 주기억장치에 적재 / 외부단편화O
(세트먼트: 프로그램을 배열/함수 등 논리적크기로 나눈 단위)
☆세크먼트기법 예제
세그먼트 테이블 주어지고 논리주소(가상주소)→물리주소(실기억주소) 찾기
논리주소(s, d) 에서 s(세그먼트번호)는 테이블의 색인 역할, d(변위)와 해당 크기(한계번지) 비교하여
d가 더 작거나 같으면 물리주소(실기억주소)=변위+시작주소(기준번지)
페이지교체알고리즘 종류 6가지 ①FIFO ②LRU ③LFU ④NUR ⑤OPT ⑥SCR
①FirstInFirstOut 선입선출: 가장먼저 들어와 가장오래 있었던 페이지 교체 (하단예제)
②LeastRecentlyUsed: 최근에 가장오래 사용하지않은 (가장 오래전에 사용된) 페이지 교체 (하단예제)
③LeastFrequentlyUsed: 사용빈도가 가장 적은 페이지 교체
④NotUsedRecently: 최근에 사용하지 않은 페이지 교체, 참조비트 변형비트 사용 (하단예제)
⑤OPTimal replacement 최적교체: 앞으로 가장오래 사용하지않을 페이지 교체
⑥SecondChanceReplacement 2차기회교체: FIFO보완, 가장오래있었지만 자주사용되는페이지 교체방지
▷예제: 다음 페이지 참조 열에 대해 페이지교체기법으로 FIFO/LRU 알고리즘 사용 시 페이지부재 횟수?
할당된 페이지프레임 수 3, 처음에는 모두 비어있음
페이지참조열: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0
1)FIFO: 7 70 701 201 231 230 430 420 423 023 013 012 712 702 - 14회
2)LRU: 7 70 701 201 203 403 402 432 032 132 102 107 - 12회
▷NUR

[프로세스의 개요]
프로세스: 실행중인프로그램, PCB존재, 실기억장치에저장된, 프로시저활동중인, 비동기적행위일으킨, 작업
PCB: ProcessControlBlock, 프로세스제어블록, 프로세스대한정보저장, 프로세스생성되면 고유의 PCB 생성됨
PCB에 저장되는 정보: (프로세스)상태, 우선순위(스케줄링), CPU레지스터, 할당된자원대한정보,
그외(주기억장치관리정보, 입출력상태, 계정, 포인터, 고유식별자)
프로세스 상태 종류 6가지 ①제출 ②접수 ③준비 ④실행 ⑤대기/보류 ⑥종료
*Submit / Hold(작업 할당위치에 저장) / Ready(프로세서 할당 기다림) / Run(프로세서할당O, 실행중)
/ Wait/Block(프로세스에 입출력 필요하여 대기) / Exit(할당 해제)
*상태전이 ①준비-실행 dispatch ②대기-준비 wakeup
스레드 thread: 프로세스 내 작업단위, 프로그램단위 (경량프로세스)
하나의 프로세스에 적어도 하나의 스레드 존재 (단일스레드/다중스레드) / 독립적다중수행가능 / CPU 받아서 수행됨
/ 병행성 / 하드웨어운영체제 성능향상 / 응용프로그램 처리율향상 / 프로세스통신향상 / 응답시간단축
/ 기억장소낭비감소 / 스레드기반시스템에서 독립적스케줄링 최소단위, 프로세스역할
스레드 분류 2가지 ①사용자수준스레드 ②커널수준스레드
*사용자: 사용자가만든라이브러리사용, 속도빠름, 구현어려움 *커널: 운영체제커널에의해, 속도느림, 구현쉬움
[주요 스케줄링 알고리즘]
스케줄링 알고리즘 3가지 ①FCFS(FIFO) ②SJF ③HRD
*FCFS: 도착한 순서대로 (간단, 기다리게됨) *SJF 단기작업우선 (무기한연기, 평균대기시간짧음)
*HRD: SJF보완, 우선순위계산=(대기시간+서비스시간)/서비스시간, 큰수부터 우선순위 부여
*대기시간: 바로 앞 프로세스까지의 진행시간 *반환시간: 대기시간+실행시간 *제출시간고려
*ex. 저장공간 8K 8K 4K 4K 에 데이터 5K 5K 10K 10K 저장할 때, 기억공간의 낭비?
10K 는 저장할 수 없고, 5K가 8K 공간에 저장됨, 3+3+4+4=14K
[인터넷]
인터넷: TCP/IP 프로토콜 기반, 전세계연결 통신망, UNIX기반, 브리지/라우터/게이트웨이 사용
IP주소: InternetProtocolAddress, 컴퓨터자원 구분위한 고유주소, 32비트(4바이트)
IP주소 A~E 5단계 (네트워크부분길이에따라)
①A:대형(0~127) ②B:중대형(128~191) ③C:소규모(192~223) ④D:멀티태스킹용(224~239) ⑤E:실험적주소(240~255)
(A~C: 네트워크부분+호스트부분)
서브네팅 subnetting: 할당된 네트워크 주소 다시 여러개 네트워크로 나눠 사용
(서브넷마스크: IP주소에서 네트워크부분 호스트부분 구분위한 비트)
▷예제: 192.168.1.0/24 네트워크를 FLSM방식으로 3개의 서브넷으로 나누기 (IP Subnet Zero 적용)
풀이) 1의 개수가 24개 / 8*3=24 / 4바이트 중 3바이트 차지, 나머지 1바이트 나누기
8비트 중 3개의 서브넷으로 나눔 / 3 표현할 비트 2개 제외(_ _ 2x2=4 라서 2비트, 4여도 2비트) / 6개의 비트 사용
64이므로 3개 서브넷 각각 64개 호스트 / 192.168.1.0~63, ...
*사용가능한 → +1 / 모두 0이거나 모두 1인 주소는 사용불가
주의) n번째 네트워크 IP? - 해당번째 a~z 에 속한 어떤 주소
IPv6: 버전6, IPv4 주소부족 해결위해, 128비트 긴 주소, 빠름, 인증성, 기밀성, 데이터무결성, 보안, 호환,
패킷크기제한X(확장가능), 네트워크기능 확장용이, 자동으로 네트워크환경구성
IPv6 주소체계 3가지 ①유니캐스트(1:1) ②멀티캐스트(1:다) ③애니캐스트(1:1,가장가까이)
도메인네임: 숫자IP주소를 이해쉬운 문자로 표현 / DNS: 도메인네임→IP주소 변환
[TCP/IP]
TCP/IP: 컴퓨터들이 데이터 송수신하도록 표준 프로토콜
TCP/IP 구조: 네트워크엑세스 - 인터넷 - 전송 - 응용

*TCP: 양방향 연결형, 순서제어, 오류제어, 흐름제어, 신뢰성, 스트림위주 패킷전달, 헤더 최대 100바이트 확장
*UDP: 비연결형, 흐름제어X, 순서제어X, 신뢰성보다 속도, 실시간전송
*RTCP: 패킷전송품질제어, 참여자에게 컨트롤패킷 전송, 패킷 항상 32비트경계로 끝, 멀티플렉싱, 제어, 인증
*ARP(논물): 논리주소IP → 물리주소MAC *RARP: 물리주소MAC → 논리주소IP
*ICMP: IP와조합, 통신오류처리, 전송경로변경, 제어메시지관리, 헤더8바이트 (Control)
*IGMP: 호스트/라우터사이 멀티캐스트그룹유지 (Group)
[기타]
127. 서버 개발
프레임워크 사용 효과: 품질보증, 개발용이, 변경용이, 복잡도감소 (반제품)
141. 객체지향 프로그래밍 언어
절차적언어: C언어 / 객체지향언어: C++, JAVA
정보은닉: 연산만을 통해 접근(캡슐화의 핵심개념) / 추상화: 불필요생략, 핵심중점 모델화 (종류 3가지 제어/자료/과정)
/ 다형성: 고유한 방법으로 응답(하위 객체들이 각 다른 형태 특성을 갖는 객체로 이용)
142. 스크립트 언어
스크립트 언어 종류: ASP, JSP, PHP, 자바스크립트, VB스크립트, 쉘스크립트, Basic, 파이썬
*파이썬은 객체지향적, 이식성이 높음
PHP연산자: @(에러제어), ===, <>(관계연산자) / 쉘스크립트 제어문: if, case, for, while, until
147. 운영체제의 개념
운영체제 OS: 시스템 자원 관리, 사용자에게 환경 제공, 프로그램 모임 (자원분배관리, 입출력장치/프로그램제어)
운영체제 목적: 처리능력, 반환시간, 사용가능도, 신뢰도
153. 가상기억장치 기타 관리사항
Locality: 주기억장치 참조 시 일부 페이지만 집중적으로 참조하는 성질
-시간구역성: 한번 참조한 페이지는 가까운 시간 내 다시 참조할 가능성이 높음 -Loop, Stack, SubRoutine, Counting, Totaling
-공간구역성: 참조한 페이지 근처의 페이지는 참조할 가능성이 높음 - 배열순회, 순차적코드실행, 변수선언기억장소
Working Set: 일정 시간동안 자주 참조하는 페이지 집합 - Locality 특징 이용
Prepaging: 필요할 것 같은 모든 페이지 한번에 적재
Thrashing: 프로세스처리시간<페이지교체시간 성능↓CPU이용률↓
-스래싱 방지 방법: 다중프로그램 적정수준 유지, 페이지 부재 빈도 조절, 워킹셋 유지, 자원증설, 일부 중단, 임계치 예상
-다중프로그래밍↑↑ ~ 스래싱↑
페이지크기↑ ~ 기억장소이용효율↑ 입출력시간↑ 맵테이블크기↑ 내부단편화↓ 페이지이동시간↓ 매핑속도↓
158. 운영체제 기본 명령어
UNIX 명령어: ls(파일목록확인), rm(파일삭제), cp(파일복사), find(파일찾기), cat(파일내용화면표시),
fsck(파일시스템검사보수), fork(새프로세스생성), exec(새프로세스수행), wait(하위프로세스기다림),
chmod(파일보호모드,사용허가지정), chdir(디렉토리위치변경), chown(소유자변경)
160. OSI 참조모델
OSI 7계층 물리-데이터링크-네트워크 - 전송-세션-표현-응용
물리: 전기적,기능적,절차적 기능정의 / 데이터링크: 링크확립유지, 노드간 에러제어/흐름제어
/ 네트워크: 네트워크연결관리, 패킷전달, 통신량폭주제어
/ 전송: 단말기사이 흐름제어, 오류수정, 신뢰성있는 데이터전달 / 세션: 프로세스간대화제어, 동기점이용데이터복구
/ 표현: 암호화, 코드변환, 데이터압축 / 응용: 사용자 접근하도록 서비스제공
*오류제어, 흐름제어 → 데이터링크(노드 간) or 전송(단말기)
5과목 정보시스템 구축 관리
[SW 공학의 발전적 추세]
소프트웨어 재사용 방법 2가지 ①합성중심 ②생성중심
*합성: 블록(모듈) 끼워맞춤 *생성: 명세 구체화 (패턴구성방법)
소프트웨어 재공학의 장점: 시간단축, 비용감소, 오류감소, 위험부담감소, 소프트웨어 수명연장, 기술향상, 프로젝트 문서 공유
/ 예방 유지보수 측면 위기 해결
단점: 새로운 개발방법론 도입 어려움
CASE: 개발 자동화 도구 (소프트웨어생명주기전단계연결 /개발모형지원 /그래픽지원 /작업공유,커뮤니케이션증대)
*CASE 원천기술: 구조적기법/ 정보저장소기술/ 프로토타이핑기술/ 분산처리기술/ 자동프로그래밍기술
(상위: 계획, 요구분석, 오류검증, 자료흐름도작성 / 중위: 상세설계, 화면출력작성 / 하위: 코드작성, 테스트, 문서화, 윈시코드생성지원, 시스템명세서)
[수학적 산정 기법]
소프트웨어 비용산정기법 종류

*하향식: 경험바탕, 비과학적 *상향식: 세부 단위별 산정
*전문가: 조직내 두명이상 전문가 *델파이: 많은 전문가
*LOC 계산방법: ①노력인월=개발기간x투입인원 ②생산성=LOC/노력인월 ③개발비용=노력인월x단위비용
*개발단계별인월수: 생명주기 단계별 필요노력
*수학적산정기법: 경험적추정모형, 실험적추정모형, 공식사용, 비용산정자동화목표
*COCOMO모델유형 ①organic(조직형,5만↓) ②semi-detached(반분리형,30만↓) ③embedded(내장형,30만↑)
*COCOMO모형종류 ①Basic(기본형,크기개발유형) ②Intermediate(중간형,15가지요인) ③Detailed(발전형,공정별)
*Putnam: Rayleigh-Norden 곡선 노력분포도 기초로, 생명주기전과정 노력분포 가정, 생명주기예측모형
*FP기능점수: 알브레히트제안, 요인별가중치 (요인:명령어(질의수)/데이터파일/출력보고서/자료입력양식/인터페이스)
[소프트웨어 개발 표준]
소프트웨어 개발표준 종류 3가지 ŗISO/IEC12207 ŘCMMI řSPICE
*ISO/IEC12207: 생명주기프로세스, 생명주기표준제공
*CMMI: 능력성숙도통합모델, 능력/성숙도평가 (단계: 초기-관리-정의-정량적관리-최적화, 계획은없음!)
*SPICE: =ISO/IEC15504, 소프트웨어처리개선및능력평가기준, 품질/생산성향상위해, 프로세스평가/개선
[네트워크 구축]
네트워크 설치구조 종류 5가지 ①성형 ②링형 ③버스형 ④계층형 ⑤망형
*성형:star,중앙집중형 *링형:루프형 *버스형:한개회선-여러대단말연결
*계층형:tree,분산형 *망형:mesh,모두연결
네트워크 분류 2가지 ①LAN(근거리) ②WAN(광대역)
LAN의 표준안 6가지 ①802.11e ②802.11 ③802.11b ④802.11g ⑤802.11a ⑥802.11n
*802.11e: MAC수정 QoS지원
*802.11: 2.4GHz, 2Mbps *802.11b: 초기버전개선안, 2.4GHz, 11bps *802.11g: 2.4GHz, 54bps
*802.11a: 5GHz, 54bps, OFDM기술 *802.11n: 2.4GHz+5GHz, 600bps
[경로 제어 / 트래픽 제어]
경로제어: 라우팅 routing, 송수신간 최적 패킷교환 경로결정
경로제어 프로토콜 3가지 ①IGP ②EGP ③BGP (GP: GatewayProtocol)
IGP 종류 2가지 ①RIP ②OSPF
*IGP: Interior 내부, 하나의 AS 내 라우팅 (AS:자율시스템)
*EGP: Exterior 외부, AS 간 라우팅 (게이트웨이 간 라우팅)
*BGP: Border, AS 간 라우팅, EGP보완, 초기에 라우팅테이블(전체경로제어표)교환
*RIP: 거리벡터라우팅프로토콜, 최대홉수15제한, 소규모적합, 최단경로탐색 Bellman-Ford알고리즘
*OSPF: RIP보완, 대규모적합, 최단경로탐색 다익스트라 알고리즘
트래픽제어 종류 3가지 ①흐름제어 ②폭주(혼잡)제어 ③교착상태방지
흐름제어 종류 2가지 ①stop and wait (정지-대기) ②sliding window
폭주제어 종류 2가지 ①slow start (느린시작) ②Congestion Avoidance (혼잡회피)
*흐름제어: 송수신 간 전송되는 패킷 양(속도) 제어, overflow방지
*stop and wait: 한번에 하나(신호받아야)전송 *sliding window: (신호이용은 하지만 안받아도)연속적 전송
*폭주제어: 네트워크 내 패킷 수 조절, overflow방지
*slow start: 윈도우크기(최대패킷수) 2배씩 지수적증가
*congestion avoidance: 느린시작 임계값도달 - 회피위해 1씩 선형적 증가
*교착상태방지: 패킷이 같은 목적지 갖지 않도록 할당, 교착상태시 패킷버퍼폐기
[회복/병행제어]
회복: 트랜잭션장애발생-DB손상 시 이전정상상태로 복구
회복 종류 4가지 ①연기갱신기법 ②즉각갱신기법 ③그림자페이지대체기법 ④검사점기법
*연기갱신: 트랜잭션완료까지 DB갱신연기, 일단 로그에 보관, Undo(X) Redo(O)
*즉각갱신: 트랜잭션완료전에도 DB반영, 로그에 보관, Undo(O) Redo(O)
*그림자페이지대체: 갱신전 복사본 보관, 로그(X) Undo(X) Redo(X)
*검사점check point: 검사점 로그에 보관
병행제어 Concurrency Control: 트랜잭션 병행수행시 DB일관성 유지하도록 트랜잭션 상호작용제어
병행제어 목적 4가지(응활공일0801) ①응답시간↓ ②시스템활용도↑ ③공유성↑ ④일관성유지
병행제어 기법 종류 4가지 ①로킹 ②타임스탬프 ③최적병행수행 ④다중버전기법
*로킹: 데이터접근 상호배타적, Lock이 허락되어야만 로킹단위 엑세스가능
*로킹단위: 한꺼번에 로킹할 수 있는 객체의 크기 / 데이터베이스,파일,레코드,필드 가능
*로킹단위↑ ~ 로크수↓ 병행성↓ 오버헤드↓ 공유도↓ 제어기법간단,관리수월
*타임스탬프: 직렬성, 처리순서미리선택, 시작전 시간표(타임스탬프)부여, 교착상태X
*최적병행수행: readonly이면 충돌성↓ 병행제어기법사용안해도 일관적유지가능
*다중버전기법: 타임스탬프개념이용, 시간표대신 버전부여
[교착상태]
교착상태: 프로세스가 자원을 점유, 서로 요구하며 무한정대기
교착상태 필요충분조건 4가지 ①상호배제 ②점유와대기 ③비선점 ④환형대기
*mutual exclusion: 한번에 한개만 사용 *hold and wait
*non-preemption: 강제로 빼앗을수없음 *circular wait: 앞/뒤요구
교착상태 해결방법 4가지 ①Prevention ②Avoidance ③Detection ④Recovery
*예방: 필요충분조건 제거 *회피: Banker’s Algorithm *발견: 자원할당그래프 *회복: 프로세스종료/자원선점
[Secure SDLC]
Secure SDLC: 보안강화 프로세스 포함 (SDLC: 소프트웨어 개발 생명주기)
Secure SDLC 방법론 3가지 ①CLASP ②SDL ③Seven Touchpoints
*CLASP: 초기단계보안강화, 활동중심, 역할기반 *SDL: 마이크로소프트, 기존개선, 나선형기반
*Seven Touchpoins: 모범사례 통합, 위험분석테스트
보안요소 5가지(무기가 부인) ①무결성 ②기밀성 ③가용성 ④부인방지 ⑤인증
*무결성: 인가된사용자만 수정가능 *기밀성: 인가된사용자만 접근가능 *가용성: 인가된사용자는 언제든지 접근가능
*부인방지: 부인할수없도록 송수신증거제공 *인증: 합법적사용자인지확인
[암호 알고리즘]
암호학 cryptography
평문: 암호화되지 않은 원본메시지 ↔ 암호문: 암호화 적용된 메시지
암호화: 평문→암호문 / 복호화: 암호문→평문
키(key): 암호화를 위해 사용하는 값
개인키: 암호화키=복호화키 →둘다 비밀키
공개키: 암호화키≠복호화키 →암호화키는 공개키, 복호화키는 비밀키 (비밀키로 복호화)
암호화방식 분류

*Stream: 비트단위 암호화 *Block: 블록을 암호화
*개인키(대칭키): 속도빠름, 알고리즘단순, 파일크기작음 / 관리할 키 많음 = 비밀키 암호화 방식
*공개키(비대칭키): 속도느림, 알고리즘복잡, 파일크기큼 / 키분배용이, 관리할 키 적음
*DES: 미국, 블록 64비트, 키 56비트 *AES: 미국, DES보완, 블록 128비트, 키 128/192/256
*SEED: 한국, 블록 128비트, 키 128/256 *ARIA: 한국, 블록 128비트, 키 128/192/256
*RSA: MIT, 소인수분해 어려움 기반, 공개키/비밀키 사용
[기타]
164. 소프트웨어 개발 방법론
CBD 컴포넌트기반방법론 (Component Based Design): 재사용, 확장성, 비용↓, 품질↑, 컴포넌트단위관리
170. 프로젝트 일정 계획
CPM (Critical Path Method) 임계경로기법: 모든 경로중 가장 오래 걸리는 경로
173. 소프트웨어 개발 방법론 테일러링
Tailoring 테일러링 개발방법: 상황특성에맞게정의됨, 절차수정보완
*내부기준: 목표환경, 요구사항, 프로젝트규모, 보유기술, 구성원능력, 비용 *외부기준: 법적제약사향, 표준품질기준
174. 소프트웨어 개발 프레임워크
프레임워크 특성 4가지
①모듈화(품질↑ 유지보수용이) ②재사용성(비용↓ 생산성↑) ③확장성 ④제어의역흐름(제어를맡김)
195. 코드 오류
코드오류: 오류예방 보안점검항목
발생할수있는 보안약점 ①널포인터역참조 ②부적절한자원해제 ③해제된자원사용 ④초기화하지않은변수사용
널포인터역참조: 널포인터가 가리키는 메모리에 값을 저장할때 발생하는 보안약점
스택가드: 메모리상 복귀주소와 변수 사이 특정 값 저장, 변경될경우 오버플로우로 가정하고 프로그램중단
(널포인터역참조같이 주소가 저장되는 스택에서 발생하는 보안약점 막는기술)
196. 캡슐화
접근제한자
①public(모두) ②protected(같은패키지&다른패키지상속관계) ③default(같은패키지) ④private(현재객체내)
*백도어 탐지방법 5가지
①무결성검사 ②열린포트확인 ③로그분석 ④SetUID 파일검사 ⑤탐지툴이용
5과목 신기술 / 공격 / 보안
[네트워크 관련 신기술]
1) IoT 사물인터넷: 사물을 인터넷으로 연결
2) M2M(Machine to Machine) 사물통신: 기계와 기계 사이 통신
3) 모바일 컴퓨팅: 휴대 기기로 네트워크 접속
4) 클라우드 컴퓨팅: 컴퓨팅 자원 중앙에 두고 언제 어디서나 작업
5) 모바일 클라우드 컴퓨팅 MCC: 클라우드 이용자 사이에 클라우드 컴퓨팅 인프라 구성하여 정보 공유
6) 인터클라우드 컴퓨팅: 클라우드 서비스 자원을 연결하여 자원 동적할당 가능
7) 메시 네트워크: 특수목적 대규모 디바이스 네트워크 생성에 최적화 된 네트워크
8) 와이선 Wi-SUN: 저전력 장거리 통신기술 (IoT 서비스를 위한)
9) NDN(Named Data Networking): 콘텐츠 자체 정보와 라우터 기능만으로 데이터 전송
10) NGN(Next Generation Network) 차세대 통신망: 유선망 기반 but 유선망 뿐 아니라 이동 사용자 목표
11) SDN 소프트웨어 정의 네트워킹: 네트워크를 컴퓨터처럼 모델링, 네트워킹 가상화, 제어, 관리
12) NFC(Near Field Communication) 근거리 무선 통신: 고주파 이용한 근거리 무선 통신
13) UWB(Ultra WideBand) 초광대역: 짧은 거리에서 많은 양의 디지털 데이터를 저전력으로 전송
14) PICONET 피코넷: 여러개의 독립된 통신장치가 UWB(Ultra Wideband)기술 또는 블루투스 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
15) WBAN(Wireless Body Area Network): 웨어러블 기기를 무선 연결하는 개인 영역 네트워킹 기술
16) GIS(Geographic Information System) 지리정보시스템: 지리적 자료 수집 저장 분석 출력 응용프로그램
17) USN 유비쿼터스 센서 네트워크: 센서로 수집할 정보를 무선으로 수집할 수 있도록
18) SON(Self Organizing Network) 자동구성네트워크: 주변 상황에 맞추어 스스로 망 구성하는 네트워크
19) 애드 혹 네트워크 Ad-hoc: 별도 고정 유선망을 구축할 수 없는 장소에 모바일 호스트만을 이용하여 구성한 네트워크
20) 네트워크 슬라이싱: 하나의 물리적인 코어 네트워크 인프라를 다수의 가상 네트워크로 분리, 각 네트워크로 맞춤형 서비스 제공
21) 저전력 블루투스 기술 BLE(Bluetooth Low Energy): 일반 블루투스와 동일하지만 연결되지 않은 대기상태에서 절전모드 유지
22) 지능형 초연결망: 증가하는 데이터 트래픽을 수용하기 위해 시행되는 정부 주관 사업
23) 파장 분할 다중화 WDM(Wavelength Division Multiplexing): 광섬유 이용, 여러 대 단말기가 동시에 통신 회선을 사용할 수 있도록 함
24) 소프트웨어 정의 데이터 센터 SDDC: 인력 개입 없이 소프트웨어 조작만으로 자동 관리 제어되는 데이터 센터 (하드웨어 무관)
25) 개방형 링크드 데이터 LOD(Linked Open Data): 누구나 사용할 수 있도록 웹상에 공개된 연계 데이터
26) Baas: 클라우드 컴퓨팅 플랫폼, 블록체인 개발환경을 클라우드로 서비스
27) 스마트그리드: 전력망 지능화, 고도화, 에너지 이용효율이 좋음
28) PaaS-TA: 국내 개방형 클라우드 컴퓨팅 플랫폼
[SW 관련 신기술]
1) 인공지능 AI (Artificial Intelligence): 인간의 두뇌처럼 컴퓨터 스스로 추론, 학습, 판단하는 작업 수행
2) 뉴럴링크(Neurallink): 일론머스크가 사람의 뇌와 컴퓨터를 결합하는 기술을 개발하기 위해 설립한 회사
3) 딥 러닝: 인간 두뇌를 모델로, 인공 신경망(ANN, Artificial Neural Network) 기반 기계 학습 기술
4) 전문가 시스템 (Expert System): 의료진단과 같은 특정 전문 분야의 업무를 지원하는 응용 프로그램
5) 증강현실 AR (Augmented Reality): 실제 촬영 화면에 가상 정보 부가하여 보여주는 기술
6) 블록체인(Blockchain): P2P 네트워크 이용, 온라인 금융 거래 정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술
7) 분산 원장 기술 DLT (Distributed Ledger Technology): 중앙 관리자나 중앙 데이터 저장소가 존재하지 않음, P2P 망 내 참여자들에게 모든 거래 목록이 분산 저장되어 거래 발생 마다 지속적으로 갱신되는 디지털 원장 (대표적 사례가 블록체인)
8) 해시(Hash): 임의의 길이의 입력 데이터를 고정된 길이의 값이나 키로 변환하는 것
9) 양자 암호키 분배 QKD (Quantum Key Distribution): 양자 통신을 위해 비밀키를 분배하여 관리하는 기술, 암호 알고리즘 동작을 위한 비밀키를 안전하게 공유하기 위해 사용
10) 프라이버시 강화 기술 PET (Privacy Enhancing Technology): 개인정보 위험 관리 기술 통칭
11) 디지털 저작권 관리 DRM (Digital Rights Management): 디지털 매체를 통해 유통되는 데이터의 저작권을 보호하기 위해 데이터의 안전한 배포를 활성화하거나 불법 배포를 방지하는 시스템
12) 공통 평가 기준 CC (Common Criteria): ISO 15408 표준으로 채택된 정보 보호 제품 평가기준
13) 개인정보 영향 평가 제도 PIA (Privacy Impact Assessment): 개인정보 관련 새로운 정보시스템 도입/변경 시 고객(국민) 사생활에 미칠 영향을 미리 조사, 분석, 평가
14) 그레이웨어(Grayware): 제공하는 입장에서는 악의적이지 않지만 사용자 입장에서 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드
15) 매시업(Mashup): 웹에서 제공하는 정보를 이용하여 새로운 소프트웨어를 만드는 기술, 다수의 정보원이 제공하는 콘텐츠 조합하여 하나의 서비스로 제공
16) 리치 인터넷 애플리케이션 RIA: 플래시 애니메이션 기술과 웹 서버 애플리케이션 기술 통합하여 기존 HTML 보다 역동적이고 인터랙티브한 웹페이지 제공하는 플래시 웹페이지 제작기술
17) 시맨틱 웹(Semantic Web): 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어낼 수 있도록 이해하기 쉬운 의미를 가진 지능형 웹
18) 증발품(Vaporware): 판매계획은 발표되었으나 실제로 고객에게 판매되지 않고 있는 소프트웨어
19) 오픈 그리드 서비스 아키텍처 OGSA: 애플리케이션 공유를 위한 웹서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준
20) 서비스 지향 아키텍처 SOA: 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
SOA 기반 어플리케이션 구성 계층: 표현, 업무프로세스, 서비스중간, 애플리케이션, 데이터저장
21) 서비스형 소프트웨어 SaaS (Software as a Service): 소프트웨어 여러 기능 중 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어
22) 소프트웨어 에스크로(임치): 개발자의 지식재산권을 보호하고 사용자는 저렴한 비용으로 안정적 사용 및 유지보수 받을 수 있도록 소스 프로그램과 기술 정보를 제3 기관에 보관하는 것
23) 디지털 트윈: 현실 속 사물을 소프트웨어로 가상화한 모델
[HW 관련 신기술]
1) 고가용성 HA (High Availability): 장애 발생 즉시 다른 시스템으로 대체 가능한 환경 구축
2) 3D Printing: 평면 출력 아닌 입체 출력
3) 4D Printing: (특정 시간/환경 조건이 갖추어지면 스스로 형태를 변화하거나 제조되는) 자가 조립 기술이 적용된 제품을 3D printing
4) RAID: 데이터 블록들을 서로 다른 디스크에 분산 저장하여 여러 디스크에서 동시에 그 블록들을 읽고 쓸수 있도록 함
5) 4K 해상도: 차세대 고화질 모니터의 해상도
6) 앤 스크린 N-Screen: N개의 서로 다른 단말기에서 동일한 컨텐츠를 이용
7) 컴패니언 스크린 Companion Screen (세컨드 스크린): N Screen 의 한 종류, 방송 내용을 공유하며 추가적인 작업을 수행
8) 신 클라이언트 PC (Thin Client PC): 하드디스크, 주변장치 없이 기본적 메모리만 갖추고 서버와 네트워크로 운용되는 PC
9) 패블릿 Phablet: 폰 + 태블릿, 태블릿 기능 포함한 5인치 이상 대화면 스마트폰
10) C형 USB (USB Type-C): USB 표준 중 하나
11) 멤스 MEMS (Micro Electro Mechanical Systems): 초정밀 반도체 제조기술 바탕으로 기계를 미세 가공하여 동작하도록 한 초미세장치
12) 트러스트존 기술 TrustZone Technology: 일반 어플리케이션 처리하는 일반구역과 보안구역을 나누어 관리하는 하드웨어 기반 보안기술
13) 엠디스크 M-DISC (Millennial DISC): 한번의 기록만으로 자료를 영구보관하는 광저장장치
14) 멤리스터 Memristor: 메모리 + 레지스터, 전류의 방향과 양 등 기존 경험을 모두 기억하는 소자
[DB 관련 신기술]
1) 하둡 Hadoop: 오픈소스 기반 분산 컴퓨팅 플랫폼, 일반 컴퓨터로 가상화된 대형 스토리지 형성, 생성된 빅데이터를 저장, 처리
2) 빅데이터: 막대한 양의 데이터 집합
3) 브로드 데이터: 소비자와의 상호작용을 통해 생성된 데이터
4) 메타 데이터: 데이터를 정의, 설명해주는 데이터 (ex. 스키마, 메타태그)
6)디지털 아카이빙: 디지털 정보 자원을 장기적으로 보존하기 위한 작업 (변환, 압축, DB화 등)
7) 맵리듀스 MapReduce: 구글 고안, 대용량 데이터를 분산 처리하기 위한 목적, 데이터 분류 Map 작업, 원하는 데이터 추출 Reduce 작업
8) 타조: 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
9) 데이터 다이어트: 데이터 삭제 아닌 압축, 중복 배제, 새로운 기준으로 저장
10) 데이터 마이닝: 데이터 웨어하우스에 저장된 대량의 데이터를 분석하여 데이터 속 내제된 변수 사이 상호관계 규명, 일정한 패턴 (유용한 정보)을 찾아내는 기법
11) OLAP (Online Analytical Processing): 데이터로부터 통계적 요약정보를 분석하여 의사결정에 활용
- OLAP 연산: roll-up, drill-down, drill-through, drill-across, pivoting, slicing, dicing
[서비스 공격 유형]
> 서비스 거부 DoS (Denial of Service) 공격: 표적 서버 자원을 고갈시킬 목적으로 대량의 데이터 집중 전송
1) Ping of Death 죽음의 핑: 패킷 크기를 허용범위 이상으로 전송
2) SMURFING 스머핑: IP, ICMP 특성을 악용, 대량 데이터 집중 전송
3) SYN Flooding: 공격자가 가상의 클라이언트로 위장, 3WH를 의도적으로 중단, 서버 대기상태
4) TearDrop: Offset 값을 변경시켜 수신측에서 패킷 재조립시 오류로 인한 과부하
5) Land: 패킷 전송시 송수신 IP주소를 모두 공격대상 IP주소로 하여 전송 (무한 응답)
6) DDoS (Distributed Denail of Service) 분산서비스거부공격: 여러곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격
→ ①Trin00 ②TFN(Tribe Flooding Network) ③TFN 2K ④Stacheldraht
> 네트워크 침해 공격
1) 스미싱 Smishing: 문자메시지 SMS 이용
2) 스피어 피싱 Spear Phishing: 이메일 (링크, 첨부파일) 클릭 이용
3) APT (Advanced Persistent Threats) 지능형 지속 위협: 조직적으로 침투해 때를 기다려 보안을 무력화 시키고 정보를 빼돌림 (이메일, USB, P2P)
4) 무작위 대입 공격 Brute Force Attack: 암호키를 찾기 위해 모든 값을 대입
5) 큐싱 Qshing: QR코드 이용
6) SQL 삽입 공격: 데이터베이스 조작 공격
7) 크로스 사이트 스크립팅 XSS: 스크립트 이용
> 정보 보안 침해 공격
1) 좀비 PC: 악성코드에 감염되어 다른 컴퓨터를 조종하도록 만들어진 컴퓨터
2) C&C 서버: 해커가 좀비 PC에 명령을 내리기 위한 용도로 사용하는 서버
3) 봇넷 Botnet: 악성 프로그램에 감염된 다수의 컴퓨터들이 네트워크로 연결된 형태
4) 웜 Worm: 자가복제하여 시스템의 부하를 높여 다운시키는 바이러스
5) 제로 데이 공격: 보안 취약점이 알려지기도 전에 이 취약점을 통해 보안공격
6) 키로거 공격 Key Logger Attack: 컴퓨터 사용자 키보드 움직임을 탐지해 개인정보 빼돌림
7) 랜섬웨어 Ransomeware: 컴퓨터에 잠입해 파일을 암호화하여 사용자가 열지 못하게 함
8) 백도어 Trap Door: 시스템 설계자가 보안을 제거하여 만들어놓은 비밀통로
☆ 백도어 탐지 방법: 무결성검사 / 열린포트확인 / 로그분석 / SetUID 파일검사 / 탐지 툴 이용
9) 트로이 목마 Trojan Horse: 정상적 프로그램으로 위장, 해당 프로그램이 동작할 때 활성화되어 부작용을 일으킴
[보안 솔루션]
보안솔루션: 접근통제, 침입차단 및 탐지 등으로 외부로부터의 불법적 침입을 막는 기술
방화벽: 조직 내부 네트워크와 인터넷 간 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능이 있음
침입 탐지 시스템 IDS: 컴퓨터 시스템의 비정상적 사용, 오용, 남용을 실시간으로 탐지
침입 방지 시스템 IPS: 방화벽 + 침입 탐지 시스템
데이터 유출 방지 DLP: 내부 정보의 외부 유출을 방지
웹 방화벽: 일반 방화벽이 탐지하지 못하는 SQL 삽입공격, XSS 등 웹기반 공격을 방어
VPN: Virtual Private Network 가상 사설 통신망, 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 함
NAC: Network Access Control, 네트워크에 접속하는 MAC 주소를 IP 관리 시스템에 등록 후 보안 제공
ESM: Enterprise Security Management, 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합 관리