정보처리기사) 실기 개념 정리
- 최근 미뤄뒀던 정보처리기사 실기를 준비하며… 꼭 외워야 하는 내용 정리
결합도(Coupling)
- 모듈과 모듈 사이의 관련성이 어느 정도인가를 나타내며, 관련성이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 작아진다. 자료 결합도가 제일 낮고 내용 결합도가 가장 높다.
- 자료 결합도의 품질이 가장 높고 내용 결합도의 품질이 가장 낮다.
-
자스제외공내
자료 결합도(Data Coupling)
: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 상호 작용이 일어난다.스탬프 결합도(Stamp Coupling)
: 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우제어 결합도(Control Coupling)
: 단순 처리할 대상인 값만 전달하는 것이 아니라 어떻게 처리해야 한다는 제어요소가 전달되는 경우외부 결합도(External Coupling)
: 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 때의 경우로 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 때 주로 발생공통 결합도(Common Coupling)
: 파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우내용 결합도(Content Coupling)
: 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우
응집도(Cohension)
- 모듈 내부의 구성요소 간 관계의 밀접 정도로 평가되며, 응집도가 높을수록 필요한 요소들로 구성되고 낮을수록 요소들 간의 관련성이 적은 요소들로 구성된다.
- 기능적 응집도의 품질이 가장 높고 우연적 응집도의 품질이 가장 낮다.
-
기순통절시논우
기능적 응집도(Functional Cohension)
: 모듈 내부의 모든 기능이 단일한 목적을 위해 수행된다.순차적 응집도(Sequential Cohension)
: 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용하는 경우통신적 응집도(Communication Cohension)
: 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우절차적 응집도(Procedural Cohension)
: 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우시간적 응집도(Temporal Cohension)
: 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우논리적 응집도(Logical Cohension)
: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우우연적 응집도(Coincidential Cohension)
: 모듈 내부의 각 구성 요소들이 연관이 없는 경우
소프트웨어 아키텍처 패턴
- 소프트웨어 설계 시 참조 가능한 솔루션
- 일반적으로 발생하는 문제점들에 대해 일반화되고 재사용 가능한 솔루션
요구공학
- 요구사항을 도출, 분석, 명세, 확인하는 구조화된 활동
요구사항 분석 기법
자료 흐름 지향 분석
: 데이터 흐름도(DFD)와 자료 사전(DD)을 통해 분석객체지향 분석
: 시스템 기능과 데이터를 함께 분석해 UML로 표준화
요구공학 프로세스
개발 단계(CMM Level 3)
: 요구사항 분석관리 단계 (CMM Levle 2)
: 설계 - 개발 - 테스트를 거치는 동안 요구사항 잘 만족하는지 확인
요구공학 개발 단계 구성 (CMM Level 3)
도출
: 이해관계자 식별, 고객 분석분석
: 분류 -> 개념 모델링 생성 -> 할당 -> 협상 -> 분석명세
: 정형화된 형태로 명세 작성확인
: 요구사항 이해를 확인하고 문서가 완전한지 검증
요구사항 도출 기법
인터뷰
: 직접 대화브레인스토밍
: 말하기 쉬운 분위기 속에서 비판없이 의견을 수용델파이 기법
: 전문가 경험 활용롤 플레잉
: 각자 맡은 역을 연기워크숍
: 단기간 집중하여 정보 획득 후 공유(사전 준비 필요)설문 조사
요구사항 분석 단계
요구사항 분류
: 기능적 요구사항 (시스템이 제공해야 할 기능) vs 비기능적 요구사항(시스템이 준수해야 할 제약사항)개념 모델링 생성
: 주로 UML 사용. 요구사항을 쉽게 이해할 수 있도록 개념적 표현요구사항 할당
: 요구사항 만족을 위한 아키텍처 구성요소 식별요구사항 협상
: 충돌되는 경우 합의, 우선순위 부여정형 분석
: 정형화된 언어를 통해 수학적 기호로 표현
요구사항 명세 기법
비정형 명세 기법
: 자연어 기반 서술정형 명세 기법
: 수학적 표기법으로 서술
요구사항 명세 원리 및 검증 항목
명확성
: 각 명세 내용은 하나의 의미만 부여완전성
: 모든 요구사항이 포함되어야 함검증 가능성
: 달성 정도를 확인할 수 있어야 함일관성
: 모순이 없어야 함수정 용이성
: 쉽게 수정할 수 있어야 함개발 후 이용성
: 운영 및 유지보수에 이용이 가능해야 함추적 가능성
: 추적이 가능해야 함
요구사항 확인 기법
- 정형 기술 검토(TCR)
- 프로토타이핑 활용
- 테스트 케이스를 통한 확인
- CASE 도구 활용
- 베이스라인 검증
- 요구사항 추적표 (RTM : Requirement Tracebility Matrix) 통해 검증
- 요구사항 정의서 기준으로 개발단계별 최종 산출물이 어떻게 변경되었는지 확인 가능한 문서
정형 기술 검토 (TCR) 기법
동료 검토 (Peer Review)
: 작성자가 설명하고, 이해 관계자들이 설명을 들으며 결함 발견워크 스루 (Walk Through)
: 검토 자료 사전 배포 후, 짧은 시간 동안 회의 진행인스펙션 (Inspection)
: 저작자가 아닌 다른 전문가가 검토- 참가자 구성
주재자(Moderator)
: 참가자를 선정하고 계획 및 주재작성자
낭독자
기록자
검토자
관리 리뷰 (Management Review)
: 프로젝트 진행 상황을 전반적으로 검토기술 리뷰 (Technical Review)
: 명세를 준수하고 있는지 검토감사 (Audit)
: 제품이 표준이나 가이드라인을 준수하는지 검토. 제품 제공자, 소비자, 제 3기관이 수행
요구공학 관리 단계 구성(CMM Level 2)
협상
: 구현 가능한 기능 협상기준선 설정
: 기준선(베이스라인) 설정베이스라인
: 개발 과정의 산출물의 변화를 통제하는 시점
변경관리
: 형상통제 위원회를 운영하여 변경 관리CCB
: 형상 관리의 방침을 정하고 산출물을 검토하는 조직
확인 및 검증
: 요구사항에 부합하는지 확인
미들웨어
- 컴퓨터와 컴퓨터 간 연결 및 연결 관리를 돕는 소프트웨어
- Weblogic, Jeus, Tomcat 등
네트워크
- 원하는 정보를 수신자에게 정확하게 전달하기 위한 인프라
- LAN : 근거리 네트워크
- WAN : 광대역 네트워크
네트워크 프로토콜
- 컴퓨터(통신 장비) 간 메시지 교환을 위한 규약
단편화
: 전송이 가능한 상태로 나누는 기법재조립
: 단편화된 조각을 복원하는 기법(송신측)동기화
: 송신-수신 시점 맞추는 기법
프로토콜
- 서로 다른 시스템 간 데이터 교환을 위한 규약
프로토콜의 기본 3요소
구문(Syntax)
: 정보 전송을 위한 데이터 형식의미(Semantic)
: 정보 전송을 위한 제어 정보타이밍(Timing)
: 정보 전송을 위한 순서와 속도 조절
OSI 7계층
- 네트워크 통신에서 충돌 문제를 최소화하고자, 국제표준화기구(ISO)에서 제시한 네트워크 통신 규약
물데네트세표응
!
물리 계층
- 데이터를 전기적인 신호로 변환시켜 통신
단위
: 비트프로토콜
: RS-232C장비
: 허브, 리피터
물리 계층 장비
허브
: 여러 대의 컴퓨터를 연결해 네트워크로 보내거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 보내는 장비리피터
: 디지털 신호를 증폭시키는 장비
데이터링크 계층
- 노드 간 오류 제어, 흐름 제어, 회선 제어
단위
: 프레임장비
: L2 스위치, 브릿지, NIC, 스위칭 허브프로토콜
: HDLC, PPP, Frame Relay, ATM
데이터링크 계층 장비
L2 스위치
: 목적지 MAC 주소를 기반으로 빠르게 데이터를 전송하는 장비Store and Forwarding
: 데이터를 전부 받은 후 처리Cut Through
: 목적지 주소만 확인 후 바로 전송Fragment Frame
: 앞 64비트만 읽어 에러 처리 후 전송
브릿지
: LAN과 LAN을 연결하는 장비NIC
: 네트워크 인터페이스 카드. 외부 네트워크와 빠른 통신을 위해 컴퓨터 내에 설치되는 장비스위칭 허브
: 스위치 기능을 가진 허브
데이터링크 계층 프로토콜
HDLC
: 점대점, 다중점 통신에 사용하는 프로토콜PPP
: 통신 노드 간 연결을 위한 프로토콜Frame Relay
: 프레임 간 중계기능, 다중화 기능을 통해 빠른 데이터 전송이 가능한 고속 전송 기술ATM
: 고정 크기 단위로 전송하는 비동기식 전송 기술
네트워크 계층
- 데이터 전송을 위한 최적의 경로 설정
단위
: 패킷장비
: L3 스위치, 라우터, 게이트웨이, 인터넷 공유기, 망(백본) 스위칭 허브프로토콜
: IP, 라우팅 프로토콜, ARP, RARP, ICMP, IGMP
네트워크 계층 장비
L3 스위치
: 3계층에서 동작하는 스위치 (L2 스위치 기능 + L3 라우터 기능을 모두 갖춘 장비)라우터
: 최적의 경로를 지정하고 경로에 따라 전송시키는 장비게이트웨이
: 다른 통신망에 접속할 수 있게 해주는 장비인터넷 공유기
: 하나의 인터넷 라인을 여러 컴퓨터가 공유할 수 있게 해주는 장비망(백본) 스위칭 허브
: 광역 네트워크를 커버하는 스위칭 허브
네트워크 계층 프로토콜
IP
: 패킷 단위의 네트워크 통신 프로토콜라우팅 프로토콜
: 최적의 데이터 전송 경로를 설정하는 프로토콜ARP
: IP주소(3계층)를 MAC 주소(2계층)으로 변환하는 프로토콜RARP
: MAC 주소는 알지만 IP 주소를 모를 때 사용하는 프로토콜ICMP
: IP 패킷 처리 시의 문제를 알려주는 프로토콜, 신뢰성없는 IP를 대신하여 송신측으로 네트워크의 IP 상태 및 에러 메시지를 전달해주는 프로토콜IGMP
: 멀티캐스트 실시간 전송을 위해 사용하는 프로토콜(화상회의 등)IPSec
: 네트워크 계층에서 사용하는 보안 프로토콜. 인증 헤더 + 암호화를 이용. MAC + 암호화를 통해 인증 + 기밀성 제공
전송계층(Transport)
- 종단 간 신뢰성있고 효율적으로 데이터 전송
단위
: 세그먼트장비
: L4 스위치프로토콜
: TCP, UDP
전송계층 장비
L4 스위치
: OSI 4계층에서 네트워크 단위를 연결하는 장비. TCP/UDP 등 스위칭 수행
전송계층 프로토콜
TCP
신뢰성 보장
: 패킷 손실, 중복이 없도록 보장 (IP 계층 보완)연결지향적
: 연결 회선을 통해 통신이 이뤄짐흐름제어
: 송신-수신 속도 일치시킴혼잡제어
: 네트워크 혼잡도에 따라 송신율 제어
TCP 헤더 구조
Source Port Number
Destination Port Number
Sequence Number
: 신뢰성과 흐름 담당Acknowledgement Number
: 승인 번호(수신을 기대하는 다음 번호)HLEN
: 헤더 길이Flag Bit
: 값 유효 여부 등을 표시하는 플래그Window Size
Checksum
: 에러 확인Urgent Pointer
: 시퀀스 번호로부터의 옵셋Options and Padding
UDP
비신뢰성
: 메시지의 도착을 보장하지 않음비순서화
: 수신된 메시지 순서 맞추지 않음- 실시간 응용 및 멀티캐스팅 가능
- 단순 헤더 (고정 크기 헤더)
UDP 헤더 구조
Source Port Number
Destination Port Number
UDP Length
UDP Checksum
Data
세션계층 (Session)
- 송수신간(단말기 사이) 연결을 제어
단위
: 데이터프로토콜
: RPC, NetBIOS, SSH, SSL/TLS
세션계층 프로토콜
RPC
: 원격 프로시저 호출. 다른 주소 공간에 있는 프로세스 실행 가능NetBIOS
: 응용계층의 애플리케이션에 API 제공SSH
: 보안 쉘. 원격 호스트에 접근하기 위한 프로토콜SSL/TLS
: 안전한 데이터 전송을 위한 보안 프로토콜 (4계층(응용) - 7계층(전송) 사이에서 안전한 데이터 전송을 보장)
표현계층 (Presentaion)
- 응용프로그램의 데이터를 통신에 알맞은 형태로 만들거나, 하위 계층의 데이터를 사용자가 이해할 수 있는 형태로 만드는 계층
단위
: 데이터프로토콜
: JPEG, MPEG
표현계층 프로토콜
JPEG
: 이미지를 위한 표준 규격MPEG
: 멀티미디어를 위한 표준 규격
응용계층 (Application)
- 사용자가 OSI 환경에 접근할 수 있도록 서비스(인터페이스)를 제공하는 계층
단위
: 데이터프로토콜
: HTTP, FTP, SMTP, POP3, IMAP, Telnet
응용계층 프로토콜
HTTP
: 인터넷에서 데이터를 주고받기 위한 텍스트 기반의 프로토콜FTP
: 서버-클라이언트 간 파일 전송을 위한 프로토콜SMTP
: 이메일을 보내기 위한 프로토콜POP3
: 이메일을 가져오기 위한 프로토콜 (로컬 PC에 저장 후 불러옴)IMAP
: 이메일을 가져오기 위한 프로토콜 (메일 서버에서 불러옴)Telnet
: 네트워크 연결에 사용하는 응용계층의 프로토콜
IPv4 IPv6
IPv4
- 32bit(=4byte) 주소 체계를 갖는 인터넷 프로토콜
- 8bit * 4 = 32bit
- 전송방식
멀티캐스트
: 같은 데이터를 여러 명의 그룹 수신자들에게 동시에 전송하는 프로토콜유니캐스트
: 식별된 고유 주소의 목적지에 1:1로 데이터를 전송하는 프로토콜브로드캐스트
: 같은 서브 네트워크의 모든 수신자에게 데이터를 전송하는 프로토콜
- 구성 : (127, 191, 223, 239, 255)
D 클래스
: 멀티캐스트 용도E 클래스
: 연구용
IPv6
- 128bit(=16byte) 주소 체계를 갖는 인터넷 프로토콜
- 16bit * 8 = 128bit
- 전송방식
멀티캐스트
: 같은 데이터를 여러 명의 그룹 수신자들에게 동시에 전송하는 프로토콜유니캐스트
: 식별된 고유 주소의 목적지에 1:1로 데이터를 전송하는 프로토콜애니캐스트
: 잠재적인 수신자 그룹 안에서 가장 가까운 노드에게 연결해 전송하는 프로토콜
- 특징
- IP 주소 확장
- 인증 및 보안 기능
- 실시간 패킷 추적 가능
- Plug & Play 지원(실시간 멀티미디어 처리)
- 이식성(물리적 위치의 제한 없음)
- 단순 헤더
IPv4 -> IPv6 전환 방법
듀얼 스택
: IP 계층에 IPv4, IPv6 프로토콜을 모두 탑재하여 전송 상대에 따라 선택터널링
: 인접한 IPv4 망에 터널을 만들고 캡슐화하여 전송주소변환
: 게이트웨이(주소변환기)로 패킷 변환
라우팅 프로토콜 종류
RIP
: 동적 & 내부 라우팅 프로토콜.벨만-포드 알고리즘
사용(거리-벡터 알고리즘 기초)- 홉 카운트 15 / UDP 포트 520 사용 / 30초마다 정보 공유
거리-벡터 알고리즘
: 인접 라우터와 정보를 교환하여 경로 도출
OSPF
: 동적 & 내부 라우팅 프로토콜.다익스트라 알고리즘
사용(링크-상태 알고리즘 기초)- 홉 카운트 무제한/ RIP의 단점 개선 / AS(자치시스템) 분할(지역별로 라우팅 관리)
링크-상태 알고리즘
: 링크 상태 정보를 모든 라우터에게 전달해 경로 도출(범위 넓고 복잡)
BGF
: 동적 & 외부 라우팅 프로토콜. AS간 경로 정보 교환 / 경로-벡터 알고리즘 사용 / ISP 사업자간 주로 사용
QoS (Quality of Service)
- 데이터의 중요도에 따라 우선순위를 부여, 데이터 전송 성능을 보장하는 것
패킷 스위칭
- 패킷으로 데이터를 전송하며 전송하는 동안만 자원을 사용하는 통신 방식
X.25
: 고정된 대역폭 사용, 낮은 성능프레임 릴레이
: 유연한 대역폭 사용, 가격 저렴ATM
: 광대역 전송에 쓰이는 스위칭 기법
- 헤더의 주소 정보에 따라 전송한다. 이메일 등에 적합
서킷 스위칭
- 서킷이라는 특정 연결을 만들어 독점적으로 사용해 통신하는 방식(전송 보장)
- 데이터 일부를 송수신 해 경로를 파악 후 전송한다. 영상 등에 적합
디자인 패턴
- 소프트웨어 설계 시 자주 쓰이는 방법을 정리한 패턴으로, 참고 시 개발 효율성이 높아진다.
디자인 패턴 구성요소
- 패턴 이름
- 문제 및 배경
- 솔루션
- 사례
- 결과
- 샘플코드
디자인 패턴 유형
생성(5)
: 객체의 생성방식을 결정하는 패턴구조(7)
: 객체를 조직화하는데 유용한 패턴행위(11)
: 객체의 행위를 조직, 관리, 연합하는데 사용하는 패턴
디자인 패턴 - 생성 패턴
팩토리 메소드(Factory Method)
: 상위 클래스에서 인터페이스 정의, 서브 클래스가 실제 생성프로토타입(Prototype)
: 원형 객체를 복사하여 생성 (객체 생성 시 갖춰야 할 기본 형태가 있을 때 사용)빌더(Builder)
: 객체를 조립하여 생성. 생성 방법과 구현 방법을 구분하여, 동일한 객체 생성이여도 다른 결과가 나올 수 있음)싱글톤(Singletone)
: 클래스 내 객체가 하나 뿐임을 보장. 하나의 객체를 생성해 어디든 참조할 수 있으나 동시 참조 불가추상 팩토리(Abstract Factory)
: 구체적인 클래스에 의존하지 않고, 연관된 객체들의 그룹으로 생성 (객체 간 결합이 느슨해짐)
디자인 패턴 - 구조 패턴
퍼싸드(Facade)
: 복잡한 시스템에 단순한 인터페이스를 제공해 접근성을 높인 패턴플라이웨이트(Flyweight)
: 객체가 필요할 때 생성하는 대신 공유하여 메모리 절약컴포지트(Composite)
: 객체 관계를 파일 트리 구조로 구성하여, 복합 객체와 단일 객체를 동일하게 취급프록시(Proxy)
: 실제 기능을 수행하는 객체(Real object) 대신 가상의 객체(Proxy object)를 사용해 로직의 흐름을 제어하는 디자인 패턴브리지(Bridge)
: 구현부에서 추상층을 분리하여 결합도를 낮춘 패턴어댑터(Adapter)
: 호환성 없는 클래스의 인터페이스를 이용할 수 있게 변환데코레이터(Decorator)
: 객체 결합을 통해 기능을 확장
디자인 패턴 - 행위 패턴
중재자(Mediator)
: 객체 사이에 중재자를 두어 의존성을 줄이는 패턴인터프리터(Interpreter)
: 여러 언어 구문을 해석할 수 있게 해주는 패턴템플릿 메소드(Template Method)
: 상위 클래스에서 기능을 정의하고, 하위 클래스에서 세부 처리 방법을 구체화하는 패턴옵저버(Observer)
: 객체를 지켜보고 있다가, 객체의 상태가 변하면 그 객체에 의존하는 다른 객체들에게 변화된 상태를 전달커맨드(Command)
: 요청을 객체로 캡슐화하여, 각 요청(명령)이 들어오면 그에 맞는 서브 클래스 실행비지터(Visitor)
: 처리 기능을 별도로 분리한 패턴 (분리된 처리 기능은 클래스를 방문하여 수행)반복자(Iterator)
: 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴 (내부 노출 없이 순차적 접근 가능)상태(State)
: 객체의 상태를 캡슐화하고, 이를 참조해 동작을 다르게 처리전략(Strategy)
: 동일한 계열의 알고리즘을 캡슐화하고, 전략을 선택해 사용책임 연쇄(Chain of Responsibility)
: 한 객체가 요청을 처리하지 못하면, 연결된 객체로 넘어가 처리메멘토(Memento)
: 특정 시점의 객체 내부 상태를 객체화하여, 해당 시점으로 되돌리는 기능을 제공
소프트웨어 아키텍처
- 소프트웨어 구성요소와, 구성요소의 특성, 구성요소 간 관계를 표현하는 구조
현행 시스템 파악
- 구성 현황 / 기능 현황 / 인터페이스 파악
- 아키텍처, 소프트웨어 구성 파악
- 하드웨어, 네트워크 구성 파악
소프트웨어 4+1 뷰
- 요구사항을 4개의 관점에서 바라보는 방법. 4개 구조가 충돌되지 않는지, 요구사항을 충족하는지 증명하기 위해 유스케이스 사용
프로세스 뷰
: 비기능적인 속성으로 자원 사용 등을 표현한 뷰유스케이스 뷰
: 유스케이스를 도출하고 다른 뷰를 검증하는 뷰배치 뷰
: 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 보여주는 뷰논리 뷰
: 기능적인 요구사항이 어떻게 제공되는지 표현한 뷰구조 뷰
: 소프트웨어 모듈의 구성을 보여주는 뷰
소프트웨어 아키텍처 패턴 종류
계층화 패턴
: 시스템을 계층으로 구분 (ex.OSI 7계층
: 서로 마주보는 계층에서만 상호작용 발생)클라이언트-서버 패턴
: 하나의 서버 + 다수의 클라이언트 -> 사용자는 클라이언트와만 상호작용파이프-필터 패턴
: 데이터 스트림을 처리하는 시스템에서 사용 (ex.Unix의 Shell
: 하나의 서브시스템이 데이터를 받아 처리하고, 결과를 다음 서브 시스템에게 넘겨줌)브로커 패턴
: 사용자가 요청하면, 브로커가 적합한 컴포넌트를 연결하는 방식. 원격 서비스 호출에 응답하는 컴포넌트가 여럿일 때 적합모델-뷰-컨트롤러 패턴
: 3개의 서브시스템으로 구조화한 패턴모델
: 핵심 기능과 데이터 보관뷰
: 사용자에게 정보 표시컨트롤러
: 사용자의 입력 처리 - 하나의 모델에 여러 개의 뷰를 필요로 하는 대화형 애플리케이션에 적합
소프트웨어 아키텍처 비용 평가 모델
SAAM
: 변경 용이성과 기능성에 집중. 경험없어도 쉽게 사용 가능ATAM
:SAAM
을 계승. 아키텍처 품질 속성을 만족하는지도 평가CBAM
:ATAM
에 경제성 평가 보장ADR
: 아키텍처 구성요소 간 응집도 평가ARID
:ATAM + ADR
. 전체가 아닌 특정 부분에 대한 비용 평가
SDLC (소프트웨어 생명주기)
- 시스템의 요구분석 ~ 유지보수까지 전 과정을 모델링한 것
SDLC 모델 종류
폭포수 모델(Waterfall model)
: 선형 순차적 모델. 고전적 생명주기 모델. 각 개발 단계를 마무리 지은 후 넘어가는 모델로 가장 오래됐고, 성공사례가 많으며, 단계별 산출물이 명확하고 요구사항 변경이 어려움프로토타이핑 모델(Prototyping model)
: 주요 기능을 프로토타입으로 구현하고, 피드백을 반영해 만들어나가는 모델나선형 모델(Spiral model)
: 위험을 최소화하기 위해 점진적으로 개발해나가는 모델절차
: 계획 및 정의 - 위험 분석 - 개발 - 고객 평가
반복적 모델(Iteration model)
: 병렬적으로 개발 후 통합하거나, 반복적으로 개발해 점차 완성시켜나가는 모델
SDLC 모델 프로세스
요구사항 분석
: 요구사항을 분석하고, 제약조건, 목표 등을 정의설계
: 수행 방법을 논리적으로 결정 (ex. 시스템 구조 설계, 사용자 인터페이스 설계)구현
: 프로그래밍 언어를 사용해 실제로 코드를 작성 (ex. 인터페이스 개발, 자료 구조 개발, 오류 처리)테스트
(ex. 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트)유지보수
소프트웨어 개발 방법론
- 소프트웨어의 개발 시작부터 전 개발 과정을 형상화한 방법론
소프트웨어 개발 방법론 종류
구조적 방법론
: 전체 시스템을 나눠 개발하고 통합하는 분할-정복 방식의 방법론. 나씨-슈나이더만 차트 사용정보공학 방법론
: 정보 시스템 개발에 필요한 절차를 체계화한 방법론 (대형 프로젝트)객체지향 방법론
: 객체라는 단위로 시스템을 설계하는 방법론컴포넌트 기반 방법론
: 컴포넌트를 조립해 작성하는 방법론애자일 방법론
: 절차보다 사람이 우선되는, 변화에 유연한 경량 개발 방법론제품 개발 방법론
: 제품에 적용할 공통 기능을 정의하여 개발하는 방법론 (임베디드 소프트웨어 작성에 유용)
XP
- 1-3주의 반복 주기를 갖는 애자일 방법론
XP의 5가지 가치
용기
: 용기를 갖고 빠르게 개발단순성
: 필요한 것만 하자의사소통
: 개발자-관리자-고객 간 원활하게 소통피드백
: 의사소통에 대한 빠른 피드백존중
: 팀원간 상호 존중
XP의 12가지 기본 원리
짝 프로그래밍 (Pair Programming)
: 다른 사람과 페어로 개발하여 공동 책임을 지님공동 코드 소유 (Collective Ownership)
: 시스템에 있는 코드는 누구나 언제든 수정 가능지속적인 통합 (CI ; Continuos Integration)
: 여러 번 소프트웨어를 통합하고 빌드해야 함계획 세우기 (Planning Process)
: 고객이 원하는 가치를 정의하고, 개발에 필요한 것은 무엇이며, 어떤 곳에서 지연이 될 수 있는지 알려줘야 함작은 릴리즈 (Small Release)
: 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트메타포어 (Metaphor)
: 공통 이름 체계를 통해 의사소통을 원활히간단한 디자인 (Simple Release)
: 요구사항에 적합한 단순한 시스템을 설계테스트 기반 개발 (TDD ; Test Drive Develop)
: 테스트를 먼저 수행하고, 통과할 수 있는 코드를 작성리팩토링 (Refactoring)
: 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 코드를 재구성40시간 작업 (40-Hour Work)
: 피곤으로 인한 실수가 없도록 주 40시간만 일하자고객 상주 (On Site Customer)
: 개발자들의 질문에 즉각 대답해줄 수 있는 고객이 풀타임 상주해야 함코드 표준 (Coding Standard)
: 코딩 표준을 두고 효과적으로 개발
린
- 낭비 요소를 제거해 품질을 향상시키는 애자일 방법론
린의 7가지 원칙
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인도
- 사람 존중
- 전체 최적화
스크럼
- 매일 정해진 시간 / 장소에서 짧은 시간의 개발을 위한 애자일 방법론
스크럼 용어
백로그
: 제품에 대한 요구사항스프린트
: 짧은 기간 내 반복적으로 개발데일리(스크럼) 미팅
: 매일 To-Do List 계획 수립. 번다운 차트 작성스크럼 마스터
: 프로젝트 리더스프린트 회고
: 각자 반성하고 개선점 확인번 다운 차트
: 남아있는 백로그 대비 시간을 시각적으로 표현 (백로그를 수직, 시간을 수평)
비용산정 모델
- 소프트웨어 개발 계획을 수립하기 위해 투입될 자원이나 시간을 산정하는 방식
하향식
: 전문가가 산정 (ex. 델파이 기법)상향식
: 요구사항과 기능에 따라 산정 (ex. LoC, Man Month, COCOMO, 푸트남, FP)
비용산정 모델 종류
LoC(Lines of Codes) 모형
: 코드 라인 수의 예측치를 구하여 비용 산정산정방법
: (낙관치 + 중관치 x 4 + 비관치) / 6
COCOMO 모형
: 프로그램 규모에 따라 비용을 산정조직형 / 단순형 (Organic)
: 소규모 5만 라인 (5KSDI) 이하반 분리형 (Semi-Detached)
: 중간형 30만 라인 (30KSDI) 이하임베디드형 (Embedded)
: 초대형
Man Month 모형
: 한 사람이 1개월 간 할 수 있는 일의 양을 기준으로 비용 산정Man Month = LoC / 개발자의 월간 생산성
프로젝트 기간 = Man Month / 프로젝트 인력
푸트남(Putnam) 모형
: 생명주기 단계별 인력분포를 예측하는 방식 (시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선 분포도 기초)FP(기능점수) 모형
: 요구 기능별로 가중치를 부여해 총 점수를 계산해 비용 산정
일정 관리 모델
CPM(주 공정법)
: 여러 작업의 수행 순서가 얽힌 프로젝트에서 일정을 계산하는 기법임계 경로(Critical Path) 계산법
: 가장 긴 경로 계산
CCPM(중요 연쇄 공정법)
: 주 공정법의 연쇄법으로, 자원 제약사항을 고려해 계산PERT
: 낙관치, 중관치, 비관치의 3점 추정방식으로 일정 관리
UI
- 사용자와 시스템 사이의 매개체
UI 유형
CLI
: 텍스트(명령어) 기반GUI
: 그래픽 기반(마우스, 펜)NUI
: 신체 부위 이용(터치, 음성)OUI
: 유기적 상호작용 기반 인터페이스(모든 사물이 입출력장치로 변화)
UI 설계 원칙
직관성
: 누구나 쉽게 이해하고 쉽게 사용할 수 있어야 함유효성
: 사용자 목표가 달성될 수 있어야 함학습성
: 쉽게 배울 수 있어야 함유연성
: 인터렉션을 최대한 포용해야 함
UI 설계 지침
사용자 중심
: 사용자가 이해하기 쉽게 설계일관성
: 조작법을 빨리 이해할 수 있도록 일관적으로 설계해야 함단순성
결과 예측 가능
명확성
: 개념적으로 인지하기 쉬워야 함표준화
: 디자인 표준으로 선행학습 이후 쉽게 사용할 수 있어야 함오류 발생 해결
: 오류 상황을 인지할 수 있어야 함접근성
: 연령, 성별 등 다양한 계층을 수용해야 함가시성
: 주요 기능은 메인 화면에 노출해야 함
UI 시나리오 문서 작성 요건
완전성
: 누락 없이 최대한 상세하게 작성일관성
: 요구사항은 일관적이어야 함. UI도 일관적으로 작성이해성
: 이해하기 쉬워야 함가독성
: 쉽게 읽혀야 함추적 용이성
: 변경사항을 알아보기 쉬워야 함수정 용이성
: 쉽게 수정할 수 있어야 함
UI 설계 도구
화면 설계 도구
: 파워 목업, 발사믹 목업, 카카오 오븐프로토타이핑 도구
: UX핀, 액슈어(디스크립션까지 작성 가능), 네이버 프로토나우UI 디자인 산출물로 작업하는 프로토타이핑 도구
: 인비전, 픽사에이트, 프레이머
UI 품질 요구사항 (ISO/IEC 9126 기반)
이식성
: 다른 환경에도 잘 적응하는가?적용성
: 다른 환경에도 잘 적용되고설치성
: 잘 설치되며대체성
: 다른 SW를 대체할 수 있는지
신뢰성
: 오류가 없거나 있더라도 괜찮은가?성숙성
: 오류가 없고고장허용성
: 오류가 있어도 성능을 유지할 수 있고회복성
: 오류를 금방 회복할 수 있는지
사용성
: 쓰기 편한가?이해성
: 이해하기 쉽고학습성
: 배우기 쉽고운용성
: 다루기 쉬운지
유지보수성
: 개선 및 확장이 쉬운가?분석성
: 결함이나 고장을 발견하기 쉽고변경성
: 수정하기 쉽고안정성
: 수정하더라도 안정적이고시험성
: 변경된 내용을 검증할 수 있는지
효율성
: 한정된 자원을 효율적으로 쓰는가?시간반응성
: 처리 속도가 빠르고자원효율성
: 적절한 자원을 제공하는지
기능성
: 요구사항을 정확하게 만족하며 기능하는가?적절성
: 적절하고정밀성
: 정확하고상호운용성
: 상호 운용되고보안성
: 보안성 있고호환성
: 표준 잘 지키는지
UI 표준
- UX 원칙 정의
- 정책 및 철학 설정
- 스타일 가이드 정의
- UI 패턴 모델 정의
- 조직 구성
UI 개발을 위한 주요 기법
3C 분석
: Customer(고객), Company(자사), Competitor(경쟁사) 분석SWOT 분석
: 강점, 약점, 기회, 위협 요인을 분석시나리오 플래닝
: 다양한 시나리오를 설계해 불확실성 제거사용성 테스트
: 사용자가 직접 제품을 사용하며 과제 수행워크숍
: 집단이 모여 지식, 아이디어를 교환하고 검토하는 연구회
UI 화면 설계 구분
와이어프레임
: 화면 단위의 레이아웃 설계스토리보드
: 정책, 와이어프레임 등 구축하려는 서비스를 위한 정보가 수록된 문서프로토타입
: 와이어프레임(or 스토리보드) + 동적 효과
사용자 요구사항 도출
- 페르소나 정의
- 콘셉트 모델 정의
- 요구사항 정의
- UI 컨셉션
UML
- 표준화된 범용 모델링 언어
UML의 특징
가시화 언어
: 원활한 의사소통을 위해 가시화구축 언어
: UML -> 소스코드 변환 가능명세화 언어
문서화 언어
UML의 구성요소
- 사물
- 관계
- 다이어그램
UML 다이어그램
- 정적(구조적) 다이어그램
클래스 다이어그램
: 클래스 간 관계 표현객체 다이어그램
: 객체 간 관계 표현컴포넌트 다이어그램
: 컴포넌트 간 관계를 표현. 구현 단계에서 사용배치 다이어그램
: 물리적 요소의 위치 표현. 구현 단계에서 사용복합체 구조 다이어그램
: 복합 구조인 경우 그 내부 표현패키지 다이어그램
: 패키지 간 관계 표현
- 동적(행위적) 다이어그램
시퀀스 다이어그램
:시간적 개념
중심으로 메시지 표현유스케이스 다이어그램
: 사용자 관점에서 표현커뮤니케이션 다이어그램
: 객체들이 주고 받는 메시지와 상호작용(객체 간 연관)까지 표현활동 다이어그램
: 시스템이 수행하는 활동을 표현상태 다이어그램
: 객체의 상태와 상태 변화를 표현타이밍 다이어그램
: 객체의 상태 변화와 시간 제약을 표현
UML 스테레오 타입
- UML 기본 요소 + 새로운 요소를 더한 확장 매커니즘. « »(길러멧) 기호 사용
<<include>>
: 어떤 시점에 반드시 다른 유스케이스를 실행함<<extend>>
: 어떤 시점에 다른 유스케이스를 실행할 수도 있고 아닐 수도 있음<<abstract>>
: 추상 클래스 (인스턴스 생성 하지 않고 공통 특징만 정의)<<interface>>
: 모든 메서드와 상수가 추상인 클래스<<entity>>
: 정보 또는 행위를 표현하는 클래스<<boundary>>
: 상호작용을 담당하는 클래스<<control>>
: 로직 및 제어를 담당하는 클래스
다이어그램 종류
클래스 다이어그램
- 클래스의 속성(변수), 연산(메서드), 클래스 간 관계를 표현한 다이어그램
- 속성 : 클래스의 구조적 특성 (인스턴스가 보유 가능한 값의 범위)
- 접근 제어자 : 접근 가능한 정도
클래스 접근제어자
public
: 외부 모든 클래스에서 접근 가능protected
: 동일 패키지(하위 클래스 포함)일 때 접근 가능default
: 자바 전용. 접근 제어자 명시가 없을 때 동일 패키지(하위 클래스 포함) 또는 파생 클래스에서 접근 가능private
: 같은 클래스 내에서만 접근 가능
클래스 간 관계
연관(Association)
: 관련되어 있음 < - - > (양방향은 화살표 생략)의존(Dependency)
: 클래스가 다른 클래스 사용 < . . . >집합(Aggeregation)
: 포함하지만 독립적포함(Composition)
: 포함하고 생명주기를 함께 함일반화(Generalization)
: 일반적인지 구체적인지실체화(Realization)
: 기능으로 묶인 관계
컴포넌트 다이어그램
- 컴포넌트와 컴포넌트 간 관계를 표현한 다이어그램
- 컴포넌트 : 탭 2개가 달린 직사각형 + 이름
패키지 다이어그램
- 패키지 관계를 표현한 다이어그램
- 패키지 : 폴더 형태
시퀀스 다이어그램
시간적 개념
중심으로 메시지 흐름을 표현한 다이어그램- 생명선 : - - - - -
- 실행 : - - [ ] - - (함수 실행시간)
유스케이스 다이어그램
- 사용자 시점에서 표현한 다이어그램
커뮤니케이션 다이어그램
- 객체들이 주고받는 메시지와 상호작용(객체 간 연관)까지 표현한 다이어그램
- 객체 : 사각형 (객체명:클래스명 으로 표현)
- 메시지 : -> 표현
활동 다이어그램
- 시스템의 처리 활동을 순서대로 표현한 다이어그램
- 종료점 : 조건 노드, 병합 노드, 포크 노드
상태 다이어그램
- 객체의 상태와 상태 변화를 표현한 다이어그램
- 종료점 : 전이, 전이 조건, 이벤트
- 종료점 : 전이, 전이 조건, 이벤트
데이터 모델
- 현실 세계의 정보를 컴퓨터가 이해할 수 있도록 표현한 모델
데이터 모델의 구성 요소
- 연구제!!!
- 연산
- 구조
- 제약조건
데이터 모델의 절차
- 개논물
- 개념적 -> 논리적 -> 물리적
개념적 데이터 모델
- 현실 세계의 정보를
추상적
,개념적
으로 표현 - DB 종류에 무관함
- 주요 산출물 : E-R 다이어그램
E-R 다이어그램
: 현실의 정보를 사람이 이해할 수 있는 형태로 표현해 개체와 개체의 속성, 개체 간 관계를 도식화 한 다이어그램E-R 다이어그램 구성요소
- 개체 : □
- 속성 : ○
- 다중 값 속성 : ◎
- 관계-속성 : ─
개체 정의서
: 개념 데이터 모델링 단계에서 도출된 개체와 관련된 정보를 명세화한 문서
논리적 데이터 모델
- 논리적 데이터베이스 구조로 매핑
- 목표 DBMS 설정,
스키마 설계
- 정규화 수행
- 모델링 종류
- 관계 데이터 모델
- 계층 데이터 모델
- 네트워크 데이터 모델
물리적 데이터 모델
객체 생성
(테이블, 뷰, 인덱스 등)- 반 정규화 수행
관계 데이터 모델
- 2차원 테이블 형태
- Codd 박사가 제안
- 1:1, 1:N, N:M 자유롭게 표현
네트워크 데이터 모델
- 그래프 형태
- CODASYL DBTG 모델이라고도 함
- 상위-하위 레코드 간 N:M 관계
계층 데이터 모델
- 트리 형태
- 상하 관계 존재
- 1:N 관계만 허용
데이터베이스
- 다수의 인원과 시스템이 사용할 목적으로 관리하는 데이터 집합
- 통합된 데이터
- 저장된 데이터
- 운영 데이터
- 공용 데이터
데이터베이스 특성
실시간 접근성
: 쿼리에 실시간으로 응답계속적인 변화
: 삽입/삭제/갱신으로 최신 데이터 유지동시 공용
: 다수 사용자가 이용내용 참조
: 사용자가 요구하는 내용으로 참조
데이터베이스의 종류
파일 시스템 개념
: DB 전 단계의 데이터 관리 방식관계형 DBMS(= RDBMS)
: 관계형 데이터 모델을 기반으로 하는 DB 관리 시스템계층형 DBMS(= HDBMS)
: 데이터를 상하 종속 관계로 계층화한 모델네트워크형 DBMS(= NDBMS)
: 데이터를 망상 형태로 표현한 모델
DBMS
- 데이터의 추가, 변경, 삭제 등의 관리 기능을 제공하는 소프트웨어
DBMS의 유형
Key-Value DBMS
: Unique한 키에 하나의 값을 갖는 형태 (ex. Redis, DynamoDB)Column Family Data Store DBMS
: Key 안에 (Column, Value) 조합의 필드를 갖는 DBMS. 구글의 Bigtable 기반 (ex.. HBase, Cassandra)Document Store DBMS
: 값의 데이터 타입이 문서 타입(XML, JSON)인 DBMS (ex. MongoDB, Couchbase)Graph DBMS
: 시멘틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현 (ex. Neo4j, AllegroGraph)온톨로지
: 실세계에 존재하는 개념 정보를 컴퓨터가 이해할 수 있도록 서술한 지식베이스
DBMS의 특징
데이터 일관성
: 조작 후에도 데이터는 변함없음데이터 회복성
: 장애 발생 시 복구되어야 함데이터 무결성
: 동일한 내용에 서로 다른 데이터가 저장되지 않아야 함데이터 효율성
: 응답시간, 저장공간 등을 최적화해야 함데이터 보안성
: 불법적인 노출, 변경으로부터 보호해야 함
DBMS 분석 시 고려 사항
성능 측면
: 가용성, 성능, 상호 호환성지원 측면
: 기술 지원, 구축 비용
관계 대수
- 원하는 정보를 어떻게 유도하는가에 대한 절차적 정형 언어
일반 집합 연산자
합집합(Union)
: 전체교집합(Intersection)
: 공통차집합(Difference)
: R에만 존재하고 S에는 없음카티션 프로덕트(CARTESIAN Product)
: R과 S에 속한 모든 튜플 연결
순수 관계 연산자
- 셀렉트
σ
:σ 조건 (R)
R에서 조건을 만족하는 튜플 반환 -> 가로 - 프로젝트
π
:π 속성리스트 (R)
R에서 주어진 속성들로만 구성된 튜플 반환 -> 세로 - 조인
▷◁
:R ▷◁ S
공통 속성으로 R과 S의 튜플 연결하여 반환 - 디비전
÷
:R ÷ S
S의 모든 튜플과 관련된 R의 튜플 반환
관계 해석
- 원하는 정보가 무엇인가에 대한 비절차적 언어 (프레디킷 해석 기반)
정규화(Normalization)
- 데이터의 중복성을 제거하여 이상 현상을 방지하는 과정
이상 현상(Anomaly)
- 데이터 중복으로 인해 릴레이션 조작 시 발생하는 비합리적 현상
삽입, 삭제, 갱신 이상
(select, update, delete)
정규화 단계
1NF (1차 정규화)
: 도메인은 원자값으로만 구성2NF (2차 정규화)
: 부분 함수 종속성 제거 (완전 함수적 종속 관계)3NF (3차 정규화)
: 이행 함수 종속성 제거 (A -> B, B -> C, A -> C일 때 이행 함수 종속 관계)보이스-코드(BC)NF
: 결정자는 모두 후보키여야 함4NF (4차 정규화)
: 다치(다중값) 종속 제거5NF (5차 정규화)
: 조인 종속 제거 (릴레이션의 모든 조인 종속이 후보키를 통해서만 설립)
반 정규화(De-Normalization)
- 정규화된 개체/속성/관계를 단순화하는 기법
- 장점 : 성능 & 관리 효율성 증대
- 단점 : 일관성 & 무관성 하락
반 정규화 기법
- 테이블 병합
- 테이블 분할
- 중복 테이블 추가 : 집계테이블, 진행테이블, 특정 부분만을 포함하는 테이블
- 중복 컬럼 허용
- 중복 관계 허용
NoSQL
- Not Only SQL
- 전통적인 RDBMS가 아닌 DBMS를 지칭
- 조인 연산 불가, 수평적으로 확장 가능
NoSQL의 특징
Basically Available
: 언제든지 접근 가능해야 함Soft-State
: 노드의 상태는 외부 정보로 결정됨Eventually Consistency
: 일정 시간이 지나면 데이터 일관성이 유지됨
NoSQL의 유형
- Key-Value
- Column Family Data Store
- Document Store
- Graph
데이터 마이닝
- 대규모 데이터 속에서 의미있는 정보를 파악해 의사결정에 활용하는 기법
데이터 마이닝 기법
분류 규칙 (Classification)
: 과거 데이터로부터 분류 모델을 만들어 이를 토대로 새로운 결과 값을 예측연관 규칙 (Association)
: 데이터 항목 간 종속 관계를 찾아냄 (ex. 넥타이 구매자는 셔츠도 같이 구매함)연속 규칙 (Sequence)
: 연관 규칙에 ‘시간’ 관련 정보가 포함된 기법데이터 군집화 (Clustering)
: 유사한 특성을 지닌 그룹으로 분류하되 정보가 없는 상태에서 분류
데이터 마이닝 종류
텍스트 마이닝
: 대량의 텍스트 속에서 의미있는 정보를 찾아내는 기법 (자연어, 문서 처리기술 적용)웹 마이닝
: 웹으로부터 얻는 방대한 정보 속에서 의미있는 정보를 찾아내는 기법 (데이터 마이닝 기술 응용)
빅데이터의 특성
Volumn(양)
: PB 수준의 대규모 데이터Variety(다양성)
: 유형이 로그, 소셜, 위치 등 다양해짐Velocity(속도)
: 정보가 빠르게 증가하고 수집됨
빅데이터 수집 및 처리 기술
- 비정형 데이터 수집 (ex. 척화(Chuckwa), 플럼(Flume), 스크라이브(Scribe)
- 정형 데이터 수집 (ex. 스쿱(Squoop), 하이호(Hiho), ETL, FTP
- 분산 데이터 저장/처리 (ex. HDFS(하둡 분산 파일 시스템), 맵리듀스(구글이 발표)
- 분산 데이터 베이스 (ex. HBase)
빅데이터 분석 및 처리 기술
빅데이터 분석
- 데이터 가공 : ex. 피그(Pig), 하이브(Hive),
- 데이터 마이닝 : ex. 머하웃(Mahout)
빅데이터 실시간 처리
- 실시간 SQL 처리 : ex. 임팔라(Impala)
- 요청 작업의 워크플로우 관리 : ex. 우지(Oozie)
분산 코디네이션
- 분산 처리 기술 : ex. 주키퍼(Zookeeper)
분석 및 시각화
- 시각화 기술 : ex. R
- 시각화 기술 : ex. R
인터페이스(연계) 명세서
- 연계에 필요한 항목을 명세화한 문서 구성요소
- 인터페이스 ID
- 최대 처리 횟수
- 데이터 크기 (평균/최대)
- 시스템 정보 (송수신 각각) : 시스템명, 업무명, 연계방식 등
- 데이터 정보 (송수신 각각) : 번호, 필드, 데이터 타입 등
연계 요구사항 분석 시 참고 문서
- 코드 정의서
- 테이블 정의서
- 응용 프로그램 구성도 (화면 설계서, 사용자 인터페이스 정의서 등)
- 시스템 구성도 (소프트웨어 구성도, 하드웨어 구성도, 네트워크 구성도 등)
연계 시스템의 구성
- 송신 시스템 : 연계할 데이터를 송신
- 수신 시스템 : 수신한 데이터를 변환해 저장하고 활용하는 시스템
- 중계 시스템 : 송신-수신 시스템 사이에서 송수신하고 모니터링하는 시스템
연계 데이터 표준화
- 인터페이스 데이터 공통부 : 표준 항목
- 인터페이스 데이터 개별부 : 개별 데이터
- 인터페이스 데이터 종료부 : 전송데이터의 끝을 알림
연계 매커니즘 수행 절차
- 연계 데이터 추출 및 생성
- 코드 매핑 (데이터 변환)
- 연계 테이블 또는 연계 파일 생성
- 로그 기록
- 연계 서버 또는 송수신 어댑터
- 전송
- 수신된 데이터 DB에 반영
연계 매커니즘 종류
직접 연계
- 장점 : 구현이 쉽고 개발 기간이 짧음
- 단점 : 결합도가 높음
- 종류
DB Link
: 수신 시스템에서 DB 링크를 생성하고 송신 시스템에서 해당 링크를 참조하는 방식DB Connection
: DB Connection Pool을 생성하고 해당 풀 명을 이용하여 연결하는 방식커넥션 풀
: DB와 연결된 커넥션을 미리 만들어 풀 속에 저장하고, 필요할 때마다 쓰고 반환하는 기법
API
: 데이터를 주고 받을 때 어떤 방식으로 요청하고 제공받을 수 있는지, 규격을 정해 놓은 인터페이스JDBC
: JDBC 드라이버를 이용해 송신 시스템의 DB와 연결하는 방식JDBC
: 자바에서 데이터베이스에 접속할 수 있게 해주는 APIJDBC 드라이버의 구성
: Java Application - JDBC API - JDBC Driver Manager - JDBC Driver
하이퍼링크
: 현재 페이지에서 다른 부분 또는 다른 페이지로 이동하게 해주는 속성
간접 연계
- 장점 : 서로 상이한 네트워크, 프로토콜 연계 가능
- 단점 : 성능 저하, 개발 비용 높음
- 종류
EAI
: 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간연계
를 돕는 솔루션- 구성요소
EAI 플랫폼
어댑터
: EAI의 핵심장치. 애플리케이션을 연결하는 데이터 입출력 도구브로커
: 데이터 전송 시 포맷과 코드를 변환해 줌메시지 큐
: 비동기 메시지를 사용하는 프로그램 사이에서 송수신 해 주는 기술비즈니스 워크플로우
: 미리 정의된 워크플로우에 따라 업무 처리
- 유형
Point-to-Point
: 가장 기초적인 1:1 단순 통합방법Hub & Spoke
: 허브 시스템을 통한 중앙 집중 방식Message Bus
: 애플리케이션 사이에 미들웨어(버스)를 두어 연계Hybrid
: 그룹 내 = Hub & Spoke 그룹 간 = Message Bus
- 구성요소
ESB
: 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션을 하나의 시스템으로 관리할 수 있게 하는 아키텍처로, 미들웨어(버스)를 중심으로 애플리케이션통합
을 ‘느슨한 결합’ 방식으로 지원-
Socket
: 프로세스 간 통신의 접속점(IP 주소 + 포트넘버) 클라이언트 요청을 서버와 연결해 줌 EAI
는 연계!ESB
는 통합!
인터페이스 기능 구현
- 대상자 선택(대상이 될 데이터를 SQL로 선택)
- 인터페이스 데이터 생성(JSON 등 형식에 맞게 가공)
- 인터페이스 데이터 전송 요청
- 인터페이스 데이터 전송
- 인터페이스 데이터 수신
- 인터페이스 데이터 파싱
- 인터페이스 데이터 검증(포맷 및 제약조건 오류 검사)
- 후속 기능 수행(수신 시스템에 정의된 후속 기능 진행)
- 수신 결과 생성 및 전송
10.수신 측의 처리 결과 반환
웹 서비스 방식
SOAP
: HTTP, HTTPS 등을 사용해 XML 기반의 메시지를 교환하는 프로토콜WSDL
: Web Service Description Language. 웹 서비스명, 제공위치 등 웹 서비스의 정보가 기술된 XML 형식의 언어UDDI
: WSDL의 등록, 검색을 위한 저장소 (공개적으로 접근 가능한 레지스트리)
- XML 프로토콜이면
SOAP
, 언어면WSDL
JSON
키-값
쌍으로 이루어진 데이터를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용한 포맷(AJAX에서 많이 사용)
JSON의 표현 자료형
- 숫자
- 문자열(항상 “” 따옴표 사용)
- 배열(대괄호 [] 표시)
- 객체(중괄호 {} 로 표시하며, 이름은 문자열을 쓴다)
XML
- HTML의 단점을 보완하여, 특수한 목적을 갖는 마크업 언어
XML의 특징
- 트리 구조이며 모든 태그에는 종료 태그가 필수
- 속성값은 큰 따옴표(“)로 묶고 대소문자를 구분함
AJAX
- 서버-클라이언트 간 비동기적으로 데이터를 교환하기 위한 기술
AJAX의 동작 원리
- 요청 이벤트 발생
- 자바스크립트 호출
- 자바스크립트가 XMLHttpRequest 객체를 사용해 서버에 요청 (비동기이므로 그동안 다른 일 처리)
- 서버는 XMLHttpRequest 객체를 가지고 AJAX 요청 처리
- 전달받은 데이터를 사용해 웹 페이지 일부만을 갱신하는 자바스크립트 호출
AJAX의 주요기술
XMLHttpRequest
: 비동기 통신을 담당하는 자바스크립트 객체XML
: HTML의 단점을 보완하여, 특수한 목적을 갖는 마크업 언어DOM
: XML 문서를 트리 구조 형태로 접근하게 해주는 APIXSLT(eXtensible Stylesheet Language Transformations)
: XML 문서를 다른 XML 문서로 변환하는 데 사용하는 언어HTML
: 웹 문서를 표현하는 마크업 언어CSS
: 마크업 언어가 표시되는 방법을 기술하는 언어
REST
- HTTP URI로 자원을 표시하고, HTTP 메서드를 통해 해당 자원에 대한 삽입, 삭제, 갱신 등의 명령을 적용하는 아키텍처
REST 메서드의 종류
- POST (Create)
- GET (Read)
- PUT (Update)
- DELETE (Delete)
REST의 구성
- 리소스
- 메서드
- 메시지
DB 암호화 기법
API 방식
: 애플리케이션 서버에 암호 모듈 적용(애플리케이션 서버에 부하 발생)플러그인 방식
: DB 서버에 암호 모듈 적용(DB 서버에 부하 발생)TDE 방식
: DBMS 커널이 자체적으로 암호화 기능 수행 (Transparent Data Encryption)하이브리드 방식
: API + 플러그인 (부하 분산)
인터페이스 구현 검증 도구
xUnit
: Java, C++ 등 다양한 언어를 지원하는 단위 테스트 프레임워크STAF
: 각 테스트 대상 분산 환경에 ‘데몬’을 사용하여 테스트를 수행FitNesse
: 웹 기반 테스트 케이스를 지원NTAF
: STAF(재사용 및 확장성) + FitNesse(협업 기능) 장점을 통합한 NHN의 프레임워크Selenium
: 다양한 브라우저와 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크Watir
: 루비 기반의 웹 애플리케이션 테스트 프레임워크
인터페이스 감시 도구
스카우터
: 애플리케이션 및 DB 모니터링 가능한 감시 도구제니퍼
: 개발부터 운영에 이르기까지 전 생애주기 동안 모니터링 가능한 감시 도구
오류 처리 방법
- 화면에서 오류를 인지하도록 구현
- 오류 로그 생성
- 관련 테이블에 오류 사항 기록
프로그래밍 언어 분류(실행방식에 따라)
- 명령형 언어(= 절차형 언어) : 명령들이 순차적으로 실행되는 방식
- ex. FORTRAN, COBOL, PASCAL, C, ALGOL, BASIC
- 객체지향 언어 : 객체 간 메시지 통신을 이용하는 방식
- ex. 자바, C++
- 함수형 언어 : 수학수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식
- ex. 리스프(LISP), 하스켈(Haskell)
- 논리형 언어 : 논리 문장을 이용하여 표현하는 방식
- ex. 프롤로그(Prolog)
- 스크립트 언어
- PHP : 동적 웹페이지를 위한 언어
- Perl : 실용성 모토, 인터프리터
- Python, JavaScript
- 선언형 언어
- 함수형 언어
- 논리형 언어
- 특수분야 언어 : SQL(DBMS 관리를 위한 질의어)
프로그래밍 구현 기법
- 컴파일 방식 : 고급 언어 -> 기계어로 번역
- ex. FORTRAN, PASCAL, C, C++
- 인터프리터 방식 : 명령문을 하나씩 번역하고 실행하는 방식
- ex. BASIC, LISP, PHP, Perl, Prolog
- 혼합형 방식 : 고급 언어를 컴파일하여 중간 언어로 변환 후 인터프리터가 번역을 실행하는 방식
- ex. 자바
절차적 프로그래밍
- FORTRAN : 과학 기술 전문 언어로, 고급 수학 함수들 사용 가능(컴파일 방식)
- C : 유닉스 운영체제에서 사용하기 위한 언어(컴파일 방식)
- 알골 : 알고리즘 연구개발 목적
- 베이직 : 교육용으로 개발된 언어(인터프리터 방식)
객체지향 프로그래밍
- C++ : C 언어에 객체지향 프로그래밍 개념 추가(컴파일 방식)
- C# : MS에서 개발. 불안전 코드(Unsafe Code) 같은 기술을 통해 상호 운용성 확보
- 자바 : 웹 애플리케이션 개발에 가장 많이 사용되는 언어
- 델파이 : 파스칼 문법 + 여러 기능. Windows 아래에서 모든 부분 프로그래밍 가능
객체지향 프로그래밍의 구성요소
- 객체 : 개체 + 속성 + 메서드로 이루어진 인스턴스
- 클래스 : 객체를 표현하는 추상 데이터 타입
- 메서드 : 객체 간 통신
파이썬 자료형
List
: 순서 있는 배열- 값 맨 뒤에 삽입 :
append(value)
- 중간에 삽입 :
insert(index, value)
- 삭제 :
remove(value)
- 값 맨 뒤에 삽입 :
Dictionary
: 키-값 쌍- 값 참조 :
딕셔너리이름[키] = 값
- 값 삭제 :
del 딕셔너리이름[키]
- 값 참조 :
Set
: 중복 허용 X, 순서 없음- 값 추가 :
add(value)
- 값 삭제 :
remove(value)
- 값 추가 :
자바 자료형
HashMap
: 키-값 쌍- 값 추가 :
put(key, value)
- 값 삭제 :
remove(key)
- 값 얻기 :
get(key)
- 값 추가 :
ArrayList
: 순서 있는 배열- 값 맨 뒤에 추가 :
add(value)
- 값 중간에 삽입 :
add(index, value)
- 값 삭제 :
remove(index)
- 인덱스 값 참조 :
get(index)
- 값 맨 뒤에 추가 :
HashSet
: 중복 허용 X, 순서 없음- 값 추가 :
add(value)
- 값 제거 :
remove(value)
- 값 추가 :
라이브러리
- 효율적인 개발을 위해 필요한 프로그램들을 모은 집합체(모듈과 패키지를 총칭)
모듈
: 변수, 함수 등을 모아둔 파일패키지
: 모듈을 구조화한 라이브러리
라이브러리 구성
- 도움말
- 설치 파일
- 샘플 코드
클래스 관련 용어
인터페이스
- 자바에서 다향성을 극대화하기 위한 문법으로 추상 메서드와 상수만을 멤버로 갖는다.
추상 클래스
- 자식 클래스에서 상위 클래스의 미구현 추상 메서드를 구현하는 것
추상 클래스 구현
- C++ : 메서드 뒤에
= 0
붙임 - 자바 : 클래스명과 메서드명 앞에
abstract
붙임 - 파이썬 : 메서드 내부에
pass
키워드 사용
상위 클래스 접근
- C++ : 부모클래스::메서드명()
- 자바 : super.메서드명()
- 파이썬 : super().메서드명()
오버로딩
- 같은 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의하는 것
오버라이딩
- 하위 클래스에서 상위 클래스 메서드를 재정의하는 것. C++은
virtual
키워드 필요
상속
- 어떤 객체의 변수와 메서드를 다른 객체가 물려받는 것
상속 문법
- C++ :
class 자식클래스 : public 부모클래스 {}
- 자바 :
class 자식클래스 extends 부모클래스 {}
- 파이썬 :
class 자식클래스 (부모클래스):
생성자
- 해달 클래스의 객체가 생성될 때 자동으로 호출되는 메서드
- C++, 자바 : 클래스명과 동일하면 생성자
- 파이썬 :
__int__
메서드명 사용하면 생성자
소멸자
- 객체가 소멸될 때 호출되는 메서드. 할당된 메모리를 해제하는 용도로 사용됨
- C++ : 클래스명과 동일하나 클래스명 앞에
~
기호를 붙이면 소멸자 - 자바 :
finalize
메서드명을 사용하면 소멸자 - 파이썬 :
__del__
메서드명 사용하면 소멸자
자신 클래스 참조
- C++, 자바는
this->
,this.
- 파이썬은
self.
구조체
- 기본 타입을 이용해 새롭게 정의하는 자료형
- C/C++ 한정
struct
로 선언 후 사용
열거체
- 정수형 상수에 이름을 붙여 쓰기 편하게 만드는 것
포맷 스트링
- %c : 문자
- %s : 문자열
- %d : 10진수
- %x : 16진수
- %o : 8진수
- %f : 실수(6자리까지)
비트 연산자
&
: 같은 비트 값이 모두 1이면 1 - AND|
: 같은 비트 중 하나라도 1이면 1 - OR^
: 같은 비트값이 서로 다르면 1 - XOR~
: 모든 비트값을 반대로 뒤집음 - NOT
시프트 연산자
<<
왼쪽으로 비트 이동 : * 2 효과가 있다.>>
오른쪽으로 비트 이동 : / 2 효과
식별자 표기법
- 헝가리안 표기법 : 식별자 앞에 자료형을 붙이는 표기법
- 스네이크 표기법 : 식별자에 여러 단어가 이어질 때 각 단어 사이에 언더바를 넣는 표기법
- 카멜 표기법 : 식별자에 여러 단어가 이어질 때 첫 단어의 시작만 소문자로, 각 단어의 첫 글자는 대문자로 쓰는 표기법
- 파스칼 표기법 : 식별자에 여러 단어가 이어질 때 각 단어의 첫 글자는 대문자로 쓰는 표기법
리스트 인덱스
- [0] [1] … [n-2] [n-1] [-n] [-(n-1)] [-2] [-1]
리스트 슬라이싱
- 시작 인덱스 : 생략 시 처음부터
- 종료 인덱스 :
종료 인덱스 전
까지만 슬라이싱하며생략 시 마지막까지
- 스텝 : 생략 시 1
a = [7, 6, 3, 4, 0]
print(a[:4:2])
- 출력 : [7,3]
a = "Hello Phython"
b = a[0:3]
c = a[-4:-1]
- 출력 : Heltho
트랜잭션
- DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업 단위 (특성 :
ACID
) 원자성(Atomicity)
: All or Nothing. 연산 전체는 성공 또는 실패여야 하며, 하나라도 실패할 경우 전체가 취소되어야 하는 특성일관성(Consistency)
: 트랜잭션이 성공적으로 실행되면, DB는 일관된 상태를 유지해야 하는 특성 (기법 : 병행(동시성) 제어)격리성(Isolation)(독립성)
: 트랜잭션 실행 중 중간 연산 결과에 다른 트랜잭션이 접근할 수 없다. (기법 : 고립화 수준)영속성(Durability)(지속성)
: 성공적으로 완료된 트랜잭션 결과는 DB에 영속적으로 저장되어야 한다. (기법 : 회복기법)
트랜잭션의 상태 변환
활동상태(Active)
: 트랜잭션 실행 중부분 완료 상태(Partially Committed)
: 마지막 명령문 실행 상태완료 상태(Committed)
: 성공적으로 완료실패 상태(Failed)
: 정상적 실행 불가철회 상태(Aborted)
: 트랜잭션 취소
TCL
- 트랜잭션 제어 언어
- 트랜잭션 결과를 허용하거나 취소하기 위한 제어 언어
COMMIT
,ROLLBACK
,CHECKPOINT
병행제어
- 다수 사용자 환경에서 일관성 유지를 위해 제어하는 기법
병행제어 미보장 문제점
갱현모연
- 갱신손실(Lost Update)
- 현황파악오류(Dirty Read)
- 모순성(Inconsistency)
- 연쇄복귀(Cascading Rollback)
병행제어 기법
로킹(Locking)
: 트랜잭션의 순차적 진행을 보장하는 기법로킹단위
: 한 번에 로킹할 수 있는 객체 크기- 로킹단위가 작을수록 DB 공유도는 증가하지만 로킹 오버헤드 증가
낙관적 검증 기법(Validation)
: 일단 검증 없이 진행 후, 종료한 다음 검증을 수행해 반영타임 스탬프 순서(Time Stamp Ordering)
: 트랜잭션이나 데이터에 타임 스탬프를 부여하여, 그 시간에 따라 작업을 수행다중버전 동시성 제어(MVCC; Multi Version Concurrency Control)
: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교해, 적절한 버전을 선택하여 접근하도록 하는 기법
고립화
- 무결성을 해치지 않기 위해 잠금을 설정하는 정도
고립화 수준 종류
Read Uncommitted
: 연산 중인 데이터를 다른 트랜잭션이 읽는 것을 허용Read Committed
: 연산이 완료되기 전까지 다른 트랜잭션이 읽는 것을 제한Repetable Read
: 선행 트랜잭션이 특정 데이터를 읽을 때, 해당 데이터의 갱신/삭제를 제한Serializable Read
: 선행 트랜잭션이 특정 데이터 영역을 읽을 때, 해당 영역 전체의 접근을 제한
회복 기법
로그 기반 회복 기법
지연 갱신 회복 기법
: 트랜잭션 완료 전에는 로그에만 기록. 장애 발생 시 로그를 폐기즉각 갱신 회복 기법
: 트랜잭션 갱신 결과를 바로 DB에 반영. 장애 발생 시 로그를 참고하여 되돌림
체크포인트 회복 기법
: 체크포인트 이전으로 복원그림자 페이징 회복 기법
: 트랜잭션 수행 시 복제본을 생성해 이를 이용해 복구
SQL 문법
- DDL(정의어) :
Create, Alter, Drop, Truncate
- DML(조작어) :
Select, Insert, Update, Delete
- DCL(제어어) :
Grant, Revoke
도메인
- 하나의 속성이 가질 수 있는 원자값의 집합
스키마
- DB의 구조, 제약조건 등의 정보를 담고 있는 구조
스키마 3계층
외부 스키마
: 사용자(개발자) 관점에서의 구조. 사용자 뷰를 나타냄개념 스키마
: 제약조건, 권한, 보안 등 전체적인 논리 구조내부 스키마
: 물리적 저장장치 관점에서의 구조. 레코드 형식, 물리적 순서 등
테이블 관련 용어
테이블
: 데이터를 저장하는 공간 (=릴레이션, =엔터티)튜플
: =Row. =레코드. 한 릴레이션에서 중복되는 튜플은 존재 불가카디널리티
: 튜플의 개수애트리뷰트
: =Column디그리
: 애트리뷰트의 개수
테이블 관리 명령어
- 테이블 생성
CREATE TABLE 테이블명 (컬럼명 데이터타입 [제약조건]);
- 테이블 생성 제약조건
- PRIMARY KEY
- FOREIGN KEY REFERENCES 테이블(컬럼)
- NOT NULL
- UNIQUE
- CHECK (조건 OR 조건)
- DEFAULT
- 테이블 변경
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
ALTER TABLE 테이블명 DROP 컬럼명;
- 테이블 삭제
DROP TABLE 테이블명 [CASCADE | RESTRICT];
TRUNCATE TABLE 테이블명;
뷰
- 데이터의 독립성을 보장하고 조작 연산을 간소화할 수 있는 논리 테이블
- ALTER로 변경 불가
- 자체 인덱스 불가
뷰 속성
REPLACE
: 기존 테이블 존재 시 재생성FORCE
: 기본 테이블 관계 없이 뷰 생성NO FORCE
: 기본 테이블이 있을 때만 뷰 생성WITH CHECK OPTION
: 서브 쿼리 내 조건을 만족하는 행만 변경WITH READ ONLY
: DML(조작어) 불가
뷰 관리 명령어
- 뷰 생성
CREATE [OR REPLACE] VIEW 뷰이름 AS SELECT 이름 FROM 학생 WHERE 성별 = 'F';
- 뷰 삭제
DROP VIEW 이름;
인덱스
- DB 시스템에서 빠른 검색을 위한 데이터 구조
- 인덱스가 없으면 Table Full Scan을 하지만, 인덱스가 있으면 Index Range Scan을 하므로 검색 속도가 빠르다.
인덱스 관리 명령어
- 인덱스 생성
CREATE INDEX 인덱스명 ON 테이블(컬럼);
- 인덱스 변경
ALTER INDEX 인덱스명 ON 테이블(컬럼);
- 인덱스 삭제
DROP INDEX 인덱스명;
인덱스 종류
비트맵 인덱스
: 컬럼 개수가 적고 수정이 적을수록 좋은 인덱스(생년월일, 상품번호 등)단일 인덱스
: 하나의 컬럼으로만 구성된 인덱스순서 인덱스
: 데이터가 정렬된 순서로 생성되는 인덱스함수기반 인덱스
: 함수를 적용해 만든 인덱스해시 인덱스
: 해시 함수를 통해 키 값으로 데이터에 접근하는 인덱스(튜플 양에 무관하게 접근 비용 동일함)결합 인덱스
: 두 개 이상의 컬럼으로 구성된 인덱스클러스터드 인덱스
: PK 기준으로 레코드를 묶어 데이터의 물리적 순서에 따라 생성된 인덱스
인덱스 컬럼 선정
- 적정 분포도 : 10-15%
분포도
: 특정 컬럼 값이 테이블에 평균적으로 분포된 정도
- 수정이 빈번하지 않은 컬럼이 분포도가 좋은 컬럼 - 단일 인덱스
- 자주 결합되는 컬럼 - 결합 인덱스
인덱스 스캔 방식
인덱스 범위 스캔
: ⬇️➡️ 루트 블록에서 리프 블록까지 수직 탐색 후, 리프 블록을 수평 탐색인덱스 전체 스캔
: ➡️➡️ 리프 블록을 처음부터 끝까지 수평 탐색인덱스 단일 스캔
: ⬇️⬇️ 수직 탐색으로만 스캔인덱스 생략 스캔
: 선두 컬럼이 조건 절에 없더라도 인덱스를 활용하는 스캔 (필요없는 부분은 과감히 스킵)
클러스터링
- 검색 속도 향상을 위해 물리적으로 저장하는 것
- 분포도가 넓을 수록(=좋지 않을 수록) 클러스터링이 적합
파티셔닝
- 테이블을 논리적 단위로 쪼개는 것
파티셔닝 유형
레인지 파티셔닝
: 숫자나 날짜와 같은 범위 기준으로 파티셔닝해시 파티셔닝
: 해시 함수의 값을 기준으로 파티셔닝(균등 분할 가능)리스트 파티셔닝
: 값 목록을 기준으로 파티셔닝컴포지트 파티셔닝
: 2개 이상의 파티셔닝을 결합
파티셔닝 장점
성능 향상
: 액세스 범위가 줄어드니까가용성 향상
: 데이터 훼손 가능성이 적으니까백업 기능
경합 감소
참조 무결성
- 외래키 값은 항상 참조되는 테이블의 기본키여야 함
참조 무결성을 위한 옵션
RESTRICT
: 참조 무결성 위배 시 연산 거절CASCADE
: 해당 투플을 참조하는 튜플도 함께 삭제SET NULL
: 해당 튜플을 참조하는 튜플의 외래키에 NULL 값 삽입(단, NOT NULL 제약조건 시 연산 거절)
조인
- 두 개 이상의 테이블을 연결해 데이터를 검색하는 방법
조인 명령어
SELECT A.번호, B.가격
FROM 상품목록 A JOIN 가격목록 B ON A.번호 = B.번호
WHERE A.번호 IS NOT NULL;
논리적 조인
내부 조인
: 양 테이블의 공통 컬럼의 값이 같을 때 사용INNER JOIN
외부 조인
왼쪽 외부 조인
: 왼쪽 테이블 전체 + 오른쪽 테이블 동일 데이터LEFT OUTER JOIN
오른쪽 외부 조인
: 오른쪽 테이블 전체 + 왼쪽 테이블 동일 데이터RIGHT OUTER JOIN
완전 외부 조인
: 양쪽 모든 데이터 추출FULL OUTER JOIN
교차 조인
: 조인 조건이 없는 모든 데이터 조합 추출CROSS JOIN
셀프 조인
: 자기 자신에게 별칭을 지정한 후 조인
물리적 조인
- Nested-Loop Join(중첩 반복 조인)
- Sort-Merge Join(정렬 합병 조인)
- Hash Join(해시 조인)
집합 연산자
- 2개 이상의 테이블의 질의의 결과를 합치는 연산자(검색을 위해 합치는 조인과 다름)
UNION 연산자
: 합집합. 중복을 제거하고 모두 포함UNION ALL 연산자
: 완전 합집합. 중복까지 포함INSERT 연산자
: 교집합. 겹치는 데이터만 추출MINUS 연산자
: 차집합. 첫 번째 쿼리에만 있고, 두 번째 쿼리에만 없는 결과만 추출
DCL 명령어
- 권한 부여
GRANT 권한 ON 테이블 TO 사용자 [WITH GRANT OPTION];
- 권한 회수
REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE CONSTRAINT];
DBMS_OUTPUT
- 버퍼로부터 메시지를 읽어오는 인터페이스 패키지
DBMS_OUTPUT.PUT(문자열); // 문자열 출력하는 프로시저
절차형 SQL
- SQL 안에서도 절차 지향적인 프로그래밍이 가능하도록 하는 트랜잭션 언어
절차형 SQL의 종류
프로시저
: 일련의 쿼리들을 하나의 함수처럼 실행하기 위한 쿼리의 집합사용자 정의 함수
: 일련의 SQL 처리 후, 그 결과를 단일값으로 반환트리거
: DB 시스템에서 삽입, 삭제, 갱신 등의 이벤트 발생 시 관련 작업이 자동으로 수행
튜닝(쿼리 성능 개선)
- SQL 실행 계획을 수정해 프로시저 성능을 개선하는 것
튜닝 개선 절차
- 문제 있는 SQL 식별(APM 모니터링 도구 사용)
- 옵티마이저 통계 확인
- SQL문 재구성
- 인덱스 재구성
- 실행계획 유지관리
옵티마이저
- SQL을 수행할 최적의 처리경로를 찾는 DBMS의 핵심엔진
옵티마이저 유형
RBO
: 규칙 기반 옵티마이저. 사전에 등록된 규칙에 따라 실행 계획을 선택함CBO
: 비용 기반 옵티마이저. 모든 접근 경로를 고려해 실행 계획을 선택함실행 계획(Execution Plan)
: 옵티마이저가 생성한 처리경로
옵티마이저의 역할
쿼리 변환
: SQL을 표준화된 형태로 변환비용 산정
: 카디널리티, 비용 등을 계산계획 생성
힌트
를 통해 옵티마이저의 실행 계획을 변경이 가능하다.
개발 도구 분류
- 빌드 도구
- 구현 도구
- 테스트 도구
- 형상관리 도구
형상관리(CM)
- 소프트웨어 개발 과정에서 발생하는 변경사항을 관리하는 것
형상관리 절차
- 형상 식별(관리할 대상 식별 후 번호 부여)
- 형상 통제(형상통제위원회 운영, 베이스라인 관리)
- 베이스라인 : 개발 산출물 변화를 통제하는 시점
- 형상 감사(무결성 평가)
- 형상 기록
형상관리 도구 유형
- 공유 폴더 방식(개발이 완료된 파일을 공유 폴더에 복사)
- 클라이언트/서버 방식(중앙에 버전관리 시스템이 동작)
- 분산 저장소 방식(로컬 저장소/원격 저장소 분산)
형상관리 도구별 특징
RCS
: 공유폴더 방식(잠금 처리 후 1명만 수정)CVS
: 클라이언트/서버 방식(동시 접근 가능)SVN
: 클라이언트/서버 방식Clear Case
: 복수 클라이언트/복수 서버(필요시 서버 증설 가능)Bitkeeper
: 분산 저장소 방식Git
: 분산 저장소 방식
형상관리 통제 위원회(CCB)
- 형상관리 방침을 정하고 관리하는 조직
모듈
- 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 기능 단위로 분해, 추상화되어 재사용 가능한 단위
모듈화
- 성능 향상, 유지 관리 등을 위해 기능 단위 모듈로 분해하는 기법
- 모듈 단위로 설계하는 기법
팬인 팬아웃
팬인(Fan-In)
: 어떤 모듈을 제어(호출)하는 모듈의 수팬아웃(Fan-Out)
: 어떤 모듈에 의해 제어(호출)되는 모듈의 수
루틴
- 특정 동작을 수행하는 일련의 코드
메인 루틴
: 전체의 개략적인 동작 절차를 표시하며 서브 루틴을 호출하는 루틴서브 루틴
: 메인 루틴에 의해 호출되는 루틴
웹서버
- 정적 콘텐츠를 처리하는 서버(ex. 아파치 웹 서버, 구글 웹 서버 등)
웹 어플리케이션 서버(WAS)
- 동적 콘텐츠(JSP, 서블릿)를 처리하는 서버(ex. Tomcat, Weblogic 등)
서버 프로그램 구현 방법
- DTO/VO -> SQL -> DAO -> Service Class -> Controller Class
DTO
: Data Transfer Object. 화면에서 전달받은 데이터를 전송하는 객체VO
: Value Object. 간단한 객체DAO
: Data Access Object. 실질적으로 DB에 접근하는 객체
배치 프로그램
- 사용자와 상호작용 없이 일련의 작업들을 묶어 일괄적으로 처리하는 방법
배치 프로그램 유형
이벤트 배치
: 사전에 정의된 조건이 충족될 때 실행온디맨드 배치
: 사용자의 요구가 있을 때 실행정기 배치
: 정해진 시점에 실행
배치 스케줄러
- 배치(일괄 처리)를 위해 반복적인 작업을 지원하는 도구
배치 스케줄러 종류
스프링 배치
: 스프링 프레임워크에서 사용하는 스케줄러쿼츠 스케줄러
: Job과 Trigger를 분리하는 오픈 소스 스케줄러
쿼츠 크론 표현식
- 스케줄러에서 배치 수행시간을 설정하기 위한 표현식
SW 개발 보안 3대 요소
기밀성
: 인가되지 않은 접근에 정보 노출을 차단하는 특성무결성
: 정당한 방법으로만 데이터를 변경할 수 있으며, 데이터의 정확성을 보장하는 특성가용성
: 권한을 가지고 있으면 서비스를 지속해서 사용할 수 있도록 하는 특성
SW 개발 보안 용어
- 자산
- 위협
- 취약점
- 위험
해킹 종류
DRDos 공격
: 공격대상이 반사 서버로부터 다량의 응답을 받도록 하는 공격DDos 공격
: 여러 대의 공격자를 분산 배치 후 동시에 동작시키는 DoS 공격(대역폭 소진 공격 & 서비스 마비 공격)- 구성요소
공격자
: 해커 컴퓨터마스터(Master)
: 공격자의 명령을 받고 에이전트를 관리하는 시스템핸들러(Handler)
: 마스터 시스템의 프로그램에이전트(Agent)
: 직접 공격하는 시스템데몬(Daemon)
: 에이전트 시스템의 프로그램
Stacheldraht
: DDoS의 에이전트 역할을 하는 도구
- 구성요소
UDP 플러딩
: 대량의 UDP 패키지를 임의의 포트번호로 전송하지만 응답 메시지는 공격자에 전달되지 않아 자원을 고갈시키는 공격Trino
: UDP 플러딩 공격 도구TFN
: UDP 플러딩, SYN 플러딩, 스머프 등등 여러 DDoS 공격이 가능한 도구
SYN 플러딩
: ACK를 발송하지 않고 SYN 패킷만 보내 점유하여 자원을 고갈시키는 공격죽음의 핑
: ICMP 패킷(핑)을 아주 크게 만들어 과부하시키는 공격스머프/스머핑
: 출발지 IP를 공격 대상의 IP로 변조하여 브로드캐스팅으로 ICMP Echo 패킷 요청을 보내 과부하시키는 공격티어 드롭
: 조작된 IP 패킷 조각을 보내 재조립 과정에서 오류를 발생시키는 공격랜드 어택
: 출발지 IP와 도착지 IP를 같은 주소로 만들어, 자기 자신에게 응답을 보내도록 하는 공격봉크/보잉크
: IP 패킷의 재전송, 재조합 과정에서 오류를 발생시키는 공격(봉크 : 같은 시퀀스 번호 / 보잉크 : 시퀀스 번호에 빈 공간)Slow HTTP Read Dos
: TCP 윈도 크기와 데이터 처리율을 감소시킨 뒤 다량의 HTTP 요청을 보내는 공격Slow HTTP Header Dos
: =Slowloris. 헤더 정보를 조작하여 웹 서버가 온전한 헤더정보가 올 때까지 기다리게 하는 공격Slow HTTP Post Dos
: =RUDY. 헤더의 Content-Length를 아주 크게 만들고 데이터를 아주 소량으로 보내 연결을 유지하게 하는 공격HTTP GET 플러딩
: 과도한 GET 메시지를 통해 과부하시키는 공격(캐싱서버가 아닌 웹 서버가 직접 처리하도록 유도)Hulk Dos
: 공격자가 공격대상의 URL을 계속 변경하면서(=차단 정책 우회) 다량의 GET 요청을 보내는 공격Hash Dos
: 웹 서버의 해시 테이블에 해시 충돌을 일으켜 자원을 소모시키는 공격Dos 공격
: 시스템의 자원을 고갈시켜 서비스 거부를 유발하는 공격스니핑
: 공격대상에 직접 공격을 가하지 않고 몰래 정보를 들여다보는 수동적인 공격 기법패스워드 크래킹
사전 크래킹 Dictionary Cracking
: IP/PW가 될 가능성이 있는 단어를 대입하는 공격무차별 크래킹 Brute Force Cracking
: PW로 사용될 수 있는 문자를 무작위로 대입하는 공격패스워드 하이브리드 공격 Password Hybrid Attack
: 사전 + 무차별을 결합하여 공격레인보우 테이블 공격 Rainbow Table Attack
: 크래킹하려는 해시값을 테이블에서 검색하는 공격
네트워크 스캐너/스니퍼
: 공격자가 취약점을 탐색하는 도구ICMP Redirect 공격
: ICMP Redirect 메시지를 공격자가 원하는 형태로 위조해 패킷을 스니핑하는 공격IP 스푸핑
: IP를 위조하여 인증된 시스템인 것처럼 IP를 위조하여 목표 시스템의 정보를 빼내는 공격ARP 스푸핑
: MAC 주소를 위장하여 패킷을 스니핑하는 공격트로이 목마
: 겉으로는 정상적이나 실행하면 악성코드가 실행되는 프로그램버퍼 오버플로우 공격
: 메모리의 버퍼 크기를 초과하는 데이터를 입력해 프로세스 흐름을 변경시키는 공격 기법버퍼 오버플로우 공격 대응
스택가드
(활용 : 카나리(무결성 체크용 값)를 미리 삽입해 두고 버퍼 오버플로우 발생 시 카나리값을 체크해 변한 경우 복귀 주소를 호출하지 않음)스택쉴드
(활용 : 함수 시작시 복귀주소를 특수 스택에 저장해 두고 함수 종료시 스택 값을 비교해 다를 경우 오버플로우로 간주하고 중단)ASLR
(활용 : Address Space Layout Randomization; 주소 공간 배치 난수화. 주소 공간 배치를 난수화하여 실행 시마다 메모리 주소를 변경시키는 것)안전한 함수 사용
: 버퍼오버플로우에 취약한 scanf() 대신 fscanf() 등을 사용실행 제한
: 스택에서의 쓰기 권한 제한 등
스택 버퍼 오버플로우 공격
: 스택 영역(지역변수, 매개변수가 저장되는 영역)의 버퍼에 오버플로우를 일으켜서 복귀주소를 바꾸는 공격 기법힙 버퍼 오버플로우 공격
: 힙 영역(사용자가 직접 관리 가능한 메모리 영역)의 버퍼에 오버플로우를 일으켜서 데이터를 오염시키는 공격 기법포맷 스트링 공격
: 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격키로거 공격
: 키보드 움직임을 탐지해 주요정보를 빼가는 공격루트킷
: 불법 해킹에 사용되는 기능을 제공하는 프로그램 모음백도어
: 정상적인 인증절차를 우회하는 기법레이스 컨디션 공격
: 프로세스가 임시 파일을 만들 때 실행 중에 끼어들어 임시파일을 심볼릭 링크하는 공격심볼릭 링크
: 링크를 연결하여 원본 파일을 사용하는 것과 같은 효과를 내는 링크
스피어피싱
: 특정 대상 선정 후, 일반적인 메일로 위장한 메일을 발송해 개인정보를 탈취하는 공격스미싱
: SMS + 피싱. 문자메시지를 통해 개인정보를 탈취하거나 소액결제를 유도하는 공격공급망 공격
: SW 개발사의 코드를 수정하거나 배포 서버에 접근해 파일을 변경하는 공격큐싱
: QR코드 + 피싱. QR을 이용한 피싱 공격APT 공격
: 특정 대상을 목표로 한 지능적/지속적인 공격- 대응 :
사이버 킬체인
- 공격형 방위 시스템. APT 공격의 방어 모델
- 대응 :
봇넷
: 악성 프로그램에 감염된 컴퓨터들이 네트워크로 연결된 형태악성 봇
: 해커의 명령에 의해 원격으로 제어되는 프로그램(DDos 등에 악용)웜
: 스스로를 복제하여 전파하는 악성 프로그램제로데이 공격
: 보안 취약점이 공표되기 전 신속히 이뤄지는 공격이블 트윈 공격
: 합법적인 Wifi 제공자처럼 행세하며 연결된 사용자 정보를 탈취하는 공격랜섬웨어
: 암호화 후 복호화를 위해 돈을 요구하는 악성 소프트웨어-
Tcpdump
: 스니핑 도구(패킷 내용을 출력하는 프로그램) XSS
: 검증되지 않은 입력데이터가 포함된 웹페이지를 열람할 때, 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격Stored XSS
: 악성 스크립트가 포함된 웹페이지를 읽을 때 감염되는 기법DOM XSS
: DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 한 기법Reflected XSS
: 악성 URL 클릭 시 공격 스크립트가 반사되는 기법CSRF
: =Cross Site Request Forgery(사이트 간 요청 위조) 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 요청하게 하는 공격SQL Injection
: 악의적인 SQL 구문을 삽입, 실행시켜 DB 정보를 탈취하거나 조작하는 공격Union SQL Injection
: UNION 연산자를 이용해 쿼리 결과를 결합해 공격Form SQL Injection
: HTML Form 기반 인증의 취약점을 이용한 공격Stored Procedure SQL Injection
: 저장 프로시저를 이용해 공격Maxx SQL Injection
: 한 번의 공격으로 대량의 DB값을 변조하는 공격Error-Based SQL Injection
: 에러값을 기반으로 한 단계씩 점진적으로 정보를 캐내는 공격-
Blind SQL Injection
: 쿼리 결과의 참/거짓을 통해 공격 부 채널 공격(Side Channel Attack)
: 전격 소비와 같은 물리적 특성을 측정해 비밀 정보를 알아내는 공격드라이브 바이 다운로드(Drive By Download)
: 악성 스크립트를 웹 서버에 설치 후, 사용자를 멀웨어 서버로 연결해 감염시키는 공격워터링 홀(Watering Hole)
: 특정인을 표적으로 삼아 특정인이 자주 방문하는 웹사이트에 악성코드를 심어 공격하트 블리드(Heart Bleed)
: 하트비트(암호화 라이브러리)의 확장 모듈 취약점을 이용해 데이터를 탈취하는 공격IoT-SSDP
: SSDP(단순 서비스 검색 프로토콜)의 특성을 이용해 IoT 디바이스를 좀비 PC로 이용해 DDoS 공격크라임웨어(Crimeware)
: 금융, 인증 정보를 탈취해 금전적 이익을 취하는 악성 코드스캠 공격(SCAM)
: 기업 이메일을 도용해 거래 대금을 가로채는 공격MIMT(Man in the Middle)
: 통신 연결 중간에 침입해 통신 내용을 도청하는 공격DNS 스푸핑
: DNS 서버 캐시를 조작해 의도치 않은 주소로 접속하게 하는 공격 (=DNS 캐시 포이즈닝)포트 스캐닝(Port Scanning)
: 침입 전 어떤 포트가 활성화되어 있는지 확인하는 기법디렉토리 리스팅 취약점(Directory Listing)
: 웹 서버의 인덱싱 기능이 활성화된 경우, 서버 내 모든 디렉토리를 볼 수 있는 취약점리버스 쉘 공격(Reverse Shell)
: 타깃 서버(피해자)가 클라이언트로 접속하게 하고, 클라이언트에서 서버의 쉘을 획득하는 공격익스플로잇(Exploit)
: SW/HW의 버그나 취약점을 악용해 공격하는 행위스턱스넷 공격(Stuxnet)
: 독일 지멘스사의 SCADA 시스템을 목표로 제작된 악성코드(주요 산업 기반 시설의 제어 시스템에 침투하는 공격)크리덴셜 스터핑(Credential Stuffing)
: 다른 곳에서 유출된 로그인 정보를 다른 곳에 무작위 대입하는 공격토르 네트워크(Tor Network)
: 암호화 기법으로 데이터를 전송해 익명으로 사용 가능한 네트워크윈드토커(WindTalker)
: 터치, 타이핑 등의 패턴을 스니핑하여 해킹멜트다운(Meltdown)
: 인텔 아키텍처의 버그를 이용해 시스템 메모리에 접근하는 취약점스펙터(Specter)
: 실패한 분기 예측으로 메모리 영역을 훔쳐보는 취약점
보안 취약점
API 오용 취약점
- DNS Lookup에 의존하지 않기 (DNS 엔트리를 속일 수 있음)
- 보안에 취약한 함수 사용하지 않기
- 널 매개변수 검사하기(자바에서 매개변수가 NULL이면 반환오류가 있을 수 있다)
캡슐화 취약점
- 디버그 코드는 꼭 제거
- 민감한 데이터를 가진 클래스 사용에 주의
코드 오류 취약점
- NULL이 될 수 있는 레퍼런스는 참조 전 NULL 값인지 검사
- 정수를 문자로 변환할 때 잘려나가지 않도록 크기 확인
- 자원 사용 후에는 반드시 해제
- 변수 선언 시 초기화(이전에 사용한 내용이 남지 않도록)
시간 및 상태 취약점
- 세션 통제 취약점 : 세션 정보에 읽고 쓰기가 가능한 변수 미사용
- 병렬 시스템 : 공유 자원의 접근 직렬화, 블록문 내에서만 재귀함수 호출
에러 처리 취약점
- 취약한 패스워드 조건 미사용
- 오류 메시지에 정보 노출 하지 않음
- 예외 처리 구문 작성
보안 취약점 분석 절차
- 자산 조사
- 진단 대상 선정(전수조사 vs. 샘플링)
- 제약사항 확인
- 진단 수행(기술 진단, 인터뷰, 내부 실사 등)
- 결과 보고서 작성
보안 솔루션
네트워크 접근 제어(NAC)
: 내부 네트워크에 접속을 시도할 때 통제하는 솔루션웹 방화벽(WAF)
: 웹 애플리케이션에 특화되어 XSS나 SQL Injection 등을 탐지하고 차단하는 시스템방화벽(Firewall)
: 내부, 외부 트래픽을 모니터링하여 접근을 사용/차단하는 시스템침입 탐지 시스템(IDS)
: 비인가 사용자의 침입을 실시간으로 탐지하는 시스템가상사설망(VPN)
: 공중망을 사용할 때 마치 전용망을 사용하는 것과 같은 보안 효과를 주는 솔루션침입 방지 시스템(IPS)
: 공격 및 침입을 실시간으로 차단하는 시스템통합 보안 시스템(UTM)
: 방화벽, IDS, IPS, VPN 등 다양한 보안 장비 기능을 통합 제공하는 시스템무선 침입 방지 시스템(WIPS)
: 비인가 무선 단말기의 접속을 차단하는 시스템Secure OS
: OS 커널에 보안 기능을 추가한 솔루션Anti-Spam Solution
: 메일 서버 앞단에 바이러스 검사, 정보 유출 방지 등의 기능을 제공하는 솔루션DLP
: Data Loss Prevention; 주요 자료가 외부로 유출되는 것을 차단하는 솔루션-
DRM
: Digital Right Management; 디지털 저작물에 암호를 걸어 권한이 없는 사용자의 사용을 막는 솔루션 BIA
: 비즈니스 영향 평가(Business Impact Analysis). 장애나 재해에 따른 영향도 조사-
BCP
: 비즈니스 연속성 계획(Business Continuity Plan). 위기 관리를 기반으로 비상시 비즈니스 연속성을 보장하는 체계. BIA가 선행되어야 함 DRS
: 재해 복구 시스템(Disaster Recovery System) : DRP를 위한 관리체제- 유형
Mirror Site
: 주 센터 & 복구센터 모두 운영 상태(RTO는 0)Hot Site
: 주 센터와 동일한 수준의 자원을 대기 상태로 보유하며 데이터를 최신 상태로 유지(RTO는 4시간 이내)Warm Site
: 중요성이 높은 자원만 주 센터와 동일한 수준으로 보유(RTO는 수일~수주)Cold Site
: 데이터만 원격지에 보관하고 재해 시 이를 근간으로 복구(RTO는 수주~수개월)
- 유형
DRP
: 재해 복구 계획(Disaster Recovery Plan). 재해로 장기간 운영이 불가한 경우를 대비한 계획RTO
: 복구 목표 시간(Recovery Time Object). 재해 시 업무중단 시점~업무복구 시점까지 걸린 시간-
RPO
: 복구 목표 지점(Recovery Point Object). 재해 시 업무중단 시점~정상가동까지 허용하는 손실 허니팟(HoneyPot)
: 일부러 허술하게 만들어 해커에게 노출하는 유인시스템OWASP Top 10
: 웹 애플리케이션의 10가지 보안 취약점에 대한 방안을 제공하는 가이드핑거프린팅(Finger Printing)
: 저작권 정보와 구매자 정보를 콘텐츠에 삽입해 불법 배포자를 추적할 수 있는 기술CPTED
: 범죄 예방 환경 설계(Crime Privent Through Environment Design). 학문 간 연계를 통해 범죄를 최소화할 수 있는 환경을 설계하는 전략워터 마킹(Water Marking)
: 디지털 콘텐츠에 저작자 정보를 삽입해 불법 복제 시 원소유자를 증명하는 기술CC(Common Criteria)
: 컴퓨터 보안을 위한 국제 평가 기준C-TAS(사이버 위협 정보 분석 공유 시스템)
: 사이버 위협정보를 체계적으로 수립해 관계 기관과 자동화된 정보공유를 할 수 있는 시스템(KISA 주관)CWE(Common Weakness Enumeration)
: 소프트웨어의 공통 약점(CW)을 식별화(E)한 것CVE(Common Vulerabilities and Exposures)
: 소프트웨어의 공통 취약점(CV)을 식별화(E)한 것(CVE-연도-순서)CVSS(Common Vulnerability Scoring System)
: 공통 취약점(CV)에 등급(S)을 매긴 시스템(S). 위험도 계산 가능
해킹 대응 방법
Tripwire
: 백도어가 생기거나 설정 파일 변화가 있을 때 이를 감지할 수 있게 돕는 도구난독화
: 코드의 가독성을 낮춰 역공학에 대비Ping
: 접속하려는 원격 호스트가 정상 운영 중인지 확인하는 명령어
접근 통제 유형
식별
: 주체가 객체에게 정보 제공인증
: 객체가 주체의 신원을 인정인가
: 인증된 주체에게 접근을 허용책임추적성
: 주체의 접근과 행동을 추적 및 기록
서버 접근 통제 유형
DAC(임의적 접근 통제)
- 접근결정 : 신분
- 권한 부여 : 데이터 소유자. ACL(Access Control List)로 자원에 대한 권한 부여
MAC(강제적 접근 통제)
- 접근결정 : 권한(등급)
- 권한 부여 : 시스템
RBAC(역할 기반 접근 통제)
- 접근결정 : 역할
- 권한 부여 : 중앙관리자
인증 기술의 유형
- 지식기반 ex. ID/PW
- 소지기반 ex. 공인인증서
- 생체기반 ex. 지문, 홍채
- 특징기반 ex. 서명, 발걸음
암호화 알고리즘 방식
대칭 키 암호 방식
: 암호화 알고리즘의 한 종류로, 암/복호화에 같은 암호 키를 쓰는 알고리즘을 의미블록 암호
: 고정 길이의 블록을 암호화하는 대칭 키 암호 방식DES
: 미 연방표준국(NIST)에서 발표. 키 길이는 56bit, 블록크기는 64bit3DES
AES
: =Advanced Encryption Standard. 3DES의 문제점을 극복하기 위해 개발. 라운드 수는 10, 12, 14로 분류되고, 한 라운드는 빼고(SubBytes)+이동하고(ShiftRows)+섞고(MixColumns)+더하는(AddRoundKey) 4계층으로 구성됨SEED
: KISA가 개발. 16라운드를 거쳐 128비트 블록으로 암호화ARIA
: 학계(Academy) + 연구기관(Research Institute) + 정부(Agency) 국정원과 산학연구협회가 개발함IDEA
: DES를 대체하기 위해 개발RC5
: RC4를 개선한 알고리즘. 입출력, Key, 라운드 수가 가변인 블록 알고리즘. 32/64/128비트의 키 사용
스트림 암호
: 매우 긴 주기의 난수열을 발생시켜 암호화하는 대칭 키 암호 방식LFSR
: 선형 되먹음 시프트 레지스터RC4
: 셔플링 기법을 이용해 평뮨과 XOR 연산해 암호화
비대칭 키 암호 방식
: 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개 키와 비밀 키를 사용하는 알고리즘디피-헬만
: 비대칭키 최초의 비밀키 교환 프로토콜. 이산대수 계산의 어려움을 근거로 함RSA
: 비대칭키 수학교수 3명의 앞글자를 땄음(리베르트, 샤미르, 아들만). 소인수 분해 문제의 어려움을 근거로 함ECC
: 비대칭키 타원 곡선 암호. RSA의 대안. 짧은 키로 높은 암호 강도DSA
: 전자서명 알고리즘 표준. 이산대수 계산의 어려움을 근거로 함. 구조가 간단한 것이 장점Elgamel
: 비대칭키 이산대수의 어려움을 근거로 함. 전자서명에 사용 가능
해시 암호 방식
: 해시 값으로 원래 입력값을 찾아낼 수 없는, 일방향성의 특성을 가진 알고리즘SHA-1
: 160비트 암호화 해시함수. 1993년 미국 NIST에서 개발됨. 보안강도가 약해SHA-256
이나SHA-512
로 대체되고 있다. 전자서명시 활용MD5
: 128비트 기반 암호화 해시 함수. 결과 값이 16개 문자열. 설계상 결함으로 사용이 줄어드는 추세. 메시지 무결성에 활용HAVAL
:MD5
를 변형하여 만든 해시 함수. 128비트~256비트까지 다양한 크기 가능Tiger
: 64비트 CPU에 최적화 됨. 32비트 CPU에서도 빠르게 동작 가능. 64비트 CPU의 해시에 활용됨HAS-160
: 국내 표준 디지털 서명 알고리즘(KCDSA)을 위해 개발된 알고리즘(MD5의 장점 + SHA-1의 장점)
S-HTTP
: 클라이언트/서버 간 메시지를 암호화하는 보안 기술(HTTP를 사용한 경우에만 가능)
개인정보보호 관련 법령
개인정보보호법
: 주민등록번호, 여권번호, 운전면허번호, 외국인등록번호와 같은 고유 식별 번호는 분실, 도난, 유출, 변조, 훼손에 주의해야 함정보통신망법
: 정보통신망의 이용을 촉진하고 정보통신서비스를 이용하는 자의 개인정보를 보호함과 아울러 정보통신망을 건전하고 안전하게 이용할 수 있는 환경을 조성하기 위한 규정신용정보법
: 개인 신용정보의 취급 단계별 보호조치 및 의무사항에 관한 규정
Open SAMM
- 확대가 가능한 개방형 프레임워크. 설계 리뷰, 코드 리뷰, 보안 테스팅 3개를 주요 검증 활동으로 함 (*SAMM : 소프트웨어 보증 성숙도 모델)
시큐어 코딩 가이드
- 입력데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
SW 테스트
- 개발된 소프트웨어가 요구사항을 만족하는지 확인하고 결함을 검출하는 활동
SW 테스트의 필요성
오류 발견 관점
: 잠재된 오류를 발견 가능오류 예방 관점
: 사전에 오류를 발견하고 예방품질 향상 관점
: 요구사항과 기대 수준을 만족하도록 품질 향상
SW 테스트의 기본 원칙
완벽한 테스팅은 불가
: 무한입력값, 무한경로살충제 패러독스
: 같은 테스트케이스를 반복하면 새 오류 검출이 불가능하다.초기에 테스팅을 시작할 것
: 후반으로 갈수록 비용이 증가한다.(오르돈의 법칙, 눈덩이 법칙)정황에 의존하지 말 것
: SW 성격, 환경에 맞춰 테스트해야 함오류-부재의 궤변
: 오류(결함)가 없더라도 요구사항을 만족하지 못하면 품질이 높다고 할 수 없음결함 집중
: 결함의 80%는 전체 모듈 20% 내에서 발견된다.(파레토 법칙)결함은 늘 존재한다
: 테스팅은 결함이 존재함을 밝히는 활동
테스트 케이스 Test Case
- 요구사항을 만족하는지 확인하기 위해 설계된 입력값, 실행조건, 기대결과로 구성된 명세서
테스트 스크립트 Test Script
: TC 실행순서를 작성한 문서 (=테스트 스텝, 테스트 프로시저)테스트 시나리오 Test Scenario
: 테스트할 기능, 상황을 정리해 절차를 명세화한 문서테스트 슈트 Test Suites
: 실행환경에 따라 구분해 놓은 TC의 집합
테스트 케이스 구성요소
입력 명세
: 입력할 데이터 및 조건출력 명세
: 기대되는 결과값테스트 항목
특수절차요구
환경설정
: 수행에 필요할 HW/SW 환경의존성 기술
: TC 간 의존성식별자
테스트 종류에 따른 분류
구조 기반
: 내부 논리 흐름에 따라 테스트 (화이트박스)명세 기반
: 명세서 기반으로 테스트 (블랙박스)경험 기반
: 유사 평가 경험을 기반으로 테스트 (탐색적 테스트, 오류 추정, 체크리스트, 특성 테스트)
테스트 목적에 따른 분류
회복 테스트(Recovery)
: 고의로 실패를 유도한 뒤, 정상 복귀를 테스트안전 테스트(Security)
: 보안 결함 점검성능 테스트(Performance)
: 요구에 대한 반응속도를 측정부하 테스트(Load)
: 부하를 점점 늘려 임계점을 찾는 테스트스트레스 테스트(Stress)
: 임계점 이상의 부하를 가해 비정상적인 상황에서의 성능을 측정스파크 테스트(Spark)
: 짧은 시간 내 많은 사용자가 몰릴 때 반응 테스트내구성 테스트(Endurance)
: 오랜 시간 동안 높은 부하를 가해 성능 테스트
구조 테스트(Structure)
: 논리 경로, 소스코드 복잡도 측정회귀 테스트(Regression)
: 오류 제거 후, 수정에 의해 유입된 오류가 없는지 테스트병행 테스트(Parallel)
: 변경된 시스템과 기존 시스템에 동일 데이터 입력 후 결과값 비교
테스트 시각에 따른 분류
검증(Verification)
: 개발자 시점, 규격(명세기능)을 만족하는가확인(Validation)
: 사용자 시점, 올바른 SW
정적 테스트 종류
리뷰
: SW의 결함을 검출하거나 진행 상황을 파악하는 활동으로 전문가가 수행- 리뷰의 유형
- 관리 리뷰
- 기술 리뷰(=코드 리뷰)
- 인스펙션 : 저작자가 아닌 다른 전문가가 검토
- 워크스루 : 사전에 자료 배포 후 짧은 회의
- 감사 : 표준 준수 확인, 제3기관 수행
- 리뷰의 유형
정적 분석
: 분석 도구의 도움을 받아 수행(소스코드 실행 안 함). 코딩 표준, 소스코드 복잡도 검사
화이트박스 테스트
- 모듈 내부 구조, 논리 경로를 테스트(구조 기반 테스트, 동적 테스트)
- 유형
구문 커버리지
: 모든 명령문을 한 번 이상 수행. 결과에 무관하게 구문 실행 개수로 측정결정 커버리지(=선택 커버리지, 분기 커버리지)
: 결정 포인트 내 개별 조건식이 참/거짓을 한 번씩 수행조건 커버리지
: 결정 포인트 내 개별 조건식이 참/거짓을 한 번씩 수행(전체 조건식에 주는 영향은 고려하지 않음)조건/결정 커버리지
: 결정 포인트 내 전체 조건식도 참/거짓을 한 번씩, 개별 조건식도 참/거짓을 한 번씩 수행)변경 조건/결정 커버리지
: 결정 포인트 내 개별 조건식이 다른 개별 조건식의 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 수행다중 조건 커버리지
: 모든 개별 조건식의 가능한 조합을 100% 보장- 개별 조건식의 수가 N이라고 했을 때, 2^N의 결과가 나옴. 즉 개별조건식이 2개면 2^2=4, 3개면 2^3=8개
기본 경로 커버리지
: 맥케이브의 순환복잡도를 기반으로 수행 가능한 모든 경로를 테스트- 순환복잡도 계산 : V=E-N+2 또는 V=P+1
제어 흐름 테스트
: 제어 구조를 그래프로 나타내어 테스트데이터 흐름 테스트
: 제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트
블랙박스 테스트
- 요구사항 명세를 보며 기능 위주 테스트(명세 기반 테스트, 동적 테스트)
- 유형
상태 전이 테스트
: 이벤트에 의해 객체 상태가 전이되는 경우의 수를 측정- 상태 전이도 모델링 -> 전이 트리 도출 -> 전이 경로 TC -> 비정상 전이 TC
원인-결과 그래프 테스트
: 그래프를 통해 입력값 간의 관계 및 출력에 미치는 영향을 분석해 효용성이 높은 TC를 선택해 테스트동치 분할 테스트
: 입력 데이터 영역을 유효값/무효값으로 그룹핑해 대표값 TC를 도출해 테스트경계값 분석 테스트
: 최소값을 바로 위나 아래와 같이 입력 데이터의 극한 한계를 테스트(2-Value, 3-Value)비교 테스트
: 여러 버전의 프로그램에 같은 입력값을 넣어 결과를 비교분류 트리 테스트
: 트리 구조로 분석 및 표현하여 테스트- 항목 선정 -> 분류 트리 구축 -> 불류 클래스 조합해 TC 생성
페어와이즈 테스트
: 테스트 데이터값을 최소 한 번씩 조합유스케이스 테스트
: 유스케이스로 모델링 되어있을 때, 프로세스 흐름 기반으로 테스트 수행결과 테이블 테스트
: 요구사항을 테이블로 구성해 원인(조건)-결과(행위)를 조합해 테스트
경험 기반 테스트
- 테스터의 경험과 직관을 기반으로 한 테스트
- 유형
특성테스트
: ISO/IEC 9126 등 표준 품질 특성을 염두에 두고 테스트 수행탐색적 테스트
: TC 명세화 없이 경험에 의존해 탐색적으로 테스트 수행(테스터의 휴리스틱한 능력 필요)오류 추정
: 개발자가 범하기 쉬운 실수를 추정하고 이에 맞춰 테스트체크리스트
: 테스트 내용을 목록화하여 테스트(재사용 목적)
테스트 오라클
- 테스트 결과가 참/거짓인지 판단하기 위해 사전에 정의된 참값을 입력해 비교하는 기법
- 유형
참 오라클
: 모든 입력값의 기대결과를 생성(오류를 모두 검출 가능)샘플링 오라클
: 특정 몇 개 입력값의 기대결과만 생성휴리스틱 오라클 (Heuristic)
: 몇 개 입력값에 대해서는 정확한 결과를 제공하고 나머지는 휴리스틱으로 처리(샘플링 오라클 개선)일관성 검사 오라클 (Consistent)
: 변경이 있을 때 수행 전후 결과값이 동일한지 확인
테스트 레벨
- 개발 단계에 따라 테스트를 분류한 것
- 유형
단위 테스트
: 설계 최소 단위인 모듈, 컴포넌트, 서브 루틴 등을 테스트통합 테스트
: 단위 테스트를 통과한 모듈 간 인터페이스, 컴포넌트 상호작용 등을 테스트빅뱅 테스트
: 모든 컴포넌트를 통합해 한꺼번에 테스트(비점증적 방식)상향식 테스트
: 최하위 모듈부터 위 방향으로 통합하며 테스트- 하위 모듈을 클러스터로 결합(클러스터링)
- 드라이버 개발
- 통합된 클러스터 테스트
- 드라이버를 실제 모듈로 대체
하향식 테스트
: 메인 제어 모듈로부터 아래 방향으로 통합하며 테스트- 초기에 시스템 구조 파악
- 스텁 개발
- 깊이-우선 또는 너비-우선 방식에 따라 스텁을 실제 모듈로 대체
샌드위치 테스트
: 상위모듈은 하향식, 하위 모듈은 상향식 테스트를 수행
시스템 테스트
: 통합된 단위시스템 검증(기능적 요구사항 테스트, 비기능적 요구사항 테스트)인수 테스트
: 계약상 요구사항을 만족하는지 확인알파 테스트
: 통제된 환경에서 선택된 사용자가 개발자랑 확인베타 테스트
: 실제 환경에서 확인
테스트 하네스
- 단위 테스트를 지원하기 위한 코드와 데이터
- 유형
목 객체
: 사전에 조건을 입력하면 그 상황에 예정된 행위를 수행하는 가짜 객체- 유형
테스트 스텁
: 특정 값을 리턴하거나 메시지를 출력하는 등 단순 기능을 수행하는 더미 모듈(하향식 테스트에서 사용)테스트 드라이버
: 하위 모듈을 호출하거나 파라미터를 전달하는 모듈(상향식 테스트에서 사용)테스트 스파이
: 테스트 대상 클래스와 협력 클래스로 가는 출력을 검증하는 데 사용가짜 객체
: 협력 클래스 기능을 대체하기 위해 사용
- 유형
테스트 자동화 도구 유형
- 정적 분석 도구 : 실행하지 않고 소스 코드를 테스트
- 테스트 실행 도구 : 작성된 스크립트를 실행해 테스트(데이터 주도 접근 방식 vs. 키워드 주도 접근 방식)
- 성능 테스트 도구
- 테스트 통제 도구 : 형상 관리 도구, 결함 추적 도구 등
테스트 리포팅
- 테스트 결과 정리
- 테스트 요약문서 작성
- 품질 상태 파악
- 결과서 작성
- 테스트 실행 절차 리뷰 및 평가
테스트 커버리지
- 테스트의 수행 정도를 나타내는 값
기능 기반 커버리지
: 전체 기능을 모수로 측정라인 커버리지
: 소스 코드 라인 수를 모수로 측정코드 커버리지
: 구문(코드) 자체가 얼마나 테스트됐는가를 측정(커버리지라 함은 대부분 코드 커버리지를 가리킴)
소프트웨어 결함
- Error/오류 : 사람에 의해 생성됨. Defect(결함)의 원인
- Defect / Bug : Error로 인해 포함된 결함. 제거되지 않으면 Failure나 Problem이 됨
- Failure / Problem : Defect가 실행될 때 발생하는 현상
결함 관리 프로세스
- 결함 관리 계획
- 결함 관리 DB에 기록
- 결함 검토
- 결함 수정
- 결함 재검토
- 결함 추적 및 모니터링
- 최종 결함 분석 및 보고서 작성
결함 생명주기
- Open -> Review -> Assigned -> Resolved -> Verified -> Closed -> Deferred -> Reopen -> Closed
결함 분석 방법
고립화
: 입력값, 절차, 환경 중 무엇이 영향을 미치는지 파악구체화
: 입력값, 절차, 환경을 정확히 파악일반화
: 결함에 영향을 주는 요소를 최대한 일반화
결함 분석
결함 추이 분석
: 결함 지표를 분석해 추후 발생될 결함을 추정하는 작업결함 분포 분석
: 특정 속성에 해당하는 결함 수를 측정결함 추세 분석
: 테스트 시간 흐름에 따른 결함 수를 측정결함 에이징 분석
: 특정 결함의 지속 시간을 측정
결함 분류
- 시스템 결함(비정상적인 종료, DB 에러)
- 기능 결함(요구사항 불일치, 스크립트 에러)
- GUI 결함(부정확한 메세지)
- 문서 결함(매뉴얼 불일치)
결함 심각도
Critical(치명적)
: 테스트 불가할 정도Major(주요)
: 기능이 기대와 다르게 동작Normal(보통)
: 사소한 기능 오작동Minor(경미)
: UI 오류Simple(단순)
: 미관성 해침
결함 우선순위
- Critical : 이 결함으로 전체 기능 미동작
- High : 이 결함으로 다른 기능 미동작
- Medium
- Low
성능 분석
처리량
: 주어진 시간에 처리 가능한 트랜잭션(웹 페이지) 수응답시간
: 사용자 입력 -> 응답 출력 개시까지 걸린 시간경과시간
: 사용자 입력 -> 트랜잭션 처리 -> 결과 출력까지 걸린 시간자원 사용률
: 트랜잭션 처리 동안 사용하는 자원 사용량
성능 테스트 수행 방법
- 성능 테스트 도구 설치
- 환경설정
- 시나리오 작성
- 성능 테스트 실행 및 모니터링
성능 저하 원인 - DB 관련
DB Lock
: Lock 해제 시까지 타임 아웃불필요한 DB Fetch
: 대량의 데이터 요청으로 응답 시간 저하, 결과 세트에서 마지막 위치로 커서 옮기는 작업 빈번 시 응답 저하연결 누수 Connection Leak
: JDBC 객체 사용 후 미종료부적절한 DB Connection Pool Size
: 커넥션 풀이 너무 작거나 큼커밋 관련
: 트랜잭션이 커밋되지 않고 반환되거나 불필요한 커밋이 잦음
리팩토링
- 기능을 변경하지 않고 내부 코드를 보완해 유지보수성을 향상시키는 것
- 목적 : 유지보수성 향상, 품질 향상, 생산성 향상, 유연한 시스템
클린 코드
- 잘 작성되어 가독성 높고 단순한 코드
- 작성원칙
- 가독성
- 단순성
- 의존성 최소화
- 중복 제거
- 추상화
베드 코드
- 다른 개발자가 로직을 이해하기 어려운 코드
외계인 코드
: 아주 오래되거나 참고할 개발자/문서가 없어 유지보수가 힘든 코드스파게티 코드
: 동작은 하지만 내부 코드가 복잡하여 파악이 어려운 코드
베드 코드 유형
- 오염 : 비즈니스 기능을 수행하지 못하는 컴포넌트가 많음
- 문서 부족 : 코드와 문서 불일치
- 의미없는 이름
- 높은 결합도
- 아키텍처 침식 : 아키텍처가 변형되어 품질 저하
코드 품질 분석 도구
- 정적 분석 도구 : pmd, cppcheck, SonarQube, checkstyle, cobertuna
- 동적 분석 도구 : Avalance, Valgrind
OS (운영체제)
- 사용자가 하드웨어를 쉽게 사용할 수 있도록 인터페이스 기능을 제공하는 소프트웨어
OS의 특징
- 사용자 편리성 제공
- 인터페이스 기능 제공
- 스케줄링 담당 : 자원 분배
- 자원 관리 : CPU, 메모리 관리
- 제어 기능 : 입출력 장치 등
OS의 쉘
- 사용자 명령에 대한 처리를 담당
- 사용자 명령을 입력받아 기계어 형태로 변환해 커널에 전달
OS의 커널
- 하드웨어와 관련된 핵심 처리 기능 담당
Windows의 특징
- GUI 제공
- 선점형 멀티태스킹 방식 제공 : 동시에 여러 프로그램을 실행하면서 자원 사용을 제어
- 자동 감지 기능 제공 : HW 설치 시 환경 구성
- OLE 기능 제공 : 문서에 개체 삽입/연결
Windows 기본 명령어
ATTRIB
: 파일 속성 표시CALL
: 일괄 프로그램에서 다른 일괄 프로그램 호출CD
: 디렉토리 표시CHKDSK
: 디스크 검사CLS
: 화면 지움CMD
: 명령 프롬프트 실행COMP
: 두 개 이상 파일 비교DISKPART
: 파티션 구성 표시ECHO
: 메시지 표시ERASE
: 파일 삭제EXIT
: 인터프리터 종료
Unix의 특징
대화식 운영체제 기능
: 명령어 입력 시 해당 명령어 수행- 다중 작업 기능
- 다중 사용자 기능
- 이식성 제공
- 계층 트리 구조 파일 시스템 기능 제공
Linux
- Unix 기반의 오픈 소스 운영 체제
Mac OS
- Unix 기반의 GUI 운영 체제
Andoroid
- Linux 기반의 휴대용 장치를 위한 운영체제
Unix/Linux 계열 기본 명령어
uname -a
: 모든 시스템 정보 표시uname -r
: OS 배포버전 표시cat
: 파일 내용 출력uptime
: 가동시간 확인id
: 사용자 로그인명, id 확인last
: 모든 로그인/로그아웃 정보 확인who
: 현재 접속한 사용자 정보 확인ls
: 현재 경로의 파일 및 폴더 출력pwd
: 현재 디렉토리의 절대 경로 출력cd
: 디렉토리 이동rm
: 파일 삭제cp
: 파일 복제mv
: 파일 이동rsync
: 복사 후 동기화chmod
: 퍼미션 변경chown
: 소유자, 소유그룹 변경tar
: 압축 해제gzip
: 압축find
: 파일 검색grep
: 문자열 검색df
: 남은 디스크 용량 확인du
: 파일 사이즈 확인ps
: 프로세스 목록 확인pmap
: 프로세스 ID 기준 메모리맵 정보 표시kill
: 프로세스 종료fork
: 프로세스 생성ifconfig
: 네트워크 인터페이스 확인host
: host는 아는데 IP 주소 모를 때 사용
접근제어
- user / group / other / all
- r(read : 4) w(write : 2) x(execute : 1) 순서로 점수 부여
chmod 664 a.txt
: user, group의 rx 권한 설정, other의 r 권한 설정chmod o-w a.txt
: other 사용자의 쓰기 권한 제거
메모리 관리
- 필요할 때마다 프로세스에게 기억장치를 할당하고 사용이 끝나면 회수하는 것
메모리 관리 기법
반입 기법
:언제
주기억장치에 다음 프로세스를 언제 할당할 것인지 결정하는 기업- 요구 반입 : 요구가 있을 시 반입
- 예상 반입 : 예측하여 반입
배치 기법
:어디에
주기억장치의 어떤 위치에 프로세스를 할당할 것인지 결정하는 기법- 최초 배치 : 첫 번째 분할에 배치
- 최적 배치 : 비슷한 공간에 배치
- 최악 배치 : 가장 큰 공간에 배치
할당 기법
:어떻게
주기억장치에 어떤 방법으로 프로세스를 할당할 것인지 결정하는 기법- 연속 할당 : 연속해서 배치 ex. 단일 분할, 다중 분할
- 분산 할당 : 프로세스를 조각내어 배치 ex. 페이징(같은 크기로), 세그멘테이션(가변적 크기로)
교체 기법
:누구를
주기억장치에 있는 프로세스 중 어떤 것을 제거할 지 결정하는 기법- FIFO : 가장 먼저 들어온 페이지 교체
- LRU : 가장 오랫동안 사용되지 않은 페이지 교체
- LFU : 참조 횟수가 적은 페이지 교체
- OPT : 앞으로 사용될 가능성이 적은 페이지 교체
- NUR : 최근까지 사용되지 않은 페이지 교체 (LRU 오버헤드 감소)
- SCR : 세컨드 찬스. 먼저 들어왔지만 자주 사용되는 페이지의 교체를 막음(FIFO 보완)
- SJF : Shortest Job First. 대기 큐 중 수행시간이 가장 짧은 프로세스에게 할당
- SRT : Shortest Remaining Time First. 대기 큐에 수행(남은) 시간이 짧은 프로세스가 생기면 언제라도 선점
- RR(라운드 로빈) : 시간 할당량을 정해놓고 시간 내 처리되지 못하면 대기 큐 가장 뒤로 보냄
- HRN : 응답률이 높은 프로세스를 선택해 할당
- 다단계 큐 : 여러 개의 큐를 이용해 각각 독립적인 스케줄링을 가징
- 다단계 피드백 큐 : 여러 개의 큐에 프로세스 특성에 따라 서로 다른 시간 할당량을 부여(FIFO + RR : 우선 도착한 프로세스를 실행하되 완료가 안 된 프로세스는 하위 큐로 보내고 마지막 큐에서도 안 끝나면 RR 방식)
메모리 단편화
- 메모리 할당/반납 과정에서 낭비되는 공간이 생기는 것
내부 단편화
: 적재하고 남는 공간 발생. 페이징 기법에서 자주 발생함 => Slab Allocator, 통합, 압축으로 해결외부 단편화
: 작아서 못 쓰는 공간 발생. 세그멘테이션에서 자주 발생 => 버디 메모리 할당, 통합, 압축으로 해결
프로세스
- CPU에 의해 관리되는 현재 실행중인 프로그램(=Job, Task)
프로세스 상태
- 생성(Fork)
- 준비(Ready) : Ready List에서 할당 대기
- 실행(Run or Execute)
- 대기(Wait) : 입출력 발생시
- 완료
프로세스 상태 전이
디스패치
: Ready List에서 프로세스를 선정하고 CPU 할당 (준비 -> 실행)타이머 런 아웃
: 할당 시간 초과, PCB에 저장 후 준비 상태로 전이(실행 -> 준비)PCB
: Process Control Block. OS가 프로세스 관리를 위해 필요한 내용을 담고 있는 자료 구조
블록
: 입출력 발생(실행 -> 대기)웨이크업
: 입출력 종료(대기 -> 준비)
프로세스 스케줄링
- CPU를 사용하려는 프로세스 간 우선순위를 관리하는 작업
반환시간(응답시간) = 종료시간 - 도착시간
대기시간 = 반환시간 - 서비스시간
선점형 스케줄링
: 우선순위가 높은 프로세스가 오면 기존 프로세스를 중단하고 CPU를 점유비선점형 스케줄링
: CPU를 할당받으면 반환 시까지 다른 프로세스가 점유 불가
응답률 계산식
(대기시간 + 서비스시간) / 서비스시간 = 응답률
- 응답률이 높을수록 우선순위가 높다.
가상화
- 물리적인 리소스를 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개처럼 보이게 하는 기술
- 종류
플랫폼 가상화
: 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 독립된 환경을 구축한 것처럼 보여주는 기술리소스 가상화
: 소프트웨어가 독립된 하드웨어에서 실행되는 것처럼 보여주는 기술스토리지 가상화
: 스토리지와 서버 사이에 계층을 추가해 논리적 단위로 활용 ex. 분산 파일 시스템컴퓨팅 가상화
: 컴퓨터 리소스를 가상화하여 논리적 단위로 활용 ex. 하이퍼바이저I/O 가상화
: I/O와 서버 사이에 계층을 추가해 자원을 효율적으로 활용 ex. VNIC(가상 네트워크 인터페이스 카드)컨테이너
: 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 하는 기술 ex. 도커
네트워크 가상화 기술
- 물리적으로 떨어진 장비들을 연결하는 기술
- 종류
SDN
: Software Defined Network. 컨트롤 플레인(트래픽 경로 지정) / 데이터 플레인(트래픽 전송)으로 분리하여 네트워크를 관리하는 기술NFV
: Network Function Virtualization. 라우터, 로드밸런서 등 하드웨어에 가상화 기술을 적용하여 네트워크 서비스를 가상화하는 기술
클라우드 컴퓨팅
- 자신의 컴퓨터가 아닌 클라우드에 연결된 컴퓨터로 처리하는 기술
- 분류
사설 클라우드
: 조직 내부의 컴퓨팅 자원을 이용해 내부적으로 구축한 클라우드. 보안성 높고, 직접 제어 가능공용 클라우드
: 제공 업체의 서비스를 이용한 클라우드. 확장성 높음하이브리드 클라우드
: 사설 + 공용 클라우드 동시 사용
- 유형
IaaS
: 인프라형 서비스. 서버, 스토리지 같은 자원을 클라우드로 제공PaaS
: 플랫폼형 서비스. 인프라를 관리하는 복잡함 없이 애플리케이션 개발에 필요한 플랫폼을 클라우드로 제공SaaS
: 소프트웨어형 서비스. 사용자에게 제공하는 소프트웨어와 관련 데이터를 클라우드로 제공
클라우드 기반 개발 환경 인프라
컴퓨팅 환경
: 프로그램을 설치하고 하드웨어 세팅스토리지
: 대규모 데이터 저장용 장치 세팅데이터베이스
: 실데이터를 저장하고 관리하기 위한 세팅, 멀티미디어 데이터 처리를 위한 세팅네트워킹 전송
: 서비스, 프로그램, 콘텐츠 전달을 위한 환경 세팅개발자 도구
: 개발을 위한 환경 구축보안 환경 구축
: 시스템과 데이터 보호를 위한 액세스, 암호화 관리 등응용 기술 세팅
: AR, VR, 머신러닝, 딥러닝 등생산성 향상
: 볼륨 자동 확장 환경, 스트리밍 서비스 환경 등 구축
개발 지원 도구
요구사항 관리
: JFeature설계
: DBdesigner구현
: Eclipse, CodeBlock테스트
: JUnit빌드
: Ant, Jenkins형상관리
: SubVersion품질관리
: jDepend, Mylyn이슈관리
: Mentis, Git프로젝트 관리
: Redmine, OpenProj
개발 인프라 구축 방식
온프레미스 방식
: 외부 인터넷망이 차단된 상태에서 인트라넷망만을 활용해 개발 환경 구축클라우드 방식
: 서비스를 임대하여 개발환경 구축하이브리드 방식
CPU 자원 할당 관련 용어
우선순위
: 프로세스별 우선순위에 따라 CPU 할당- 기한부 : 정해진 시간 내 프로세스가 완료되도록 계획
릴리즈 노트
- 제품에 대한 정보와 수정/변경 작업에 대한 정보를 제공하는 문서
릴리즈 노트 작성항목
- 헤더 : 문서 이름, 제품 이름, 버전 번호 등
- 개요
- 목적 : 새로운 기능 목록
- 이슈 요약 : 버그 설명이나 추가항목 등
- 재현 항목 : 버그 재현 단계
- 수정/개선 내용
- 사용자 영향도
- 소프트웨어 지원 영향도
- 노트 : SW/HW 설치 항목, 업그레이드 항목
- 면책조항
- 연락정보
제품 소프트웨어 패키징 도구
- 디지털 콘텐츠의 저작권을 보호하고 안전한 유통과 배포를 보장하는 도구
패키징 도구
- 암호화
- PKI : 공개키 기반 구조. 인증서를 발급받아 안전하게 통신
- 전자서명 : 서명자와 서명사실을 나타내는 전자적 정보
- 키 관리
- 식별기술
- DOI : Digital Object Indentifier. 디지털 저작물에 번호를 부여하는 시스템
- URI : 인터넷 자원을 식별하는 고유 주소
- 저작권 표현
- XrML : 권리 조건을 표현한 XML 기반의 마크업 언어
- MPEG-21 : 멀티미디어 프레임워크를 위한 표준 규격
- 인증
- SSO : 한 번의 인증을 통해 여러 시스템에 재인증할 필요 없이 로그인하는 기술
- 정책 관리
- XML : 특수한 목적을 갖는 마크업 언어를 만드는 데 쓰는 언어
- CMS : 콘텐츠 생산~폐기까지 전 과정을 관리하는 기술
- 암호화 파일 생성
- Pre-packaging : 콘텐츠를 등록하자마자 암호화하는 방법
- On-the-fly Packaging : 사용자가 요청한 시점에 콘텐츠를 암호화하는 방법
- 크랙 방지
- 코드 난독화 : 역공학을 방지하기 위해 소스코드를 알아보기 힘들게 바꾸는 기술
- SecureDB : DB의 파일을 암호화하는 보안 강화 기술
패키징 도구 활용시 고려사항
- 암호화/보안 고려
- 이기종 연동 고려
- 복잡성 및 비효율성 고려
- 최적화 암호화 알고리즘 적용
- 사용자 편의성 고려
저작권
- 저작물에 대한 배타적 독점적 권리
DRM 구성요소
- 제공자(저작권자)
- DRM 콘텐츠 : 암호화된 콘텐츠와 콘텐츠의 메타데이터
- 패키저 : 콘텐츠 배포를 위해 묶는 도구
- 클리어링 하우스 : 라이센싱 중개/발급 및 저작권료 정산/분배
- 콘텐츠 소비자
- DRM 컨트롤러 : 콘텐츠의 이용 권한 통제
- 보안 컨테이너 : 콘텐츠의 유통을 위한 보안장치
제품 소프트웨어 사용자 매뉴얼
- 사용자가 소프트웨어 사용에 필요한 내용을 기록한 문서
사용자 매뉴얼 작성 프로세스
- 작성 지침 정의
- 구성요소 정의
- 구성요소별 내용 작성
- 검토
제품 소프트웨어 배포본
- 사용자가 쓰기 편하도록 개발된 컴포넌트 또는 패키지가 제품화된 형태
설치 매뉴얼 구성요소
- 목차 및 개요
- 이력 정보
- 매뉴얼 주석
- 설치 도구 구성
제품 소프트웨어 패키징
- 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위해 포장하는 과정
배포용 미디어 제작 프로세스
- 미디어 형태 선정(CD? 온라인?)
- 관리 체계 확인(시리얼 넘버 등)
- 설치 파일 및 매뉴얼 확인
- 배포본 검증
- 배포용 미디어 정보 확인
- 최종 인증 확인 및 배포
백업의 유형
- 전체 백업(Full)
- 차등 백업(Differential) : 마지막 전체 백업 이후 변경된 모든 데이터 백업
- 중분 백업(Incremental) : 정해진 시점 기준으로 그 이후의 변경된 데이터 백업