개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동
- 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
- 대규모 데이터에서 의미 있는 패턴을 파악하거나 예측하여 의사결정에 활용하는 기법
- 데이터의 숨겨진 정보를 찾아내어 이를 기반으로 서비스와 제품에 도입하는 과정
- 통계분석은 가설이나 가정에 따른 분석, 검증을 하지만 데이터 마이닝은 수리 알고리즘을 활용하여 대규모 데이터에서 의미 있는 정보를 찾아낸다.
- 텍스트 마이닝, 웹 마이닝 과 함계 다양한 분야에서 활용
: 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과 값을 예측하는 기법
: 데이터 안에 존재하는 항목들 간의 종속관계를 찾아내는 기법
: 연관 규칙에 시간 관련 정보가 포함된 형태의 기법
: 정보가 없는 상태에서 데이터를 분류하는 기법
- 서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기위한 표준화된 통신규약
- 톰 마릴은 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지를 재전송하는 일련의 방법을 '기술적 은어'를 뜻하는 프로토콜이라고 정의
"속성-값 쌍"또는 "키-값 쌍" 으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포멧
HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단접을 개선한 특수한 목적을 갖는 마크업 언어
자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적 으로 XML데이터를 교환하고 조작하기 위한 웹 기술
웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업
: 프로세스가 결과를 산출하기까지 소요되는 시간
: 프로세스들이 입력되어 서비스를 요청하고, 반응하기 시작할 때까지 소요되는 시간
: 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간
반환시간 = 대기시간 + 수행시간
: 프로세스가 프로세서에서 할당되기까지 큐에 대기하는 시간
: 프로세스가 대기 큐에서 대기하는 평균 시간
: 요구되는 Processing Time을 모두 수행하고 종료된 시간
: 한 프로세스가 프로세서를 독점하는 것을 방지하기 위해 서비스되는 시간할당량
(대기시간 + 서비스 시간) / 서비스 기간
: 하나의 프로세스가 CPU를 차지하고 있을 떄, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
장점 | 단점 |
---|---|
- 비교적 빠른 응답 - 대화식 시분할 시스템에 적합 | - 높은 우선수위 프로세스들이 들어오는 경우 오버헤드 초래 |
: 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식
장점 | 단점 |
---|---|
- 응답시간 예상이 용이 - 모든 프로세스에 대한 요구를 공정하게 처리 | - 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기 |
HRN의 우선순위 = (대기시간 + 서비스 시간 ) / 서비스 시간
테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어들
: 하나의 속성이 가질 수 있는 원자값들의 집합
: 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
: 데이터 저장 공간
: 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
: 검색을 빠르게 하기 위한 데이터 구조
칼럼 BETWEEN 값1 AND 값2
에서 값1보다 크거나 같고, 값2보다 작거나 같은 데이터 조회칼럼 IN (값1, 값2 ..)
에서 칼럼이 IN 안에 포함된 경우의 데이터 조회칼럼 NOT IN (값1, 값2 ..)
에서 칼럼이 IN 안에 포함되어 있지 않은 경우의 데이터 조회칼럼 LIKE 패턴
에서 칼럼이 패턴에 포함된 경우의 데이터 조회패턴 | 설명 |
---|---|
% | 0개 이상의 문자열과 일치 |
[ ] | 1개의 문자와 일치 |
[^] | 1개의 문자와 불일치 |
_ | 특정 위치의 1개의 문자와 일치 |
IS NULL
에서 컬럼이 NULL인 데이터 조회IS NOT NULL
에서 컬럼이 NULL이 아닌 데이터 조회인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
: 트랜잭셩을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질
: 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 하는 성질
: 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
: 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질
활동 상태 (Active)
: 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
부분 완료 상태 (Partially Committed)
: 마지막 명령문이 실행된 후에 가지는 상태
완료 상태 (Committed)
: 트랜잭션이 성공적으로 완료된 후 가지는 상태
실패 상태 (Failed)
: 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
철회 상태 (Aborted)
: 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태
: 트랜잭션을 메모리에 영구적으로 저장하는 명령어
: 트랜잭션 내역을 저장 무효화시키는 명령어
: ROLLBCK을 위한 시점을 지정하는 명령어
다수 사용자 환경에서 여러 트랜잭션을 수행할 때 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법
: 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 목하도록 상호배제기능을 제공
: 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
: 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트래잭션이 실행을 시작하기 전에 타임스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
: 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭셔의 시작와 Commit에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
: 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만 Commit기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
- 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
- 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나 서버의 TCP 연결을 소진시키는 등의 공격
- 1대의 공격자 컴퓨터에서 타킷 시스템에 악성 패킷을 보내는 방식으로 공격
- DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
- 해커들이 취약한 인터넷 시스템에 대한 액세스가 이뤄지면 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격을 개시
- DoS와 다르게 공격을 하도록 지시한다.
- 수많은 감염 호스트를 통해 공격을 감행한다.
: 공격 규모를 확인하여 가용성이 침해될 수 있는 지점을 확인 및 데이터 기반 차단 정책 업데이트
: 공격자는 대부분 Source IP를 위조하므로 IP 위변조 여부를 확인하는 절차 필요
: 방화벽, 침입 탐지 시스템 등의 보안 솔루션 운영
: 홈페이지에 대한 모의해킹 등을 후ㅐㅇ하여 보안 유지
: 시스템에 존재하는 취약점을 패치를 통해 해결
케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법
: 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법
: 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격 도구
: 사전 크래킹 공격, 무차별 크래킹 공격, 패스워드 하이브리드 공격, 레인보우 테이블 공격 활용
: 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타킷 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP 주소로 위조하여 타깃에 전송하는 공격기법
: 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법
: 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법
: 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램
: 사회공학의 한 기법으로 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격
: 문자메시지를 이용하여 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장하여 개인 비밀정보를 요구하거나 휴대폰 소액 결제를 유도하는 피싱 공격 (사이버 사기)
: 스마트폰을 이용하여 금융 업무를 처리하는 사용자에게 인증 등이 필요한 것처럼 속여 QR코드를 통해 악성 앱을 내려받도록 유도, 금융 정보 등을 빼내는 피싱 공격 (사이버 사기)
: 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
: 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격기법
: 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에 소프트웨어를 설치 또는 업데이트 시에 자동적으로 감염되도록 하는 공격기법
: 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격기법
: 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
: 스스로 실행되지 못하고 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드
: 공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단ㄴ계 프로세스별 공격분석 및 대응을 체계화한 ART 공격 방어 분석 모델
: 악성 코드의 한 종류로 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값을 요구 악성 소프트웨어
: 무선 Wifi피싱 기법으로 공격자는 합법적인 Wifi제공자처럼 행세하며 노트북이나 휴대 전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격기법
: 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격기법
ex) 도청
: 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 보안 기술로 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술
: 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일 (=URL 하이재킹)
사람 또는 프로세스가 서버 내 파일에 읽기, 쓰기, 실행 등의 접근 여부를 허가하고나 거부하는 기능
: 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법
: 객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법
: 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법
유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고 신뢰성 있는 인증, 권한 부여, 계정 관리를 체계적으로 제공하는 정보 보호 기술
: 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술
: 1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발되었으며 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜
데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법
구분 | 대칭 키 암호 방식 | 비대칭 키 암호 방식 |
---|---|---|
키 | 대칭 키(비밀 키) | 비대칭 키(공개키, 사설키) |
키의 관계 | 암호화 키 = 복호화 키 | 암호화 키 != 복호화 키 |
키 개수 | n(n-1) / 2 | 2n |
암호 알고리즘 | 공개 | 공개 |
장점 | 계산 속도가 빠름 | 암호화 키 사전 공유 불필요 관리해야 할 키 개수가 적음 |
단점 | 키 분배 및 관리의 어려움 기밀성만 보장 | 계산 속도 느림 |
알고리즘 | DES,AES,SEED | 디피-헬만, RSA |
: 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
DES **
: 1975년 IBM에서 개발하고 NIST에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
- 블록 크기 = 64 / 키 길이 = 56(페이스텔 구조) / 16라운드 암호화 알고리즘
- DES를 3번 적용하여 보안을 더욱 강화한 3DES도 활용됨
SEED
: 1999년 국내 KISA이 개발한 블록 암호화 알고리즘
- 128bit비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 암호화 블록을 암호화하여 출력하는 방식
- 블록 크기 = 128 / 키 길이 = 128, 256
AES **
: 2001년 NIST에서 발표한 블록 암호화 알고리즘
- DES의 개인 키에 대한 전사적 공격이 가능해지고 3DES의 성능문제를 극복하기 위해 개발
- 블록 크기 = 128 / 키 길이 = 128,192,256
- 라운드 수 = 10, 12, 14 / 한 라운드는 4가지 계층으로 구성
ARIA
: 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
- 학계, 연구기관, 정부의 영문 앞글자로 구성
- 블록 크기 = 128, 키 길이 = 128, 192, 256
- 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며 ARIA가 사용하는 대부분의 연산은 단순한 바이트 단위 연산으로 구성
IDEA
: DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
- 128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦
LFSR
: 시프트 레지스터의 일종으로 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
- 사용되는 선형 함수는 주로 XOR이고 초기 비트 값은 seed라고 한다.
Skipjack
: NSA에서 개발한 Cipper 칩에 내장된 블록 알고리즘
- 소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현됨
- 전화기와 같이 음성을 암호화하는데 주로 사용되고 64비트의 입/출력, 80비트의 키, 32라운드를 가짐
: 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법
ex) DES, AES, SEED
: 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
ex) RC4
: 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식
디피-헬만
: 최초의 공개키 알고리즘으로 1976년에 고안한 알고리즘으로서 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있음
- Differ-Helman은 공개키 암호 방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시하였으며 많은 키 분배 방식에 관한 연구의 기본이 됨 (최초의 비밀키 교환 프로토콜)
RSA
: 1977년 3명의 수학 교수가 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘 이용하는 공개키 암호화 알고리즘
- 비밀키의 복호화가 어려운 RSA안전성은 소인수 분해 문제의 어려움에 근거를 두고 있음
ECC
: 1985년 RSA 암호 방식에 대한 대안으로 처음 제안
- ECC는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘
- PKI기반의 RSA의 문제점인 속도와 안전성 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고 RSA보다 키의 비트 수를 적게하면서 동일한 성능을 제공하는 것이 가장 큰 특징
EIGAMAL
: 1984년에 제안한 공개키 알고리즘
- 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며 RSA와 유사하게 전자서명과 데이터 암/복호화에 함께 사용가능
: 현재 비대칭 키 암호방식 중에서 가장 널리 쓰이고 있는 방식
: 암호 키를 교환하는 방법으로써 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀키를 공유할 수 있도록 하는 방식
MD5 **
: 1991년에 MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용
- 각각의 512비트짜리 입력 메시지 블록에 대해 차례로 동작하여 128비트의 해시값을 생성하는 해시 알고리즘
SHA-1
: 1993년 NSA에서 미 정부 표준으로 지정되었고 DSA에서 사용
- 160비트의 해시값을 생성하는 해시 알고리즘
SHA-256/384/512
: SHA알고리즘의 한 종류로서 256비트의 해시값을 생성하는 해시함수
- AES의 키 길이에 대응하도록 출력 길이를 늘인 해시 알고리즘
HAS-160
: 국내 표준 서명 알고리즘 KCDSA를 위하여 개발된 해시함수
- MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘
HAVAL
: 메시지를 1024bits 블록으로 나누고 128, 160, 192, 224, 256 비트인 메시지 다이제스트를 출력하는 해시 알고리즘
IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP보안 프로토콜
: 대칭 암호화를 통해 전송 데이터에 대한 기밀성 제공
: 메시지가 위/변조되지 않았음을 보장하는 특성 제공
: 데이터 원천 인증 및 송신처 인증
: 송신 측에서 IP패킷별로 순서번호를 통해 재전송 공격 방지
: Security Policy를 통해 시스템 접근 제어
: IP 패킷의 페이로드를 보호하는 모드
: IP 패킷 전체를 보호하는 모드
: MAC을 이용하여 인증과 송신처 인증을 제공해주는 프로토콜로 기밀성은 제공하지 않은 프로토콜
: MAC와 암호화를 이용하여 인증과 송신처 인증과 기밀성을 제공하는 프로토콜
: 공개된 네트워크를 통하여 키를 어떻게 할 것인가를 정의, IKE교환을 위한 메시지를 전달하는 프로토콜
입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
: 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
: 응용 프로그램의 보안 취약점을 이용해서 악의적은 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법
: 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템
: 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비
: 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션
: 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위(침입)을 실시잔으로 탐지하는 시스템
: 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템
: 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템
: 방화벽, IDS, IPS, VPN, 안티 바이러스, 이메일 필터링 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
: 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션
: 다양한 보안 장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고 침해사고에 신속하게 대응하는 보안 관제 솔루션
: 방화벽, IDS, UTM, 가상 사설망 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템
소프트웨어 보안 요구사항이 반영되어 있음을 보증하고 취약점을 발견하고 개선하여 안전한 소프트웨어를 개발하기 위한 활동
: SW를 실행하지 않고 보안 약점 분석
: SW 실행환경에서 보안 약점 분석
: 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)
: 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
: 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법
: 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트하는 기법
: 테스트 대상/시스템이나 객체의 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
: 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법
: SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법
: 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법
: 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 산정하여 테스트하는 기법
: 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교해 보는 테스트 기법
: 개발자가 범할 수 있는 실수를 추정하고 이에 따를 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법
: 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
: 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
: 결정 커버리지는 (각 분기의) 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 커버리지
: 조건 커버리지는 (각 분기의) 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 커버리지
: 전체 조건식뿐만 아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 테스트 커버리지
: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지
: 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
: 수행 가능한 모든 경로를 테스트하는 기법
: 프로그램 제어 구조를 그래프 형태로 나타내어 내부로직을 테스트하는 기법
: 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법
: 프로그램의 반복구조에 초점을 맞춰 실시하는 테스트 기법
: 시스템에 고의로 실패를 유도하고 시스템의 정상적 복귀 여부를 테스트하는 기법
: 불법적인 소프트웨어가 접근하여 시스쳄을 파괴하지 못하도록 소스 코드 내의 보안적인 결함을 미리 점검하는 테스트 기법
: 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
: 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법
: 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법
특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합
테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
: 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
: 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클
: 샘플링 오라클을 개선한 오라클로 특정 입력값에 대해 올바를 결과를 제공하고 나머지 값들에 대해서는 추정으로 처리하는 오라클
: 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인하는 오라클
함계 편성되고 관리되는 테스트 활동의 그룹
: 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
: 단위 테스트를 통과한 모듈 사이의 인터페이스 / 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트 단계
: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
: 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
: 선택된 사용자가 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수 테스트
: 실제 환경에서 일정 수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트
관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
데이터의 중복성으로 인해 릴레이션을 조작할 떄 발생하는 비합리적 현상
: 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
: 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
: 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우
릴레이션에서 속성의 의미와 속성 간 상호관계로부터 발생하는 제약조건
: 릴레이션에서 기본 키가 복합 키일 경우 기본 키를 구성하는 속성 중 일부에게 종속된 경우
: 릴레이션에서 '결정자->종속자'관계가 있을 때 종속자는 결정자의 전체 속성에 대해 종속하고 부분 집합 속성에 종속하지 않는 경우
: 릴레이션에서 '결정자->종속자' , '종속자->Z' 종속관계가 있을 때 '결정자->Z'가 성립되는 경우
정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
장점 | 단점 |
---|---|
반 정규화된 데이터 구조는 성능 향상과 관리의 효율성이 증가 | 데이터의 일관성 및 정합성 저하 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음 |
소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법
- 인터페이스 모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현
- 오듈 간의 결합도는 줄이고 응집도는 높인 공통 모듈 구현을 권장
모듈의 독립성을 나타내는 정도로 모듈 내부 구성요소 간 연관정도
- 하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.
우연적 응집도(Coincidental Cohesion)
: 모듈 내부의 각 구성ㅇ요소가 연관이 없을 경우의 응집도
논리적 응집도(Logical Cohesion)
: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도(Temporal Cohesion)
: 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도(Procedural Cohesion)
: 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도(Communication Cohesion)
: 동일한 입출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우의 응집도
순차적 응집도(Sequential Cohesion)
: 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
기능적 응집도(Functional Cohesion)
: 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
내용 결합도(Content Coupling)
: 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
공통 결합도(Common Coupling)
: 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
외부 결합도(External Coupling)
: 두 개의 모듈이 외부에서 도입된 데이터 포맥, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
제어 결합도(Control Coupling)
: 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우의 결합도
스탬프 결합도(Stamp Coupling)
: 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
자료 결합도(Data Coupling)
: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우의 결합도
종류 | 설명 |
---|---|
jUnit | 자바 프로그래밍 언어용 단위 테스트 도구 JAVA 단위 테스트 프레임워크 |
CppUnit | 자바의 jUnit을 C++로 구현한 단위 테스트 도구 |
HttpUnit | 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구 |
최종 사용자인 고객에게 개발 과정에서 정리된 제품의 릴리즈 정보를 제공하는 문서
- 릴리즈 정보는 상세 서비스 정보를 포함하여 제품의 수정, 변경, 개선하는 일련의 작업들에 대한 정보이며 릴리즈 노트를 통해 제공된다.
: 문서이름, 제품 이름, 버전 번호, 릴리즈 날짜 등의 정보
: 제품 및 변경에 대한 간략한 전반적 개요
: 릴리스 버전의 새로운 기능목록과 릴리스 노트의 목적에 대한 개요, 버그수정 및 새로운 기능 기술
: 버그의 간단한 설명 또는 릴리즈 추가 항목 요약
: 버그 발견에 따른 재현 단계 기술
: 수정/개선의 간단한 설명 기술
: 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술
: 버전 변경에 따른 소프트웨어의 지원 프로세스 및 영향도 기술
: 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 메모
: 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 붕복 등 참조에 대한 고지 사항
: 사용자 지원 및 문의에 관련한 연락처 정보
네트워크 통신에서 생긴 여러 가지 충돌 문제를 완화하기 위해 국제 표준화 기구에서 제시한 네트워크 기본 모델
: 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
: 데이터 형식 설정과 부호교환, 암/복호화
: 연결접속 및 동기제어
: 신뢰성 있는 통신 보장 / 데이터 분할과 재조립, 흐름 제어, 오류 제어 혼잡제어 등을 담당
: 단말기 간 데이터 전송을 위한 최적화된 경로 제공
: 인접 시스템 간 데이터 전송, 전송오류 제어 / 동기화, 흐름제어 등의 전송 기능 제공 / 오류 검출, 재전송 등 기능 제공
: 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜
IP패킷의 앞부분에서 주소 등 각종 제어정보를 담고 있는 부분
IP 주소 고갈문제를 해결하기 위해 원본 네트워크를 여러 개의 네트워크로 분리하는 과정
: 한 대역을 동일한 크기로 나누는 방식
: 한 대역을 다양한 크기로 나누는 방식
인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜로 제정된 차세대 인터넷 프로토콜
데이터를 패킷 단위로 보내는 방식
종류
데이터그램 방식
: 연결 경로를 확립하지 않고 각가의 패킷을 순서에 무관하게 독립적으로 전송하는 방식
- 각각의 패킷을 독립적으로 취급하는 방식으로 어떠한 결과와도 관계가 없는 단일 패킷 단위로 전송하고 수신
- 헤어를 붙여서 개별적으로 전달하는 비연결형 교환 방식
가상 회선 방식
: 패킷이 전송되기 전에 송/수신 스테이션 간의 논리적인 통신 경로를 미리 설정하는 방식
- 많은 이용자들이 상호 통신을 할 때 하나의 통신설비를 공유하여 여러 개의 논리적인 태널을 확정한 후 통신을 할 수 있는 방식
- 목적지 호스트와 미리 연결 후 통신하는 연결형 교환 방식
노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크
: 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
: 대용량 파일을 분산된 서버에 저장하고 그 저장된 데이터를 빠르게 처리할 수 있게 하는 하둡 파일 시스템
: 구글에서 대용량 데이터를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년에 발표한 소프트웨어
: 커넥터를 사용하여 RDBMS에서 HDFS로 데이터를 수집하는 기술
: 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며 수평적으로 확장이 가능한 DBMS
: 수집된 후 저장은 되어 있지만 분석에 활용되지는 않는 대량의 데이터
: 빅데이터 분석 기술 중 대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법
: 사용자의 의사 결정에 도움을 주기 위하여 기간 시스템의 데이터베이스에 축적된 데이터를 공통 형식으로 변환해서 관리하는 데이터베이스
: 데이터 웨어하우스 환경에서 정의된 접근계층으로 데이터 웨어하우스에서 데이터를 꺼내 사용자에게 제공하는 역할
: 데이터에 대한 구조적인 데이터로서 일련의 데이터를 정의하고 설명해 주는 데이터이고 구축할 정보 자원을 기술하는 데이터
: 지속적으로 보존할 가치를 가진 디지털 객체를 장기간 관리하여 이후의 이용을 보장할 수 있도록 변환, 압축 저장하여 DB화하는 작업
: 정보 주체가 기관으로부터 자기 정보를 직접 내려받아 이용하거나 제3자와 제공을 허용하는 방식으로 정보 주체 중심의 데이터 활용체계
: 웹 사이트를 크롤링하여 구조화된 데이터를 수집하는 파이썬 기반의 애플리케이션 프레임워크
각종 재해, 장애, 재난으로부터 위기관리를 기본으로 비즈니스 연속성을 보장하는 체계
: 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정항 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비느지스 영향 분석
: 업무중단 시점부터 업무가 복귀되어 다시 가동될 때까지의 시간
: 업무중단 시점부터 데이터가 복구되어 다시 정상가동될 때 데이터의 손실 허용 시점
: 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
: 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구센터
: 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템으로 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템
: 웹 애플리케이션 취약점 중 공격 빈도가 높으며 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드
: 멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술(저작권 정보구매가 정보)
: 디지털 콘텐츠에 저작권자 정보를 삽입하여 불법 복제 시 워터마크를 추출, 원소류자를 증명할 수 있는 콘텐츠 보호 기술
: 전자금융거래에 사용되는 단말기 정보, 접속 정보, 거래 정보 등을 종합적으로 분석하여 의심 거래를 탐지하고 이상 거래를 차단하는 시스템
: 정보기술의 보안 기능과 보증에 대한 평가 기준(등급), 정보보호 시스템의 보안 기능 요구사항과 보증 요구사항 평가르 위해 공통으로 제공되는 국제 평가 기준
: 사이버 위협정보를 체계적 수립해서 KISA 주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템
: 리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리
: 미국 비 영리회사인 MITRE 사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록
: 미국 비영리 회사인 MITRE 사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록으로 소스 코드 취약점을 정의한 데이터베이스
: 조직의 주요 정보자산을 보호하기 위하여 정보보호 관리 절차와 과정을 체계적으로 수립하여 지속적으로 관리하고 운영하기 위한 종합적인 체계
: 기업이 개인정보보호 활동을 체계적/지속적으로 수행하기 위해 필요한 보호조치 체계를 구축했는지 여부를 점검, 평가하여 기업에게 부여하는 인증제도
: 개인정보를 활용하는 새로운 정보 시스템의 도입이나 개인정보 취급이 수반되는 기존 정보 시스템의 중대한 변경 시, 동 시스템의 구축/운영/변경 등이 프라이버시에 미치는 영향에 대하여 사전에 조사 및 예측, 검토하여 개선 방안을 도출하는 체계적인 절차
: 임시 키 무결성 프로토콜 / IEEE 802.11i 암호화 방식으로 초기 wifi장비에서 널리 사용되었던 안전하지 않은 WEP암호화 표준을 대체하기 위한 암호 프로토콜
: ISMS와 PIMS로 개별 운영되던 인증체계를 하나로 통합한 통합인증제도
소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
: 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식의 방법론
: 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
: 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
: 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
: 특정 제품에 젖용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
: 절차보다는 사람이 중심이 되어 변황 유연하고 신속하게 적응하면서 효율적으로 시스쳄을 개발할 수 있는 신속 적응적 경량 개발 방법론
XP
:의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 1~3주의 반복 개발주기
- 5가지 가치와 12개의 실천항목
<5가지 가치>
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
<12가지 기본원리>- 짝 프로그래밍 (Pair Programming)
- 공통 코드 소유 (Collective Ownership)
- 지속적인 통합(CI)
- 계획 세우기
- 작은 릴리즈
- 메타포어
: 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리- 간단한 디자인
- 테스트 기반 개발 (TDD)
- 리팩토링
- 40시간 작업
- 고객 상주
- 코드 표준
스크럼(SCRUM)
: 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
백로그
를 나눈 후에스크럼 팀
을 구성하고스크럼 회의
를 거쳐스프린트
를 수행하고스프린트 회고
를 수행한다.
린(LEAN)
: 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
<7가지 원칙>
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인조
- 사람 존중
- 전체 최적화
: 하나의 클래스는 하나의 목적을 위해서 생성되며 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙
: 소프트웨어의 구성요소는 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙
: 서브타입은 어디서나 자신의 기반타입으로 교체할 수 있어야 한다는 원칙
: 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말하야 한다는 원칙
: 실제 사용 관계는 바뀌지 않으며 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙
현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
: 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
: 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계
: 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
: 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계
: 트랜잭션의 인터페이스를 설계하는 단계 / 논리적 스키마를 설계하는 단계
: 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계
관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어
목적 : 무엇을 얻을 것인지
현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용하고 있는 모델
반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편 쉽고 효율적인 테스트를 수행할 수 있는 방법
: 만들어진 애플리케이션을 실행하지 않고 분석하는 도구
: 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구
애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위한 코드와 데이터를 말하며 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
: 테스트 대상 하위 모듈을 호출하는 등 상향식 테스트에 필요
: 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요
: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
: 입력값, 실행 조건, 기대 결과 등의 집합
: 애플리케이션의 테스트가 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서
: 자동화된 테스트 실행 절차에 대한 명세
: 사용자의 행위를 조건부로 사전에 입력해두면 그 상황에 예정된 행위를 수행하는 객체
유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스 코드를 수정,보완하여 가용성 및 가독성을 높이는 기법
소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 디자인 패턴을 참고하여 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움이 됨
객체 인스턴스 생성에 관여, 클래스 정의과 객체 생성 방식을 구조화,캡슐화를 수행
: 복잡한 인스턴스를 조립하여 만드는 구조로 복합 객체를 생성할 때 객체를 생성하는 방법과 구현하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있다.
: 일반적인 원형을 만들어 높고 복사하여 필요한 부분만 수정하여 사용하는 패턴으로 생성할 객체의 원형을 제공하는 인스턴스에서 생성할 객체들의 타입이 결정되도록 설정하여 객체를 생성할 때 갖추어야 할 기본 형태가 있을 때 사용된다.
: 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식으로 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는다.
: 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴으로 생성된 클래스에서는 API(인터페이스)를 제공하고 구체적인 구현은 다른 클래스에서 이루어지는 특징을 갖는다.
: 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하여 생성된 객체를 어디에서든지 참조할 수 있도록 한다.
더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
: 기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
: 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 기능 확장이 필요할 때 개체 간의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주어 상속의 대안으로 사용하는 패턴
: 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴으로 오류에 대해서 단위별로 확인할 수 있게 하며 사용자의 측면에서 단순한 인터페이스 제공을 통해 접근성은 높일 수 있는 패턴
: 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리를 절약하고 '클래스의 경량화'를 목적으로 하는 패턴
: 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며 미리 할당하지 않아도 상관없을 것들을 이용할 때 할당하게 하여 메모리 용량을 아끼고 정보은닉의 역할도 수행하는 패턴
: 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 하는 패턴
: 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴으로 두 가지 형태로 사용되는 패턴
클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
: 객체 지향 설계애서 객체의 수가 너무 많아지면 서로 간 통신을 위해 복잡해져서 객체 지향에서 가장 중요한 느슨한 결합의 특성을 해칠 수 있기 떄문에 이를 해결하는 방법으로 중간에 이를 통제하고 지시하는 중재자를 두로 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴
: 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
: 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 반복자를 사용하여 접근할 수 있는 패턴
: 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 패턴
: 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여 원시 코드의 수정을 최소화할 수 있고 유지보수의 편의성도 갖는 패턴
: 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴으로 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴
: 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 패턴
: 알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴으로 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
: 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴으로 Undo기능을 개발할 때 사용하는 디자인 패턴
: 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 패턴
네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술로써 서비스 지향 아키텍처 개념을 실현하는 대표적인 기술
: WWW에서 HTML 문서를 송/수신하기 위한 규칙들을 정의해 놓은 표준 프로토콜
: 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크터럼 구성된 문서
: 웹을 이루는 가장 기초적인 구성요소로 웹 콘텐츠의 의미와 구조를 정의할 때 사용하는 기술
: XML기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
: 웹 서비스에 대한 상세 정보가 기술된 XML형식으로 구현되어 있는 언어
: 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준
운영체제에서 프로세스 간 서로 데이터를 주고받기 위한 통신 기술
: 메시지 또는 패킷 단위로 동작하여 프로세스 간 통신
: 한 프로세스의 일부분을 다른 프로세스와 공유
: 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게 함
: 프로세스 사이의 동기를 맞투는 기능을 제공
: 시스템이 제공하는 기능, 서비스에 대한 요구사항
ex) 온라인 홈페이지에서는 쇼핑카트에 주문하고자 하는 품목을 저장할 수 있는 장바구니 제공
: 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항
ex) 특정 함수의 호출시간은 3초를 넘지 않아야 한다.
- 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체
- 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면
- UX는 UI를 포함한다.
: 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
: 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스
: 키보드나 마우스 없이 신체 부위를 이용하는 사용자 인터페이스 / 터치,음성 포함
: 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스
: 누구나 쉽게 이해하고 쉽게 사용할 수 있어야 함
: 정확하고 안벽하게 사용자의 목표가 달성될 수 있도록 제작
: 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
: 사용자의 요구사항을 최대한 수용하고 실수를 방지할 수 있도록 제장
객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램
: 클래스가 서롤 개념적으로 연결된 선 / 2개 이상의 사물이 서로 관련되어 있는 상태
: 하나의 클래스가 또 다른 클래스를 사용하는 관계 / 다른 클래스의 멤버 함수 사용
: 하나의 사물이 다른 사룸에 비해 더 일반적인지 구체적인지를 표현
: 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화할 수 있는 관계를 표현
: 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결하여 표현
: 하나의 사물이 다른 사물에 포함되어 있는 관계 표현
시스템의 서로 다른 캐피지들 사이의 의존관계를 표현하기 위한 다이어그램
데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성
: 식별자에 의해 엔터티 타입 내에 모든 엔터티들이 유일하게 구분
: 최소한의 속성으로 식별자 구성
: 테이블의 각 튜플들을 고유하게 식별하는 컬럼
: 후보 키 중에서 기본 키로 선택되지 않은 키
: 기본 키와 대체 키를 합친 키
: 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못하는 키
: 한 릴레이션의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키
기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션
: 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합방법
: 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
: 애플리케이션 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식
: 그룹 내는 허브 앤 스포트 방식을 사용하고 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식
총합, 평균 등의 데이터 분석을 위해서는 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수
서브 쿼리의 결과가 여러 개의 튜플을 반환하는 다중 행 서브쿼리에서 사용되는 연산자
연산자 | 설명 |
---|---|
IN | 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참 |
ANY | 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참 |
ALL | 값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참 |
EXISTS | 메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참 |
여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
SELECT 컬럼1, 컬럼2,..., 집계함수
FROM 테이블명
[WHERE 조건]
GROUP BY 컬럼1, 컬럼2,..
[HAVING 조건식(집계함수 포함)]
집계함수 | 설명 |
---|---|
COUNT | 복수 행의 줄 수를 반환하는 함수 |
SUM | 복수 행의 해당 컬럼 간의 합계를 계산하는 함수 |
AVG | 복수 행의 해당 컬럼 간의 평균을 계산하는 함수 |
MAX | 복수 행의 해당 컬럼 간의 최댓값을 계산하는 함수 |
MIN | 복수 행의 해당 컬럼 간의 최솟값을 계산하는 함수 |
STDDEV | 복수 행의 해당 컬럼 간의 표준편차을 계산하는 함수 |
VARANGE | 복수 행의 해당 컬럼 간의 분산을 계산하는 함수 |
소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
: 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
: 중앙에 버전 관리 시스템을 항시 동작시키는 방식
: 호컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
: 서버와 클라이언트로 구성되어있고 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구
: 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
: CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구
: SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구
: Git의 속도에 중점을 둥 분산형 버전 관리 시스템이며 대형 프로젝트에서 효과적이고 유용
: 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음
접근 권한 변경 명령어로 기존 파일 또는 디렉토리에 대한 접근 권할을 변경할 때 사용
chmod [-R] permission 파일이름|디렉토리이름[]
: 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식
: 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식
: 프로세스의 가용 공간 중에서 가장 큰 공간에 할당하는 방식