[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 501 ~ 550 오답정리

508. 클래스 다이어그램

  • 클래스 다이어그램의 개념
    • 객체지향 모델링에서 가장 자주 사용하는 방법
    • 객체의 멤버, 연산(메서드)의 구성과 객체들과의 연관, 의존, 상속 등의 정적인 관계를 나타내는 UML 다이어그램
    • 객체 : 현실세계에서 실재하는 사물
    • 클래스 : 이들 객체를 추상화한 개념
    • 여러 개의 클래스들은 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호작용 표현
  • 클래스 다이어그램의 구성 요소
    • 클래스 명 (Class Name) : 공통의 속성, 연산, 관계, 의미를 가진 객체들의 집합을 정의
    • 속성 (Attribute) : 클래스의 속성, 접근지정자, 데이터타입 등 구조적 특징을 표현
    • 연산 (Operation) : 메서드(method), 클래스에서 정의한 동작을 호출하는 연산자, 접근 지정자, 리턴타입, 파라메터를 표현 

 

509. 마스터-슬레이브 아키텍처

  • 마스터-슬레이브 아키텍처의 개념
  • 아키텍처의 구성 : 마스터, 슬레이브
  • 마스터-일을 분배, 슬레이브-전달된 기능 수행
  • 마스터가 업무 지시, 슬레이브는 그 일을 완료하여 결과물을 전달하는 방식
  • 마스터 컴포넌트는 동등한 구조를 지닌 슬레이브 컴포넌트들로 작업을 분산하고, 슬레이브가 반환한 결과 값으로부터 최종 결과 값을 계산
  • 마스터는 자신의 Work을 1/Slave(n)을 통해 슬레이브에게 분산 처리 요청하여 결과값을 받음
  • 장점 : 정확성 - 서비스의 실행은 각기 다른 구현체를 가진 슬레이브들에게 전파되어 설계된 로직대로 동작
  • 마스터-슬레이브 아키텍처 예시
    • 데이터베이스 복제에서 마스터 데이터베이스는 신뢰할 수 있는 데이터 소스로 간주, 슬레이브 데이터베이스는 마스터베이스와 동기화
    • 컴퓨터 시스템에서 버스와 연결된 주변장치 : 마스터 드라이버와 슬레이브 드라이버

 

514. 애자일 소프트웨어 개발 기법

  • 어느 특정 개발 방법론을 가리키는 말은 아님, 애자일 개발을 가능하게 해주는 다양한 방법론 전체를 일컫는 말
  • 지속적인 요구사항의 분석, 반영을 통해 변화에 신속하게 대응하는 개발방법론
  • 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 등장하게 된 방법론
  • 애자일 방법론의 테스트는 잦은 개발-테스트 주기를 통하여 많은 시간과 비용이 들어가기 전에 기능을 검증하게 됨
  • 애자일 선언문
    • 공정(프로세스)과 도구보다 개인과 상호작용에 더 가치를 둠
    • 포괄적인 문서보다 작동하는 소프트웨어에 더 가치를 둠
    • 계약 협상보다는 고객과의 협업에 더 가치를 둠
    • 계획을 따르기보다는 변화에 대응하는 것에 더 가치를 둠

 

515. Rumbaugh(럼바우) 방법론

  • 가장 일반적으로 사용되는 방법
  • 분석 호라동을 객체모델, 동적 모델, 기능 모델로 나누어 수행하는 방법
  • 모든 소프트웨어 구성 요소를 그래픽 표기법을 활용하여 모델링하는 기법
  • 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법
  • 럼바우 방법론의 순서 : 객체 모델링 -> 동적 모델링 -> 기능 모델링
    • 객체 모델링 (Object Modeling)
      • 객체 다이어그램을 이용
      • 정보 모델링이라고도 함
      • 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 고나계 규정
      • 가장 중요하며 가장 선행되는 단계
    • 동적 모델링 (Dynamic Modeling)
      • 상태도를 이용
      • 시간의 흐름에 따른 객체들 사이의 제어 흐름, 상호작용, 동작 순서 등의 동적인 행위를 표현
    • 기능 모델링 (Functional Modeling)
      • 자료 흐름도 (DFD) 이용
      • 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
      • 어떤 데이터를 입력하면 어떤 결과를 구할 것인지 표현

 

516. 순차 다이어그램

  • 문제 해결을 위한 객체를 정의하고 객체 간 상호작용 메시지를 시간의 흐름으로 나타내는 동적 다이어그램
  • 구성 요소 : 생명성, 활성객체, 메시지, 활성박스
  • 가장 기본적인 메시지 유형
    • 동기 : 요청 후 응답 대기
    • 비동기 : 요청만 표시
    • 자체 : 객체 자신에 요청
    • 반환 : 응답(회신) 메시지

 

520. 소프트웨어 아키텍처

  • 소프트웨어 아키텍처의 개념
    • 소프트웨어 시스템의 구조를 비롯한 시스템 개발에 중요한 영향을 미치는 결정들
    • 소프트웨어 시스템 개발에서 특정 시스템에 대하여 요구되는 기능과 품질을 확보하고 품질속성에 반영
    • 소프트웨어 시스템의 구축 및 지속적인 개선이 용이하도록 하는 역할
  • 소프트웨어 아키텍처의 특징
    • 소프트웨어 아키텍처의 역할
      • 요구사항 분석 활동에 의해 도출된 요구사항을 모두 충족시킬 수 있는 시스템이 만들어지도록 하는 설계 활동
      • 설계 및 구현을 위한 구조적/비구조적틀을 제공
        • 틀 : 아키텍처 설계의 결과물, 실행을 요구하는 결정 또는 모델을 의미
        • 구조적 틀 : 시스템 개발을 위해 결정된 컴포넌트의 구조 모델
        • 비구조적 틀 : 구조모델 이외의 다른 아키텍처 설계의 결정틀
    • 아키텍처 설계의 입력과 출력
      • 시스템 개발은 모든 요구사항을 달성대상으로 하지만 아키텍처 설계는 아키텍처에 관련된 대표적인 요구사항들만이 주된 관심의 대상, 이와 같은 특별한 요구사항들을 아키텍처 드라이버
      • 설계의 결과는 아키텍처를 문서화한 아키텍처 문서가 주된 출력물이 되고 이에 대한 추가적인 관련사항을 정리한 아키텍처 가이드라인이 이차적인 출력물
  • 파이프-필터 구조
    • 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴
    • 각 처리 과정은 필터 컴포넌트에서 이루어지며, 처리되는 데이터는 파이프를 통해 단방향으로 흐름
    • 병렬적으로 데이터처리가 가능, 파이프는 버퍼링 또는 동기화 목적으로 사용될 수 있음
  • 데이터 중심(Data-Centered)
    • 데이터 중심의 개념
      • 데이터 저장공간을 두고 Client가 데이터를 호출하여 사용하는 형태
      • 공유 데이터 저장소를 통해 Client간의 통신이 이루어지므로 각 Client의 수정과 확장이 용이
    • 데이터 개념의 종류
      • 저장소형 (Repository)
        • Repository에 저장되는 데이터를 중심으로 Client들이 데이터를 교환하는 구조
        • Repository : 수동적, Client : 능동적으로 동작
        • Repository의 확장과 데이터의 백업, 복구가 용이
        • 데이터 저장소의 데이터 구조와 Client 간에 의존성이 크고, 따라서 데이터 구조의 변경에 따라 많은 영향을 받으며, 데이터 이동에 따른 네트워크 비용이 발생
        • 일반적인 DBMS에서 사용 
      • 칠판형 (Blackboard)
        • Repository와 비슷한데, 반대로 Data Store는 능동적, Client는 수동적으로 동작
        • 명확히 정의된 해법 전략이 존재하지 않은 도메인에서 문제를 해결하려 할 때 사용
        • 부분적인 해법, 대략적인 해법을 수립하기 위해 특수한 서브시스템의 지식을 조합
        • AI와 같은 복잡한 문제를 해결할 때 사용

 

522. 버블 정렬

  • 왼쪽부터 모든 인접한 두 키를 비교한 후 왼쪽의 키가 더 크면 오른쪽의 키와 자리바꿈을 통하여 정렬해 나가는 방법
  • 문제 풀이 : 9, 6, 7, 3, 5
    • 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, 3, 7, 5, 9 -> 6, 3, 5, 7, 9
    • Pass 3 : 6, 3, 5, 7, 9 -> 3, 6, 5, 7, 9 -> 3, 5, 6, 7, 9

 

527. 스택

  • 스택의 주요 용어
    • TOP : 스택의 가장 상단의 데이터를 가리킴
    • PUSH : 스택에 데이터를 추가, 스택의 Top이 하나 증가
    • PEEK : 스택에서 가장 상단의 데이터를 제거하지 않고 읽어오기만 하는 것, 스택의 Top에는 변화가 없음
    • POP : 가장 상단의 데이터를 읽어오면서 스택에서 제거, 스택의 Top이 하나 감소
  • 문제 풀이
If Top = 0 Then
	Underflow
Else {
	remove S(Top)
    Top = Top - 1
}
If Top = 0 Then 스택 포인트가 0일 경우 스택이 비어 있음을 의미
   Underflow 스택이 비어 있으면 Underflow 발생
Else {
   remove S(Top)
스택이 비어 있지 않다면 스택에서 Top 포인트의 데이터 삭제
   Top = Top - 1
}
Top 포인트의 값을 1 감소

 

528. 사용자 매뉴얼 작성 순서

  • 작성 지침 정의
    • 사용자 매뉴얼을 작성하기 위한 지침을 설정
    • 사용자 매뉴얼은 실제 사용자 환경에 필요한 정보를 제공할 수 있는 형태로 작성될 수 있도록 함
  • 사용자 매뉴얼 구성 요소의 정의
    • 제품 소프트웨어의 기능
    • 구성 객체 목록
    • 객체별 메소드
    • 메소드의 파라미터 및 설명
    • 실제 사용 예제
    • 사용자 환경 셋팅 방법
  • 구성 요소별 내용 작성
    • 제품 소프트웨어 구성 요소별 내용을 작성
  • 사용자 매뉴얼 검토
    • 작성된 사용자 매뉴얼이 개발된 제품의 기능을 정확하게 설명하는지 혹은 잘못된 정보가 없는지 검사
    • 개발자와 함께 검토하면 기능 내용이나 인터페이스, 메소드나 메소드의 파라미터 등을 보다 정확히 반영할 수 있어서 더욱 효과적

 

529. 스택의 입출력 예시

  • 스택의 자료 구조 : Last-in, First-out이 수행되는 후입선출 기반
    • 입력(PUSH) : Last-in
    • 출력(POP) : First-out
  • 문제 풀이
항목 설명
D, C, B, A D D (출력)            
C C C (출력)          
B B B B (출력)        
A A A A A A    
B, C, D, A B B (출력) C C (출력) D D (출력)    
A A A A A A A A (출력)
C, B, A, D C C (출력)            
B B B (출력)          
A A A A A (출력) D D (출력)  
D, B, C, A D D (출력)            
C C C          
B B B (출력)          
A A A          

 

530. 검증, 확인

  • 검증 (Verification)
    • 소프트웨어개발 라이프 사이클의 각 단계의 산출물이 이전 단계에서 설정된 개발규격과 요구들을 충족시키는지의 여부를 판단하기 위한 활동
    • 과정 : the product right?
  • 확인 (Validation)
    • 소프트웨어 개발 라이프사이클의 각 단계의 산출물이 최초 사용자 요구 또는 소프트웨어 요구에 적합한지를 입증하기 위한 활동
    • 과정 : the right product?

 

531. 단위 테스트

  • 단위 테스트의 개념
    • 구현된 단위 모듈의 기능 수행 여부를 판정하고 내부에 존재하는 논리적 오류를 검출하는 활동
  • 단위 테스트 항목
    • 통합 테스트 (통합 검사) : 모듈 간의 인터페이스 연계를 검증하고 오류를 확인, 모듈 간의 상호 작용 및 연계 동작이 제대로 기능하는지를 점검
    • 시스템 테스트 (시스템 검사) : 단위, 통합 테스트 후 전체 시스템이 정상적으로 작동하는지 판정하는 기능을 점검
    • 인수 테스트 (인수 검사) : 사용자 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정하고 시스템이 예상대로 동작하고 있는지 점검
      • 알파 테스트 (알파 검사) : 개발자가 제공하는 환경에서 기능 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 검사하는 기법, 개발자 환경에서 테스트
      • 베타 테스트 (베타 검사) : 다수의 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고 오류가 발견되면 개발자에게 통보하는 방식, 사용자 환경에서 테스트

 

533. 소스코드 분석의 유형

  • 정적 분석 : 작성된 소스 코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 발견 여부를 확인하는 코드 분석 활동
  • 동적 분석 : 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 및 로직의 에러 여부 등을 분석하는 활동

 

537. 이진 탐색 트리

  • 이진 탐색 트리의 시간 복잡도
    • 평균적인 경우 : O(log(N))
    • 최악의 경우 : O(N)
  • 이진 탐색 트리의 특징
    • 시간 복잡도의 최악의 경우에서 이진 탐색 트리를 보면 모양이 마치 연결 리스트와 닮아 있음
    • 트리의 높이 값이 n에 가까워지므로 탐색할 때 성능이 떨어지게 됨
  • 이진 탐색 트리의 성능 저하 문제를 해결하기 위한 방법
    • 자가 균형 이진 탐색 트리 사용 : 2-3 트리, AVL 트리, 레드-블랙 트리

 

538. 트리 순회 방법

  • 전위 순회 방법 (Preorder Traversal) : 중간 노드 -> 왼쪽 노드 -> 오른쪽 노드
  • 중위 순회 방법 (Inorder Traversal) : 왼쪽 노드 -> 중간 노드 -> 오른쪽 노드
  • 후위 순회 방법 (Postorder Traversal) : 왼쪽 노드 -> 오른쪽 노드 -> 중간 노드 

 

539. 테스트케이스 생성

  • 자료 흐름도 : 테스트 경로 관리
  • 입력 도메인 분석 : 테스트 데이터 산출
  • 랜덤 테스트 : 무작위 값 입력, 신뢰성 검사

  • 스터브, 드라이버 : 통합 테스트를 위한 모듈

 

544. 물리적 데이터 베이스 설계

  • 물리적 설계 단계의 개념
    • 논리적 설계로 생성한 논리적 데이터베이스 구조로부터 효율적이고 구현 가능한 물리적 데이터베이스 구조를 설계하는 과정
    • 데이터 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
  • 물리적 설계 단계에서 수행하는 사항
    • 저장 레코드 양식 설계 : 데이터 타입, 데이터 값의 분포, 사용될 응용 어플리케이션, 접근 빈도 등을 고려하여 결정하며 데이터 표현과 압축에 대한 양식 포함
    • 레코드 집중의 분석 및 설계 : 레코드의 집중은 레코드들이 물리적으로 집중되도록 저장 공간을 할당하여 물리적 순차성을 이용할 수 있도록 함
    • 접근 경로 설계 : 물리적 데이터베이스를 접근하는 경로에 대한 설계 수행
  • 성능상의 주요 기준
    • 응답 시간 : 질의와 갱신이 평균적으로 또는 피크 시간 때 얼마나 오래 걸릴 것인가
    • 트랜잭션 처리율 : 1초당 얼마나 많은 트랜잭션들이 평균적으로 또는 피크 시간 때 처리될 수 있는가
    • 스키마의 평가 : 전체 데이터베이스에 대한 보고서를 생성하는데 얼마나 오래 걸릴 것인가

 

545. 개체 무결성

  • 테이블의 모든 행들이 유일하게 식별되는 무결성
  • 대부분의 경우 기본키에 의해 강화하며 엔티티 무결성이라고도 함
  • 기본키의 특성 : 반드시 값을 가짐 (NULL 허용 안함), 유일성을 보장하는 최소한의 집합
  • 제약 조건 : Primary Key, NOT NULL

 

546. HAVING

  • GROUP BY이 반드시 필요한 그룹제한 조건 명령어
    • GROUP BY절은 사용된 애트리뷰트에 동일한 값을 갖는 튜플(행)들이 각각 하나의 그룹으로 묶여서 각 그룹별로 하나의 결과를 생성
    • HAVING 절에 나타나는 애트리뷰트는 반드시 GROUP BY절에 나타나거나 집단 함수에 포함되어야 함 

 

549. 데이터베이스의 키

  • 데이터베이스의 키의 개념
    • 데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플(행)들을 서로 구분할 수 있는 기준이 되는 속성
  • 데이터베이스의 키의 특징
    • 유일성 (Uniqueness)
      • 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
      • 기본 키, 후보 키, 슈퍼 키
    • 최소성 (Minimality)
      • 속성의 집합인  키가 릴레이션의 모든 튜플을 유일하게 식별하기 위해 꼭 필요한 속성들로 구성된 것을 의미
      • 기본 키, 후보 키
  • 데이터베이스의 키의 종류
    • 후보 키 (candidate key)
      • 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별할 수 있는 하나 또는 몇 개의 속성 집합
      • 유일성, 최소성 만족
    • 기본 키 (primary key)
      • 릴레이션의 유일한 식별자 : 유일성, 최소성 만족
      • 기본키로 지정된 속성은 같은 값을 갖지 못함
      • 후보키 중에서 선정된 키로, 중복값을 가질 수 없음
      • Not null, Unique, 외래 키로 참조될 수 있음
    • 대체 키 (alternate key)
      • 후보 키가 둘 이상 되는 경우에 기본 키로 선택되지 못한 후보키들
      • 후보키 = 기본 키 + 대체 키
    • 슈퍼 키 (super key)
      • 유일성만 있고 최소성이 없는 속성의 집합
    • 외래 키 (foreign key)
      • 한 테이블의 키 중 다른 테이블의 튜플을 식별할 수 있는 키