본문 바로가기
정보처리기사/[최신] 필기 기출

정보처리기사 정처기 | 필기 2과목 소프트웨어 개발 | 기출문제 정리본, 두문자

by YUNI Heo 2023. 2. 27.
반응형

 

✅ 2022년 04월 24일

💡 21. 통합 테스트(Integration Test)와 관련한 설명으로 틀린 것은?

  1. 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것이다.
  2. 하향식 통합 테스트의 경우 넓이 우선(Breadth First) 방식으로 테스트를 할 모듈을 선택할 수 있다.
  3. 상향식 통합 테스트의 경우 시스템 구조도의 최상위에 있는 모듈을 먼저 구현하고 테스트한다.
  4. 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘되고 있는지를 빨리 파악하고자 할 때 상향식보다는 하향식 통합 테스트를 사용하는 것이 좋다.

 

  • 상향식 통합 테스트(Bottom Up Intergration Test): 모듈들을 작은 단위부터 조합하여 상위 단계로 통합하며 전체 시스템의 작동을 테스트하는 방법
  • 하향식 통합 테스트(Top Down Intergration Test): 모듈들을 큰 단위부터 조합하여 하위 단계로 통합하며 전체 시스템의 작동을 테스트하는 방법

 

💡 22. 다음과 같이 레코드가 구성되어 있을 때, 이진 검색 방법으로 14를 찾을 경우 비교되는 횟수는?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1. 2
  2. 3
  3. 4
  4. 5

 

1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15
- 배열의 중앙값 8과 찾으려는 값 14를 비교한다.
- 중앙값 8보다 찾으려는 값 14가 크므로 배열의 오른쪽 부분을 대상으로 이진 검색을 수행한다.

9 10 11 [12] 13 14 15
- 배열의 중앙값 12과 찾으려는 값 14를 비교한다.
- 중앙값 12보다 찾으려는 값 14가 크므로 배열의 오른쪽 부분을 대상으로 이진 검색을 수행한다.

13 [14] 15
- 배열의 중앙값 14와 찾으려는 값 14를 비교한다.
- 찾으려는 값과 중앙값이 일치하므로 검색을 종료한다.

 

💡 23. 소프트웨어 공학에서 워크스루(Walkthrough)에 대한 설명으로 틀린 것은?

  1. 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
  2. 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
  3. 인스펙션(Inspection)과 동일한 의미를 가진다.
  4. 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.

 

  • 워크스루(Walkthrough): 요구사항 명세서 작성자를 비롯한 다른 전문가들이 사전에 검토한 후 짧은 회의를 통해 결함을 발견한다.
  • 인스펙션(Inspection): 요구사항 명세서 작성자를 제외한 다른 전문가들이 요구사항 명세서를 검토하여 결함을 발견한다.

 

💡 24. 소프트웨어의 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동을 뜻하는 것은?

  1. 복호화(Decryption): 암호화된 데이터를 원래의 평문으로 돌려놓는 과정이다.
  2. 형상관리(Version Control): 소프트웨어 개발 과정에서 발생하는 소스 코드, 문서, 그림 등을 효율적으로 관리하는 프로세스이다.
  3. 저작권(Copyright): 문학, 예술, 음악 등의 창작물에 대한 배타적인 권리를 보호하는 법적 개념이다.
  4. 크랙(Crack): 소프트웨어의 보안을 우회하여 불법적으로 이용하는 행위이다.

 

💡 25. 테스트 케이스(Test Case)와 관련한 설명으로 틀린 것은?

  1. 테스트의 목표 및 테스트 방법을 결정하기 전에 테스트 케이스를 작성해야 한다.
  2. 프로그램에 결함이 있더라도 입력에 대해 정상적인 결과를 낼 수 있기 때문에 결함을 검사할 수 있는 테스트 케이스를 찾는 것이 중요하다.
  3. 개발된 서비스가 정의된 요구 사항을 준수하는지 확인하기 위한 입력 값과 실행 조건, 예상 결과의 집합으로 볼 수 있다.
  4. 테스트 케이스 실행이 통과되었는지 실패하였는지 판단하기 위한 기준을 테스트 오라클(Test Oracle)이라고 한다.

 

테스트 케이스(Test Case)

  • 소프트웨어의 기능, 성능, 안정성 등을 확인하기 위한 테스트 절차를 기록한 문서이다.
  • 각각의 테스트 케이스는 입력 값, 예상 결과, 실행 순서 등의 정보를 포함한다.
  • 소프트웨어 개발 생명주기의 다양한 단계에서 작성되며, 테스트 계획 수립, 설계 검토, 구현 검증, 인수 테스트 등에서 활용한다.
  • 테스트 목적에 따라 다양한 기법과 도구를 활용한다.

 

💡 26. 객체지향 개념을 활용한 소프트웨어 구현과 관련한 설명 중 틀린 것은?

  1. 객체(Object)란 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
  2. JAVA에서 정보은닉(Information Hiding)을 표기할 때 private의 의미는 공개이다.
  3. 상속(Inheritance)은 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 전체 구조를 파악하기 쉽다는 장점이 있다.
  4. 같은 클래스에 속하는 개개의 객체이자 하나의 클래스에서 생성된 객체를 인스턴스(Instance)라고 한다.

 

정보 은닉(Information Hiding)

  • 객체 지향 프로그래밍에서 데이터를 외부에서 직접 접근하지 못하게 숨긴다.
  • 캡슐화(Encapsulation): 데이터와 그에 대한 동작을 하나로 묶어 객체를 생성하고, 외부에서는 객체 내부의 데이터와 동작을 직접 접근하지 못하게 한다.
  • 접근 제어자(Access Modifier): 클래스 내부의 멤버(필드, 메서드)에 대한 접근 권한을 지정하는 예약어(public, private, protected, default)이다.

 

💡 27. DRM, Digital Rights Management과 관련한 설명으로 틀린 것은?

  1. 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미한다.
  2. 디지털 미디어의 생명 주기 동안 발생하는 사용 권한 관리, 과금, 유통 단계를 관리하는 기술로도 볼 수 있다.
  3. 클리어링 하우스(Clearing House)는 사용자에게 콘텐츠 라이선스를 발급하고 권한을 부여해 주는 시스템을 말한다.
  4. 원본을 안전하게 유통하기 위한 전자적 보안은 고려하지 않기 때문에 불법 유통과 복제의 방지는 불가능하다.

 

디지털 콘텐츠 저작권 관리(DRM, Digital Rights Management)

  • 디지털 콘텐츠의 불법 복제 및 배포를 방지하기 위해 사용한다.
  • 암호화와 디지털 서명 등의 보안 기술을 사용한다.
  • 디지털 콘텐츠 사용자는 DRM으로 보호된 콘텐츠를 사용하기 위해 인증 과정을 가진다.
  • 디지털 콘텐츠의 저작권자가 콘텐츠에 대한 이용 방법과 제한 조건 등을 설정한다.
  • 디지털 콘텐츠의 라이선스 관리 및 사용 통계 정보 수집 등의 기능을 수행한다.

 

💡 28. 위험 모니터링(Risk monitoring)의 의미로 옳은 것은?

  1. 위험을 이해하는 것
  2. 첫 번째 조치로 위험을 피할 수 있도록 하는 것
  3. 위험 발생 후 즉시 조치하는 것
  4. 위험 요소 징후들에 대하여 계속적으로 인지하는 것

 

💡 29. 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구는?

  1. RCS, Revision Control System: 소프트웨어 개발에서 변경 이력을 관리하고 추적한다.
  2. RTS, Reliable Transfer Service: 데이터 통신에서 신뢰성이 보장된 전송 서비스를 제공하는 프로토콜이다.
  3. RPC, Remote Procedure Call: 네트워크 상에서 원격지의 다른 프로세스나 컴퓨터에서 실행 중인 함수나 프로시저를 호출하는 프로토콜이다.
  4. RVS, Relative Version System: 파일의 상대적인 버전을 관리하는 도구로, 각 파일 버전의 차이를 저장하여 파일 복원과 변경 이력을 추적한다.

 

💡 30. 화이트박스 테스트(White-box testing)와 관련한 설명으로 틀린 것은?

  1. 화이트박스 테스트의 이해를 위해 논리 흐름도(Logic-Flow Diagram)를 이용할 수 있다.
  2. 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic Test)에 해당한다.
  3. 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정한다.
  4. 테스트 데이터를 선택하기 위하여 검증 기준(Test Coverage)을 정한다.

 

  • 화이트박스 테스트(White-box testing): 소프트웨어의 내부 구조와 작동 원리를 이해하여 테스트 케이스를 설계하고 검증하는 방법이다.
  • 블랙박스 테스트(Black-box testing): 소프트웨어의 내부 동작 원리를 무시하고, 오직 요구사항과 명세서에 따라 소프트웨어를 검증하는 방법이다.

 

💡 31. 알고리즘과 관련한 설명으로 틀린 것은?

  1. 주어진 작업을 수행하는 컴퓨터 명령어를 순서대로 나열한 것으로 볼 수 있다.
  2. 검색(Searching)은 정렬이 되지 않은 데이터 혹은 정렬이 된 데이터 중에서 키값에 해당되는 데이터를 찾는 알고리즘이다.
  3. 정렬(Sorting)은 흩어져있는 데이터를 키값을 이용하여 순서대로 열거하는 알고리즘이다.
  4. 선형 검색(Linear search)은 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 한다.

 

선형 검색(Linear search)

  • 리스트에서 원하는 값을 찾을 때, 처음부터 마지막까지 차례대로 순회하며 값을 찾아나가는 방법이다.
  • 리스트가 작거나 정렬되지 않은 경우에 적합하다.
  • 최악의 경우 모든 항목을 다 검색해야 하므로 시간복잡도가 O(n)이다.

 

💡 32. 버블 정렬(Bubble Sort)을 이용하여 다음 자료를 오름차순으로 정렬할 경우 PASS 1의 결과는?

9 6 7 3 5
  1. 6 9 7 3 5
  2. 3 9 6 7 5
  3. 3 6 7 9 5
  4. 6 7 3 5 9

 

[9 6] 7 3 5
- 첫번째와 두번째 숫자를 비교하여 첫번째가 더 크면 자리를 바꾼다. (9와 6 자리 변경)

6 [9 7] 3 5
- 두번째와 세번째 숫자를 비교하여 두번째가 더 크면 자리를 바꾼다. (9와 7 자리 변경)

6 7 [9 3] 5
- 세번째와 네번째 숫자를 비교하여 세번째가 더 크면 자리를 바꾼다. (3과 3 자리 변경)

6 7 3 [9 5]
- 네번째와 다섯번째 숫자를 비교하여 네번째가 더 크면 자리를 바꾼다. (9와 5 자리 변경)

6 7 3 5 9

 

💡 33. 다음은 인스펙션(Inspection) 과정을 표현한 것이다. (가)~(마)에 들어갈 말을 보기에서 찾아 바르게 연결한 것은? (준비, 사전 교육, 인스펙션 회의, 수정, 후속조치)

  1. (가) - 사전 교육, (나) - 인스펙션 회의
  2. (나) - 준비, (다) - 인스펙션 회의
  3. (다) - 인스펙션 회의, (라) - 후속조치
  4. (라) - 수정, (마) - 인스펙션 회의

 

 

💡 34. 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 것은?

  1. 리팩토링(Refactoring): 소프트웨어 코드를 수정하여 기능은 유지하면서 내부 구조를 개선한다.
  2. 구조화(Architecting): 소프트웨어 시스템의 전체적인 아키텍처를 설계하고 개발한다.
  3. Specification: 소프트웨어 제품이나 시스템의 요구사항과 기능 등을 정확히 명세하고 문서화한다.
  4. Renewal: 기존의 소프트웨어 시스템을 대체하거나 개선한다.

 

💡 35. 단위 테스트(Unit Test)와 관련한 설명으로 틀린 것은?

  1. 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
  2. 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
  3. 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과 값을 받는 역할을 하는 가상의 모듈을 테스트 스텁(Test Stub)이라고 한다.
  4. 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.

 

  • 테스트 드라이버(Test Driver): 소프트웨어 컴포넌트의 테스트를 위해, 해당 컴포넌트를 호출하고 테스트 결과를 확인하는 프로그램이다.
  • 테스트 스텁(Test Stub): 소프트웨어 컴포넌트의 테스트를 위해, 해당 컴포넌트가 의존하는 다른 컴포넌트의 기능을 대신하는 프로그램이다.

 

💡 36. 통합 개발 환경(IDE, Integrated Development Environment) 도구의 각 기능에 대한 설명으로 틀린 것은?

  1. 코딩(Coding): 프로그래밍 언어를 가지고 컴퓨터 프로그램을 작성할 수 있는 환경을 제공
  2. 컴파일(Compile): 저급언어의 프로그램을 고급언어 프로그램으로 변환하는 기능
  3. 디버깅(Debugging): 프로그램에서 발견되는 버그를 찾아 수정할 수 있는 기능
  4. 배포(Deployment): 소프트웨어를 최종 사용자에게 전달하기 위한 기능

 

컴파일(Compile)

  • 소스 코드를 컴퓨터가 이해하는 기계어로 변환하는 과정이다.
  • 소스 코드를 분석하고 기계어 코드를 생성한다.
  • 소스 코드의 언어에 따라 다른 방식으로 이루어진다.

 

💡 37. 아래 트리 구조(Tree Structure)에 대하여 후위 순회(PostOrder) 한 결과는?

  1. A → B → D → C → E → G → H → F
  2. D → B → G → H → E → F → C → A
  3. D → B → A → G → E → H → C → F
  4. A → B → D → H → E → H → C → F

 


  • 전위 순회(PreOrder): 루트 노드를 먼저 방문하고, 왼쪽 서브트리를 전위 순회한 후 오른쪽 서브트리를 전위 순회한다.
  • 중위 순회(InOrder): 왼쪽 서브트리를 중위 순회한 후 루트 노드를 방문하고, 오른쪽 서브트리를 중위 순회한다.
  • 후위 순회(PostOrder): 왼쪽 서브트리를 후위 순회한 후 오른쪽 서브트리를 후위 순회한 후에 루트 노드를 방문한다.

 

💡 38. 인터페이스 구현 시 사용하는 기술로 속성-값 쌍(Attribute-Value Pairs)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷은?

  1. JSON, JavaScript Object Notation: 경량의 데이터 교환 형식으로, 사람이 읽고 쓰기에 용이하고 기계가 분석하고 생성하기 쉬운 텍스트 형식이다.
  2. HTML, HyperText Markup Language: 웹 페이지를 만들 때 사용되는 마크업 언어로, 웹 브라우저가 HTML 문서를 해석하여 웹 페이지를 구성한다.
  3. AVPN, Application Virtual Private Network: 인터넷을 통해 애플리케이션 간 통신을 안전하게 전송하기 위해 사용되는 가상 사설망 기술이다.
  4. DOF, Depth of Field: 광학 장비에서 초점이 맞은 영역 앞뒤로 일정 거리 범위 내의 영역이다.

 

💡 39. 순서가 있는 리스트에서 데이터의 삽입(Push), 삭제(Pop)가 한쪽 끝에서 일어나며 선입선출(FIFO, First In First Out) 구조의 특징을 가지는 자료구조는?

  1. 트리(Tree) 구조: 계층적인 구조를 가지는 비선형 자료구조로, 하나의 루트 노드에서 시작하여 여러 개의 자식 노드가 분기하는 구조이다.
  2. 크래프(Graph) 구조: 정점(node)과 간선(edge)으로 이루어진 자료구조로, 다양한 형태의 네트워크와 상호 연결된 데이터를 표현한다.
  3. 스택(Stack) 구조: 후입선출(LIFO, Last In First Out) 구조를 가지는 자료구조로, 삽입과 삭제가 한쪽 끝에서 이루어지는 구조이다.
  4. 데크(Queue) 구조: 선입선출(FIFO, First In First Out) 구조를 가지는 자료구조로, 삽입은 한쪽 끝에서, 삭제는 다른 한쪽 끝에서 이루어지는 구조이다.

 

💡 40. 다음 중 단위 테스트 도구로 사용될 수 없는 것은?

  1. CppUnit: C++ 언어로 작성된 유닛 테스트 프레임워크이다.
  2. JUnit: Java 언어로 작성된 유닛 테스트 프레임워크이다.
  3. HttpUnit:  웹 애플리케이션의 테스트를 위한 자바 기반의 유닛 테스트 프레임워크이다.
  4. IgpUnit

 

✅ 2022년 03월 05일

💡 21. 클린 코드(Clean Code)를 작성하기 위한 원칙으로 틀린 것은?

  1. 추상화: 하위 클래스, 메서드, 함수를 통해 애플리케이션의 특성을 간략하게 나타내고, 상세 내용은 상위 클래스, 메서드, 함수에서 구현한다.
  2. 의존성: 다른 모듈에 미치는 영향을 최소화하도록 작성한다.
  3. 가독성: 누구든지 읽기 쉽게 코드를 작성한다.
  4. 중복성: 중복을 최소화할 수 있는 코드를 작성한다.

 

추상화

  • 상위 클래스, 메서드, 함수를 사용하여 애플리케이션의 특성을 간략하게 나타낸다.
  • 하위 클래스, 메서드, 함수에서 구체적인 내용을 구현한다.
  • 추상화를 통하여 구현된 클래스, 메서드, 함수는 애플리케이션에서 재사용성과 유지보수성을 향상한다.

 

💡 22. 단위 테스트에서 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요한 것은?

  1. 테스트 스텁(Test Stub): 구현되지 않은 다른 모듈과의 상호작용을 시뮬레이션하여 테스트를 가능하게 하는 작은 코드 조각이다.
  2. 테스트 드라이버(Test Driver): 테스트 대상 모듈을 호출하고, 테스트 데이터를 전달하며, 테스트 결과를 수집하는 코드 조각으로, 테스트를 자동화한다.
  3. 테스트 슈트(Test Suites): 여러 개의 테스트 케이스를 묶어서 한꺼번에 실행할 수 있는 단위이다.
  4. 테스트 케이스(Test Case): 시스템의 특정 기능이나 동작을 검증하기 위해 설계된 단위 테스트이다.

 

💡 23. 스택(Stack)에 대한 옳은 내용으로만 나열된 것은?

  1. FIFO 방식으로 처리된다.
  2. 순서 리스트의 뒤(Rear)에서 노드가 삽입되며, 앞(Front)에서 노드가 제거된다.
  3. 선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이다.
  4. 인터럽트 처리, 서브루틴 호출 작업 등에 응용된다.

 

스택(Stack)

  • 후입선출(LIFO, Last-In-First-Out) 구조이다.
  • 가장 최근에 삽입된 데이터가 가장 먼저 제거되는 구조이다.
  • push(삽입), pop(삭제), peek(조회) 등의 연산을 지원한다.
  • 함수 호출 스택, 브라우저 방문 기록 등 다양한 분야에서 활용한다.
  • 배열이나 연결리스트로 구현한다.

 

💡 24. 소프트웨어 모듈화의 장점이 아닌 것은?

  1. 오류의 파급 효과를 최소화한다.
  2. 기능의 분리가 가능하여 인터페이스가 복잡하다.
  3. 모듈의 재사용 가능으로 개발과 유지보수가 용이하다.
  4. 프로그램의 효율적인 관리가 가능하다.

 

💡 25. 소프트웨어 프로젝트 관리에 대한 설명으로 가장 옳은 것은?

  1. 개발에 따른 산출물 관리
  2. 소요인력은 최대화하되 정책 결정은 신속하게 처리
  3. 주어진 기간은 연장하되 최소의 비용으로 시스템을 개발
  4. 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발

 

💡 26. 정형 기술 검토(FTR, Formal Technical Review) 지침으로 틀린 것은?

  1. 의제를 제한한다. 
  2. 논쟁과 반박을 제한한다.
  3. 문제 영역을 명확히 표현한다.
  4. 참가자의 수를 제한하지 않는다

 

정형 기술 검토(FTR, Formal Technical Review) 지침

  • 준비 단계: 검토 참가자 선정, 검토 대상 문서 및 산출물 선정, 검토 일정 및 장소 정하기
  • 검토 단계: 검토 진행 방법 정하기, 검토 기록 유지하기, 결함 발견 및 수정 방법 논의하기
  • 추적 및 평가 단계: 결함 추적 및 수정 상황 관리하기, 검토 효과 및 효율성 평가하기
  • 완료 단계: 검토 결과 보고서 작성하기, 수정 사항 적용 및 검증하기, 검토 과정 개선 방안 도출하기

 

💡 27. 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업을 의미하는 것은?

  1. Analysis: 소프트웨어나 시스템을 분석하여 요구사항을 파악하고 문제점을 찾는다.
  2. Migration: 기존의 시스템을 새로운 환경으로 이전한다.
  3. Restructuring: 기존의 코드나 소프트웨어 구조를 재구성하여 유지보수나 확장성을 개선한다.
  4. Reverse Engineering: 기존의 소프트웨어나 시스템을 분석하여 설계 문서를 추출하거나 코드를 분석한다.

 

💡 28. 정보시스템 개발 단계에서 프로그래밍 언어 선택 시 고려할 사항으로 가장 거리가 먼 것은?

  1. 개발 정보시스템의 특성 
  2. 사용자의 요구사항
  3. 컴파일러의 가용성
  4. 컴파일러의 독창성

 

프로그래밍 언어 선택 고려 사항

  • 목적: 프로그램을 개발하는 목적과 용도를 고려한다.
  • 생산성: 개발자의 생산성과 개발 기간에 영향을 미치는 언어의 특성을 고려한다.
  • 성능: 프로그램의 성능을 요구하는 경우에는 언어의 성능과 특성을 고려한다.
  • 유지보수성: 코드의 가독성과 유지보수 용이성을 고려한다.
  • 생태계: 언어의 생태계와 지원 커뮤니티의 활동성을 고려하여 개발 환경 및 도구의 품질과 지원 여부를 파악한다.
  • 보안: 보안 요구사항이 있는 경우, 언어의 보안 기능 및 보안 취약성 등을 고려한다.
  • 비용: 언어 사용에 따른 라이선스 비용 및 개발 환경, 서버 등 추가 비용을 고려한다.

 

💡 29. 소프트웨어 패키징에 대한 설명으로 틀린 것은?

  1. 패키징은 개발자 중심으로 진행한다.
  2. 신규 및 변경 개발소스를 식별하고, 이를 모듈화 하여 상용제품으로 패키징 한다.
  3. 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다.
  4. 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.

 

소프트웨어 패키징

  • 설치 프로그램의 선택: 사용자가 쉽게 설치할 수 있도록 설치 프로그램을 선택한다.
  • 파일 구성: 소프트웨어 구성 요소들을 어떻게 구성할지 정한다.
  • 라이선스: 소프트웨어의 라이선스를 명확하게 밝히고, 준수한다.
  • 의존성 관리: 소프트웨어가 의존하는 라이브러리나 시스템 구성 요소들의 버전을 관리한다.
  • 사용자 맞춤 설정: 사용자 맞춤 설정 파일을 제작한다.
  • 충돌 방지: 설치된 다른 소프트웨어와 충돌하지 않도록 설치 경로나 라이브러리 등을 관리한다.
  • 업데이트: 기존 버전과의 호환성을 유지하고 사용자가 쉽게 업데이트할 수 있도록 지원한다.

 

💡 30. 자료 구조의 분류 중 선형 구조가 아닌 것은?

  1. 트리(Tree): 계층적인 구조를 표현하며, 노드와 간선으로 이루어진다.
  2. 리스트(List): 순서가 있는 데이터의 집합을 표현하며, 각 항목은 다음 항목을 가리키는 포인터로 연결된다.
  3. 스택(List): 후입선출(LIFO) 구조를 가지며, 새로운 요소가 스택의 맨 위에 추가되고(top), 삭제될 때에도 맨 위에서부터(top) 진행한다.
  4. 데크(Deque): 양쪽 끝에서 삽입과 삭제가 가능한 자료구조로, 큐와 스택의 특징을 모두 가진다.

 

  • 선형 구조: 데이터를 일렬로 나열한 구조로, 데이터의 삽입, 삭제, 검색 등이 순차적으로 이루어진다. (배열, 연결 리스트, 스택, 큐)
  • 비선형 구조: 계층이나 망구조 등이 있는 데이터 구조로, 데이터의 관계가 선형이 아닌 경우에 사용한다. (트리, 그래프)
  • 파일 구조: 데이터를 저장하기 위한 논리적인 구조로, 시스템에서 데이터를 읽고 쓰기 위한 방법을 제공한다. (순차 파일, 색인 파일, 직접 파일)

 

💡 31. 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 프로그램을 의미하는 것은?

  1. Title Code: 프로그램의 제목이나 주석 등 인간이 이해하기 쉬운 형태로 작성된 소스 코드이다.
  2. Source Code: 프로그램의 동작을 기술하는 소스 코드로, 사람이 이해하기 쉬운 언어로 작성한다.
  3. Object Code: 소스 코드를 컴파일하여 생성된 기계어 코드로, CPU가 실행할 수 있는 형태로 변환한다.
  4. Alien Code: 자신이 아닌 다른 사람이 작성한 소스 코드 또는 이해하기 어려운 코드로, 이해하기 어렵고 수정이 어렵다.

 

💡 32. 소프트웨어를 재사용함으로써 얻을 수 있는 이점으로 가장 거리가 먼 것은?

  1. 생산성 증가
  2. 프로젝트 문서 공유
  3. 소프트웨어 품질 향상
  4. 새로운 개발 방법론 도입 용이

 

소프트웨어 재사용 이점

  • 생산성 향상, 품질 향상, 유지보수성 향상, 기술적 우수성 향상, 표준화, 지식 공유

 

💡 33. 인터페이스 간의 통신을 위해 이용되는 데이터 포맷이 아닌 것은?

  1. AJTML, Asynchronous Javascript and XML:  AJAX 기술을 사용하여 서버와 비동기적으로 데이터를 주고받기 위한 표준이다.
  2. JSON, Javascript Object Notation: 경량화된 데이터 교환 형식으로, JavaScript에서 객체를 표현하는 방법을 사용한다.
  3. XML, Extensible Markup Language: 다목적 마크업 언어로, 데이터를 저장하고 전송하기 위한 공통적인 형식이다.
  4. YAML, YAML Ain't Markup Language: 인간이 쉽게 읽을 수 있는 데이터 직렬화 언어로, 데이터의 가독성을 높이고, 데이터 간의 관계를 쉽게 파악한다.

 

💡 34. 프로그램 설계도의 하나인 네세-슈나이더만 차트(NS Chart, Nassi-Schneiderman Chart)에 대한 설명으로 가장 거리가 먼 것은?

  1. 논리의 기술에 중점을 두고 도형을 이용한 표현 방법이다.
  2. 이해하기 쉽고 코드 변환이 용이하다.
  3. 화살표나 GOTO를 사용하여 이해하기 쉽다.
  4. 연속, 선택, 반복 등의 제어 논리 구조를 표현한다.

 

네세-슈나이더만 차트(NS Chart, Nassi-Schneiderman Chart)

  • 프로그램의 흐름을 구조적으로 표현하여, 구조적인 프로그래밍 기법을 적용한다.
  • 제어 구조의 흐름을 직관적으로 표현하여, 프로그램의 오류와 버그를 최소화한다.
  • 사각형, 마름모, 타원, 화살표를 사용한다.
  • 제어 구조를 직관적이고 명확하게 표현한다.
  • 프로그램의 유지보수를 용이하게 한다.

 

💡 35. 순서가 A, B, C, D로 정해진 입력자료를 push, push, pop, push, push, pop, pop, pop 순서로 스택(Stack) 연산을 수행하는 경우 출력 결과는?

  1. B D C A
  2. A B C D
  3. B A C D
  4. A B D C

 

  • push(A)
  • push(B)
  • pop(): B
  • push(C)
  • push(D)
  • pop(): D
  • pop(): C
  • pop(): A

 

💡 36. 분할 정복(Divide and Conquer)에 기반한 알고리즘으로 피벗(pivot)을 사용하며 최악의 경우  n(n-1) / 2 회의 비교를 수행해야 하는 정렬(Sort)은?

  1. 선택(Selection) 정렬: 주어진 리스트에서 가장 작은 값을 선택하여 맨 앞으로 이동시키는 작업을 반복하면서 전체 리스트를 정렬한다.
  2. 버블(Bubble) 정렬: 두 인접한 원소를 비교하면서, 큰 값을 오른쪽으로 계속해서 이동시키면서 정렬한다.
  3. 삽입(Insert) 정렬: 리스트를 순회하면서 각 원소를 이미 정렬된 부분 리스트에 적절한 위치에 삽입한다.
  4. 퀵(Quick) 정렬: 분할 정복 방법을 사용하여 리스트를 분할하고 정복하는 과정으로, 피벗 값을 기준으로 작은 값과 큰 값으로 리스트를 분할하고, 분할된 각 리스트를 다시 정렬한다.

 

💡 37. 화이트 박스 검사 기법에 해당하는 것으로만 짝지어진 것은?

㉠ 데이터 흐름(Data Flow) 테스트
㉡ 루프(Loop) 테스트
㉢ 동등 분할(Equivalence Partitioning) 테스트
㉣ 경곗값 분석(Boundary Value Analysis) 테스트
㉤ 원인-결과 그래프(Cause-Effect Graph) 테스트
㉥ 오류 추정(Error Guessing) 테스트
  1. ㉠, ㉡
  2. ㉠, ㉣
  3. ㉡, ㉤
  4. ㉢, ㉥

 

화이트 박스 검사(White Box Testing)

  • 구조적(Structural) 테스트
  • 조건 결정(Decision Condition) 테스트
  • 경로 분석(Path Analysis) 테스트
  • 데이터 흐름(Data Flow) 테스트
  • 논리적 경로(Logical Path) 테스트
  • 제어 흐름(Control Flow Testing) 테스트
  • 무결성 검사(Integrity) 테스트


블랙박스 검사(Black Box Testing)

  • 동등 분할(Equivalence Partitioning) 테스트: 입력 데이터의 영역을 유사한 도메인별로 유횻값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
  • 경곗값 분석(Boundary Value Analysis) 테스트: 입력 값의 경계 부근에서의 동작을 테스트하는 기법
  • 결정 테이블(Decision Table) 테스트: 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 합하여 테스트하는 기법
  • 상태 전이(State Transition) 테스트: 시스템의 상태 변화에 따른 입력과 출력을 테스트하는 기법
  • 유스 케이스(Use Case) 테스트: 사용자 시나리오에 따라 테스트 케이스를 작성하는 기법
  • 분류 트리(Classification Tree Method) 테스트: 입력 값의 조합을 트리 형태로 표현하여 테스트 케이스를 도출하는 기법
  • 페어와이즈(Pairwise) 테스트: 테스트 데이터값들 간에 최소한 한 번씩을 조합하여 테스트 케이스를 도출하는 기법
  • 원인-결과 그래프(Cause-Effect Graph) 테스트: 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트하는 기법
  • 비교(Comparison) 테스트: 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교하는 테스트 기법
  • 오류 추정(Error Guessing) 테스트: 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법

 

💡 38. 소프트웨어 품질 관련 국제 표준인 ISO/IEC 25000에 관한 설명으로 옳지 않은 것은?

  1. 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합모델 표준이다.
  2. System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다.
  3. ISO/IEC 2501n에서는 소프트웨어의 내부 측정, 외부측정, 사용품질 측정, 품질 측정 요소 등을 다룬다.
  4. 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합하였다.

 

ISO/IEC

  • ISO/IEC 2500n: 품질 관리(Quality Management)와 품질 요구사항(Quality Requirements)을 다루는 표준
  • ISO/IEC 2501n: 제품 품질 평가(Product Quality Evaluation)를 위한 표준
  • ISO/IEC 2502n: 프로세스 품질 평가(Process Quality Evaluation)를 위한 표준
  • ISO/IEC 2503n: 서비스 품질 평가(Service Quality Evaluation)를 위한 표준
  • ISO/IEC 2504n: 데이터 품질 평가(Data Quality Evaluation)를 위한 표준
  • ISO/IEC 2505n: 소프트웨어 생명주기(Software Life Cycle)에 대한 품질 요구사항을 다루는 표준

 

💡 39. 코드 인스펙션(Code Inspection)과 관련한 설명으로 틀린 것은?

  1. 프로그램을 수행시켜 보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
  2. 코드 품질 향상 기법 중 하나이다.
  3. 동적 테스트 시에만 활용하는 기법이다.
  4. 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.

 

코드 인스펙션(Code Inspection)

  • 검사 대상: 소프트웨어 코드, 문서, 설계 등
  • 검사 방법: 지정된 검사 항목에 따라 검토, 토론, 모의 실행 등을 통해 결함을 발견
  • 검사 절차: 검사 계획 수립, 개별검사 수행, 결함 기록, 결함 수정 및 검증 등
  • 검사 항목: 오류, 결함, 일관성, 가독성, 성능, 보안 등
  • 인스펙션 유형: 정적 검사, 동적 검사, 혼합 검사 등
  • 인스펙션 참여자: 검사 책임자, 검사자, 개발자, 품질 관리자 등
  • 인스펙션 결과: 검사 보고서 작성, 결함 수정, 품질 개선 등

 

💡 40. 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?

  1. 임계 경로법(CPM, Critical Path Method): 프로젝트 일정을 관리하기 위한 프로젝트 관리 기법으로, 프로젝트 일정을 계산하는데 가장 긴 작업 경로를 파악하여 일정을 계산한다.
  2. 위험 분석(Risk Analysis): 프로젝트의 위험을 파악하고 분석하여 대응 전략을 수립하는 프로젝트 관리 기법이다.
  3. 업무 분업 구조(Work Breakdown Structure): 프로젝트를 작은 단위로 분해하여 각 업무에 대한 책임과 일정을 결정하는 프로젝트 관리 기법이다.
  4. 폭포수 모델(Waterfall Model): 소프트웨어 개발의 일련의 과정을 단계적으로 수행하는 프로젝트 관리 기법이다.

 

✅ 2021년 08월 14일

💡 21. 테스트를 목적에 따라 분류했을 때, 강도(Stress) 테스트에 대한 설명으로 옳은 것은?

  1. 시스템에 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지 테스트한다. 
  2. 시스템에 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지를 테스트한다.
  3. 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 테스트한다.
  4. 부당하고 불법적인 침입을 시도하여 보안시스템이 불법적인 침투를 잘 막아내는지 테스트한다.

 

  • 회복(Recovery) 테스트: 시스템이 충돌이나 장애 상황에서 복구되는 능력을 테스트한다.
  • 강도(Stress) 테스트: 주어진 조건에서 시스템이 얼마나 많은 작업 부하를 처리할 수 있는지 확인한다.
  • 성능 테스트: 시스템의 응답 시간, 처리량, 자원 사용률 등을 측정하여 시스템의 성능 개선 및 최적화를 진행한다.
  • 안전(Security) 테스트: 시스템에 대한 보안 취약점을 발견하고 해결하기 위해 수행한다.

 

💡 22. 다음 자료를 버블 정렬(Bubble Sort)을 이용하여 오름차순으로 정렬할 경우 PASS 3의 결과는?

9 6 7 3 5
  1. 6 3 5 7 9
  2. 3 5 6 7 9
  3. 6 7 3 5 9
  4. 3 5 9 6 7

 

PASS 1
[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

PASS 2
[6 7] 3 5 9 
6 [7 3] 5 9
6 3 [7 5] 9
6 3 5 [7 9]
6 3 5 7 9

PASS 3
[6 3] 5 7 9
3 [6 5] 7 9
3 5 [6 7] 9
3 5 6 [7 9]
3 5 6 7 9

 

💡 23. 다음 그래프에서 정점 A를 선택하여 깊이우선탐색(DFS, Depth First Search)으로 운행한 결과는?

  1. A B E C D F G
  2. A B E C F D G
  3. A B C D E F G
  4. A B E F G C D

 

깊이우선탐색(DFS, Depth First Search)

  • 시작 노드를 스택에 추가하고 방문 여부를 표시한다.
  • 스택의 최상위 노드를 방문하고, 해당 노드의 인접 노드 중 방문하지 않은 노드가 있으면 스택에 추가한다.
  • 스택의 최상위 노드에 인접 노드가 더 이상 없을 때까지 스택에서 제거하고 방문을 종료한다.
  • 스택이 비어있을 때까지 2-3 과정을 반복한다.

 

💡 24. 다음 설명에 부합하는 용어로 옳은 것은?

소프트웨어 구조를 이루며, 독립적인 기능을 갖는 단위로 구별됩니다. 
하나 또는 몇 개의 논리적인 기능을 수행하기 위한 명령어들의 집합이라고도 할 수 있습니다. 
서로 모여 하나의 완전한 프로그램으로 만들어질 수 있다.
  1. 통합 프로그램: 여러 개의 프로그램을 하나로 묶어서 하나의 프로그램으로 동작하도록 만든 프로그램이다.
  2. 저장소(Storage): 데이터나 파일 등을 보관한다.
  3. 모듈(Module): 소프트웨어의 일부분으로서 독립적인 기능을 수행하는 프로그램의 논리적인 단위이다.
  4. 데이터(Data): 컴퓨터에서 처리할 수 있는 정보의 단위로, 숫자, 문자, 논리값 등 다양한 형태이다.

 

💡 25. 테스트 드라이버(Test Driver)에 대한 설명으로 틀린 것은?

  1. 시험대상 모듈을 호출하는 간이 소프트웨어이다.
  2. 필요에 따라 매개 변수를 전달하고 모듈을 수행한 후의 결과를 보여줄 수 있다.
  3. 상향식 통합 테스트에서 사용된다.
  4. 테스트 대상 모듈이 호출하는 하위 모듈의 역할을 한다.

 

테스트 스텁(Test Stub)

  • 테스트 대상 모듈의 하위 모듈로, 다른 모듈과 상호작용하는 경우에 대체되어 사용한다.
  • 상호작용이 일어날 때 예상되는 결과를 확인한다.
  • 테스트 대상 모듈의 오류를 발견하고 수정한다.

 

💡 26. 다음 중 선형 구조로만 묶인 것은?

  1. 스택(Stack), 트리(Tree)
  2. 큐(Queue), 데크(Deque)
  3. 큐(Queue), 그래프(Graph)
  4. 리스트(List), 그래프(Graph)

 

  • 선형 구조(Linear Structure): 데이터를 일렬로 나열한 구조로, 데이터의 삽입, 삭제, 검색 등이 순차적으로 이루어진다. (배열, 연결 리스트, 스택, 큐)
  • 비선형 구조(Non-Linear Structure): 계층이나 망구조 등이 있는 데이터 구조로, 데이터의 관계가 선형이 아닌 경우에 사용한다. (트리, 그래프)
  • 파일 구조: 데이터를 저장하기 위한 논리적인 구조로, 시스템에서 데이터를 읽고 쓰기 위한 방법을 제공한다. (순차 파일, 색인 파일, 직접 파일)

 

💡 27. 다음은 스택스택(Stack)의 자료 삭제 알고리즘이다. 빈칸에 들어갈 내용으로 옳은 것은? (단, Top: 스택포인터, S: 스택의 이름)

If Top = 0 Then
    Underflow
Else {
    Remove S(Top)
    Top = Top – 1
}
  1. 오버플로우(Overflow): 데이터가 더 이상 저장할 수 있는 공간이 없을 때 발생한다.
  2. Top = Top + 1
  3. 언더플로우(Underflow): 표현 가능한 가장 작은 값보다 더 작은 값이 저장할 때 발생한다.
  4. Top = Top

 

// 스택이 비어있을 경우
if (Top == 0) {
    // 스택 언더플로우(Underflow) 오류 발생
    Underflow;
} else {
    // 스택에서 탑(top)에 있는 요소 제거
    Remove S(Top);
    // 스택 포인터 감소
    Top = Top – 1;
}

 

💡 28. 제품 소프트웨어의 사용자 매뉴얼 작성절차로 (가)~(다)와 [보기]의 기호를 바르게 연결한 것은?

  1. (가) 사용자 매뉴얼 검토, (나) 구성 요소 별 내용 작성, (다) 사용자 매뉴얼 구성 요소 정의
  2. (가) 사용자 매뉴얼 구성 요소 정의, (나) 구성 요소 별 내용 작성, (다) 사용자 매뉴얼 검토
  3. (가) 사용자 매뉴얼 검토, (나) 사용자 매뉴얼 구성 요소 정의, (다) 구성 요소 별 내용 작성
  4. (가) 사용자 매뉴얼 구성 요소 정의, (나) 사용자 매뉴얼 검토, (다) 구성 요소 별 내용 작성

 

 

💡 29. 순서가 A, B, C, D로 정해진 입력 자료를 스택에 입력한 후 출력한 결과로 불가능한 것은?

  1. D C B A
  2. B C D A
  3. C B A D
  4. D B C A

 

D C B A

push(A)
push(B)
push(C)
push(D)
pop: D
pop: C
pop: B
pop: A
B C D A

push(A)
push(B)
pop: B
push(C)
pop: C
push(D)
pop: D
pop: A
C B A D

push(A)
push(B)
push(C)
pop: C
pop: B
pop: A
push(D)
pop: D

 

💡 30. 소프트웨어 테스트에서 검증(Verification)확인 (Validation)에 대한 설명으로 틀린 것은?

  1. 소프트웨어 테스트에서 검증과 확인을 구별하면 찾고자 하는 결함 유형을 명확하게 하는 데 도움이 된다.
  2. 검증은 소프트웨어 개발 과정을 테스트하는 것이고, 확인은 소프트웨어 결과를 테스트하는 것이다.
  3. 검증은 작업 제품이 요구 명세의 기능, 비기능 요구사항을 얼마나 잘 준수하는지 측정하는 작업이다.
  4. 검증은 작업 제품이 사용자의 요구에 적합한지 측정하며, 확인은 작업 제품이 개발자의 기대를 충족시키는지를 측정한다.

 

  • 검증(Verification): 소프트웨어가 요구사항 명세서를 충족시키는지 개발자의 관점에서 확인하는 활동 한다.
  • 확인(Validation): 소프트웨어가 고객의 요구사항에 부합하고 사용자의 목적을 달성하는지 사용자의 관점에서 확인한다.

 

💡 31. 개별 모듈을 시험하는 것으로 모듈이 정확하게 구현되었는지, 예정한 기능이 제대로 수행되는지를 점검하는 것이 주요 목적인 테스트는?

  1. 통합 테스트(Integration Test): 시스템의 다른 구성요소들이 함께 작동하는지 검증한다.
  2. 단위 테스트(Unit Test): 각각의 코드 유닛이 의도한 대로 작동하는지 검증한다.
  3. 시스템 테스트(System Test): 전체 시스템이 예상대로 작동하는지 검증한다.
  4. 인수 테스트(Acceptance Test): 고객이나 사용자가 제품의 요구사항을 충족시키는지 검증한다.

 

💡 32. 형상 관리의 개념과 절차에 대한 설명으로 틀린 것은?

  1. 형상 식별: 형상 관리 계획을 근거로 형상관리의 대상이 무엇인지 식별하는 과정이다.
  2. 형상 관리: 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
  3. 형상 통제 과정: 형상 목록의 변경 요구를 즉시 수용 및 반영해야 한다.
  4. 형상 감사: 형상 관리 계획대로 형상관리가 진행되고 있는지, 형상 항목의 변경이 요구 사항에 맞도록 제대로 이뤄졌는지 등을 살펴보는 활동이다.

 

💡 33. 소스코드 정적 분석(Static Analysis)에 대한 설명으로 틀린 것은?

  1. 소스 코드를 실행시키지 않고 분석한다.
  2. 코드에 있는 오류나 잠재적인 오류를 찾아내기 위한 활동이다.
  3. 하드웨어적인 방법으로만 코드 분석이 가능하다.
  4. 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있다.

 

💡 34. 소프트웨어 개발 활동을 수행함에 있어서 시스템이 고장(Failure)을 일으키게 하며, 오류(Error)가 있는 경우 발생하는 것은?

  1. 결함(Fault): 소프트웨어에서 발생하는 오류나 결점이다.
  2. 테스트 케이스(Test Case): 소프트웨어의 기능을 검증하기 위한 입력값, 실행 조건, 예상 결과 등을 명세화한 테스트 항목이다.
  3. 실수(Mistake): 인간의 실수로 인해 발생하는 소프트웨어 결함이다.
  4. 인스펙션(Inspection): 소프트웨어 개발에서 결함을 방지하기 위해 문서나 코드를 검사하는 기법이다.

 

💡 35. 코드의 간결성을 유지하기 위해 사용되는 지침으로 틀린 것은?

  1. 공백을 이용하여 실행문 그룹과 주석을 명확히 구분한다.
  2. 복잡한 논리식과 산술식은 괄호와 들여 쓰기(Indentation)를 통해 명확히 표현한다.
  3. 빈 줄을 사용하여 선언부와 구현부를 구별한다.
  4. 한 줄에 최대한 많은 문장을 코딩한다.

 

💡 36. 소프트웨어 품질 목표 중 하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 시스템 능력을 의미하는 것은?

  1. 이식성(Portability): 소프트웨어가 다른 플랫폼 또는 운영 체제에서도 동일하게 작동할 수 있는 능력이다.
  2. 효율성(Efficiency): 소프트웨어가 시간과 자원의 효율적인 사용을 통해 고성능을 발휘할 수 있는 능력이다.
  3. 사용 용이성(Usability): 소프트웨어가 사용자에게 직관적이고 쉽고 편리하게 구성되어 있는 능력이다.
  4. 정확성(Correctness): 소프트웨어가 사용자 요구 사항과 명세에 부합하는지 검증된 결과를 내는 능력이다.

 

💡 37. 다음 중 최악의 경우 검색 효율이 가장 나쁜 트리 구조는?

  1. 이진 탐색 트리: 최악의 경우 시간 효율은 O(n)으로, 모든 노드가 한쪽으로 치우친 트리 구조일 때 발생한다.
  2. AVL 트리: 최악의 경우 시간 효율은 O(log n)으로, 트리의 균형을 유지하지 못할 때 발생한다.
  3. 2-3 트리: 최악의 경우 시간 효율은 O(log n)으로, 트리의 균형을 유지하지 못할 때 발생한다.
  4. 레드-블랙 트리: 최악의 경우 시간 효율은 O(log n)으로, 트리의 균형을 유지하지 못할 때 발생한다.

 

💡 38. 다음 트리에 대한 중위 순회(Inorder Traversal) 운행 결과는?

  1. A B D C E F
  2. A B C D E F
  3. D B E C F A
  4. D B A E C F

 

중위 순회(Inorder Traversal)

  • 왼쪽 자식 노드, 부모 노드, 오른쪽 자식 노드 순으로 노드를 방문한다.
  • 이진 탐색 트리에서 데이터를 검색할 때 사용한다.
  • 재귀나 스택 등을 이용하여 구현한다.

 

💡 39. 테스트 케이스 자동 생성 도구(Test Case Generation Tool)를 이용하여 테스트 데이터를 찾아내는 방법이 아닌 것은?

  1. 스터브(Stub)와 드라이버(Driver) 
  2. 입력 도메인 분석
  3. 랜덤(Random) 테스트
  4. 자료 흐름도

 

💡 40. 저작권 관리 구성 요소 중 패키저(Packager)의 주요 역할로 옳은 것은?

  1. 콘텐츠를 제공하는 저작권자를 의미한다.
  2. 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는다.
  3. 라이선스를 발급하고 관리한다. 
  4. 배포된 콘텐츠의 이용 권한을 통제한다. 
반응형