개발자 되기/자격증

[정보처리기사] 필기 2과목 빈출 정리

발전하는 개발자 2022. 4. 12. 20:36
728x90
반응형

1. 트리 순회 방법

구분 개념도 순회방법
전위 순회
(Pre-Order Traversal)
C→L→R순으로 조회

Root-Left-Right 순으로 방문







중위 순회
(In-Order Traversal)
L→C→R순으로 조회
Left-Root-Right순으로 방문
후위 순회
(Post-Order Traversal)
L→R→C순으로 조회
Left-Right-Root순으로 방문

[전위 순회] ROOT가 처음에 지나감(중간-왼쪽-오른쪽)

예제1 예제2 예제3 예제4


 
 
ABDECFG +**/ABCDE ABDCEF ABDEGCFH

[중위 순회] ROOT가 중간에 지나감(왼쪽-중간-오른쪽)

예제1 예제2 예제3


DBAECF FDGBAEC 4251637

[후위 순회] ROOT가 마지막에 지나감(왼쪽-오른쪽-중간)

예제1 예제2 예제3 예제4
IEJFCGKLHDBA DBEFCA AB/C*D*E+ DEBFCA
예제5 예제6 예제7  
 
DGEBFCA ECKAHBGDF DGCBFEA  

 

2. 형상 관리

정의 소프트웨어에서 일어나는 변경을 체계적으로 관리하는 것
항목 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트케이스, 프로젝트 요구 분석서, 소스 코드, 운영 및 설치 지침서
장점 -가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
-소프트웨어 개발의 전체적인 비용은 줄이고, 개발과정의 여러 방해 요인이 최소화
기능 -버전 제어 기술
-형상 식별 : 형상 관리 계획을 근거로 형상 관리의 대상 식별
-형상 검사 : 계획대로 형상 관리가 진행되고 있는지, 형상 항목의 변경이 요구사항에 맞는지 살펴봄.

 

3. 제품 소프트웨어 패키징 도구 활용 시 고려사항

-제품 소프트웨어의 종류에 적합한 암호화 알고리즘을 고려한다.

-추가로 다양한 이기종 연동을 고려한다.

-사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.

-패키징 시 사용자에게 배포되는 sw이므로 보안을 고려한다.

 

4. DRM의 기술 요소

암호화 콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술
예) 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명
키 관리 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형)
식별 기술 콘텐츠에 대한 식별 체계 표현 기술
예) DOI, URI
저작권 표현 라이선스의 내용 표현 기술
예) XrML/MPEG-21
암호화 파일 생성 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
정책 관리 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술
예) XML, 콘텐츠 관리 시스템(CMS)
크랙 방지 크랙에 의한 콘텐츠 사용 방지 시루
예) 난독화, Secure DB
인증 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
예) 사용자/장비 인증, SSO

5. 인수테스트

[알파 테스트]

-사용자가 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수 테스트

[베타 테스트]

-실제 환경에서 일정 수의 사용자에게 개발자 없이 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트

-필드 테스팅(field testing)이라고도 불림

6. 테스트 기법에 따른 분류

[화이트박스 테스트(White-box Test)]

-모듈의 논리적인 구조를 체계적으로 점검할 수 있다.

-모듈 내부를 직접 관찰

-소스 코드의 모든 문장을 한 번 이상 수행함으로써 진행된다.

-산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.

-유형 : 기초 경로 검사, 데이터 흐름 검사, 조건 검사, 루프 검사

[블랙박스 테스트(Black-box Test)

-프로그램 구조를 고려하지 않는다.

-유형 : 동등 분할, 오류 예측, 경곗값 분석, 원인-결과 그래프

 

7. 알고리즘

[해싱 함수(Hashing Function)]

제산법 나머지 연산자(%)를 사용하여 테이블 주소를 계산하는 방식
제곱법 레코드 키값을 제곱한 후에 결괏값의 중간 부분에 있는 몇 비트를 선택하여 해시 테이블의 홈 주소로 사용하는 방식
숫자 분석법 레코드 키를 구성하는 수들이 모든 키들 내에서 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택하여, 레코드의 홈 주소로 사용하는 방법
폴딩법 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR 한 값을 홈 주소로 사용하는 방식
기수변환법 어떤 진법으로 표현된 주어진 레코드 키를 다른 진법으로 간주하고 키를 변환하여 홈 주소를 얻는 방식
(어떤 키값이 16진법으로 표현되어 있다면 이를 10진법으로 표현된 것으로 간주하고 키값을 변환하여 홈 주소를 계산)
무작위방법 난수를 발생시켜 각 레코드 키의 홈 주소를 결정하는 방식

[거품 정렬(Bubble Sort)]

-두 인접한 원소를 검사하여 정렬

-첫 번째부터 2개씩 비교하여 정렬

예제1)
4 2 3 5 1
2 4 3 5 1
2 3 4 5 1
2 3 4 5 1
2 3 4 1 5 -> pass1(5번째 값이 가장 크게 되면 1회전 종료)
2 3 1 4 5 -> pass2(4번째 값이 가장 크게 되면 2회전 종료)
2 1 3 4 5 -> pass3(3번째 값이 가장 크게 되면 3회전 종료)
1 2 3 4 5 -> pass4(모든 값이 다 정렬됨)
예제2)
9 6 7 3 5
6 9 7 3 5
6 7 9 3 5
6 7 3 9 5
6 7 3 5 9 -> pass1
6 3 7 5 9
6 3 5 7 9 -> pass2
3 6 5 7 9 
3 5 6 7 9 -> pass3
예제3)
8 5 6 2 4
5 8 6 2 4
5 6 8 2 4
5 6 2 8 4
5 6 2 4 8 -> pass1
5 2 6 4 8
5 2 4 6 8 -> pass2
2 5 4 6 8
2 4 5 6 8 -> pass3
예제4)
4 7 3 1 5 8 2 6
4 3 7 1 5 8 2 6
4 3 1 7 5 8 2 6
4 3 1 5 7 8 2 6
4 3 1 5 7 8 2 6
4 3 1 5 7 2 8 6
4 3 1 5 7 2 6 8 ->pass1
3 4 1 5 7 2 6 8
3 1 4 5 7 2 6 8
3 1 4 5 7 2 6 8
3 1 4 5 7 2 6 8
3 1 4 5 2 7 6 8
3 1 4 5 2 6 7 8 ->pass2
1 3 4 5 2 6 7 8
1 3 4 5 2 6 7 8
1 3 4 5 2 6 7 8
1 3 4 2 5 6 7 8 ->pass3
1 3 2 4 5 6 7 8 ->pass4
1 2 3 4 5 6 7 8 ->pass5 
예제5)
37 14 17 40 35
14 37 17 40 35
14 17 37 40 35
14 17 37 40 35
14 17 37 35 40 ->pass1
14 17 35 37 40 ->pass2
예제6)
5 2 3 8 1
2 5 3 8 1
2 3 5 8 1
2 3 5 8 1
2 3 5 1 8 ->pass1
2 3 5 1 8
2 3 5 1 8
2 3 1 5 8 ->pass2
2 3 1 5 8
2 1 3 5 8
2 1 3 5 8 ->pass3
1 2 3 5 8 ->pass4
예제7)
10 3 7 6 9 8 5
3 10 7 6 9 8 5
3 7 10 6 9 8 5
3 7 6 10 9 8 5
3 7 6 9 10 8 5
3 7 6 9 8 10 5
3 7 6 9 8 5 10 ->pass1
3 6 7 9 8 5 10
3 6 7 8 9 5 10
3 6 7 8 5 9 10 ->pass2
3 6 7 5 8 9 10 ->pass3
3 6 5 7 8 9 10 ->pass4
3 5 6 7 8 9 10 ->pass5

[삽입 정렬(Insertion Sort)]

-자료 배열의 모든 요소를 앞에서부터 차례로 이미 정렬된 배열 부분과 비교하여,

자신의 위치를 찾아 삽입함으로써 정려를 완성하는 알고리즘

-첫 번째는 정렬되어있다고 가정, 2번째부터 시작해서 그 앞의 부분의 숫자를 비교하여 정렬

예제1)
4 2 3 5 1
2 4 3 5 1 -> 2를 4의 자리에 삽입
2 3 4 5 1 -> 3을 4의 자리에 삽입
1 2 3 4 5 -> 1을 2의 자리에 삽입
예제2)
64 28 33 76 55 12 43 ->2번째 숫자부터 앞의 숫자와 비교
28 64 33 76 55 12 43 ->pass1
28 33 64 76 55 12 43 ->pass2
28 33 64 76 55 12 43 ->pass3
28 33 55 64 76 12 43 ->pass4
12 28 33 55 64 76 43 ->pass5
12 28 33 43 55 64 76 ->pass6
예제3)
5 4 3 2 1
4 5 3 2 1 ->pass1
3 4 5 2 1 ->pass2
2 3 4 5 1 ->pass3
1 2 3 4 5 ->pass4
예제4)
8 3 4 9 7
3 8 4 9 7 ->pass1
3 4 8 9 7 ->pass2
3 4 7 8 9 ->pass3
예제5)
32 14 15 38 27 6 21
14 32 15 38 27 6 21 ->pass1
14 15 32 38 27 6 21 ->pass2
14 15 32 38 27 6 21 ->pass3
14 15 27 32 38 6 21 ->pass4
6 14 15 27 32 38 21 ->pass5
6 14 15 21 27 32 38 ->pass6
예제6)
27 5 52 43 20 14 17
5 27 52 43 20 14 17 ->pass1
5 27 52 43 20 14 17 ->pass2
5 27 43 52 20 14 17 ->pass3
5 20 27 43 52 14 17 ->pass4
5 14 20 27 43 52 17 ->pass5
5 14 17 20 27 43 52 ->pass6
예제7)
20 19 14 16 18
19 20 14 16 18 ->pass1
14 19 20 16 18 ->pass2
14 16 19 20 18 ->pass3
14 16 18 19 20 ->pass4

 

[선택 정렬(Selection Sort)]

-정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아,

정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 알고리즘

예제1)
4 2 3 5 1 -> 맨 앞 4 가장 작은 1를 선택해 교환
1 2 3 5 4 -> 2는 제자리
1 2 3 5 4 -> 3은 제자리
1 2 3 4 5 -> 5와 4를 선택해 교환
예제2)
8 3 4 9 7 ->첫번째 숫자 선택 후 나머지 중 가장 작은 수와 바꾼다.
3 8 4 9 7 ->pass1, 2번째 숫자 선택 후 오른쪽의 나머지 중 가장 작은 수와 바꾼다.
3 4 8 9 7 ->pass2
3 4 7 9 8 ->pass3
3 4 7 8 9 ->pass4
예제3)
37 14 17 40 35
14 37 17 40 35 ->pass1
14 17 37 40 35 ->pass2
14 17 35 40 37 ->pass3
14 17 35 37 40 ->pass4
예제4)
9 4 5 11 8
4 9 5 11 8 ->pass1
4 5 9 11 8 ->pass2
4 5 8 11 9 ->pass3
4 5 8 9 11 ->pass4
예제5)
10 3 5 9 6 8
3 10 5 9 6 8 ->pass1
3 5 10 9 6 8 ->pass2
3 5 6 9 10 8 ->pass3
3 5 6 8 10 9 ->pass4
3 5 6 8 9 10 ->pass5

 

8. 클린 코드의 작성 원칙

가독성 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능을 사용
단순성 한 번에 한 가지 처리만 수행, 클래스/메서드/함수를 최소 단위로 분리, 단순, 명료한 코드 작성
의존성 최소 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성
중복성 제거 중복된 코드를 제거, 공통된 코드를 사용
추상화 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메서드/함수에서 구현

 

9. EAI(Enterprise Application Integration) 구축 유형

구축 유형 개념도 설명
포인트 투 포인트
(Point-to-point)
중간에 미들웨어를 두지 않고 각각의 애플리케이션 간에 점대점 형태로 연결
허브 앤 스포크
(Hub & Spoke)
단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙집중형 방식
허브 장애 시 전체 장애 발생
메시지 버스
(Message Bus)
애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
뛰어난 확장성과 대용량 데이터 처리 가능
하이브리드
(Hybrid)
그룹 내는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식
필요한 경우 한 가지 방식으로 EAI 구현이 가능하다.
데이터 병목 현상을 최소화할 수 있다.

 

10. 중요 인터페이스 데이터의 암호화 전송을 위한 보안 기술(네트워크 영역에 적용)

IPSec
(IP Security)
-IP계층(3계층)에서 무결성과 인증을 보장하는 인증헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간(End Point) 구간에 보안 서비스를 제공하는 터널링 프로토콜
-동작 모드는 전송(Transport) 모드와 터널(Tunnel) 모드가 있음
-주요 프로토콜은 AH, ESP, IKE(키교환)가 있고, IPSEC 정책에는 SPD, SAD가 있음
SSL/TLS -전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 묵결성을 보장하는 보안 프로토콜
-인증 모드는 익명 모드, 서버 인증 모드, 클라이언트-서버인증 모드가 있음
-IPSec 하고는 다르게 Client와 Server 간에 상호인증, 암호 방식에 대해 협상을 거치는 특징
-(대칭 키 암호화, 공개키 암호화, 일방향 해시함수, 메시지 인증코드 등 특정 암호 기술에 의존하지 않고 다양한 암호 기술이 적용
-Https://~ 표시 형식과 443 포트 이용
S-HTTP
(Secure Hypertext Transfer Protocol)
-S-HTTP는 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송
-S-HTTP에서 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능

 

11. 인터페이스 구현 검증 도구

xUnit -java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
-소프트웨어의 함수나 클래스 같은 서로 다른 구성 원소(단위)를 테스트 할 수 있게 해주는 도구
STAF -서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크
-각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증 도구
FitNesse -웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
-사용자가 테스트 케이스 테이블을 작성하면 빠르고 편하게 자동으로 원하는 값에 대한 테스트를 할 수 있는 장점이 있음
NTAF -FitNesse와 STAF의 장점을 결합하여 개발된 테스트 자동화 프레임워크
-STAF의 분산환경 지원기능과 FitNesse의 효율적인 테스트 케이스 디자인 및 레포팅 기능이 NTAF에서 지원
Selenium -다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
-셀레늄(Selenium)은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공
watir -Ruby 기반 웹 애플리케이션 테스트 프레임워크
-모든 언어 기반의 웹 어플리케이션 테스트와 브라우저 호환성 테스팅 가능
728x90
반응형