[정보처리기사 필기] 기출문제 - 801~ 850. 오답노트

804. 요구사항 정형 및 비정형 명세 기법 요약

  • 요구사항 정형 명세 기법
    • 수학적 기반, 모델링 기반
    • 종류 : Z, VDM, Petri-Net (모형 기반), CSP, CCS, LOTOS (대수적 방법)
    • 장점 : 시스템 요구 특성 정확, 명세 간결, 명세 / 구현의 얼치성
    • 단점 : 낮은 이해도, 이해 관계자의 부담 가중
  • 요구사항 비정형 명세 기법
    • 상태 / 기능 / 객체 중심 명세 기법
    • 종류 : FSM (Finite State Machine), Decision Table, ER 모델링, State Chart (SADT), UseCase-사용자 기반 모델링
    • 장점 : 명세작성 이해 용이, 의사전달 방법 다양성
    • 단점 : 불충분한 명세 기능, 모호성

805. 요구사항 도출 기법

  • 사용자 스토리
    • 애자일 방법에서 요구 취합을 위하여 많이 사용하는 방법
    • 사용자가 개발팀과 함께 만들고 시스템에 바라는 역량을 간단히 기술한 문서
  • 인터뷰
    • 고객, 사용자, 도메인 전문가로부터 요구 정보를 효과적으로 수집
    • 많은 정보 획득을 위한 계획이 중요, 가능하면 많은 관련자들과 인터뷰, 관련자 외 사람들과도 인터뷰 고려
  • 브레인스토밍 회의
    • 여러 명으로부터 정보를 얻는 효과적 방법
    • 인터뷰와 같이 수행하면 더 많은 정보 추출이 가능
    • 훈련된 요원의 주재로 과정을 정돈하는 것이 성공의 키 포인트
    • JAD (Joint Application Development) : 사용자와 개발자가 공동 참여하여 프로토 타입 기반의 작업을 수행함으로써 비즈니스 요구사항을 명확히 도출하고 그에 따라 시스템 설계 및 개발
  • 프로토타이핑
    • 최종 시스템의 예상 기능 중 일부를 빠르게 구현한 프로그램으로 소프트웨어 엔지니어의 아이디어에 대한 피드백을 조기에 받아서 요구사항을 취합하는 것
    • 주로 사용자 인터페이스를 종이에 그린 프로토타입이나 프로토타이핑 전용 언어로 모의 사용자 인터페이스를 만들어 사용

807. Rumbaugh 방법

  • 가장 일반적으로 사용되는 방법
  • 모든 소프트웨어 구성 요소를 그래픽 표기법을 활용하여 모델링하는 기법
  • 분석 활동 분류
    • 객체 모델링 (Object Modeling) 
      • 정보 모델링
      • 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계 규정
      • 실세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화 중심으로 규명
      • 클래스의 속성과 연산을 함께 표현함으로써 시스템의 정적 구조 생성
    • 동적 모델링 (Dynamic Modeling) 
      • 상태 다이어그램을 사용하여 시스템의 행위를 기술하는 모델링
    • 기능 모델링 (Function Modeling) 
      • 자료 흐름도 (DFD) 이용
      • 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
      • 어떤 데이터를 입력하면 어떤 결과를 구할 것인지를 표현

809. HIPO

  • 하향식 개발을 위한 시스템 분석 및 설계 문서화 도구
  • 시스템 분석용 디자인 도구 및 문서화 기법
  • 시스템을 표현하는 모듈들을 계층적으로 나타내고 각 모듈들을 문서화하기 위해 사용
  • 기호, 도표 등을 사용하므로 보기 쉽고 이해하기 쉬우며, 변경, 유지보수가 용이
  • 기능과 자료의 의존관계를 동시에 표현할 수 있음
  • Input-Process-Output으로 이루어진 모듈을 계층적으로 나타낸 도표
  • HIPO의 구성
    • 가시적 도표 (Visual Table of Contents) : 시스템의 전체적인 기능과 흐름을 보여주는 Tree 형태의 도표
    • 총체적 도표 (Overview Diagram) : 프로그램을 구성하는 기능을 기술한 것, 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표
    • 세부적 도표 (Detail Diagram) : 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표

813. 유즈케이스의 관계

  • 연관 관계 (Association)
    • usecase와 actor 간의 상호 작용이 있음을 표현
  • 포함 관계 (Include)
    • 두 개 이상의 유스케이스에 공통적으로 적용되는 기능을 별도로 분리하여 새로운 유스케이스로 만든 경우 적용
    • 포함되는 usecase는 포함하는 usecase를 실행하기 위해 반드시 실행되어야 하는 유스케이스
  • 퐉장 관계 (Extend)
    • 확장 기능 usecase와 확장 대상 usecase 사이에 형성되는 관계
    • 확장 대상 usecase를 수행할 때 특정 조건에 따라 확장 기능 usecase를 수행하는 경우에 적용
  • 일반화 관계 (Generalization)
    • 유사한 액터나 유스케이스를 하나의 그룹으로 묶고 싶을 때 그보다 일반적인 액터나 유스케이스를 만들어 이들을 연결하여 표현하는 관계

816. Rumbaugh 방법

  • 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법
  • 럼바우 방법의 순서 : 객체 모델링 → 동적 모델링 → 기능 모델링
    • 객체 모델링 (Object Modeling)
      • 객체 다이어그램 이용
      • 정보 모델링
      • 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계 규정
      • 실세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화 중심으로 규명
      • 클래스의 속성과 연산을 함께 표현함으로써 시스템의 정적 구조를 생성
    • 동적 모델링 (Dynamic Modeling)
      • 상태 다이어그램 이용
      • 시간의 흐름에 따른 객체들 사이의 제어 흐름, 상호작용, 동작 순서 등의 동적인 행위 표현
    • 기능 모델링 (Functional Modeling)
      • 자료 흐름도 (DFD)를 이용
      • 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정 표현
      • 어떤 데이터를 입력하면 어떤 결과를 구할 것인지 표현

821. 경계값 분석 (Boundary Value Analysis)

경계에 해당하는 값은 +1, -1 범위의 값들
  • 대표적인 명세 기반 기법 중 하나
  • 등가 분할의 경계 부분에 해당되는 입력값에서 결함이 발견될 확률이 경험적으로 높기 때문에 결함을 방지하기 위해 경계값까지 포함하여 테스트하는 기법
  • 경계값 분석 기법의 특징
    • 경계값을 고려하여 테스트 케이스를 설계
    • 경계값 분석은 등가 분할과 마찬가지로 모든 테스트 레벨, 테스트 형태, 테스트 분류에 적용 가능
    • 결함 발견율이 높고 적용하기 쉬운 장점이 있어 가장 많이 사용되는 테스트 기법 중 하나
    • 경계값을 명시한 자세한 명세서가 지원 될 경우 적용하기가 수월
  • 경계값 분석의 종류
    • 만약 x1, x2 두 값이 다음 범위 안에서 존재 시
      • Boundary Value Analysis : a ≤ x, ≤ b / c ≤ x, ≤ d
        • Test case가 경계선에서의 min, min+, normal, max-, max value로 산출, 이때 test case의 개수는 4n+1개
      • Robustness Testing
        • Boundary Value Analysis에서 약간만 확장된 개념으로 max+ 값만 더 추가됨
        • max + 값 을 테스트 함으로써, 예외사항들을 다룰 수 있게 되며, 보통 경계값 분석을 한다고 하면 이러한 Robustness Testing 기법을 사용
      • Worst-Case Testing
        • 전기 회로 분석에서 하나 이상의 값이 extreme value일 경우 worst-case analysis이라 함
        • Worst-case Testing에서 각각의 value는 min, min+, normal, max-, max 이렇게 5개의 요소가 세트로 이루어짐
      • Robust Worst-case Tasting
        • 편집증에 가까운 Testing을 필요로 하는 경우 사용
        • 7가지 요소가 세트로 이루어짐
    • 만약 X가 아래와 같은 경우 : a ≤ x ≤ b  
      • Random Testing
        • a와 b 값 사이에 Random value를 발생시키기 위해서 수식 사용 : x = int(b-a+1) + rand( ) + a
  • 경계값 분석의 한계점
    • 일련의 동작에 대한 조합을 테스트하기에는 적합하지 않음
    • 입력 범위를 등기 분할하여 제한하더라도 입력값 조합의 수가 테스트 가능한 수를 넘어서는 경우가 없음
    • 입력 조합이 상호간에 독립적 (의존성이 없는)이라는 가정에서만 적합한 기법
    • 출력이 ㄹ력 조건이나 변수를 사이의 관계에 따라 달라지는 경우, 입력 조건을 등가분할 하는 것이 매우 어려움

822. 선택 정렬

  • selection sort 정렬
  • 루프를 돌면서 최소값을 왼쪽으로 보내는 정렬 방식
  • 정렬되지 않은 값 중 가장 작은 값을 선택 후 정렬되지 않은 첫 번째 요소와 바꾸는 방법
  • 문제 풀이
    • 초기 상태 : 4, 2, 5, 9, 8
    • pass 1 : 2, 4, 5, 9, 8
    • pass 2 : 2, 4, 5, 8, 9 (2, 4, 5는 오름차순으로 정렬된 상태이므로 9, 8에서 최소 값을 선택 후 첫 번째 요소와 변경)

823. 이진트리 운행법

  • Preorder : Root -> Left -> Right : F, B, A, D, C, E, G, I, H
  • Inorder : Left -> Root -> Right : A, B, C, D, E, F, G, H, I
  • Postorder : Left -> Right -> Root : A, C, E, D, B, H, I, G, F

826. 화이트박스 테스트

  • 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
  • 설계적 절차에 초점을 둔 구조적 테스트
  • 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계, 테스트 과정 초기에 적용
  • 모듈 안의 작동을 직접 관찰
  • 원시 코드의 모든 문장을 한 번 이상 실행함으로써 수행
  • 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어
  • 화이트 박스 테스트의 종류 : 기초 경로 검사, 제어 구조 검사 (루프 검사, 데이터 효율 검사)

829. 후위 표기법

  • 피연산자 피연산자 연산자 → 피연산자 연산자 피연산자 
  • 2 5 * 6 4 + +    (((2*5)+6)+4) = 20

830. EAI 구축 유형

  • Point-to-Point
    • 가장 기본적인 애플리케이션 통합 방식
    • 애플리케이션을 1:1로 연결 - 중간에 미들웨어를 두지 않음
    • 변경 및 재사용의 어려움
  • Hub & Spoke
    • 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
    • 확장 및 유지 보수가 용이
    • 허브 장애 발생 시 시스템 전체에 영향
  • Message Bus (ESB 방식)
    • 애플리케이션 사이에 미들웨어를 두어 처리하는 방식
    • 확장성이 뛰어나 대용량 처리가 가능
  • Hybrid
    • 그룹 내 - Hub & Spoke와 그룹 간 - Message Bus의 혼합 방식
    • 필요한 경우 한 가지 방식으로 EAI 구현이 가능
    • 데이터 병목 현상을 최소화할 수 있

831. 테스트 오라클

  • 테스트 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동을 말함
  • 테스트 오라클의 유형
    • 참 오라클 : 모든 입력 값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
    • 샘플링 오라클 : 특정한 몇 개의 입력 값에 대해서만 기대하는 결과를 제공해주는 오라클
    • 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클, 특정 입력 값에 대해 올바른 결과 제공, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클
    • 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 수행 전과 후의 결과 값이 동일한지 확인하는 오라클

833. 입출력 자료 구조 유형

  • 선형 구조
    • 배열
      • 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합
      • 정적인 자료 구조
      • 기억 장소의 추가가 어렵고, 데이터 삭제 시 데이터가 저장되어 있던 기억장소는 빈 공간으로 남아 있어 메모리의 낭비가 발생
      • 첨자를 이용하여 데이터에 접근
      • 반복적인 데이터 처리 작업에 적합한 구조
      • 데이터마다 동일한 이름의 변수를 사용하여 처리가 간편
      • 사용한 첨자의 개수에 따라 n차원 배열이라고 부름
    • 선형 리스트 
      • 일정한 순서에 의해 나열된 자료 구조
      • 선형 리스트의 종류
        • 연속 리스트
          • 배열과 같이 연속되는 기억장소에 저장되는 자료 구조
          • 기억 장소를 연속적으로 배정받기 때문에 기억 장소 이용 효율은 밀도가 1로서 가장 좋음
          • 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입, 삭제 시 자료의 이동이 필요
        • 연결 리스트
          • 자료들을 반드시 연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조
          • 노드의 삽입, 삭제 작업이 용이
          • 기억 공간이 연속적으로 놓여 있지 않아도 저장할 수 있음
    • 스택 
      • 리스트의 한 쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조
      • 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출 방식
      • 리스트의 한 쪽에서는 삽입 작업이 이루어지고 다른 한 쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
      • 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출 방식
    • 데크
      • 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료 구조
      • 스택과 큐의 장점만 따서 구성한 것
  • 비선형 구조
    • 트리
    • 그래프

834. 트랜잭션의 상태

  • 동 : 트랜잭션이 실행 중인 상태
  • 실패 : 트랜잭션 실행에 오류가 발생하여 중단된 상태
  • 철회 : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
  • 부분 완료 : 트랜잭션을 모두 성공적으로 실행한 후 commit 연산이 실행되기 직전의 상태
  • 완료 : 트랜잭션을 모두 성공적으로 실행한 후 commit 연산을 실행한 후의 상태

838. 블랙박스 테스트 기법

  • 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작용되는 것을 입증하는 테스트
  • 기능 테스트
  • 프로그램의 구조를 고려하지 않기 대문에 테스트 케이스는 프로그램 또는 모듈의 오구나 명세를 기초로 결정
  • 소프트웨어 인터페이스에서 실시되는 테스트
  • 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해서 사용, 테스트 과정의 후반부에 적용
  • 종류 : 동치 분할 검사, 경계값 분석, 원인 효과 그래프 검사, 오류 예측 검사, 비교 검사 등

842. 권한 허가 GRANT 명령문

  • WITH GRANT OPTION을 이용하여 부여받은 권한을 다른 사용자에게 허가가 가능
GRANT 권한 [컬럼 리스트] ON 객체 TO {사용자 | 역할 | PUBLIC}
[WITH GRANT OPTION];

848. 인덱스

  • 인덱스가 생성되어 있다면 테이블의 일부분을 검색하여 데이터를 빠르게 출력이 가능
  • 인덱스를 사용하지 않을 시 Table Full Scan이 발생하여 데이터가 많은 경우 성능이 저하

849. 카디널리티, 속성

  • 카디널리티 : 튜플, 행의 수
  • 속성 : 속성, 컬럼의 수

850. View 명령문

  • View 를 삭제하는 명령문 : DROP VIEW view_name {RESTRICT | CASCADE}