__ 벼락치기 암기 정리 __
1.
시스템 성능평가 기준
처리능력, 반환시간, 사용 가능도, 신뢰도
플랫폼 성능측정기준
가용성(즉시사용가능정도), 응답시간, 정확성, 사용률
모듈
기능별로 분할하여 재사용이 가능하게 부품화한 것
라이브러리
툴킷, 모듈을 모든 것
프레임워크
디자인패턴 + 모듈 : 개발의 틀을 제공하며 기능을 구체화하는 제여의 역흐름
소프트웨어 아키텍쳐
프레임워크들을 체계적으로 구성하고 설명하는 구조체
컴포넌트
모듈의 형태로 재사용 가능한 소프트웨어 블럭
소프트웨어 재사용 방법
- 합성중심 : 모듈을 조립하여 완성시키는 블록 구성형식
- 생성 중심 : 추상적인 명세를 구체화하여 소프트웨어를 완성시키는 패턴
폭포수 모델
- 계획 - 분석 - 설계 - 구현 - 테스트 - 유지보수
- 한번씩만 단계를 진행하며 돌아갈 수 없음
프로토타입 모델
사용자와 시스템 사이의 인터페이스에 중점을 둠
나선형 모델 (Spiral)
폭포수 모델 + 프로토타입 모델 + 위험분석 기능
애자일 모델
- 고객과의 소통에 중심, 짧은 개발 주기 고객 피드백 반영
- 문서 절차보다 소통, 협업, 변화 대응
- Scurm, XP, Kanban, crystal, FDD, ASD, DSDM
Scrum (Agile)
스크럼 팀 구성, 팀을 중심으로 반복적인 스프린트
XP(eXtreme Programming)
- 고객참여, 짧은 개발 반복, 소규모 인원
- 의사소통, 단순성, 용기, 존중, 피드백
- TDD, Pair Programming ...
소프트웨어 개발 방법론
- 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
- 분석 - 설계 - 구현 - 시험
- 구조적 방법론
- 요구사항을 자료 흐름도 (DFD) 로 표현함
- 모듈 중심의 설계를 통해 결합도를 낮추고, 독립성을 높임
- 요구사항 분석 - 구조적 분석 - 구조적 설계 - 구조적 개발
- 정보공학 방법론
- 정형화된 기법을 통한 데이터 중심 방법론
- 객체지향 방법론
- 실체(Entity) 를 객체(Object) 로 표현하고 메시지 교환을 통해 상호작용
- 캡슐화, 정보은닉, 추상화, 상속성, 다형성
소프트웨어 개발 관리 요소 (3P)
- 인적자원(People), 일정(Process), 문제인식(Problem)
프로젝트 일정 계획 방법론
- PERT : 노드와 간선 이용, 확률 분석
예측치 = (낙관치 + (4*기대치) + 비관치 )/ 6
- CPM : 개발기간이 확실할 경우, 임계 경로 기법
노드수 + 간선수 - 2
- 간트차트 : 막대그래프를 통해 일정 그림
상향식 비용 산정 기법
- LOC비관치, 기대치, 낙관치를 통해 예측치 계산
- 단계별 노력 기법노력 + 가중치
- 수학적 산정기법3-1. COCOMO : 보헴제안, LOC 기반 비용 산정
Organic(5만)
,Semi-Detached(30만)
,Embeded(Up)
3-2. Putnam : Rayleigh-Norden 곡선 분포도, 자동화 도구는SLIM
3-3. FP : 요인별 가중치, 자동화도구는ESTIMACS
하향식 비용 산정 기법
경험을 기반으로 하는 비과학적 기법
- 전문가 측정 기법
- 델파이 측정 기법 : 조정자가 여러 전문가 의견 조율
소프트웨어 개발 표준
ISO/IEC 9126(25010)
기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
CMM
소프트웨어 개발 업체 업무능력평가 기준
CMMI
CMM 발전, 초기-관리-정의-정량적관리-최적화
SPICE
CASE
- 소프트웨어 전 과정에서 자동화를 지원하는 도구
- 구조적, 프로토타이핑, 자동 프로그래밍, 정보저장소, 분산처리
- SADT, SREM, TAGS, PSL/PSA
형상관리
- 변경과정(Version) 제어
- 형상 식별 - 형상 통제 - 형상 보고 - 형상 감사
미들웨어
- 운영체제와 소프트웨어 애플리케이션 사이에 위치하며, 운영체제 제공하는 서비스를 확장하여 제공함
- 데이터 교환의 일관성 유지
요구공학
- 개발 기초 요구사항 정의, 문서화 관리 프로세스
- 도출 - 분석 - 명세 - 검증
유스케이스 다이어그램
- 액터, 개요, 사전조건, 트리거(시작되는 사건), 대체흐름
- 포함관계, 일반화 관계, 확장 관계
개념 모델링
- 분석화된 요구사항을 기반으로 실체(Entity)와 그들과의 관게(Relationship) 을 모델링함
- UML 사용
정형분석 Formal Analysis
구문(Syntax) 와 의미(Semantics)
구조적 분석 도구
- 자료 흐름도 DFD : 기능에 의한 데이터 흐름 도형화
- 자료 사전 DD : 데이터 이름과 속성을 표기한 자료, 메타데이터
- NS 차트 : 처리프로세스를 도형을 통해 논리중심으로 표현한 차트
- HIPO : 기능과 데이터 관계를 계층구조로 표현함, 하향식 개발
요구사항 명세
- 정형명세 : 수학적 표현, 이해 어려움
- 비정형명세 : 자연어 기반, 완전한 검증 어려움
UML
- 원활한 의사소통을 위해 사용되는 모델링 언어, 럼바우 제이콥슨
- 사물, 관계, 다이어그램
- 연관(Assosication), 집합(Aggregation), 포함(Composition), 일반화(Generalization), 의존(Dependency), 실체화(Realization)
1. 구조적 다이어그램 (Structual)
- 클래스 다이어그램
- 객체 다이어그램
- 컴포넌트 다이어그램
- 배치 다이어그램(Deployment)
- 복합체 구조 다이어그램(Composite-Structure)
- 패키지 다이어그램
2. 행위 다이어그램 (Behavioral)
- 유스케이스 다이어그램
- 시퀀스 다이어그램
- 통신 다이어그램(Communication)
- 상태 다이어그램(State)
- 활동 다이어그램(Activity)
- 상호작용 다이어그램(Inter overview)
- 타이밍 다이어그램
2.
자료구조 설계기법
- 동적계획법(DP) : 작은 문제의 연장선으로 본다
- 탐욕적(Greedy) : 분기별 최저그이 해
- 재귀적(Rcursive)
- 근사(Approximation) : 근사값 빨리찾기
- 분할정복(Divide conquer) : 잘게 나누는 탑다운
- 퇴각 검색(Back-tracking) : 실패시 이전분기, 깊이 우선 탐색(DFS)
선형구조
- 스택(TOP)
- 큐 : 앞 뒤 초기값 -1
- 데크 : 양방향 입출력
비선형 구조 (Tree)
- 노드와 간선
- 전이진트리(Full) : 노드 0 또는 2개
- 완전이진트리(Complete) : 다채웟는데 마지막 밑에 2개 안됨
- 포화트리(Perfact) : 모두 형제 노드 2개
- 방향 그래프 최대 간선 : n(n-1)
- 무방향 그래프 : n(n-1) / 2 -> 방향 없으니까 A-B, B-A 같음
탐색종류 37
- 선형탐색
- 이분 탐색
- 블록탐색
- 보간 탐색
- 이진트리 탐색
- 해시탐색
정렬 종류 39
- 삽입정렬
- 버블정렬
- 선택정렬
- 쉘 정렬
- 힙 정렬
- 이진 병합 정렬
- 버킷 정렬
응집도 (높은거-기능)
모듈 내부 관계
- 기능적
Functional
: 모두 하나의 문제를 해결하기 위해 수행 - 순차적
Sequentail
: 내 출력을 옆에거가 씀 - 통신적
Communicatinal
: 동일 입력 출력결과로 다른 기능 수행 - 절차적
Procedural
: 순차적으로 수행 - 시간적
Temporal
: 특정 타이밍에 같이 수행 - 논리적
Logical
: 유사 성격 형태 기능을 하나의 모듈에서 - 우연적
Concidental
: 관련없음
결합도 (낮은거 - 자료)
모듈간 관계
- 내용
Contetnt
: 다른 모듈 내부 기능 직접 사용 - 공유
Common
: 모듈외부 선언 변수 참조 - 외부
External
: 인수 전달 없이 내부 데이터 참조 - 제어
Control
: 제어 요소 전달 - 스탬프
Stamp
: 동일 자료 구조 공유 - 자료
Data
: 인수, 매개변수 통해서만 상호작용
소프트웨어 아키텍쳐 패턴
- 계층화 Layerd
- 클라이언트/서버
- 마스터/슬레이브
- 파이프-필터
- 브로커
- 피어투피어
- 이벤트버스
- MVC
- 블랙보드
- 인터프리터
미들웨어 종류
- DBMS
- RPC : 프로시저를 통해 원격 동작 호출
- MOM : 메시지 기반 비동기형 메시지 전달, 분산 시스템 데이터 동기화
- TP-Monitor : 온라인 트랜잭션 처리 감시
- ORB : 객체지향 미들웨어, 누가 어디서든 보장
- WAS : 웹 미들웨어
암호화 알고리즘
- 단방향 : 암호화만 가능 (Hash)
- 양방향 : 암호화/복호화 가능 (대칭키, 비대칭키)
- 대칭키 : 동일 암호키 공유 DES, AES
- 비대칭키 : RSA, DSA, DH, Elgamal...연계 기술 표준 (EAI)
- 대칭키 : 동일 암호키 공유 DES, AES
- EAI : 서로 다른 시스템 연동 가능, 어뎁터 이용
- Point to Point : 미들웨어 없이 직접 연결
- Hub & Spoke : 허브를 통해 전송
- Message Bus(ESB) : 미들웨어(Bus)
- ESB : 서비스 중심 통합
UI 설계 원칙
- 직관성 Intuitiveness
- 유효성 Efficeincy
- 학습성 Learnability
- 유연성 Flexibiity
3.
테스트 원리
- 검증과 확인
- 결함집중, 파레토 : 80% 의 오류는 20% 에서 나타난다
- 살충제 패러독스 : 동일 테스트 반복 실행 시 새로운 결함 발견 불가
- 오류-부재 궤변 : 결함이 없더라도 요구사항 만족 못하면 품질보증 불가
- 테스트케이스 : 테스트 설계 산출물
- 테스트 시나리오 : 테스트케이스들의 동작 순서
정적 테스트
- 실행 없이 코드 구조 분석
- 인스펙션, 동료 검토, 워크스루(명세서 미리 매포)
동적 테스트
- 화이트박스 : 내부로직
- 블랙박스 : 기능중심
화이트박스 테스트
- 기초 경로 검사 Base Path : 코드를 기반으로 흐름도 작성 논리적 순환복잡도 측정
- 제어 구조 검사 Contorol Structure
- 조건 검사 Condition : 논리식 중점
- 루프 검사 Loop : 반복 구조 중심
- 데이터 흐름 검사 Data Flow : 변수 정의와 사용 중심
블랙박스 테스트
- 동등분할
Equivalence Partitioning
: 조건에 유효, 무효값 균등 테스트 - 경계값 분석
Boundary Value
: 경계값에서 오류 많이 발생 - 원인 효과 그래프
Casued Effect
: 입력 데이터 간 출력 영향 - 오류 예측
Error Guesing
: 경험 감각 - 비교
Comparison
테스트 오라클
- 테스트 참 거짓 판단 위해 사전 정의된 참 값 입력 비교
- 참 오라클
True
: 모든 입력값 기대 결과 (모두 오류 검출) - 샘플링 오라클
Samping
: 특정 몇개 입력값 - 휴라스틱 오라클
Heurastic
: 샘플링 개선, 나머지는 추정 - 일관성 검사 오라클
Consistent
: 변경 수행 전과 후 동일한지 확인
V-모델 통합 테스트
- 요구사항분석 - 인수테스트
- 시스템 설계 - 시스템 테스트
- 아키텍쳐 설게 - 통합 테스트
- 모듈 설게 - 테스트 케이스
테스트 하네스
- 테스트 지원 코드 데이터 총칭
- 드라이버 : 하위모듈 호출, 상향식 테스트
- 스텁 : 타 모듈 기능 단순 수행, 하향식 테스트
테스트 커버리지
- 테스트 범위 측정 품질 측정 기준
- 기능기반 : 전체 기능
- 라인 커버리지 : 라인수
- 코드 커버리지
- 구문 Statement : 모든 구문 한번 이상
- 결정 Decision : 결정문 겨로가 참 거짓 결과 수행
- 조건 Condition : 내부 개별 조건식 참과 거짓
- 조건/결정
- 변형조건/결정
- 다중조건
성능측정
- 처리량, 응답시간, 경과시간, 자원 사용률
- 성능 부하 스트레스 점검 : Jmeter, LoadUI, OpenSTA
- 모니터링 : Scouter, Zabbix
품질 평가 - 정형 기술 검토 FTR
- 정형화된 검토 방법, 요구사항 일치여부 등 검토하는 정적 분석 기법
- 체크리스트 개발 등
- 평균 무장애 MTBF, 평균장애 MTTF, 평균 복구 MTTR
#.
데이터베이스 특징
- 실시간 접근성
- 계속적인 진화
- 동시 공유
- 내용에 의한 참조
- 논리적 독립성
스키마
데이터베이스 자료구조와 표현방법 관계를 정의한 제약조건
- 외부스키마 : 사용자의 입장에서 필요한 데이터베이스의 구조
실제 세계에서 존재하는 데이터를 어떻게 표현할지 - 개념스키마 : 모든 사용자 조직의 입장에서 데이터베이스 구조 정의
접근권한 보안정책 무결규칙 포함
- 내부 스키마 : 물리적 저장장치 입장에서 정의
DBMS 필수기능
정의, 조작, 제어
키
- 후보키 : 모든 튜플에 대해 유일성과 최소성 만족
- 기본키 : 후보키 중 튜플 식별을 위해 지정된 속성, 중복과 NULL 금지
- 대체키 : 기본키로 지정된 속성을 제외한 후보키
- 슈퍼키 : 유일성을 만족하는 속성이 없을떄 둘 이상의 속성을 합침, 최소성은 만족하지 못함
- 외래키 : 다른 릴레이션의 기본키를 참조함
데이터모델링
현실 세계의 개념적인 정보를 디지털 논리적인 데이터로 변화하고 문서화하는 기법
데이터 모델 표시 요소
구조(Structure) 연산(Operation) 제약조건(Constraint)
데이터 모델 구성 요소(ERD)
개체(Entity) 속성(Attribute) 관계(Relationship)
개념 데이터 모델링
비즈니스 요구사항을 표현한 상위 수준의 모델로 골격을 설게함
엔티타타입, 기본속성, 관계 업무등 포함하며 E-R 모델로 구현함
논리 데이터 모델링
개념 데이터 모델을 기초로 구체적으로 표현한 모델
데이터 종속성
- 함수종속 : 한 속성이 다른 속성을 유일하게 식별할 수 있는 종속성
- 다치 종속 : 하나의 결정자가 다른 여러 관련없는 속성의 값을 결정하는 종속성
- 조인 종속 : 릴레이션을 셋 이상의 릴레이션으로 분해 후 다시 조인하여 복원될 수 있는 종속성
이상현상 Anomaly
- 삽입 이상 : 의도하지 않은 자료도 삽입됨
- 갱신 이상 : 동일한 데이터의 일부만 수정됨
- 삭제 이상 : 의도치 않은 자료도 삭제됨
정규화
1NF : 도메인 원자성
2NF : 부분함수 종속 제거
3NF : 이행함수 종속 제거
BCNF : 결정자 제거, 후보키 아닌
4NF : 다치종속 제거
5NF : 조인 종속 제거, 후보키를 통하지 않은
무결성
도메인 무결성
열의 값이 정의된 도메인 범위 내에서 표현됨
개체 무결성
중복값 또는 NUll 에 대한 제한을 두어 식별되게 함
참조 무결성
참조 관계가 존재하는 두 개체간 일관성 보증
사용자 정의 무결성
분산 설계
분산데이터베이스란 물리적으로 분산되어 있는 데이터베이스를 단일 데이터 베이스로 인식할 수 있도록 논리적으로 통합위치, 중복, 분할, 장애, 병행 투명성이 제공될 수 있어야 함
반정규화
정규화된 논리 데이터 모델을 운영 단순화를 위해 중복, 통합, 분할 등을 수행하는 모델링 기법
수행속도 향상 성능향상
ETL 데이터 전환
데이터 이을 위한 추출 Extraction
변환 Transformation
적재 Loading
관계대수
구문
CASCADE
: 같이 삭제RESTRICT
: 삭제 취소
UPDATE 테이블 SET 컬럼명 = 값
ALTER 테이블 ADD 필드명 데이터타입
UPDATE 테이블 SET 컬럼명 = 값
DROP(TRUNCATE) 테이블 SET 컬럼명 = 값
INSERT INTO 테이블 VALUES (값)
INSERT INTO 테이블 (컬럼명) VALUES (값)
UPDATE 테이블 SET 컬럼명 = 값
DELETE FROM 테이블
SELECT ... WHER ... IN(3,4,5)
GRANT 유형 TO 대상
REVOKE 권한 FROM
CREATE INDEX 이름 ON 테이블 컬럼
트랜잭션 특징 ACID
- 원자성
Atomicity
: 전부수행 낫수행 - 일관성
Consistency
: 트랜잭션 전후 동일 - 고립성
Isolation
: 다른 트랜잭션 영향 불가 - 지속성
Durability
: 트랜잭션 결과 영구보존
절차형 SQL
- 순차적인 SQL 의 실행, 분기 반복
- 프로시저, 사용자 정의 함수, 트리거
- DECLARE : 명칭 변수 인수 타입 정의
- BEGIN-END : 구현영역
##@ 시스템 카탈로그
- 데이터베이스 객체 정의명세, 데이터 사전 DD
PL/SQL
프로그래밍 언어 특성 통합 확정형 SQL
APM
안정적인 시스템 운영 모니터링 도구
##@ 병행제어 (Concurrency Control) 동시성 제어
- 활용도를 최대화하기 위해 여러 사용자들의 데이터베이스 공동사용 최대화 기술
- 분실, 모순성, 연쇄복귀 등 문제점 있음
로킹
- 갱신중 트랜잭션데이터를 다른 트랜잭션이 접근 못하게 막음
- 로크 단위 크면 로크 개수 적어지고 단순하고 공유도 낮고 오버헤드 감소됨
타임스탬프
트랜잭션 순서되로 될 수 있도록 타임 스탬프 부여하는 직렬화 기법
낙관적 병행 제어 (Optimistic)
트랜잭션 수행동안은 검사 X
다중 버전 병행제어 (MVCC)
회복
- Undo, Redo
- 즉시갱신 : 결과 즉시 반영, 문제 발생하면 Undo
- 지연갱신 : 갱신 결과 로그 기록 후 트랜잭션 완료 시 한번에 Redo
- 트랜잭션장애 : 트랜잭션 논리 오류
- 시스템 장애 : 하드웨어 오작동
- 미디어 장애 : 디스크 고장
#.
보안
SW 개발 보안 요소 CIA
- 기밀성
Confidentality
: 인가된 사용자만 정보 접근 가능 - 무결성
Intergrity
: 위조, 변조, 삭제되지 않음 - 가용성
Availablity
: 인가된 사용자가 문제없이 정보 사용 가능
정보 보호 목표
- 인증성
Authentication
: 식별된사용자 자격 내용검증 유효성 확보 - 책임 추적성
Accountability
: 행동 추적 - 부인 방지성
Non-Repudiation
: 송수신 사실 증명 뷘 불가
SW 결함 등급
- 복구에 필요한 우선순위 결정
- 영향도(impact) * 긴급도(urgency)
보안 구현 도구
MBSA : 윈도우 보완 설정
NMAP : 서버 관리자 입장, 포트 확인
NBTScan : NetBios 정보를 얻기 위해 점검
시스템인증
- 1.로그인
- 2.세션
- 3.SSO
주요 인증도구
- 1.디지털 서명 : 송신자 신원 증명, 비밀키 암호화 메시지를 공개키로 해독
- 2.디지털 인증서 : 공개키 소유한 사용자에 대해 인증기관의 서명용 개인키로 전자서명
- 3.메시지 인증 코드 : 메시지 무결성 코드, 해시함수 이용
인증 프로토콜
- AAA : 인증(Authenticaiton), 권한부여(Authorization), 계정관리(Accounting)
- PAP : 접근 제한 로그인할 수있도록 아이디 패스워드 인증
- CHAP : PAP 보완, 시스템 측 인증 주관
- EAP : 다수 인증 프로토콜캡슐화, 유무선 LAN
- RADIUS : 네트워크 연결, 서비스 수신을 위해 중앙집중 AAA 관리제공, UDP 에 의해 전달
- DIAMETER : RADIUS 단점 보완
접근 통제 정책
1. 임의 접근 통제 (DAC)
사용자 신원에 따라 접근 권한 부여
2.강제 접근 통제 (MAC)
주체 객체 등급 비교 접근 권한 부여
3.감사 추적
모든 활동 기록
접근 통제 정책
- 신분 기반 정책
- 규칙 기반 정책
- 역할 기반 정책
바이러스
- 복제, 은폐, 파괴를 통해 시스템 마비 파괴
- 가로막기(Interrruption), 가로채기(Interception), 수정(Modification), 위조(Fabirication)
보안공격 기법들
- 악성코드
- 트로이 목마 : 정상파일인척 숨기
- 스파이웨어 : 동의 없이 설치되어 정보 수집
- 웜 : 자기복제
- 키로거
- 랜섬웨어
- 소극적 보안 공격
- 스캐닝 : 장비구성 포트 등 취약점 파악
- 스니핑 : 트래픽 훔쳐보는 것
- 스누핑 : 네트워크상 중요정보 몰래 획득
- 패스워드 공격
- 무차별 대입 공격 : 전부 넣기
- 크랙 : 소프트웨어 불법복제
- Dos (서비스 거부 공격)
- SYN Flooding : TCP-3Way-HandShake 취약점 공격, 다량 SYN 패킷 전송
- Smurf Attack : ICMP 취약점 이용 공격
- DDos : 다수의 좀비 PC 생성
- 블루투스
- 블루스나핑 : 임의파일 접근
- 블루버깅 : 취약 연결관리 악용, 임의동작 실행
- 블루재킹 : 스팸메일 익명
- 기타
- 중간자 공격 Man in Middle : 중간에 껴서 네트워크 통신 조작
- 재전송 공격 : 유출 암호 토큰 재전송
- Ping of Death : 규정 크기 이상 ICMP 패킷 전송
- SQL Injection
- XSS : 웹사이트 스크립트 심기, 크로스 사이트 스크립팅
- Zero Day Attack : 보안 취약점 발표 전 공격
- Root Kit : 불법 프로그램 모음
- BackDoor : 몰래 컴퓨터 접속하기 위해 설치한 출입통로 악성코드
- 사전공격 Dictionary Attack : 원본데이터 해시값 미리 계산
- 세션 하이재킹 : 세션인증 가로체기
- 스푸핑 : 다른 사람인척, Mac 주소나 IP 주소 바꾸기
- 버퍼 오버플로우 : 메모리 넘게 코드 실행, 스택오버플로우 or 힙 오버플로우
- 스택가드(복귀주소 변수 사이 값 지정), 스택 실드(수행 완료 시 저장값과 비교) 로 방지 가능
- 사회공학 : 친분 심리 이용하는 것.. 피싱, 보이스피싱, 스미싱, 파밍
- LAND : 패킷 출발지 주소나 포트 변경
- Watering Hole : 자주 방문하는 웹 사이트 털기
- Dark Data : 저장만 하는 다량의 데이터
- Typosquatting : 사이트 주소 타이핑 실수
침입 방지 시스템 IPS
외부 침입 차단 네트워크 보호
- 스크리닝 라우터 : 내부 진입 패킷 헤더 분석
- 베스천호스트 : 게이트웨이 역할 방어 기능, 프록시 서버 설치
- 침입 탐지 시스템 IDS : 공격 탐지 가능, 차단 불가
대칭키 암호화(암호키==복호키)
DES, AES, SEED, ARIA, RC4
공개키 암호화(암호화 키 공개, 복호키 비밀)
RSA
해시 암호(단방향 변환 가능)
SNEFRU, MD4, MD5, N-NASH, SHA
블록 암호 (일정크기 블록)
DES< SEED, AES, ARIA
스트림 암호 (순차적)
RC4
DES
64비트 블록, 바이트(8비트) 별 1비트 패리티비트
AES
DES 대체, 128비트 블록, 가변길이 키(128,192,256)
IDEA
DES 대체, 64비트 블록, 128비트 키
RSA
공개 키 기반, 소인수 분해 어려움
DSA
미국 표준, ElGamal 알고리즘
프로그래밍 언어
프로그래밍 언어 번역기
- 어셈블러 : 어셈블리어 코드 번역, 기계 1:1
- 컴파일러 : 고급언어코드 전체 번역, 번역 느림 실행 빠름
- 인터프리터 : 코드 행 단위 번역, 속도 빠름 실행 느림
객체지향 구성요소
- 클래스
- 객체
- 인스턴스
- 메시지 : 서로 주고받는 인터페이스
- 메소드
객체지향 종류
- 캡슐화 Encapsulation
- 정보은닉 Information Hiding
- 추상화 Abstract
- 상속 Inheritance
- 다형성 Polymorphism
럼바우의 객체 모델링
- 객체 모델링 : 객체다이어그램 ,객체간 관계
- 동적 모델링 : 상태, 활동, 다이어그램 활용
- 기능 모델링 : 자료 흐름도 DFD 활용
객체지향 설계 원칙 SOLID
SRP
단일첵임 : 모든 기능 하나의 문제OCP
개방폐쇠 : 기존 코드 수정 없이 기능 추가LSP
리스코프 치환 : 하위클래스는 상위 클래스 기능 호환ISP
인터페이스 분리 : 다수의 구체적 인터페이스 구현DIP
의존 역전 : 상위 클래스에 영향 X
GoF 디자인 패턴
생성패턴 Creational
- Factory Method: 객체 생성 방식을 서브클래스에서 정의하도록 한다.
- Abstract Factory: 관련 객체들의 군을 생성하기 위한 인터페이스를 제공한다.
- Builder: 복잡한 객체를 단계별로 생성할 수 있도록 한다.
- Prototype: 기존 객체를 복사하여 새 객체를 생성한다.
- Singleton: 클래스의 인스턴스를 하나만 만들고, 이를 전역적으로 접근할 수 있도록 한다.구조 패턴 Structural
- Adaptor: 호환되지 않는 인터페이스를 다른 인터페이스로 변환한다.
- Bridge: 구현부와 추상부를 분리하여 각자 독립적으로 변형할 수 있게 한다.
- Composite: 객체를 트리 구조로 구성하여 부분-전체 계층을 표현한다.
- Decorator: 객체에 추가 책임을 동적으로 부여한다.
- Facade: 서브시스템의 인터페이스를 단순화하여 제공한다.
- Flyweight: 공유를 통해 많은 작은 객체들을 효과적으로 지원한다.
- Proxy: 다른 객체에 대한 접근을 제어하는 대리자 역할을 한다.행위 패턴 Behavioral
- Interpreter: 언어의 문법을 정의하고 해석한다.
- Template Method: 알고리즘의 구조를 정의하고 세부 구현은 서브클래스에서 처리한다.
- Chain of Responsibility: 요청을 처리할 기회를 여러 객체에 부여한다.
- Command: 요청을 객체로 캡슐화하여 파라미터화된 요청을 저장하거나 로그로 남길 수 있다.
- Iterator: 컬렉션의 요소들을 순차적으로 접근할 수 있도록 한다.
- Mediator: 객체 간의 복잡한 통신을 캡슐화하여 단순화한다.
- Memento: 객체의 상태를 저장하고 복원할 수 있도록 한다.
- Observer: 객체의 상태 변화에 따라 다른 객체들이 통보받고 갱신된다.
- State: 객체의 상태에 따라 행위를 변경한다.
- Strategy: 행위를 클래스화하여 알고리즘을 캡슐화하고 교체할 수 있게 한다.
- Visitor: 객체의 구조를 변경하지 않고 새로운 기능을 추가할 수 있도록 한다.
오버라이딩, 오버로딩
- 오버라이딩 : 상위클래스 메소드 재정의
- 오버로딩 : 동일 이름 메소드, 변수 유형 기준 구분
운영체제
레지스터
CPU 연산에 필요한 데이터 및 상태값 일시 저장 장치
제어장치 CU (Control Unit)
내부 모든 장치 동작, 연산 제어
연산장치 ALU (Arithmetic Logic Unit)
제어장치 명령에 따른 실제 연산 수행
시스템 버스
장치간 정보 교환을 위해 물리적 연결된 회선
- 내부버스 : 내부 CPU 간
- 외부버스
- 주소버스 : 기억장치 주소값 전달 단방향
- 데이터버스 : 데이터 이동경로 제공 양방향
- 제어버스 : 주소버스 데이터버스 제어
유닉스 구성요소
- 커널 : 핵심 시스템
- 쉘 : 사용자 명령 해석
- 유틸리티
프로세스
메모리 적재되어 실행되는 프로그램
PCB
- 프로세스 정보 기록 테이블
- 프로세스 생성시마다 생성됨
- Time Slice 에 의해 문맥 교환 수행
- 작을수록 교환 수 인터럼트 수 오버헤드 증가
프로세스 상태
- 준비 : CPU 할당 대기
- 실행 : 할당받아 작업진행
- 대기 : 입출력 처리 위해 잠시 정지
- Dispatch : 준비를 실행으로
- TimeRunout : 작업 끝내지 못해 준비로 컴백
- Block : 실행 프로세스가 입출력 처리 위해 대기로 변경
- Wake up : 대기를 준비로
인터럽트
수행중인 프로세스 특정 요인에 의해 잠시 중지 후 복귀
프로세스 통신 IPC (Inter Process Communication)
프로세스들이 통신을 하기 위해 사용하는 특별한 기법
스레드
프로세스 내의 실행되는 흐름의 단위
프로세스 스케쥴링
비선점형 (못뺏음) : FIFO, SJF, HRN
- FIFO : 도착순 실행
- SJF (Short Job First) : 짧은거 먼저, 기아상태위험
- HRN (Highest Response-ratio Next) : 대기시간 긴거 먼저 실행
- 우선순위 : (대기시간 + 실행시간)/ 실행시간
선점형 (하던거 뻇음) : RR, SRT, MFQ
- RR : 동일 TimeSlice, 똑같은 시간만큼 반복 실행 순서대로
- SRT (Short Remaning Time) : 남은 시간 짧은거 먼저
- MFQ : 우선순위부여 각 큐에 따라서
상호배제 Mutex
하나의 프로세스만 임계구역에 접근 가능하도록 다른애들 막는거
임계구역 Critical Section
다수 프로세스 공유 자원 영역
세마포어 Semaphore
- 임계 구역 지키기 위한 상호 배제 알고리즘 개선한 것
- 바쁜 대기 현상 방지, 잠시 재웠다가 나중에 깨움
교착상태 Dead Lock
다수의 프로세스가 같은 자원할당을 요구하며 무한 대기
교착상태 조건
- 상호배제
Mutual exclusion
: 한 리소스는 한번에 한 프로세스만 사용 가능 - 점유대기
Hold & wait
: 리소스 하나 이상 점유하며 다른프로세스가주는 리소스 기다림 - 비선점
No preemption
: 반환할때까지 기다림 안뺏구 - 환경대기
Corcular wait
: 각각이 다음 프로세스가 요구하는 자원을 가짐
주기억장치 관리
반입 전략 Fetch
보조기억 장치 데이터 언제 주기억장치로?
- 요구 Demand : 프로그램이 참조 요구시 적재
- 예상 Anticipatory : 실행중인 프로그램 차조 데이터 예상 적재
배치 전략 Placement
- 최초적합 First FIt: 첫번째 넣기
- 최적적합 Best Fit: 여유공간 조금 남기고 넣기
- 최악적합 Worst Fit: 여유공간 많이 남기는데 넣기
교체 전략 Replacement
FIFO, LRU, LFU, NUR, OPT, SCR
단편화 Fragmentation
공간 할당 반납에 따라 공간이 조각나 사용 못하게 되는 공간
- 내부 : 데이터 및 프로그램 할당 후 남은 곳
- 외부 : 데이터 및 프로그램 너무 커서 할당 못한 곳단편화 해결방안
- 통합 Coalescing : 인접한거 하나로
- 압축 Compaction : 떨어진거까지 하나로
오버레이
- 주기억장치보다 큰 프로그램 실행 기법
- 프로그램 분할 후 실행 필요한 공간을 주기억장치에 적재 (공간 부족시 불필요 조각 중첩적재)
스와핑
프로그램 전체 적재 사용 후 다른 프로그램으로 교체
- swap in : 보조 -> 주기억
- swap out : 주기억 -> 보조
가상기억장치 관리
보조기억장치 일부를 주기억장치처럼 사용
페이징 기법
주기억 장치 영역 동일한 페이지와 페이지 프레임으로 나눈 후 페이지를 페이지 프레임에 적재 (내부단편화)
세그멘테이션
프로그램을 다양한 크기 논리적 세그먼트로 나누고 주기억장치에 적재 (외부단편화)
페이지 교체 알고리즘
- FIFO : 먼저온거 먼저 실행
- LRU (Least Recently Used) : 가장 오래 안쓴거 교체 - 최근거 우선
- LFU (Least Frequently Used) : 가장 조금 쓴거 교체 - 많이 쓴거 우선
- NUR (Not Used Recently) : LRU 처럼 최근에 안쓴거
- OPT : 가장 오래 사용하지 않을 거 교체
- SCR : 오랫동안 있던 것중 자주 사용되는거 방지
워킹 셋 Working Set
프로세스가 특정 단위 시간 동안 자주 참조하는 페이지 집합
- 페이지 부재 빈도 PFF: 페이지 부재율에 따라 주기억장치 페이지 프레임 바꾸는 거
- 프리페이징 Prepaging: 예상되는 모든 페이지 한번에 적재
- 스레싱 Thrashing: 프로세스 처리 시간보다 페이지 교체 시간이 더 긴거
FCB File Control Block
파일 접근 시 파악해야할 팡리 관리정보저장 블락
RAID
하드디스크 여러개를 하나처럼 사용
디스크 스케쥴링
- FCFS : 먼저온거 처리
- SSTF : 디스크 헤드에서 가장 가까운 트랙 요청
- SCAN : 헤드 방향 전부 처리 후 반대방향 처리, 마지막까지 항상감, 엘리베이터 기법
- C-SCAN : 항상 안에서 밖으로
- LOCK, C-LOCK : SCAN 보완 방식 없으면 방향 전환
네트워크
데이터 통신 방식 3가지
- 단방향 Simplex : 전송자 수신자 정해둠 (티비)
- 반이중 Half-duplex : 전송 수신 역할 변경 가능 (무전기)
- 전이중 Full-duplex : 전송수신 동시가능데이터 전송 방식 2가지
- 동기식 : 프레임 단위전송, 복잡 고효율
- 비동기식 : 문자단위비트 전송, 단순 저렴 비효율전송 제어 문자SYN (문자동기) ACK, NAK (긍정, 부정응답)
허브
데이터 송수신 위해 다수 컴퓨터 연결
- 더미허브 : 전체 대역폭 나눠씀
- 스위칭 허브 : 필요한 컴퓨터에 대역폭 할당리피터신호증폭브릿지 (데이터링크)서로 다른 LAN 과 LAN 연결스위치허브 확ㅈ아, 전송 중 패킷 충돌 일어나지 않게 특정 포트로만 전송라우터최적 경로설정, 서로 다른 프로토콜 사용 네트워크 연결게이트웨이통신망 접속 관문, 반드시 거쳐야 함
오류 제어 방식
FEC : 오류 검출 후 재전송 없이 스스로 수정 (순방향)
- 해밍코드 : 오류검출(2bit) 직접수정(1bit)
- 상스코드 : 경계값 사용 여러비트 오류 수정BEC : 오류 발생 시 송신측에 재전송 요구 (역방향)
- 패리티 검사 : 짝수 또는 홀수개가 되도록 패리티비트추가
- 블록합 검사 : 패리티 검사 단점 보완, 패리티비트와 패리티 문자 함께 전송
- CRC : 다항식 코드사용 오류 검출
ARQ (Automatic Repeat reQuest)
- Stop and Wait ARQ : 응답까지 기다림, ACK 안오면 오류난거
- Go Back and ARQ : 여러개 보내고 기다리고 신호 받으면 나머지 전송, 오류시 전부 재전송
- Selective Repeqt ARQ : 오류 난 부분만 재전송
- Adaptive ARQ : 프레임 기링 동적 변경 전송
네트워크 형태 (topology)
버스형, 성형, 링형, 계층형, 망형
패킷교환 방식 트래픽 제어 기법
- 흐름제어(Flow) : 속도제어, 슬라이딩윈도우, ARQ
- 혼잡 제어(Congestion) : 대기시간 제어
- 교착상태 회피(Deadlock)
라우팅
데이터 패킷 전송에 있어 가장 빠르고 안정적인 경로 설정
- 내부 라우팅 프로토콜 : RIP, IGRP, EIGRP, OSPF
- 외부 라우팅 프로토콜 : BGP
통신 프로토콜 구성 3요소
구문(Syntax), 의미(Sementics), 시간(Timing)
OSI 7 Layer
- Phsical : 물리적 신호 교환
전송회선, 허브, 리피터
- DataLink : 정보 오류 흐름 관리, MAC 주소 통신 프레임 전송
브릿지, 스위치
- Network : 주소 선정 패킷 전달, IP 부여 라우팅 기능
라우터, L3 스위치
- Transport : 신뢰성 있는 데이터 송수신 제공, 오류검출 복구 흐름제어
TCP,UDP
- Session : 양 끝단 통신관리, 대화제어, 동기점을 통한 오류복구
- Presentation : 표현상 차이 없이 통신가능, 독립성 제공, 코드변환 압축 암호화
- Application : 호환성 문제 해결, 최종 목적지, 전문(Message)
HTTP, FTP, SMTP, POP3, IMAP, Telnet
TCP/IP
- Network Interface (
1. Phsical
,2. DataLink
) - Internet,Network (
3. Network
) : 패킷 또는 데이터그램 단위 데이터 교환
- ARP : IP -> MAC
- RARP : MAC -> IP
- ICMP : 오류 메시지 수신
- IPSEC : IP 보안 개선
- Transport(
4. Transport
)
- TCP : 불안정한 IP 위에서 안정적으로 송신하는 방법 제공
- UDP : 신뢰성 보장하지않는 비연결형 통신 제공
- Application (
5. Session
,6. Presentation
,7.Application
)
이메일 : SMTP(전송), POP3(서버에서 다운로드), MIME(멀티미디어), IMAP(헤더분석), S/MIME(보안성)
원격제어 : telnet(23 평문), SSH(22 암호화)
웹서비스 WWW : HTTP, HTTPS(SSL), S-HTTP
파일전송 FTP : TFTP(간단) Text(ASCII), Binary(이미지), RFTP(멀티미디어)
IPv4 IPv6
- IPv4 : 32bit = 8bit* 4개
- IPv6 : 128bit = 16bit* 8개
IP 전송방식 3가지
- 유니캐스트 : 1:1 방식
- 멀티캐스트 : N:M 방식
- 브로드캐스트 : 같은 영역(도메인) 내 모두 한번에 전송
IPv4 주소 부족 해결방안
- CIDER : 클래스체계 무시 네트워크와 호스트 주소 임의로 구분
- DHCP : 자동 IP 할당
- NAT : 사설 IP 주소를 공인 IP 주소로 변환
서브넷팅
배정받은 네트워크를 여러개로 나누어 사용함
- FLSM : 동일한 사이즈로 나눔
- VLSM : 동일하지 않은 크기로 나눔
'CS & 알고리즘 > CS (컴과학)' 카테고리의 다른 글
정보처리기사 모의문제(1) (3) | 2024.07.23 |
---|---|
개발에서 도메인의 다양한 의미 (0) | 2024.07.03 |
쿠키와 세션의 특징 및 차이 (0) | 2023.01.28 |