[ 2과목:소프트웨어 개발 ]
21. 클린 코드(Clean Code)를 작성하기 위한 원칙으로 틀린 것은?
① 추상화 : 하위 클래스/메소드/함수를 통해 애플리케이션의 특성을 간략하게 나타내고, 상세 내용은 상위 클래스/ 메소드/함수에서 구현한다.
② 의존성 : 다른 모듈에 미치는 영향을 최소화하도록 작성한다.
③ 가독성 : 누구든지 읽기 쉽게 코드를 작성한다.
④ 중복성 : 중복을 최소화 할 수 있는 코드를 작성한다.
클린 코드(Clean Code)란 깔끔하게 잘 정리된 코드를 말하며, 중복 코드 제거로 애플리케이션의 설계가 개선됩니다.
가독성이 높아 애플리케이션의 기능에 대해 쉽게 이해할 수 있고, 버그를 찾기 쉬워지며, 프로그래밍 속도가 빨라집니다.
클린 코드 최적화 원칙은 아래와 같습니다.
1) 가독성
2) 단순성
3) 의존성 배제
4) 중복성 최소화
5) 추상화
추상화 :
애플리케이션의 특성 => 상위 클래스/메소드/함수
상세 내용 => 하위 클래스/메소드/함수
22. 단위 테스트에서 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요한 것은?
① 테스트 스텁(Test Stub)
② 테스트 드라이버(Test Driver)
③ 테스트 슈트(Test Suites)
④ 테스트 케이스(Test Case)
상향식 통합 테스트 : 테스트 드라이버
하향식 통합 테스트 : 스텁 모듈
23. 스택(Stack)에 대한 옳은 내용으로만 나열된 것은?
㉠ FIFO 방식으로 처리된다. ㉡ 순서 리스트의 뒤(Rear)에서 노드가 삽입되며, 앞(Front)에서 노드가 제거된다. ㉢ 선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이다. ㉣ 인터럽트 처리, 서브루틴 호출 작업 등에 응용된다. |
① ㉠, ㉡
② ㉡, ㉢
③ ㉣
④ ㉠, ㉡, ㉢, ㉣
스택(Stack)은 LIFO 방식으로 처리됩니다.
보기의 ㉠은 큐(Queue)에 대한 설명이며,
보기의 ㉡과 ㉢은 각각 큐(Queue)와 데크(Deque)에 대한 설명입니다.
스택은 인터럽트 처리, 서브루틴 호출 작업 등에 응용됩니다.
24. 소프트웨어 모듈화의 장점이 아닌 것은?
① 오류의 파급 효과를 최소화한다.
② 기능의 분리가 가능하여 인터페이스가 복잡하다.
③ 모듈의 재사용 가능으로 개발과 유지보수가 용이하다.
④ 프로그램의 효율적인 관리가 가능하다.
소프트웨어 모듈화(Modularity)의 장점은 아래와 같습니다.
1) 오류의 파급력 최소화
2) 기능 분리 가능 => 인터페이스가 단순
3) 개발과 유지보수 용이
4) 모듈 재사용 가능
5) 프로그램의 효율적인 관리 가능
6) 소프트웨어 시험/통합/수정 시 용이
..etc
25. 소프트웨어 프로젝트 관리에 대한 설명으로 가장 옳은 것은?
① 개발에 따른 산출물 관리
② 소요인력은 최대화하되 정책 결정은 신속하게 처리
③ 주어진 기간은 연장하되 최소의 비용으로 시스템을 개발
④ 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발
소프트웨어 프로젝트 관리란 소프트웨어 프로젝트를 구성 및 계획하는 것을 말합니다.
소프트웨어는 개발하는 조직에 의해 설정된 예산 및 일정에 대한 제한조건에 항상 영향을 받으므로 관리가 필수적입니다.
따라서 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하는 것이 소프트웨어 관리에 대한 가장 옳은 설명입니다.
26. 정형 기술 검토(FTR)의 지침으로 틀린 것은?
① 의제를 제한한다.
② 논쟁과 반박을 제한한다.
③ 문제 영역을 명확히 표현한다.
④ 참가자의 수를 제한하지 않는다.
정형 기술 검토(FTR; Formal Technical Review)의 지침사항은 아래와 같습니다.
1) 의제와 그 범위를 유지하고 참가자의 수를 제한하라.
2) 각 체크 리스트를 작성하고, 자원과 시간 일정을 할당하라.
3) 개발자가 아닌 제품의 검토에 집중하라.
4) 논쟁과 반박을 제한하고 검토 과정과 결과를 재검토하라.
27. 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업을 의미하는 것은?
① Analysis
② Migration
③ Restructuring
④ Reverse Engineering
- 리팩토링(Refactoring) : 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 것
- 리뉴얼(Renewal) : 기존의 것을 새롭게 하는 것
- 분석(Analysis) : 기존 소프트웨어를 분석하여 재공학 대상을 선정하는 것
- 이주/마이그레이션(Migration) : 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 것
- 재구성(Restructuring) : 기존 소프트웨어를 향상시키기 위해 코드를 재구성하는 작업 (기능과 외적 동작은 변하지 X)
- 역공학(Reverse Engineering) : 기존 소프트웨어를 분석하여 소스코드를 얻어내는 것
28. 정보시스템 개발 단계에서 프로그래밍 언어 선택 시 고려할 사항으로 가장 거리가 먼 것은?
① 개발 정보시스템의 특성
② 사용자의 요구사항
③ 컴파일러의 가용성
④ 컴파일러의 독창성
정보시스템 개발 단계에서 프로그래밍 언어 선정 기준은 아래와 같습니다.
1) 친밀감
2) 언어의 능력
3) 처리 효율성
4) 프로그램 구조
5) 프로그램 길이
6) 이식성
7) 과거 개발 실적
8) 알고리즘/계산/자료구조의 난이도
9) 성능 고려 사항
10) 대상 업무 성격/사용자 요구사항
..etc
29. 소프트웨어 패키징에 대한 설명으로 틀린 것은?
① 패키징은 개발자 중심으로 진행한다.
② 신규 및 변경 개발소스를 식별하고, 이를 모듈화하여 상용제품으로 패키징한다.
③ 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다.
④ 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.
애플리케이션 패키징(소프트웨어 패키징)이란 개발이 완료된 소프트웨어를 고객에 인도하기 위해 패키징하고, 설치 매뉴얼, 사용 매뉴얼 등을 작성하는 일련의 배포용 설치 파일을 만드는 작업을 의미합니다.
쉽게 말하여 개발된 소프트웨어를 배포하기 위한 사전작업입니다.
패키징은 사용자 중심으로 진행되며, 아래와 같은 사항들을 고려합니다.
1) 사용자 시스템의 환경
2) 직관적 UI
3) 관리 서비스 형태 제공
4) 패키징 변경 및 개선 관리를 통한 안정적 배포
30. 자료 구조의 분류 중 선형 구조가 아닌 것은?
① 트리
② 리스트
③ 스택
④ 데크
트리와 그래프는 비선형 구조로 분류됩니다.
자료 구조의 분류는 아래와 같습니다.
31. 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 프로그램을 의미하는 것은?
① Title Code
② Source Code
③ Object Code
④ Alien Code
해당 설명은 에일리언 코드(Alien Code)에 대한 설명입니다.
32. 소프트웨어를 재사용함으로써 얻을 수 있는 이점으로 가장 거리가 먼 것은?
① 생산성 증가
② 프로젝트 문서 공유
③ 소프트웨어 품질 향상
④ 새로운 개발 방법론 도입 용이
소프트웨어를 새로 개발하는 것이 아닌, 소프트웨어의 재사용이므로 새로운 개발 방법론을 도입하기 어렵습니다.
33. 인터페이스 간의 통신을 위해 이용되는 데이터 포맷이 아닌 것은?
① AJTML
② JSON
③ XML
④ YAML
AJAX(Asynchronous Javascript And Xml) :
JavaScript를 사용한 비동기 통신 기술로, 클라이언트-서버간 XML 데이터를 주고받는 기술
브라우저가 가진 XMLHttpRequest 객체를 이용하여 전체 페이지를 새로 고치지 않고 페이지의 일부만을 위한 데이터를 로드하는 기법
JSON(JavaScript Object Notation) :
데이터 통신을 이용한 인터페이스 구현방법 (JavaScript를 토대로 개발됨)
용량이 적은 데이터를 교환하기 위해 데이터 객체를 [속성-값]의 쌍 형태로 표현하는 형식
언어 독립형 데이터 포맷으로 다양한 프로그래밍 언어에서 사용됨
XML은 줄글 형식의 데이터를 전송하기 위한 포맷이며,
YAML은 사람이 쉽게 읽고 이해가 가능하도록 설계된 데이터 포맷입니다.
34. 프로그램 설계도의 하나인 NS Chart에 대한 설명으로 가장 거리가 먼 것은?
① 논리의 기술에 중점을 두고 도형을 이용한 표현 방법이다.
② 이해하기 쉽고 코드 변환이 용이하다.
③ 화살표나 GOTO를 사용하여 이해하기 쉽다.
④ 연속, 선택, 반복 등의 제어 논리 구조를 표현한다.
NS Chart(Nassi-Schneiderman Chart)는 논리 기술에 중점을 두어 도형을 이용하여 표현한 차트입니다.
순차, 반복, 선택, 다중 선택 구조 등을 표현하며, 선택과 반복 구조를 시각화합니다.
그러나 NS Chart에서는 GOTO나 화살표를 사용하지 않습니다.
35. 순서가 A, B, C, D로 정해진 입력자료를 push, push, pop, push, push, pop, pop, pop 순서로 스택연산을 수행하는 경우 출력 결과는?
① B D C A
② A B C D
③ B A C D
④ A B D C
스택 연산 수행 순서는 다음과 같습니다. ( Bottom [ ~ top )
1) push : [ A
2) push : [ A, B
3) pop : [ A => B
4) push : [ A, C => B
5) push : [ A, C, D => B
6) pop : [ A, C => B, D
7) pop : [ A => B, D, C
8) pop : [ => B, D, C, A
36. 분할 정복(Divide and Conquer)에 기반한 알고리즘으로 피벗(pivot)을 사용하며 최악의 경우 { n ( n - 1 ) } / 2 회의 비교를 수행해야 하는 정렬(Sort)은?
① Selection Sort
② Bubble Sort
③ Insert Sort
④ Quick Sort
알고리즘 설계 기법은 아래와 같이 나눌 수 있습니다.
1) 분할 정복법 (Devide & Conquer) : 퀵 정렬 / 병합 정렬 알고리즘
2) 동적 계획법 (Dynamic Program-ming) : 플로이드 / 피보나치 수열 알고리즘
3) 탐욕법 (Greedy Method) : 크루스칼 / 다익스트라 알고리즘
4) 퇴각 검색법 (Back-tracking)
5) 분기 한정법 (Branch & Bound) : 최적 우선 탐색 / A* 알고리즘
6) 근사 해법 (Approx-imation Algorithm) : 근사 알고리즘
해당 설명은 분할 정복에 기반한 Quick Sort(퀵 정렬)입니다.
37. 화이트 박스 검사 기법에 해당하는 것으로만 짝지어진 것은?
㉠ 데이터 흐름 검사 ㉡ 루프 검사 ㉢ 동등 분할 검사 ㉣ 경계값 분석 ㉤ 원인 결과 그래프 기법 ㉥ 오류예측 기법 |
① ㉠, ㉡
② ㉠, ㉣
③ ㉡, ㉤
④ ㉢, ㉥
화이트박스 테스트의 종류 : [ 기초경로 / 제어구조 ] 검사
화이트박스 테스트 검증 기준 : [ 문장 / 조건/ 분기 / 경로 ] 검증
화이트박스 테스트 종류 : [ 기초 경로 / 조건 / 루프 / 데이터 흐름 ] 검사
블랙박스 테스트 종류 : [ 동치 분할 / 경계값 분석 / 원인-효과 그래프 / 오류 예측 / 비교 ] 검사
38. 소프트웨어 품질 관련 국제 표준인 ISO/IEC 25000에 관한 설명으로 옳지 않은 것은?
① 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합모델 표준이다.
② System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다.
③ ISO/IEC 2501n에서는 소프트웨어의 내부 측정, 외부측정, 사용품질 측정, 품질 측정 요소 등을 다룬다.
④ 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합하였다.
ISO/IEC 25000은 S/W 품질 평가 통합 모델로, SQuaRE로도 불립니다.
ISO/IEC 9126, 12119, 14598을 통합한 모델입니다.
- 2500n : 개요 및 품질관리
- 2501n : 품질 모델
- 2502n : 품질 측정
- 2503n : 품질 요구
- 2504n : 품질 평가
- 2505n : 확장 분야
39. 코드 인스펙션과 관련한 설명으로 틀린 것은?
① 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
② 코드 품질 향상 기법 중 하나이다.
③ 동적 테스트 시에만 활용하는 기법이다.
④ 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.
코드 인스펙션(Code Inspection)이란 결함 뿐 아니라 모든 것이 표준대로 되어있는지 확인하기 위한 검토를 말합니다.
요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하며 결함을 발견하는 방식입니다.
코드 인스펙션은 동적 테스트보다 정적 테스트에 가까운 검토 방식입니다.
40. 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?
① Critical Path Method
② Risk Analysis
③ Work Breakdown Structure
④ Waterfall Model
해당 설명은 Risk Analysis(위험 분석)에 대한 내용입니다.
위험 분석(Risk Analysis)이란 위험을 분석하고 해석하는 과정으로,
프로젝트에 내재된 위험 요소를 인식하고 영향을 분석하여 관리하는 활동입니다.
'정보처리기사 필기' 카테고리의 다른 글
정보처리기사 22_04_24 필기 [4과목] (1) | 2023.05.16 |
---|---|
정보처리기사 22_04_24 필기 [3과목] (1) | 2023.05.15 |
정보처리기사 22_04_24 필기 [2과목] (0) | 2023.05.03 |
정보처리기사 22_03_05 필기 [1과목] (0) | 2023.05.02 |
정보처리기사 22_04_24 필기 [1과목] (0) | 2023.05.01 |