No sweet without sweat

[정보처리기사] - 2과목 : 소프트웨어 개발 본문

정보처리기사 필기

[정보처리기사] - 2과목 : 소프트웨어 개발

Remi 2022. 8. 22. 21:15
728x90
반응형

제가 정리한 자료입니다. 저는 이 정리된 자료로 합격했습니다.!

 

1. 정렬

1) 힙 정렬(Heap Sort)

정렬한 입력 레코드들로 힘을 구성하고 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복하여 정렬하는 기법

평균 수행 시간은 O(nlog2n)이다

완전 이진트리로 입력자료의 레코드를 구성

최악의 수행 시간은 O(nlog n)

 

2) 퀵 정렬 - 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방식

 

3) 삽입 정렬 - 가장 간단한 정렬 방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞춰 삽입시켜 정렬

 

4) 쉘 정렬 - 삽입정렬 확장 개념, 입력파일을 매개변수값으로 서브파일 구성하고 각 서브 파일을 삽입정렬 방식으로 순서 배열하는 과정으로 반복하는 과정

 

5) 버블 정렬 - 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 크 그기에 ᄄᆞ라 레코드 위치를 서로 교환하는 정렬 방식

 

2. 단위 테스트를 통해 발견할 수 있는 오류

1) 알고리즘 오류에 따른 원치 않는 결과

2) 탈출구가 없는 반복문의 사용

3) 틀린 계산 수식에 의한 잘못된 결과

 

* 단위 테스트는 테스트 코드가 독립적이어야 함으로 각 모듈간의 상호작용은 해당X

 

3. 소프트웨어 테스트

1) 결함 집중

파레토 법칙이 좌우한다.

애플리케이션 결합의 대부분은 소수의 특정한 모듈에 집중되어 존재한다.

결함은 발생한 모듈에서 계속 추가로 발생가능성이 높다.

 

2) 살충제 패러독스

동일한 테스트 케이스로 반복 실행하면 더 이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하고 개선해야한다.

 

4. 소프트웨어 버전 등록 관련 주요 용어

1) import(가져오기) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사

2) 체크아웃: 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴, 소스 파일과 함께 버전 관리를 위한 파일들을 받아 옴

3) 체크인 : 체크아웃한 파일을 수정을 완료한 후 저장송의 파일을 새로운 버전으로 갱싱

4) 커밋 : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충동을 알리고 diff도구를 이용해 수정한 후 갱신 완료

5) 동기화 : 저장소에 잇는 최신 버전으로 자신의 작업공간을 동기화

 

* 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

 

* 롤백(rollback)은 데이터베이스에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 것을 말한다. (=후진 복귀)

 

5. 소프트웨어 테스트

1) 화이트박스

- 내부 구조와 동작을 검사하는 테스트 방식, 소프트웨어의 내부소스를 테스트

- 기본 경로는 싸이클을 최대 한번만 지나야한다.

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

- Source Code의 모든 문장을 한 번 이상 수행함으로서 진행

- 모듈 안에 작동을 직접 관찰할 수 있다.

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

 

* 종류

- 기초경로 검사

- 제어 구조 검사 : 조건검사(Conditon Testing), 루프 검사, 데이터 흐름 검사

 

2) 블랙 박스 테스트

- 내부 구조나 작동 원리를 모르는 상태에서 입력에 따른 출력 결과를 테스트(프로그램의 구조를 고려하지 않는다.

 

* 특징

1. 경계값 분석 : 경계값에서 오류가 발생될 확률이 높다는 점을 이용

2) 기능테스트

3) 프로그램 구조 고려 X* 발견할 수 없는 오류 : 반복 조건을 만족하는데도 루프 내으의 문장이 수행되지 않는 경우

 

* 종류

1. 동치분할검사(Equivalance partitioning Testing)

2. 경계값분석(Boundary Value)

3. 원인-효과 그래프 검사

4. 오류 예측 검사

5. 비교검사

 

3) 테스트 케이스

- 일반적으로 시험 조건, 테스트 데이터 예상 결과가 포함되어야 한다.

 

6. 테스트 자동화 도구

* 단위 테스트 종류

1) 명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인

2) 구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정 등이 목적

 

* 성능 테스트 도구(Performance Test Tools, PTT)

- 어플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인

- 인위적으로 적용한 가상 사용자를 만들어 테스트 수행

 

7. 소프트웨어 형상 관리

1) 소프트웨어에 가해지는 변경을 제어하고 관리한다.

2) 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다

3) 대표적인 형상관리 도구로 Github 가 있다.

(<-> Ant,Maven,Gadle은 빌드 자동화 도구) ->28

4) 유지 보수 단계뿐만 아니라 개발 단계에서 적용할 수 있다.

 

8. 디지털 저작권 권리(DRM)

1. Contents Distributor(콘텐츠 분배자) : 암호화된 콘텐츠를 유통하는곳/사람

2. Packager(패키저) : 콘텐츠를 메타데이터와 함께 배포 가능한 형태로 묶어 암호화

3. Clearing house(클리어링 하우스) : 키 관리 및 라이센스 발급 관리

4. DRM Controoler(DRM 컨트롤러) : 배포된 콘텐츠의 이용권한을 통제

 

DRM에 사용되는 기술 요소

1. 암호화

2. 암호화 파일생성

3. 키관리

4. 식별관리

5. 저작권 표현

5. 정책관리

6. 크랙방지

7. 인증

 

* 오류 감지 및 복구는 해주지 않는다.

 

9. 소프트웨어 버전 관리 도구 방식

1) 분산 저장소 방식

- 버전관리 자료가 원격저장소와 로컬저장소에 함께 저장되어 관리

- 로컬 저장소에서 버전관리가 가능하므로 원격저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업 할 수 있다.

- 대표적인 버전 관리 도구로 Git이 있다.

 

2) 공유 폴더 방식

- 로컬 컴퓨터의 공유 폴더에 저장되어 관리

- 공유폴더의 파일을 자기 pc로 복사 후 이상 유무 확인

 

3) 클라이언트/서버 방식

- 중앙 시스템(서버)에 저장되어 관리 방식

- 개발자별로 자신의 pc(클라이언트)로 복사

- 모든 버전 관리는 서버에서 수행

- 서버에서 문제 생기면 다른 개발자 협업 및 버전 관리 작업 중단

 

10. 알고리즘

1) 합병정렬 - O(N log2N) : 선형 로그형 복잡도 : 로그, 변수에 비례=> 퀵정렬, 합볍정렬

2) O(N^2) : 제곱형 : 제곱에 비례 => 버블정렬, 삽입정렬, 선택정렬

* 정렬된 데이터의 경우, 버블 및 삽입정렬은 O(N)이 될 수 있음

* 선택, 삽입, 버블정렬 O(n^2)

11. EAI (Enterprise Application Integration)

- 기업 내 상호 연동이 가능하게 해주는 솔루션

- 비즈니스 간 통합 및 연계성을 증대시켜 각 시스템 간의 확장성을 높여줌

 

* 구축 유형

1) Point-to-Point : 가장 기본적인 어플리케이션 통합 방식으로, 어플리케이션을 1:1로 연결 변경 및 재사용이 어려움

2) Hub & Spoke

- 단일 접점인 허브를 통해 데이터를 전송하는 중앙 집중혁 방식

- 확장 및 유지 보수가 용이하지만 허브 장애 발생 시 시스템 전체에 영향

3) Hybrid

- 그룹 내에서는 Hub & Spoke 방식, 그룹 간에는 Message 방식 사용, 데이터 병목 현상 최소화

- 중간에 미들웨어를 둔다.

* Message Bus(ESB 방식) - 어플리케이션 사이에 미들웨어를 두어 처리하는 방식, 확장성이 뛰어나며 대용량 처리가 가능

 

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

1) xUNit : Java, C++ 등 다양한 언어를 지원하는 단위 테스트 프레임워크

2) STAF

- 서비스 호출 및 컴포넌트 재사용 등 환경 지원하는 테스트 프레임워크

- 각 테스트 대상 분산 환경에 데몬을 사용해 테스트 대상 프로그램을 통해 테스틀르 수행하고 통합하여 자동화하는 검증 도구

3) Fitnesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등 지원하는 테스트 프레임 워크

4) NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 네이버의 테스트 자동화 프레임워크

5) Selenium : 다양한 브라우저 및 개발 언어 지원하는 웹 어플리케이션 테스트 프레임워크

6) watir : Ruby를 사용하는 어플리케이션 프레임워크

7) Ruby : 인터프리터 방식의 객체지향 스크립트 언어

 

* Foxbase는 프로그래밍 언어

 

13. 소프트웨어 패키징

1) 패키징은 사용자 중심으로 진행한다.

2) 신규 및 변경 개발소스를 식별하고, 이름 모듈화하여 상용제품으로 패키징 한다

3) 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다

4) 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.

5) 모듈별로 생성한 실행 파일들을 하나로 합쳐서 설치 파일을 만드는 것

 

14. 테스트는 오류를 찾는 작업이고 디버깅은 오류를 수정하는 작업이다.

 

15. & 스택 연산

1) - 선택정렬

- 한쪽에서는 삽입 작업, 다른 한쪽에서는 삭제 작업이 이루어짐

- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO)

2) 스택 - 재귀호출, 후위표현(Post-fix expression)의 연산, 깊이우선탐색

- 한쪽 끝으로만 사입, 삭제 작업이 이루어짐(입출력이 한 쪽 끝으로만 제한된 리스트)

- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO)

- 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로(Underflow)가 발생

- 서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에 응용

 

16. 상향식 통합시험 모듈 - Driver, 하향식 - Stub

- 회귀테스트(Regrssion Testing)

: 이미 테스트된 프로그램의 테스팅 반복

: 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류 확인

 

- 빅뱅 테스트

: 통합 테스트(Integration Test) 중 비점진적 통합 방식

 

17. 선형 & 비선형

1) 선형구조 - 배열, 선형리스트, 스택, , 데크

2) 비선형구조 - 트리, 그래프

 

* 트리 : 정점(Node)과 선분(Branch)을 이용하여 사이클을 이루지 않도록 한 그래프의 특수 형태

 

18. 정도

1) 신뢰성 : 소프트웨어가 요구된 기능을 정확하고 일관되게 오류없이 수행할 수 있는 정도

2) 유지보수성 : 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트웨어를 개선하거나 확장할 수 있는 정도

3) 가시성 : 대상을 확인할 수 있는 정도

 

19. 이진 검색 알고리즘

1) 탐색 효율이 좋고 탐색 시간이 적게 소요

2) 검색할 데이터가 정렬

3) 비교횟수가 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다

4) 전체 파일을 두 개의 서브파일로 분리해가면서 key 레코드를 검색하는 방식

* 정답 X - 피보나치 수열 : 피보나치 수열에 따라 다음에 비교할 대상을 선정하여 검색

 

20. 소프트웨어 설치 매뉴얼에 포함될 항목

1) 제품 소프트웨어 개요

2) 설치 관련 파일

3) 프로그램 삭제

4) 설치 아이콘

5) 관련추가정보

 

21. 소프트웨어 형상관리(Configyration management)에 관한 설명

1) 소프트웨어에서 일어나는 수정이나 변경을 알아낵 제어하는 것을 의미

2) 소츠트웨어 개발의 전체 비용을 줄이고 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적

3) 형상관리의 기능 중 하나는 버전 제어 기술이다.

* 형상관리는 프로젝트의 버전, 수정사항, 개발 비용을 관리하지 않습니다.

 

* 틀린답 : 형상관리를 위하여 구성된 팀은 'chief programmer team'-> 효율성을 제고하기 위하여 능력과 경험이 풍부한 책임 프롤그램 작성자를 중심으로 하여 구성한 개발 팀

 

22. 해싱 함수(Hashing Function)

1. 제산법(division) - 레코드키를 해시표로 나눈 나지를 홈 주소로 사용

2. 제곱법(mid-squre)

3. 중첩법(폴딩법) - 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용

4. 숫자분석법(digit analysis) - 키 값을 이루는 숫자의 분포를 분석해 비교적 고른 자리를 필요한 만큼 선택

5. 기수 변환법 - 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초고환 높은 자릿수절단, 다시 주소 범위에 맞게 조정

6. 무작위 방법

 

23. 인수 테스트 - 계약 인수 테스트, 규정 인수 테스트, 알파 테스트, 베타 테스트, 사용자, 운영상의 인수테스트

1) 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법

2) 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트

3) 형상 테스트 : 구성요소 목록 유지보수 모든 사항이 표현되었나 검사

 

24. 정적 분석 도구 vs 동적 분석 도구

1) 정적 분석 도구 - pmd, cppcheck, SonarQube, ccm

2) 동적 분석 도구 - valance

 

25. 스키마

1) 내부 스키마

- 물리적 저장 장치의 입장에서 본 DB 구조로서 실제로 DB에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다

2) 외부 스키마 - 개인 또는 응용 개발자 입장에서 보는 DB

3) 개념 스키마 - 모든 응용 프로그램 또는 사용자들이 필요로 하는 조직 전체 DB로 단 하나만 존재

26. 최대 간선수

- 정점이 n개인 무방향 그래프에서 최대의 간선수는 n(n-1)/2

- 정점이 n개인 그래프에서 최대 간선수 n(n-1)

 

27. 테스트 용어

1) 테스트 케이스

- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했느지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

2) 테스트 시나리오 - 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합

3) 테스트 오라클

- 테스트의 결과가 참인지 거짓인지를 판단하기 위하서 사전에 정의된 참값을 입력하며 비교하는 기법 및 활동

- 종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재

 

28. 빌드 자동화 도구

1) Grandle

- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행

- Groovy를 기반으로 한 오픈 소스 형태

- 안드로인드 앱 개발 환경에서 사용

 

2) Jenkins

- JAVA 기반의 오픈소스 형태

- 서블릿 컨테이너에서 실행되는 서버 기반 도구

- 친숙한 Web GUI 제공

- 분산 빌드나 테스트 가능

 

29. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션

1) IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능 제공

2) SSL : TCP/IP 계층과 어플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜

3) S-HTTP : 클라이언트와 서버 간 전송되는 모든 메시지를 암호화는 프로토콜

 

 

 

 

 

 

 

 

30.

화살표 - 동그라미 +2

답은 4

 

31. 알고리즘 설계 기법

1) Divide and Conquer(분할 정복 알고리즘)

- 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘

2) Greedy(탐욕 알고리즘) - 현재 시점에서 가장 최적의 방법을 선택

3) Backtracking - 모든 조합을 시도하여 문제의 답을 찾는 알고리즘

 

32. 물리데이터 저장소의 파티션 설계에서 파티션 유형으로 옳지 않는 것

1) 범위 분할(Range Partitioning, 레인지) : 지정한 열의 값을 기준으로 분할

2) 해시 분할(Has Partitioning) : 해시 함수를 적용한 결과 값에 따라 데이터 분할

3) 조합 분할(Composite Partitioning, 컴포지트) : 범위 분할 후 해시 함수를 적용해 다시 분할

4) 리스트 분할(List Partitiong)-파티셔닝

 

 

33. 인터페이스 구현 기술

1. Procedure : 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어

2. Trigger : 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

3. AJax : Javascript를 사용한 비동기 통신기술로 클라이언트와 서버간에 XML 데이터를 주고받는 기술

 

34. 소프트웨어 품질 측정 개발자 관점

정확성

신뢰성

효율성

무결성

유연성

이식성

재사용성

상호운용성

* 간결성 X

 

35. 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법

1) 진행 테이블 추가

2) 집계 테이블 추가

3) 특정 부분만을 포함하는 테이블 추가

 

 

36

차수 2, 단말노트 4(자식이 없는 노드, D,G,H,F)

37. 알고리즘 시간복잡도 O(1)이 의미하는 것

- 알고리즘 수행시간이 입력 데이터 수와 관계없이 일정

 

38. 외계인코드(Alien Code)

- 아주 오래되거나 참조문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미

 

1. 정렬

1) 힙 정렬(Heap Sort)

정렬한 입력 레코드들로 힘을 구성하고 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복하여 정렬하는 기법

평균 수행 시간은 O(nlog2n)이다

완전 이진트리로 입력자료의 레코드를 구성

최악의 수행 시간은 O(nlog n)

 

2) 퀵 정렬 - 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방식

 

3) 삽입 정렬 - 가장 간단한 정렬 방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞춰 삽입시켜 정렬

 

4) 쉘 정렬 - 삽입정렬 확장 개념, 입력파일을 매개변수값으로 서브파일 구성하고 각 서브 파일을 삽입정렬 방식으로 순서 배열하는 과정으로 반복하는 과정

 

5) 버블 정렬 - 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 크 그기에 ᄄᆞ라 레코드 위치를 서로 교환하는 정렬 방식

 

2. 단위 테스트를 통해 발견할 수 있는 오류

1) 알고리즘 오류에 따른 원치 않는 결과

2) 탈출구가 없는 반복문의 사용

3) 틀린 계산 수식에 의한 잘못된 결과

 

* 단위 테스트는 테스트 코드가 독립적이어야 함으로 각 모듈간의 상호작용은 해당X

 

3. 소프트웨어 테스트

1) 결함 집중

파레토 법칙이 좌우한다.

애플리케이션 결합의 대부분은 소수의 특정한 모듈에 집중되어 존재한다.

결함은 발생한 모듈에서 계속 추가로 발생가능성이 높다.

 

2) 살충제 패러독스

동일한 테스트 케이스로 반복 실행하면 더 이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하고 개선해야한다.

 

4. 소프트웨어 버전 등록 관련 주요 용어

1) import(가져오기) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사

2) 체크아웃: 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴, 소스 파일과 함께 버전 관리를 위한 파일들을 받아 옴

3) 체크인 : 체크아웃한 파일을 수정을 완료한 후 저장송의 파일을 새로운 버전으로 갱싱

4) 커밋 : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충동을 알리고 diff도구를 이용해 수정한 후 갱신 완료

5) 동기화 : 저장소에 잇는 최신 버전으로 자신의 작업공간을 동기화

 

* 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

 

* 롤백(rollback)은 데이터베이스에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 것을 말한다. (=후진 복귀)

 

5. 소프트웨어 테스트

1) 화이트박스

- 내부 구조와 동작을 검사하는 테스트 방식, 소프트웨어의 내부소스를 테스트

- 기본 경로는 싸이클을 최대 한번만 지나야한다.

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

- Source Code의 모든 문장을 한 번 이상 수행함으로서 진행

- 모듈 안에 작동을 직접 관찰할 수 있다.

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

 

* 종류

- 기초경로 검사

- 제어 구조 검사 : 조건검사(Conditon Testing), 루프 검사, 데이터 흐름 검사

 

2) 블랙 박스 테스트

- 내부 구조나 작동 원리를 모르는 상태에서 입력에 따른 출력 결과를 테스트(프로그램의 구조를 고려하지 않는다.

 

* 특징

1. 경계값 분석 : 경계값에서 오류가 발생될 확률이 높다는 점을 이용

2) 기능테스트

3) 프로그램 구조 고려 X* 발견할 수 없는 오류 : 반복 조건을 만족하는데도 루프 내으의 문장이 수행되지 않는 경우

 

* 종류

1. 동치분할검사(Equivalance partitioning Testing)

2. 경계값분석(Boundary Value)

3. 원인-효과 그래프 검사

4. 오류 예측 검사

5. 비교검사

 

3) 테스트 케이스

- 일반적으로 시험 조건, 테스트 데이터 예상 결과가 포함되어야 한다.

 

6. 테스트 자동화 도구

* 단위 테스트 종류

1) 명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인

2) 구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정 등이 목적

 

* 성능 테스트 도구(Performance Test Tools, PTT)

- 어플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인

- 인위적으로 적용한 가상 사용자를 만들어 테스트 수행

 

7. 소프트웨어 형상 관리

1) 소프트웨어에 가해지는 변경을 제어하고 관리한다.

2) 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다

3) 대표적인 형상관리 도구로 Github 가 있다.

(<-> Ant,Maven,Gadle은 빌드 자동화 도구) ->28

4) 유지 보수 단계뿐만 아니라 개발 단계에서 적용할 수 있다.

 

8. 디지털 저작권 권리(DRM)

1. Contents Distributor(콘텐츠 분배자) : 암호화된 콘텐츠를 유통하는곳/사람

2. Packager(패키저) : 콘텐츠를 메타데이터와 함께 배포 가능한 형태로 묶어 암호화

3. Clearing house(클리어링 하우스) : 키 관리 및 라이센스 발급 관리

4. DRM Controoler(DRM 컨트롤러) : 배포된 콘텐츠의 이용권한을 통제

 

DRM에 사용되는 기술 요소

1. 암호화

2. 암호화 파일생성

3. 키관리

4. 식별관리

5. 저작권 표현

5. 정책관리

6. 크랙방지

7. 인증

 

* 오류 감지 및 복구는 해주지 않는다.

 

9. 소프트웨어 버전 관리 도구 방식

1) 분산 저장소 방식

- 버전관리 자료가 원격저장소와 로컬저장소에 함께 저장되어 관리

- 로컬 저장소에서 버전관리가 가능하므로 원격저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업 할 수 있다.

- 대표적인 버전 관리 도구로 Git이 있다.

 

2) 공유 폴더 방식

- 로컬 컴퓨터의 공유 폴더에 저장되어 관리

- 공유폴더의 파일을 자기 pc로 복사 후 이상 유무 확인

 

3) 클라이언트/서버 방식

- 중앙 시스템(서버)에 저장되어 관리 방식

- 개발자별로 자신의 pc(클라이언트)로 복사

- 모든 버전 관리는 서버에서 수행

- 서버에서 문제 생기면 다른 개발자 협업 및 버전 관리 작업 중단

 

10. 알고리즘

1) 합병정렬 - O(N log2N) : 선형 로그형 복잡도 : 로그, 변수에 비례=> 퀵정렬, 합볍정렬

2) O(N^2) : 제곱형 : 제곱에 비례 => 버블정렬, 삽입정렬, 선택정렬

* 정렬된 데이터의 경우, 버블 및 삽입정렬은 O(N)이 될 수 있음

* 선택, 삽입, 버블정렬 O(n^2)

11. EAI (Enterprise Application Integration)

- 기업 내 상호 연동이 가능하게 해주는 솔루션

- 비즈니스 간 통합 및 연계성을 증대시켜 각 시스템 간의 확장성을 높여줌

 

* 구축 유형

1) Point-to-Point : 가장 기본적인 어플리케이션 통합 방식으로, 어플리케이션을 1:1로 연결 변경 및 재사용이 어려움

2) Hub & Spoke

- 단일 접점인 허브를 통해 데이터를 전송하는 중앙 집중혁 방식

- 확장 및 유지 보수가 용이하지만 허브 장애 발생 시 시스템 전체에 영향

3) Hybrid

- 그룹 내에서는 Hub & Spoke 방식, 그룹 간에는 Message 방식 사용, 데이터 병목 현상 최소화

- 중간에 미들웨어를 둔다.

* Message Bus(ESB 방식) - 어플리케이션 사이에 미들웨어를 두어 처리하는 방식, 확장성이 뛰어나며 대용량 처리가 가능

 

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

1) xUNit : Java, C++ 등 다양한 언어를 지원하는 단위 테스트 프레임워크

2) STAF

- 서비스 호출 및 컴포넌트 재사용 등 환경 지원하는 테스트 프레임워크

- 각 테스트 대상 분산 환경에 데몬을 사용해 테스트 대상 프로그램을 통해 테스틀르 수행하고 통합하여 자동화하는 검증 도구

3) Fitnesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등 지원하는 테스트 프레임 워크

4) NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 네이버의 테스트 자동화 프레임워크

5) Selenium : 다양한 브라우저 및 개발 언어 지원하는 웹 어플리케이션 테스트 프레임워크

6) watir : Ruby를 사용하는 어플리케이션 프레임워크

7) Ruby : 인터프리터 방식의 객체지향 스크립트 언어

 

* Foxbase는 프로그래밍 언어

 

13. 소프트웨어 패키징

1) 패키징은 사용자 중심으로 진행한다.

2) 신규 및 변경 개발소스를 식별하고, 이름 모듈화하여 상용제품으로 패키징 한다

3) 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다

4) 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.

5) 모듈별로 생성한 실행 파일들을 하나로 합쳐서 설치 파일을 만드는 것

 

14. 테스트는 오류를 찾는 작업이고 디버깅은 오류를 수정하는 작업이다.

 

15. & 스택 연산

1) - 선택정렬

- 한쪽에서는 삽입 작업, 다른 한쪽에서는 삭제 작업이 이루어짐

- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO)

2) 스택 - 재귀호출, 후위표현(Post-fix expression)의 연산, 깊이우선탐색

- 한쪽 끝으로만 사입, 삭제 작업이 이루어짐(입출력이 한 쪽 끝으로만 제한된 리스트)

- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO)

- 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로(Underflow)가 발생

- 서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에 응용

 

16. 상향식 통합시험 모듈 - Driver, 하향식 - Stub

- 회귀테스트(Regrssion Testing)

: 이미 테스트된 프로그램의 테스팅 반복

: 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류 확인

 

- 빅뱅 테스트

: 통합 테스트(Integration Test) 중 비점진적 통합 방식

 

17. 선형 & 비선형

1) 선형구조 - 배열, 선형리스트, 스택, , 데크

2) 비선형구조 - 트리, 그래프

 

* 트리 : 정점(Node)과 선분(Branch)을 이용하여 사이클을 이루지 않도록 한 그래프의 특수 형태

 

18. 정도

1) 신뢰성 : 소프트웨어가 요구된 기능을 정확하고 일관되게 오류없이 수행할 수 있는 정도

2) 유지보수성 : 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트웨어를 개선하거나 확장할 수 있는 정도

3) 가시성 : 대상을 확인할 수 있는 정도

 

19. 이진 검색 알고리즘

1) 탐색 효율이 좋고 탐색 시간이 적게 소요

2) 검색할 데이터가 정렬

3) 비교횟수가 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다

4) 전체 파일을 두 개의 서브파일로 분리해가면서 key 레코드를 검색하는 방식

* 정답 X - 피보나치 수열 : 피보나치 수열에 따라 다음에 비교할 대상을 선정하여 검색

 

20. 소프트웨어 설치 매뉴얼에 포함될 항목

1) 제품 소프트웨어 개요

2) 설치 관련 파일

3) 프로그램 삭제

4) 설치 아이콘

5) 관련추가정보

 

21. 소프트웨어 형상관리(Configyration management)에 관한 설명

1) 소프트웨어에서 일어나는 수정이나 변경을 알아낵 제어하는 것을 의미

2) 소츠트웨어 개발의 전체 비용을 줄이고 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적

3) 형상관리의 기능 중 하나는 버전 제어 기술이다.

* 형상관리는 프로젝트의 버전, 수정사항, 개발 비용을 관리하지 않습니다.

 

* 틀린답 : 형상관리를 위하여 구성된 팀은 'chief programmer team'-> 효율성을 제고하기 위하여 능력과 경험이 풍부한 책임 프롤그램 작성자를 중심으로 하여 구성한 개발 팀

 

22. 해싱 함수(Hashing Function)

1. 제산법(division) - 레코드키를 해시표로 나눈 나지를 홈 주소로 사용

2. 제곱법(mid-squre)

3. 중첩법(폴딩법) - 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용

4. 숫자분석법(digit analysis) - 키 값을 이루는 숫자의 분포를 분석해 비교적 고른 자리를 필요한 만큼 선택

5. 기수 변환법 - 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초고환 높은 자릿수절단, 다시 주소 범위에 맞게 조정

6. 무작위 방법

 

23. 인수 테스트 - 계약 인수 테스트, 규정 인수 테스트, 알파 테스트, 베타 테스트, 사용자, 운영상의 인수테스트

1) 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법

2) 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트

3) 형상 테스트 : 구성요소 목록 유지보수 모든 사항이 표현되었나 검사

 

24. 정적 분석 도구 vs 동적 분석 도구

1) 정적 분석 도구 - pmd, cppcheck, SonarQube, ccm

2) 동적 분석 도구 - valance

 

25. 스키마

1) 내부 스키마

- 물리적 저장 장치의 입장에서 본 DB 구조로서 실제로 DB에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다

2) 외부 스키마 - 개인 또는 응용 개발자 입장에서 보는 DB

3) 개념 스키마 - 모든 응용 프로그램 또는 사용자들이 필요로 하는 조직 전체 DB로 단 하나만 존재

26. 최대 간선수

- 정점이 n개인 무방향 그래프에서 최대의 간선수는 n(n-1)/2

- 정점이 n개인 그래프에서 최대 간선수 n(n-1)

 

27. 테스트 용어

1) 테스트 케이스

- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했느지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

2) 테스트 시나리오 - 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합

3) 테스트 오라클

- 테스트의 결과가 참인지 거짓인지를 판단하기 위하서 사전에 정의된 참값을 입력하며 비교하는 기법 및 활동

- 종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재

 

28. 빌드 자동화 도구

1) Grandle

- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행

- Groovy를 기반으로 한 오픈 소스 형태

- 안드로인드 앱 개발 환경에서 사용

 

2) Jenkins

- JAVA 기반의 오픈소스 형태

- 서블릿 컨테이너에서 실행되는 서버 기반 도구

- 친숙한 Web GUI 제공

- 분산 빌드나 테스트 가능

 

29. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션

1) IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능 제공

2) SSL : TCP/IP 계층과 어플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜

3) S-HTTP : 클라이언트와 서버 간 전송되는 모든 메시지를 암호화는 프로토콜

 

 

 

 

 

 

 

 

30.

화살표 - 동그라미 +2

답은 4

 

31. 알고리즘 설계 기법

1) Divide and Conquer(분할 정복 알고리즘)

- 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘

2) Greedy(탐욕 알고리즘) - 현재 시점에서 가장 최적의 방법을 선택

3) Backtracking - 모든 조합을 시도하여 문제의 답을 찾는 알고리즘

 

32. 물리데이터 저장소의 파티션 설계에서 파티션 유형으로 옳지 않는 것

1) 범위 분할(Range Partitioning, 레인지) : 지정한 열의 값을 기준으로 분할

2) 해시 분할(Has Partitioning) : 해시 함수를 적용한 결과 값에 따라 데이터 분할

3) 조합 분할(Composite Partitioning, 컴포지트) : 범위 분할 후 해시 함수를 적용해 다시 분할

4) 리스트 분할(List Partitiong)-파티셔닝

 

 

33. 인터페이스 구현 기술

1. Procedure : 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어

2. Trigger : 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

3. AJax : Javascript를 사용한 비동기 통신기술로 클라이언트와 서버간에 XML 데이터를 주고받는 기술

 

34. 소프트웨어 품질 측정 개발자 관점

정확성

신뢰성

효율성

무결성

유연성

이식성

재사용성

상호운용성

* 간결성 X

 

35. 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법

1) 진행 테이블 추가

2) 집계 테이블 추가

3) 특정 부분만을 포함하는 테이블 추가

 

36

차수 2, 단말노트 4(자식이 없는 노드, D,G,H,F)

37. 알고리즘 시간복잡도 O(1)이 의미하는 것

- 알고리즘 수행시간이 입력 데이터 수와 관계없이 일정

 

38. 외계인코드(Alien Code)

- 아주 오래되거나 참조문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미

 

728x90
반응형

'정보처리기사 필기' 카테고리의 다른 글

[정보처리기사] - 5과목  (0) 2022.08.25
[정보처리기사] - 4과목  (1) 2022.08.24
[정보처리기사] - 3과목  (0) 2022.08.23
정보처리기사 1과목  (0) 2022.08.21
Comments