2022년 3회 기출
- GOF 디자인 패턴 - Factory method(객체를 생성하기 위한 인터페이스를 정의하여 인스턴스 화는 서브 클래스가 결정하도록 함)
- 이진 검색 방법, 비교 횟수 계산(이분검색방법)
더보기이분 검색 방법
① 대상 범위의 첫 번째 원소의 위치를 Low로, 마지막 원소의 위치를 High로 두고서 그 중간 원소의 위치인 Mid를 (Low+High)/2로 구한다.
② 찾고자 하는 Key와 중간값을 비교한다.
③ Key > 중간값 : Low를 (Mid+1)로 두고서 계속 수행Key < 중간값 : High를 (Mid-1)로 두고서 계속 수행Key = 중간값 : 검색 완료
문제 풀이
14와 중간값 비교 : 14가 8보다 크므로 Low를 9로 설정
14와 중간값 비교 : 14가 12보다 크므로 Low를 13으로 설정
14와 중간값 비교 : 14와 14와 같으므로 검색 완료 - 인터페이스 구현 검증도구 - STAF(서비스 호출, 컴포넌트 재사용 지원하는 테스트 프레임워크 / 분산환경에 데몬 사용)
- 소프트웨어 개발 과정 - 형상관리(소프트웨어 변경사항을 관리하기 위한 것)
- 단위테스트 설명 - 테스트 스텁은 하향식 테스트에서 사용하는 것
- UML에 대한 설명 - 실시간 시스템 및 분산시스템과 같은 시스템 분석과 설계에도 사용됨
- 소프트웨어 생명 주기 모형 - 프로토타입 모형(시스템 기능을 사용자에게 미리 보여줌, 개발자와 사용자간의 이해에 도움, 최종결과물을 예측)
- 테스트 케이스의 설명 - 테스트 목표 및 테스트 방법을 결정하고 테스트 케이스 작성 시작
- IoT - 사물 인터넷(각종 사물에 컴퓨터 칩과 통신 기능을 내장하여 인터넷에 연결하는 기술)
- 블랙박스 테스트 - 동치 분할 검사(Equivalence Partitioning Testing: 입력 조건에 타당한 입력자료와 그렇지 않은 자료의 개수를 균등하게 나눠 테스트 케이스를 설정)
- 럼바우의 객체지향 분석 절차 - (객체 모형 -> 동적 모형 -> 기능 모형)
- 이진트리 노드 찾기

13. 직접 파일 - 해싱 등의 사상 함수를 사용하여 레코드 키에 의한 주소 계산을 통해 레코드를 접근할 수 있도록 구성한 파일
14. 이분 검색 방법

15. 정형 기술 검토(FTR)의 지침 - 제한과 검토
16. UML 확장 모델 - 스테레오 타입 객체 (<< >>)
17. 트리 구조 - 후위 순회(루트의 위치가 맨뒤)

18. 소프트 비용 산정 방법 - 델파이 방법(전문가가 독자적으로 감정할 때 발생할 수 있는 편차를 줄이기 위해 단계별로 전문가들의 견해를 조정자가 조정하여 최종 견적을 결정하는 것)
19. Tree - 중위 표기법의 수식을 표현하기 적합한 자료구조
20. 인수 테스트(Acceptamce Test) - 테스트 단계 중 SW 제품에 대한 요구사항이 제대로 이행되었는지 점검하는 것이 주요 목적, 가장 마지막 상위 레벨
2022년 2회 기출
1. 통합 테스트 관련 - 상향식 통합 테스트는 시스템 구조도 최하위 모듈부터 구현 시작
2. 이분 검색 방법

3. 소프트웨어공학(워크스루) - X 인스펙션은 작성자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾음
4. 형상관리 - 소프트웨어의 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 활동
5. 테스트 케이스 관련 설명 - 테스트 목표 및 테스트 방법을 결정하고 테스트 케이스 작성 시작
6. 객체지향 개념 - 접근제어자(private의 의미는 "접근금지")
7. DRM 관련 설명 - 지적재산권 보호, 관리 기능 및 안전한 유통과 배포를 보장하는 솔루션
8. 위험 모니터링 - (위험 감시:Risk Monitoring) 위험 요소 징후들에 대하여 계속적으로 인지하는 것
9. RCS - 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 개발된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구 (CVS와의 차이점은 수정자를 한 사람만으로 제한 한다는 것)
10. 화이트 박스 테스트 - 프로그램 구조를 고려함
11. 알고리즘 관련 설명 - 선형 검색은 데이터의 집합이 정렬되어 있을 필요는 없다. 정렬 선행 기법은 이진검색 기법
12. 버블 정렬

13. 코드 인스펙션 과정 - [계획 -> 준비 -> 인스펙션 회의 -> 수정 -> 후속조치]
14. Refactoring - 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것
15. 단위 테스트 관련 설명 - 테스트 스텁은 하향식 테스트에서 사용
16. IDE 도구에 대한 설명 - 컴파일(문법에 어긋나는지 확인하고 기계어(저급언어)로 변환하는 기능 제공
17. Tree 구조 후위순회
18. JSON - 인터페이스 구현 시 사용하는 기술로 속성 - 값 쌍으로 이루어진 데이터 개방형 표준 포맷
19. Stack - 순서가 있는 리스트에서 데이터의 삽입, 삭제가 한 쪽 끝에서 일어나며 LIFO의 특징을 가지는 자료구조
20. 단위 테스트 도구 - IgpUnit X
단위 테스트 지원 도구(xUnit)
- JUnit : Java 프로그래밍 언어에 사용되는 테스트 도구로서 데이터를 테스트 한 다음 코드에 삽입한다.
- NUnit : 모든 .net 언어에 널리 사용되는 단위 테스트 프레임 워크. 병렬로 실행할 수 있는 데이터 중심 테스트를 지원한다.
- JMockit : 오픈 소스 단위 테스트 도구로서, 기록 및 검증 구문으로 API를 Mocking 할 수 있다.
- EMMA : 코드 분석 오픈 소스 툴 킷으로서 JAVA 기반 이므로 외부 라이브러리 종속성이 없으며 소스 코드에 액세스 할 수 있다.
- PHPUnit: PHP 프로그래머를 위한 단위 테스트 도구이다.
- HttpUnit : HtmlUnit은 Java 프로그램 용 GUI가없는 브라우저를 포함하는 오픈 소스 Java 라이브러리이다.
- DBUnit : 데이터베이스 단위 테스트를 지원하는 프레임워크
2022년 1회 기출
1. 클린 코드 작성 원칙 - 추상화는 하위 클래스, 메소드 함수에서 구현
클린 코드(Clean Code)
- 깔끔하게 잘 정리된 코드이다.
- 중복 코드 제거로 애플리케이션의 설계가 개선된다.
- 가독성이 높아 진다.
- 버그를 찾기 쉬워지며, 프로그래밍 속도가 빨라 진다.
- 클린코드 최적화 원칙 : 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
2. 테스트 드라이버 - 단위 테스트에서 테스트 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요한 것
3. Stack에 대한 설명 - LIFO, 스택은 뒤에서 노드가 삽입되며, 뒤에서 노드가 제거된다.
4. 소프트웨어 모듈화의 장점 - 분리, 유지보수, 간단해짐
5. 소프트웨어 프로젝트 관리 - 주어진 기간 내 최소의 비용으로 사용자를 만족시키는 시스템
6. 정형 기술 검토(FTR) - 제한, 검토
7. Migration - 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환
8. 개발 단계에서 프로그래밍 언어 선택 시 고려할 사항 - X 컴파일러의 독창성(시스템과의 호환성 문제가 생김)
9. 소프트웨어 패키징 - 패키징은 개발자 중심 X
10. 자료 구조의 분류 중 선형 구조 - 큐, 스택, 데크, 리스트, 연결리스트 / 비선형 구조 - 그래프, 트리, 인접행렬
11. Alien Code - 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 프로그램
12. 소프트웨어 재사용의 특징 - X 새로운 개발 방법론 도입 용이
13. 인터페이스 간의 통신을 위한 데이터 포맷 - JSON, XML, YAML, AJAX / 오답 - AJTML 아님
14. 프로그램 설계도 NS Chart - 순차, 선택, 반복의 구조를 사각형으로 도식화, 알고리즘을 논리적 기술에 중점을 둔 도형식 표현방법
박스 다이어그램 / 오답 - 화살표나 GOTO를 사용하는건 흐름도
15. Stack 연산

16. Quick sort(퀵정렬) - 분할 정복(Divide and Conquer에 기반한 알고리즘으로 피벗을 사용하여 최악의 경우 n(n-1)/2회의 비교를 수행해야 하는 정렬
분할정복법(Divide & Conquer)
- 제시된 문제를 분할이 불가할 때까지 나누고, 각 과제를 풀면서 다시 병합해 문제의 답을 얻는 Top-Down 방식이다.
- ① 분할(Divide) : 정복이 필요한 과제를 분할이 가능한 부분까지 분할하고,
- ② 정복(Conquer) : ①에서 분할된 하위 과제들을 모두 해결(정복)한다.
- ③ 결합(Combine) : 그리고 ②에서 정복된 해답을 모두 취합(결합)한다.
- 예) 퀵 정렬 알고리즘, 병합(합병) 정렬 알고리즘
17. 화이트 박스 테스트 종류 - 데이터 흐름 검사, 루프 검사, 기초 경로 검사, 제어 구조 검사
18. ISO/IEC 25000 - X 2501n은 소프트웨어 내부 측정, 외부 측정, 사용품질 측정, 품질 측정 요소등을 다룬다.
19. 코드 인스펙션 - 정적 테스트 기법 / 동적 테스트 시에 활용 X
20. Risk Analysis - 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석 관리, 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동
대표적인 기법으론 위험 등급 평가, 위험 행렬, 위험 시나리오 등이 있음