정보처리기사 기출문제 2022년 1회

1과목 소프트웨어 설계

  1. User Interface 설계 시 오류 메시지나 경고에 관한 지침으로 가장 거리가 먼 것은?

   ① 메시지는 이해하기 쉬워야 한다.
② 오류로부터 회복을 위한 구체적인 설명이 제공되어야 한다.
③ 오류로 인해 발생 될 수 있는 부정적인 내용을 적극적으로 사용자들에게 알려야 한다.
  ④ 소리나 색의 사용을 줄이고 텍스트로만 전달하도록 한다.

정답:4번.


  1. 다음 중 애자일(Agile) 소프트웨어 개발에 대한 설명으로 틀린 것은?

   ① 공정과 도구보다 개인과의 상호작용을 더 가치 있게 여긴다.
 ② 동작하는 소프트웨어보다는 포괄적인 문서를 가치 있게 여긴다.
③ 계약 협상보다는 고객과의 협력을 가치 있게 여긴다.
④ 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다.

정답:2번.

설명:애자일 소프트웨어

  • 애자일(Agile) 방법론은 구체적인 개발 프로세스가 아닌 개발 지침, 철학에 가깝다.
  • 변화를 수용하고 협업과 제품의 빠른 인도를 강조하는 반복적 개발 방법
  • 문서화보다 코드, 프로그램, 소프트웨어 자체를 중요시 함
  • 요구사항의 변화는 불가피하며 이에 대응하는 것이 현실적이다.
  • 기존의 개발 프로세스는 설계 기간이 길며 재작업 시 오버헤드가 크다.
  • 환경의 빠른 변화에 대응하는 것이 중요하다.

애자일 선언문(Agile Manifesto)
공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
요구사항이 바뀌기 쉬운 중소형의 비즈니스 시스템이나 전자 상거래 응용에 적합하다.

애자일 방법론의 종류

  • 익스트림 프로그래밍(Extreme Programming, XP)
  • 짝 프로그래밍(Pair Programming)
  • 테스트 주도 개발(Test Driven Development, TDD)
  • 스크럼(Scrum)
  1. 소프트웨어 설계에서 요구사항 분석에 대한 설명으로 틀린 것은?

   ① 소프트웨어가 무엇을 해야하는가를 추적하여 요구사항 명세를 작성하는 작업이다.
② 사용자의 요구를 추출하여 목표를 정하고 어떤 방식으로 해결할 것인지 결정하는 단계이다.
③ 소프트웨어 시스템이 사용되는 동안 발견되는 오류를 정리하는 단계이다.
④ 소프트웨어 개발의 출발점이면서 실질적인 첫 번째 단계이다.

정답:3번.
설명:요구사항 분석(Requirement Analysis)

  • 소프트웨어 개발의 실제적인 첫 단계로 사용자의 요구에 대해 이해하는 단계라 할 수 있다.

  • 도메인(Domain Analysis)은 요구에 대한 정보를 수집하고 배경을 분석하여 이를 토대로 모델링을 한다.

  • 분석결과의 문서화를 통해 향후 유지보수에 유용하게 활용 할 수 있다.

  • 자료흐름도, 자료 사전 등이 효과적으로 이용될수 있다.

  • 보다 구체적인 명세를 위해 소단위 명세서(Mini-Spec)가 활용될 수 있다.

  • 비용과 일정에 대한 제약설정.

  • 타당성 조사.

  • 요구사항 정의 문서화.


  1. 객체지향 기법에서 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는 것을 의미하는 것은?
    ① Abstraction ② Polymorphism
    ③ Encapsulation ④ Inheritance
    정답:4번.
    설명:
    Abstraction(추상화)
  • 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화 시키는 것

    Polymorphism(다형성)

  • 상속 받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질이다.

    Encapsulation(캡슐화)

  • 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러낸다.

  • 객체지향에서 정보 은닉과 가장 밀접한 관계가 있는 것

  • 인터페이스가 단순화 된다.

  • 소프트웨어 재사용이 높아진다.

  • 변경 발생 시 오류의 파급효과가 적다.

  • 데이터와 데이터를 처리하는 함수를 하나로 묶는 것이다.

  • 캡슐화된 객체의 세부 내용이 외부에 은폐되어 변경이 발생하게되 오류의 파급 효과가 적다.

  • 인터페이스가 단순해지고 객체 간의 결합도가 낮아진다.

  • 캡슐화된 객체들은 재사용이 용이해진다.

Inheritance(상속)

  • 상위클래스에서 속성이나 연산을 전달받아 새로운 형태의 클래스로 확장하여 사용하는 것을 의미한다.

  • 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것을 의미한다.


  1. 설계 기법 중 하향식 설계 방법과 상향식 설계 방법에 대한 비교 설명으로 가장 옳지 않은 것은?

   ① 하향식 설계에서는 통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단하다.
② 하향식 설계에서 레벨이 낮은 데이터 구조의 세부 사항은 설계초기 단계에서 필요하다.
③ 상향식 설계는 최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사한다.
  ④ 상향식 설계에서는 인터페이스가 이미 성립되어 있지 않더라도 기능 추가가 쉽니다.
정답:4번.
설명:하향식 설계
하향식 통합 테스트(Top Down Integration Test)

  • 깊이 우선 방식 또는 너비 우선 방식이 있다.
  • 상위 컴포넌트를 테스트 하고 점증적으로 하위 컴포넌트를 테스트한다.
  • 하위 컴포넌트 개발이 완료되지 않은 경우 스텁(Stub)을 사용하기도 한다.
  • 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
  • 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음
  • 상위 모듈에서는 테스트 케이스 사용하기 어려움
  • 주요 제어 모듈은 작성된 프로그램을 사용
    → 주요 제어 모듈의 종속 모듈은 스텁(Stub)으로 대체
    → 깊이 또는 너비 우선 방식에 따라 하위 모듈인 스텁(Stub)들이 한 번에 하나씩 실제 모듈로 교체됨
    → 모듈이 통합될 때마다 테스트 실시
    → 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트 실시

*스텁(Stub)
-하향식 통합 테스트를 위해 일시적으로 필요한 조건만을 가지고 제공되는 시험용 임시 모듈

상향식 설계
상향식 통합 테스트(Bottom Up Integration Test)

  • 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
  • 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster) 필요
  • 상위 모듈 개발이 완료되지 않은 경우 드라이버(Driver)를 사용하기도 한다.
  • 하위 모듈들을 클러스터(Cluster)로 결합
    → 더미 모듈인 드라이버(Driver) 작성
    → 통합된 클러스터 단위로 테스트
    → 테스트 완료 후 클러스터는 프로그램 구조의 상위로 이동해 결합하고 드라이버는 실제 모듈로 대체됨

*모듈(modul)
-시스템의 기본단위로 실행코드, 자료구조 및 다른 모듈들과의 인터페이스로 구성.

=하향식, 상향식 설계 모두가 모듈을 사용하여 설계하는 기법이기 때문에 4번은 성립이 되지않는다.


  1. 자료흐름도(DFD)의 각 요소별 표기 형태의 연결이 옳지 않은 것은?
    ① Process : 원 ② Data Flow : 화살표
    ③ Data Store : 삼각형 ④ Terminator : 사각형 정답: 3번.
    설명:
    프로세스(Process)-원
    자료 흐름(data flow)- 화살표
    자료 저장소(data store)-평행선
    단말(terminator)-사각형
  2. 소프트웨어 개발에 이용되는 모델(Model)에 대한 설명 중 거리가 먼 것은?
    ① 모델은 개발 대상을 추상화하고 기호나 그림 등으로 시각적으로 표현한다.
    ② 모델을 통해 소프트웨어에 대한 이해도를 향상시킬 수 있다.
    ③ 모델을 통해 이해 당사자 간의 의사소통이 향상된다.
     ④ 모델을 통해 향후 개발될 시스템의 유추는 불가능하다. 정답:4번.
    설명: 프로토타입 모형(Prototype Model, 원형 모형)
  • 견본(시제)품을 만들어 최종 결과물을 예측하는 모형


  1. 다음의 설명에 해당하는 언어는?

   ① JAVA ② C
  ③ UML ④ Python

정답:3번.
설명: UML(Unified Modeling Language)
-가시화/구축/명세화/문서화 언어

UML의 구성
-사물(Things), 관계(Relationship), 다이어그램(Diagram)


  1. 다음 내용이 설명하는 UI설계 도구는?

   ① 스토리보드(Storyboard) ② 목업(Mockup)
③ 프로토타입(Prototype) ④ 유스케이스(Usecase)

정답:2번.
설명:

와이어 프레임(wire frame)

  • 개략적인 UI요소에 뼈대를 설계
  • 레이아웃 협의 및 진행상황 공유시 사용
  • 손그림, 파워포인트, 키노트, 스케치 등

목업(mockup)

  • 와이어 프레임보다 좀 더 실제적인 화면과 더 유사한 정적인 화면
  • 파워 목업, 발사믹 목업

스토리보드(storyboard)

  • 와이어 프레임에 콘텐츠 설명 및 이동 흐름을 추가한 문서
  • 최종적으로 참고하는 작업 지침서
  • 서비스 구축을 위한 모든 정보가 들어가 있다.
  • 파워포인트, 키노트, 스케치, Axure 등

프로토 타입(prototype)

  • 인터렉션을 적용하여 테스트가 가능한 동적인 형태
  • HTML/CSS. Axure, Flinto, 네이버 프로토나우 등

유스 케이스(usecase)

  • 사용자가 원하는 목표를 달성하기 위해 수행할 내용 기술
  • 자연어로 작성, 요구사항 구조적, 다이어그램 형식
  • 다이어그램 완성시 명세서 작성
  1. 애자일(Agile) 기법 중 스크럼(Scrum)과 관련된 용어에 대한 설명이 틀린 것은?
    ① 스크럼 마스터(Scrum Master)는 스크럼 프로세스를 따르고, 팀이 스크럼을 효과적으로 활용할 수 있도록 보장하는 역할 등을 맡는다.
    ② 제품 백로그(Product Backlog)는 스크럼 팀이 해결해야 하는 목록으로 소프트웨어 요구사항, 아키텍처 정의 등이 포함될 수 있다.
      ③ 스프린트(Sprint)는 하나의 완성된 최종 결과물을 만들기 위한 주기로 3달 이상의 장기간으로 결정된다.
    ④ 속도(Velocity)는 한 번의 스프린트에서 한 팀이 어느 정도의 제품 백로그를 감당할 수 있는지에 대한 추정치로 볼 수 있다.

정답:3번.
설명:스프린트(sprint)-계획,개발,리뷰 작업 등 최소 단위의 cycle이다. 보통 1~4주 단위에서 선택.
애자일스크럼


  1. UML 다이어그램 중 정적 다이어그램이 아닌 것은?
    ① 컴포넌트 다이어그램 ② 배치 다이어그램
    ③ 순차 다이어그램 -> 시퀀스 다이어그램 ④ 패키지 다이어그램 정답: 3번.
    설명: 정적 다이어그램(Structural Diagram) => 구조적 (Structural)
    ● 클래스 다이어그램(Class Diagram)
  • 시스템 내 클래스의 정적 구조를 표현하고 클래스와 클래스, 클래스의 속성 사이의 관계를 나타낸다.
    ● 객체 다이어그램(Object Diagram)
    ● 컴포넌트 다이어그램(Component Diagram)
    ● 배치 다이어그램(Deployment Diagram)
    ● 복합체 구조 다이어그램(Composite Structure Diagram)
    ● 패키지 다이어그램(Package Diagram)

동적 다이어그램(Behavioral Diagram) => 행위 (Behavioral)
● 유스케이스 다이어그램(Use Case Diagram)

  • 사용자의 요구를 추출하고 분석하기 위해 주로 사용한다.
  • 연동의 개념은 양방향으로 데이터를 파일이나 정해진 형식으로 넘겨주는 것이다
  • 액터는 대상 시스템과 상호 작용하는 사람이나 다른 시스템에 의한 역할이다.
  • 시스템 액터는 본 시스템과 데이터를 주고받는 연동 시스템을 의미한다.
  • 사용자 액터는 기능을 요구하는 대상이나 시스템의 수행결과를 통보받는 사용자 혹은 기능을 사용하게 될
    대상으로 시스템이 제공해야하는 기능인 유스케이스의 권한을 가지는 대상, 역할이다.
    *유스케이스 구성요소와의 관계
  • 연관 : 유스케이스와 액터의 관계
  • 확장 : 기본 유스케이스 수행 시 특별한 조건을 만족할 때 수행하는 유스케이스
  • 포함 : 시스템의 기능이 별도의 기능을 포함
  • 일반화 : 하위 유스케이스(액션)이 상위 유스케이스(액터)에게 기능/역할을 상속받음
  • 그룹화 : 여러개의 유스케이스를 단순화하는 방법

● 시퀀스(순차) 다이어그램(Sequence Diagram)

  • 객체들의 상호 작용을 나타내기 위해 사용한다.
  • 시간의 흐름에 따라 객체들이 주고 받는 메시지의 전달 과정을 강조한다.
  • 교류 다이어그램(Interaction Diagram)의 한 종류로 볼 수 있다.
  • 정적 다이어그램보다 동적 다이어그램에 가깝다.
    *순차 다이어그램의 구성 항목 # 액객생메실
  • 액터(Actor) : 시스템으로부터 서비스를 요청하는 외부요소로, 사람이나 외부 시스템 의미
  • 객체(object) : 메시지를 주고받는 주체
  • 생명선(Life line) : 객체가 메모리에 존재하는 기간으로, 객체 아래쪽에 점선을 그어 표현
  • 메시지(Message) : 객체가 상호 작용을 위해 주고받는 메시지
  • 실행 상자(Active Box) : 객체가 메시지를 주고받으며 구동되고 있음을 표현
  • 확장

● 액티비티(활동) 다이어그램 (Activity Diagram)

  • 시스템이 어떤 기능을 수행하는지 객체의 처리로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현한다.
    ● 상태 다이어그램(State Diagram)
    - 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태 변화를 표현한다.
    ● 상호작용 개요 다이어그램(Interaction Overview Diagram)
    ● 커뮤니케이션 다이어그램(Communication Diagram)
    ● 타이밍 다이어그램(Timing Diagram)

  1. LOC기법에 의하여 예측된 총 라인수가 36000라인, 개발에 참여할 프로그래머가 6명, 프로그래머들의 평균 생산성이 월간 300라인일 때 개발에 소요되는 기간을 계산한 결과로 가장 옳은 것은?

    ① 5개월 ② 10개월  ③ 15개월 ④ 20개월

정답:4번.
설명:노력(M/M)= 원시 라인 수(총 라인 수) / 1인당 월 평균 생산 코드 라인 수 (평균 생산성)
M/M = 36000 / 300
M/M = 120

개발기간= M/M / 참여 인원
개발기간= 120 / 6

개발기간=20개월


  1. 클래스 설계원칙에 대한 바른 설명은?

① 단일 책임원칙 : 하나의 클래스만 변경 가능 해야한다.
② 개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
③ 리스코프 교체의 원칙 : 여러 개의 책임을 가진 클래스는 하나의 책임을 가진 클래스로 대체되어야 한다.
④ 의존관계 역전의 원칙 : 클라이언트는 자신이 사용하는 메소드와 의존관계를 갖지 않도록 해야 한다.

정답:2번.
설명:객체지향 설계 원칙 #SOLID

● SRP, 단일 책임 원칙(Single Responsibility Principle)

  • 객체는 단 하나의 책임만 가져야 한다.

● OCP, 개방-폐쇄 원칙(Open-Closed Principle)

  • 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다.
  • 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.

● LSP, 리스코프 치환 원칙(Liskov Substitution Principle)

  • 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 한다.

● ISP, 인터페이스 분리 원칙(Interface Segregation Principle)

  • 클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다.
  • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.

● DIP, 의존 역전 원칙(Dependency Inversion Principle)

  • 의존 관계를 맺을 때, 변화하기 쉬운 것보다 변화하기 어려운 것에 의존해야 한다.


  1. GoF(Gangs of Four) 디자인 패턴에서 생성(Creational) 패턴에 해당하는 것은?

    ① 컴퍼지트(Composite)     ② 어댑터(Adapter)
 ③ 추상 팩토리(Abstract Factory)    ④ 옵서버(Observer)

정답:3번.
설명:
생성 패턴(Creational Pattern) #추빌팩프싱
● 추상 팩토리 패턴(Abstract Factory)

  • 서로 연관, 의존하는 객체들을 그룹으로 생성해 추상적으로 표현한다.

● 빌더 패턴(Builder)

  • 작게 분리된 인스턴스를 건축하듯이 조합하여 객체를 생성한다

● 팩토리 메소드 패턴(Factory Method)
= Virtual-Constructor 패턴 (가상 생성자)

  • 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성한다.
  • 객체를 생성하기 위한 인터페이스를 정의하여, 어떤 클래스가 인스턴스화 될 건지는 서브클래스가 결정한다.

● 프로토타입 패턴(Prototype)

  • prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다.

● 싱글톤 패턴(Singleton)

  • 특정 클래스의 인스턴스가 오직 하나임을 보장하고, 이 인스턴스에 대한 접근 방법을 제공한다.

구조 패턴(Structural Pattern) # 어브컴데퍼플프

● 어댑터 패턴(Adapter)

  • 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰준다.

● 브리지 패턴(Bridge)

  • 구현부에서 추상층을 분리하여, 독립적으로 확장이 가능하게 하는 패턴
  • 기능과 구현을 두 개의 별도 클래스로 구현함

● 컴포지트 패턴(Composite)

  • 여러 객체를 가진 복합, 단일 객체를 구분 없이 다룰 때 사용하는 패턴

● 데코레이터 패턴(Decorator)

  • 상속을 사용하지 않고도 객체의 기능을 동적으로 확장해주는 패턴

● 퍼싸드 패턴(Façade)

  • 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴; ex) 리모컨

● 플라이웨이트 패턴(Flyweight)

  • 공유해서 사용함으로써 메모리를 절약하는 패턴

● 프록시 패턴(Proxy)

  • 접근이 어려운 객체를 연결해주는 인터페이스 역할을 수행하는 패턴

행위 패턴(Behavioral Pattern) : 행위의 변경, 수정 등을 위한 패턴

  • 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의한다.

● 책임 연쇄 패턴(Chain of Responsibility)

  • 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴

● 커맨드 패턴(Command)

  • 요청에 사용되는 각종 명령어들을 추상, 구체 클래스로 분리하여 단순화함

● 인터프리터 패턴(Interpreter)

  • 언어에 문법 표현을 정의하는 패턴

● 반복자 패턴(Iterator)

  • 동일한 인터페이스를 사용하도록 하는 패턴

● 중재자 패턴(Mediator)

  • 객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다.

● 메멘토 패턴(Memento)

  • 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴

● 옵저버 패턴(Observer)

  • 관찰대상의 변화를 탐지하는 패턴
  • 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달
  • 분산된 시스템 간에 이벤트 생성, 발행(Publish), 이를 수신(Subscribe)해야 할 때 이용함

● 상태 패턴(State)

  • 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴

● 전략 패턴(Strategy)

  • 클라이언트에 영향을 받지 않는 독립적인 알고리즘을 선택하는 패턴

● 템플릿 메소드 패턴(Template Method)

  • 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에 정의하는 패턴

● 방문자 패턴(Visitor)

  • 필요할 때마다 해당 클래스에 방문해서 처리하는 패턴
  • 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성한다.
  • 분리된 처리 기능은 각 클래스를 방문하여 수행

  1. 아키텍처 설계과정이 올바른 순서로 나열된 것은?

    ① ㉮ → ㉯ → ㉰ → ㉱ → ㉲
    ② ㉲ → ㉮ → ㉯ → ㉱ → ㉰
    ③ ㉮ → ㉲ → ㉯ → ㉱ → ㉰
    ④ ㉮ → ㉯ → ㉰ → ㉲ → ㉱

정답:1번.


  1. 사용자 인터페이스를 설계할 경우 고려해야 할 가이드라인과 가장 거리가 먼 것은?

① 심미성을 사용성보다 우선하여 설계해야 한다.
② 효율성을 높이게 설계해야 한다.
③ 발생하는 오류를 쉽게 수정할 수 있어야 한다.
④ 사용자에게 피드백을 제공해야 한다.

정답:1번
설명:
*심미성: 아름다움을 살펴 찾을 수 있는 성질.


  1. 소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결 방법을 무엇이라고 하는가?
    ① 모듈 분해 ② 디자인 패턴
    ③ 연관 관계 ④ 클래스 도출

정답:2번.
설명:
디자인 패턴이란
-소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 할 수있는 훌륭한 해결책


  1. 객체지향 분석기법의 하나로 객체 모형, 동적 모형, 기능 모형의 3개 모형을 생성하는 방법은?
    ① Wirfs-Block Method ② Rumbaugh Method
    ③ Booch Method ④ Jacobson Method
    정답:2번.
    설명:럼바우 기법
    -소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석(Object-oriented Analysis) 기법

객체 모델링(Object Modeling): 객체 다이어그램, 정보 모델링이라고도 하며 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의, 가장 중요하며 선행되어야 함
동적 모델링(Dynamic Modeling): 상태 다이어그램, 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현
기능 모델링(Functional Modeling): 자료 흐름도(DFD), 프로세스들의 자료 흐름을 중심으로 처리 과정 표현

  • 럼바우 객체지향 분석 기법의 절차는 객체 모델링 -> 동적 모델링 -> 기능 모델링 순서로 진행된다.

==> 럼바우 - 객동기


  1. 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 처리하는 시간을 줄여주는 프로그램이나 하드웨어를 말하는 것은?
    ① EAI ② FEP
    ③ GPL ④ Duplexing

정답:2번.
설명:
EAI (Enterprice Application Integeration)
-영어를 해석하면 기업 애플리케이션 통합. 쉽게 말하자면 기업 내 여러 애플리케이션을 통합하기 위한 솔루션.

FEP (Front End Processor)
-통신 제어 및 처리를 위한 시스템을 말하는데, 보통 금융 관련 대외적 거래 또는 B2B 연계에 사용되는 통신 방식.
-한 기업 내에 각기 다른 서버 간 통신이 아니라 외부 기업 또는 외부 서버와 내부 기업 서버를 연동하고자 할 때 사용. (ex. KG이니시스 등 외부 PG결제, 세틀뱅크 등 외부 뱅킹 API)
-VPN 또는 전용선을 사용하여 기관을 연결.

GPL(GNU - General Public License)
-자유소프트웨어재단(FSS)에서 만든 라이센스로 자유소프트웨어재단 설립자인 리처드 스톨만에 의해서 만들어졌습니다. 가장 많이 알려진 카피레프트에 속한 라이센스이며, GPL 라이센스를 따르는 프로그램은 목적이나 형태의 제한없이 사용이 가능하며 카피레프트가 추구하는 방향성처럼 프로그램을 이후 수정하고 배포하는 모든 경우에 무조건 GPL로 공개를 해야 합니다.(GPL을 따른 프로그램을 사용해서 2차 저작물을 만들면 2차 저작물도 반드시 GPL 라이센스를 명시해야 함.)
GPL 라이센스 적용 예: 리눅스 커널, Git, 마리아 DB, 워드프레스, 파이어폭스(v2.0) 등

이중화(Duplexing/Diplexing)
-단일 매체, 장치, 포트에서 동시 양방향 통신을 가능케하는 이중화
-양방향 통신 시스템에서 송수신 시 한 개의 안테나를 공유하여 통신하기 위해 적용하는 기술 방식


  1. 객체 지향 개념 중 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미하는 것은?
    ① Method ② Class
    ③ Field ④ Message

정답:2번.
설명:
클래스(Class)

  • 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것이다.
  • 객체지향 프로그램에서 데이터를 추상화하는 단위

인스턴스(Instance)

  • 같은 클래스에 속한 각각의 객체를 의미한다.

메서드(Method)

  • 클래스로부터 생성된 객체를 사용하는 방법

메시지(Message)

  • 객체에게 어떤 행위를 하도록 지시하는 명령

2과목 소프트웨어 개발

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

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

정답:1번.
설명:
추상화
-클래스/메소드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스/메소드/함수에 구현.

의존성
-영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성.

가독성
-이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능을 사용.

중복성
-중복된 코드를 제거, 공통된 코드를 사용.

단위성
-한번에 한 가지 처리만 수행, 클래스/메소드/함수를 최소 단위로 분리.

소스 코드 최적화 기법
1. 변수나 클래스, 매서드 명을 의도가 분명한 이름(사용용도, 작업명)으로 사용한다.
2. 클래스는 행위의 주체로 명사나 명사구로 표현하고 함수 이름은 클래스가 행하는 행위로 동사 또는 동사구로 사용한다.
3. 클래스는 하나의 역할, 책임만 수행할 수 있도록 응집도를 높이고, 크기를 작게 작성한다.
4. 클래스의 자료 구조, 메소드를 추상화 할 수 있는 인터페이스 클래스를 이용하여, 클래스 간의 의존성을 최소화해야 한다.


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

    ① 테스트 스텁(Test Stub)
❷ 테스트 드라이버(Test Driver)
③ 테스트 슈트(Test Suites)
④ 테스트 케이스(Test Case)

정답:2번
설명:테스트 스텁(Test Stub)

  • 테스트 대상 모듈이 호출하는 하위 모듈의 역할을 한다.
  • 하향식 통합 테스트에서 사용된다.
  • 테스트 대상의 상위 모듈을 대신하는, 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구

테스트 드라이버(Test Driver)

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

테스트 슈트(Test Suites)

  • 테스트 대상 컴포넌트나 모듈 등 시스템에 사용되는 테스트 케이스의 집합

테스트 스크립트(Test Script)

  • 자동화된 테스트 실행 절차에 대한 명세서

테스트 케이스(Test Case)

  • 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목 명세서
  • 명세 기반 테스트(블랙박스 테스트)의 설계 산출물에 해당

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

    ① ㉠, ㉡ ② ㉡, ㉢
 ❸ ㉣ ④ ㉠, ㉡, ㉢, ㉣

㉠ FIFO방식으로 처리된다. -> 큐(queue)에 대한 설명.
㉡ 순서 리스트의 뒤(Rear)에서 노드가 삽입되며, 앞(Front)에서 노드가 제거된다 -> 큐(queue)에 대한 설명.
㉢ 선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이다. -> 데크(Deque)에 대한 설명.

정답:3번
설명:
선형 구조 종류 -> 리스트, 스택, 큐, 데크
비선형 구조 종류 -> 트리, 그래프

스택(Stack)
-더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로(Underflow)가 발생한다.
-스택(Stack)은 한 방향으로만 자료를 넣고 꺼낼 수 있는 LIFO(Last-In First-Out) 형식의 자료 구조이다.
-한 방향으로만 PUSH와 POP을 이용하여 자료를 넣고 꺼낸다.
-TOP은 스택에서 가장 위에 있는 데이터로, 스택 포인터(Stack Pointer)라고도 불린다.
스택 연산
PUSH: 데이터를 차례대로 스택에 넣는 연산
POP: 스택에서 가장 위에 있는 데이터를 하나씩 꺼내는 연산

큐(Queue)
-큐(Queue)는 한쪽 끝에서는 삽입 작업이 이뤄지고, 반대쪽 끝에서는 삭제 작업이 이루어지는 FIFO(First-In First-Out) 형식의 자료 구조이다.
-한쪽에서는 ENQUEUE 연산을 이용하여 데이터를 넣고, 한쪽에서는 DEQUEUE 연산을 이용하여 데이터를 꺼낸다.
-데이터가 꺼내는 쪽에서 가장 가까운 데이터를 Front라고 하고, 데이터를 넣는 쪽에서 가장 가까운 데이터를 Rear라고 한다.
큐 연산
ENQUEUE: 데이터를 차례대로 넣는 연산
DEQUEUE: 처음 저장된 데이터부터 하나씩 꺼내는 연산

데크(Deque)
-데크(Deque; Double Ended Queue)는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조이다.
-두 개의 포인터를 사용하여, 양쪽의 삭제/삽입이 가능하다.
-데크를 이용한 스택과 큐의 구현이 가능하다.
데크연산
PUSH: 데이터를 차례대로 데크에 넣는 연산
POP: 데크에서 Front와 Rear에 있는 데이터를 하나씩 꺼내는 연산

트리(Tree)
-트리(Tree)는 데이터들을 계층화시킨 자료 구조이다.
-인덱스를 조작하는 방법으로 가장 많이 사용하는 구조이다.
-트리는 노드(Node)와 노드를 연결하는(Link)로 구성된다.
-배열과 달리 노드들이 포인터로 연결되어 노드의 상한선이 없다.

자료구조


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

    ① 오류의 파급 효과를 최소화한다.
 ❷ 기능의 분리가 가능하여 인터페이스가 복잡하다. ->복잡도 문제를 해결하는 데 도움을 준다.
③ 모듈의 재사용 가능으로 개발과 유지보수가 용이하다.
④ 프로그램의 효율적인 관리가 가능하다.

정답:2번.
설명:

  • 소프트웨어의 모듈은 프로그래밍 언어에서 Subroutine, Function 등으로 표현될 수 있다.
  • 모듈화는 시스템을 지능적으로 관리할 수 있도록 해주며, 복잡도 문제를 해결하는 데 도움을 준다.
  • 모듈화는 시스템의 유지보수와 수정을 용이하게 한다.
  • 모듈의 수가 증가하면, 각 모듈의 크기가 작아진다. => 모듈간 통합 비용 적음, 모듈 하나의 개발비용 큼
  • 모듈의 수가 감소하면, 각 모듈의 크기가 커진다. => 모듈간 통합 비용 큼

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

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

정답:4번
설명:


  1. 정형 기술 검토(FTR)의 지침으로 틀린 것은?

    ① 의제를 제한한다.
② 논쟁과 반박을 제한한다.
③ 문제 영역을 명확히 표현한다.
 ❹ 참가자의 수를 제한하지 않는다. ->제한한다.

정답:4번
설명:FTR 정형 기술 검토 란?

  • FTR는 정형 기술 검토로 소프트웨어 기술자들에 의해 수행되는 소프트웨어 품질 보증 활동입니다
  • FTR은 의제와 참가자의 수를 제한해야합니다
  • FTR은 논쟁과 반박의 제한성, 제품 검토의 집중성, 참가 인원의 제한성 등의 특징이 있습니다
  • FTR은 소프트웨어 개발 산출물 대상 요구 사항 일치 여부, 표준 준수 및 결함 발생 여부를 검토하는 기법입니다

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

    ① Analysis ❷ Migration
③ Restructuring ④ Reverse Engineering

정답:2번
설명:재공학의 주요 활동
-분석(Analysis)
-개조(재구조, 재구성 Restructuring)
-역공학(Reverse Engineering)
-이식(Migration)

분석(Analysis)소프트웨어 재공학
-기존 소프트웨어 명세를 확인하여 동작을 이해하고 재공학 대상을 선정
-재공학 가치판단 및 재공학 여부 판단
재구성(Restructuring)
-소프트웨어 구조를 향상시키기 위해 코드를 재구성
-소프트웨어의 기능과 외적인 동작은 변경되지 않음
역공학(Reverse Engineering)
-소프트웨어 동작 과정 및 설계 정보를 재발견 혹은 재생성
-소프트웨어를 구성하는 원시 코드를 복구하는 작업
-원시 코드로부터 설계정보 추출 및 절차 설계표현, 프로그램과 데이터 구조 정보 추출
-역공학의 가장 오래된 형태는 재문서화
이관(Migration)
-기존 소프트웨어를 다른 운영체제, 하드웨어, 프레임워크 등에서 사용할 수 있도록 변환
-재구성 또는 재개발을 통한 새로운 소프트웨어에 기존 데이터를 옮겨 담는 작업


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

    ① 개발 정보시스템의 특성    ② 사용자의 요구사항
③ 컴파일러의 가용성     ❹ 컴파일러의 독창성

정답:4번
설명:독창성이면 자신밖에 알아보지 못 할 수 있다는건데 프로그래밍 언어는 자신만 사용하는것이 아니라 다른 사람들도 사용할 수 있기 때문에 독창적이면 안됩니다.


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

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

정답:1번
설명:패키징은 사용자 중심으로 진행한다.


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

    ❶ 트리 ② 리스트
③ 스택 ④ 데크

정답:1번
설명:트리(TREE)는 비선형 구조이다.


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

    ① Title Code ② Source Code
③ Object Code ❹ Alien Code

정답:4번
설명:외계인코드(Alien Code)

  • 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램
  • 프로그램의 로직이 복잡하여 이해라기 어려운 프로그램을 말한다.
  • 오류가 없어 디버깅 과정이 필요 없는 프로그램을 의미한다.
  • 사용자가 직접 작성한 프로그램을 의미한다.
  • 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미한다.

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

    ① 생산성 증가
② 프로젝트 문서 공유
③ 소프트웨어 품질 향상
❹ 새로운 개발 방법론 도입 용이

정답:4번
설명:


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

    ❶ AJTML ② JSON
③ XML ④ YAML

정답:1번
설명: JSON/ XML/ YAML 은 인터페이스 간의 통신을 위해 이용되는 데이터 포맷입니다

JSON(JavaScript Object Notation)
-Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다. -웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우).
-여기저기서 자주 보았을테니 여기선 JSON을 파싱, 데이터에 접근하고 JSON을 생성하는 등
-JSON 또한 XML과 비슷하게 데이터를 처리하기 위한 형식입니다. 일반적으로 서버와의 통신 규약인 REST API를 사용할 때 가장 많이 사용되어, 최근에는 XML보다는 JSON 형식이 채택되고 있습니다. 사실상 모든 프로그래밍 언어에서 JSON을 지원한다는 점에서 XML과 YAML에 비해서 채택률이 높아지고 있습니다. JSON은 주석을 사용할 수 없다는 특징이 있습니다.

XML(Extensible Markup Language)
-W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다.
-데이터를 표현하기 위하여 많이 사용되어 온 방식으로 HTML과 흡사한 구조를 가지고 있습니다. XML이 가지는 고유한 문법이 있다는 점에서 소프트웨어 및 하드웨어에 대하여 독립적으로 데이터를 처리할 수 있습니다. XML의 특징은 꺽쇠(<>)입니다. XML은 트리(Tree) 계층 구조를 가지고 있습니다. 루트(Root) 요소부터 시작해 여러 개의 자식을 계층적으로 포함하게 됩니다.

YAML(Yaml Ain't Markup Language)
-YAML 또한 JSON과 비슷하게 사람이 읽기 쉬운 형태의 데이터 표현 형식입니다. YAML은 XML과 문법적으로 유사한 점이 많습니다. YAML에서도 주석을 사용 가능하며 개행, 공백으로 블록을 인식합니다. 다만, 태그를 사용하지 않고 공백 위주로 데이터를 구분하므로 한 줄로 작성할 수 없다는 특징이 있습니다.

출처: https://ndb796.tistory.com/251 [안경잡이개발자]


  1. 프로그램 설계도의 하나인 NS Chart에 대한 설명으로 가장 거리가 먼 것은?

    ① 논리의 기술에 중점을 두고 도형을 이용한 표현 방법이다.
② 이해하기 쉽고 코드 변환이 용이하다.
 ❸ 화살표나 GOTO를 사용하여 이해하기 쉽다. -> 사용하지 않는다.
④ 연속, 선택, 반복 등의 쩨어 논리 구조를 표현한다.

정답:3번
설명:NS Chart(Nassi-Schneiderman Chart)
-논리의 기술에 중점을 둔 도형을 이용한 표현 방법(박스다이어그램, chapin chart)
-순차구조, 반복구조, 선택구조, 다중 선택 구조 등을 표현
-GOTO나 화살표를 사용하지 않으며 선택과 반복 구조를 시각적으로 표현
-이해하기 쉽고 코드 변환이 용이
-읽기는 쉽지만 작성하기가 어려우며, 임의로 제어를 전이하는 것이 불가능


  1. 순서가 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

정답:1번
설명:
A B D C -> C A B D -> D C A B -> B D C A


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

    ① Selection Sort ② Bubble Sort
③ Insert Sort ❹ Quick Sort

정답:4번
설명:


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

    ❶ ㉠, ㉡ ② ㉠, ㉣
③ ㉡, ㉤ ④ ㉢, ㉥

정답:1번
설명:


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

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


  1. 코드 인스펙션과 관련한 설명으로 틀린 것은?
    ① 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
    ② 코드 품질 향상 기법 중 하나이다.
     ❸ 동적 테스트 시에만 활용하는 기법이다.
    ④ 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.
  2. 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?

    ① Critical Path Method ❷ Risk Analysis
③ Work Breakdown Structure ④ Waterfall Model

3과목 데이터베이스 구축

  1. 데이터베이스 설계 단계 중 물리적 설계 시 고려 사항으로 적절하지 않은 것은?
    ❶ 스키마의 평가 및 정제 ② 응답 시간
    ③ 저장 공간의 효율화 ④ 트랜잭션 처리량

  1. DELETE 명령에 대한 설명으로 틀린 것은?

    ① 테이블의 행을 삭제할 때 사용한다.
❷ WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 동일한 효과를 얻을 수 있다.
③ SQL을 사용 용도에 따라 분류할 경우 DML에 해당한다.
④ 기본 사용 형식은 “DELETE FROM 테이블 [WHERE 조건];” 이다.


  1. 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족될 때, 이 릴레이션 R이 해당하는 정규형은?
    ❶ 제5정규형 ② 제4정규형
    ③ 제3정규형 ④ 제1정규형


  2. E-R 모델에서 다중값 속성의 표기법은?

  3. 다른 릴레이션의 기본키를 참조하는 키를 의미하는 것은?
    ① 필드키 ② 슈퍼키
    ❸ 외래키 ④ 후보키


  4. 관계해석에서 '모든 것에 대하여'의 의미를 나타내는 논리 기호는?
    ① ∃ ② ∈
    ❸ ∀ ④ ⊂    


  5. 다음 릴레이션의 Degree와 Cardinality는?

    ❶ Degree : 4, Cardinality : 3
② Degree : 3, Cardinality : 4
③ Degree : 3, Cardinality : 12
④ Degree : 12, Cardinality : 3


  1. 뷰(View)에 대한 설명으로 틀린 것은?
    ① 뷰 위에 또 다른 뷰를 정의할 수 있다.
    ② DBA는 보안성 측면에서 뷰를 활용할 수 있다.
    ③ 사용자가 필요한 정보를 요구에 맞게 가공하여 뷰로 만들 수 있다.
    ❹ SQL을 사용하면 뷰에 대한 삽입, 갱신, 삭제 연산 시 제약 사항이 없다.
  2. 관계 대수식을 SQL 질의로 옳게 표현한 것은?

    ① SELECT 학생 FROM 이름 WHERE 학과='교육';
❷ SELECT 이름 FROM 학생 WHERE 학과='교육;
③ SELECT 교육 FROM 학과 WHERE 이름='학생';
④ SELECT 학과 FROM 학생 WHERE 이름='교육';


  1. 정규화 과정에서 함수 종속이 A→B 이고 B→C 일 때 A→C인 관계를 제거하는 단계는?
    ① 1NF → 2NF ❷ 2NF → 3NF
    ③ 3NF → BCNF ④ BCNF → 4NF
  2. CREATE TABLE문에 포함되지 않는 기능은?
    ❶ 속성 타입 변경
    ② 속성의 NOT NULL 여부 지정
    ③ 기본키를 구성하는 속성 지정
    ④ CHECK 제약조건의 정의
  3. SQL과 관련한 설명으로 틀린 것은?
    ❶ REVOKE 키워드를 사용하여 열 이름을 다시 부여할 수 있다.
    ② 데이터 정의어는 기본 테이블, 뷰 테이블, 또는 인덱스 등을 생성, 변경, 제거하는데 사용되는 명령어이다.
    ③ DISTINCT를 활용하여 중복 값을 제거할 수 있다.
    ④ JOIN을 통해 여러 테이블의 레코드를 조합하여 표현할 수 있다.
  4. 다음 SQL문의 실행결과로 생성되는 튜플 수는?

    ① 1 ② 3
③ 4 ❹ 5    
54. 다음 SQL문에서 사용된 BETWEEN 연산의 의미와 동일한 것은?

    ❶ 점수 >= 90 AND 점수 <= 95
② 점수 > 90 AND 점수 < 95
③ 점수 > 90 AND 점수 <= 95
④ 점수 >= 90 AND 점수 < 95


  1. 트랜잭션의 상태 중 트랜잭션의 수행이 실패하여 Rollback 연산을 실행한 상태는?

    ❶ 철회(Aborted)     ② 부분 완료(Partially Committed)
③ 완료(Commit)     ④ 실패(Fail)

***
  1. 데이터 제어어(DCL)에 대한 설명으로 옳은 것은?
    ① ROLLBACK : 데이터의 보안과 무결성을 정의한다.
    ② COMMIT : 데이터베이스 사용자의 사용 권한을 취소한다.
    ❸ GRANT : 데이터베이스 사용자의 사용 권한을 부여한다.
    ④ REVOKE : 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래 상태로 복구한다.
  2. 테이블 R과 S에 대한 SQL에 대한 SQL문이 실행되었을 때, 실행결과로 옳은 것은?

   

***
  1. 분산 데이터베이스 시스템(Distributed Database System)에 대한 설명으로 틀린 것은?
    ① 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 컴퓨터 사이트에 분산되어 있다.
    ② 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성을 목표로 한다.
    ③ 데이터베이스의 설계가 비교적 어렵고, 개발 비용과 처리 비용이 증가한다는 단점이 있다.
    ❹ 분산 데이터베이스 시스템의 주요 구성 요소는 분산 처리기, P2P 시스템, 단일 데이터베이스 등이 있다.
  2. 테이블 두 개를 조인하여 뷰 V_1을 정의하고, V_1을 이용하여 뷰 V_2를 정의하였다. 다음 명령 수행 후 결과로 옳은 것은?

    ① V_1만 삭제된다.
② V_2만 삭제된다.
❸ V_1과 V_2 모두 삭제된다.
④ V_1과 V_2 모두 삭제되지 않는다.


  1. 데이터베이스에서 병행제어의 목적으로 틀린 것은?
    ① 시스템 활용도 최대화
    ② 사용자에 대한 응답시간 최소화
    ❸ 데이터베이스 공유 최소화
    ④ 데이터베이스 일관성 유지

    4과목 프로그래밍 언어 활용

  2. IP 주소체계와 관련한 설명으로 틀린 것은?
    ❶ IPv6의 패킷 헤더는 32 octet의 고정된 길이를 가진다.
    ② IPv6는 주소 자동설정(Auto Configuration) 기능을 통해 손쉽게 이용자의 단말을 네트워크에 접속시킬 수 있다.
    ③ IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트(Unicast)를 지원한다.
    ④ IPv4는 클래스별로 네트워크와 호스트 주소의 길이가 다르다.
  3. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?

    ① 7, 5 ② 8, 5
❸ 8, 9 ④ 7, 9


  1. OSI 7계층 중 데이터링크 계층에 해당되는 프로토콜이 아닌 것은?
    ❶ HTTP ② HDLC
    ③ PPP ④ LLC
  2. C언어에서 두 개의 논리 값 중 하나라도 참이면 1을, 모두 거짓이면 0을 반환하는 연산자는?
    ❶ ∥ ② &&
    ③ ** ④ !=
  3. IPv6에 대한 특성으로 틀린 것은?
    ❶ 표시방법은 8비트씩 4부분의 10진수로 표시한다.
    ② 2128개의 주소를 표현할 수 있다.
    ③ 등급별, 서비스별로 패킷을 구분할 수 있어 품질보장이 용이하다.
    ④ 확장기능을 통해 보안기능을 제공한다.
  4. JAVA의 예외(exception)와 관련한 설명으로 틀린 것은?
    ❶ 문법 오류로 인해 발생한 것
    ② 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류
    ③ 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류
    ④ 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류
  5. TCP/IP 계층 구조에서 IP의 동작 과정에서의 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜은?
    ① ECP(Error Checking Protocol)
    ② ARP(Address Resolution Protocol)
    ❸ ICMP(Internet Control Message Protocol)
    ④ PPP(Point-to-Point Protocol)
  6. 좋은 소프트웨어 설계를 위한 소프트웨어의 모듈간의 결합도(Coupling)와 모듈 내 요소 간 응집도(Cohesion)에 대한 설명으로 옳은 것은?
    ① 응집도는 낮게 결합도는 높게 설계한다.
    ❷ 응집도는 높게 결합도는 낮게 설계한다.
    ③ 양쪽 모두 낮게 설계한다.
    ④ 양쪽 모두 높게 설계한다.
  7. 다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은?

    ① Dekker Algorithm ② Lamport Algorithm
③ Peterson Algorithm ❹ Semaphore


  1. 소프트웨어 개발에서 모듈(Module)이 되기 위한 주요 특징에 해당하지 않는 것은?
    ① 다른 것들과 구별될 수 있는 독립적인 기능을 가진 단위(Unit)이다.
    ② 독립적인 컴파일이 가능하다.
    ③ 유일한 이름을 가져야 한다.
    ❹ 다른 모듈에서의 접근이 불가능해야 한다.
  2. 빈 기억공간의 크기가 20KB, 16KB, 8KB, 40KB 일 때 기억장치 배치 전략으로 “Best Fit"을 사용하여 17KB의 프로그램을 적재할 경우 내부단편화의 크기는 얼마인가?
    ❶ 3KB ② 23KB
    ③ 64KB ④ 67KB
    ***
  3. 다음 C언어프로그램이 실행되었을 때, 실행 결과는?

    ① i = 0 ② i = 1
③ i = 3 ❹ i = 4


  1. 다음 JAVA 프로그램이 실행되었을 때, 실행 결과는?

    ① BCDABCA ❷ BCDABCC
③ CDDACCC ④ CDDACCA


  1. 개발 환경 구성을 위한 빌드(Build) 도구에 해당하지 않는 것은?
    ① Ant ❷ Kerberos
    ③ Maven ④ Gradle
  2. 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3 일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?
    ① 1, 2, 0 ② 2, 4, 3
    ③ 1, 4, 2 ❹ 4, 1, 3
  3. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?

    ① E ② V
❸ R ④ O


  1. 다음 Python 프로그램이 실행되었을 때, 실행 결과는?

   


  1. C언어에서 정수 변수 a, b에 각각 1, 2가 저장되어 있을 때 다음 식의 연산 결과로 옳은 것은?

    ① 0 ❷ 1
③ 3 ④ 5


  1. 다음 Python 프로그램이 실행되었을 때, 실행 결과는?

  2. UNIX 시스템의 쉘(shell)의 주요 기능에 대한 설명이 아닌 것은?
    ① 사용자 명령을 해석하고 커널로 전달하는 기능을 제공한다.
    ② 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공한다.
    ❸ 쉘 프로그램 실행을 위해 프로세스와 메모리를 관리한다.
    ④ 초기화 파일을 이용해 사용자 환경을 설정하는 기능을 제공한다.

5과목 정보시스템 구축관리

  1. 소프트웨어 생명주기 모델 중 나선형 모델(Spiral Model)과 관련한 설명으로 틀린 것은??

    ① 소프트웨어 개발 프로세스를 위험 관리(Risk Management) 측면에서 본 모델이다.
❷ 위험 분석(Risk Analysis)은 반복적인 개발 진행 후 주기의 마지막 단계에서 최종적으로 한 번 수행해야 한다.
③ 시스템을 여러 부분으로 나누어 여러 번의 개발 주기를 거치면서 시스템이 완성된다.
④ 요구사항이나 아키텍처를 이해하기 어렵다거나 중심이 되는 기술에 문제가 있는 경우 적합한 모델이다.


  1. 정보시스템과 관련한 다음 설명에 해당하는 것은?

    ❶ 고가용성 솔루션(HACMP)
② 점대점 연결 방식(Point-to-Point Mode)
③ 스턱스넷(Stuxnet)
④ 루팅(Rooting)


  1. 위조된 매체 접근 제어(MAC) 주소를 지속적으로 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장 기능을 혼란시켜 더미 허브(Dummy Hub)처럼 작동하게 하는 공격은?
    ① Parsing ② LAN Tapping
    ❸ Switch Jamming ④ FTP Flooding
  2. 다음 내용이 설명하는 스토리지 시스템은?

    ❶ DAS ② NAS
③ BSA ④ NFC


  1. 취약점 관리를 위해 일반적으로 수행하는 작업이 아닌 것은?

    ① 무결성 검사
② 응용 프로그램의 보안 설정 및 패치(Patch) 적용
❸ 중단 프로세스 및 닫힌 포트 위주로 확인
④ 불필요한 서비스 및 악성 프로그램의 확인과 제거


  1. 소프트웨어 생명주기 모델 중 V 모델과 관련한 설명으로 틀린 것은?

    ❶ 요구 분석 및 설계단계를 거치지 않으며 항상 통합 테스트를 중심으로 V 형태를 이룬다.

    ② Perry에 의해 제안되었으며 세부적인 테스트 과정으로 구성되어 신뢰도 높은 시스템을 개발하는데 효과적이다.
③ 개발 작업과 검증 작업 사이의 관계를 명확히 들어내 놓은 폭포수 모델의 변형이라고 볼 수 있다.
④ 폭포수 모델이 산출물 중심이라면 V 모델은 작업과 결과의 검증에 초점을 둔다.


  1. 블루투스(Bluetooth) 공격과 해당 공격에 대한 설명이 올바르게 연결된 것은?

    ① 블루버그(BlueBug) - 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로 OPP를 사용하여 정보를 열람
② 블루스나프(BlueSnarf) - 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 것
❸ 블루프린팅(BluePrinting) - 블루투스 공격 장치의 검색 활동을 의미
④ 블루재킹(BlueJacking) - 블루투스 장비사이의 취약한 연결 관리를 악용한 공격


  1. DoS(Denial of Service) 공격과 관련한 내용으로 틀린 것은?

    ① Ping of Death 공격은 정상 크기보다 큰 ICMP 패킷을 작은 조각(Fragment)으로 쪼개어 공격 대상이 조각화 된 패킷을 처리하게 만드는 공격 방법이다.
❷ Smurf 공격은 멀티캐스트(Multicast)를 활용하여 공격 대상이 네트워크의 임의의 시스템에 패킷을 보내게 만드는 공격이다.
③ SYN Flooding은 존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 이용하지 못하게 하는 것이다.
④ Land 공격은 패킷 전송 시 출발지 IP주소와 목적지 IP주소 값을 똑같이 만들어서 공격 대상에게 보내는 공격 방법이다.


  1. 다음 설명에 해당하는 시스템은?

    ① Apache ② Hadoop
❸ Honeypot ④ MapReduce


  1. 다음이 설명하는 IT 기술은?

    ① StackGuard ❷ Docker
③ Cipher Container ④ Scytale


  1. 간트 차트(Gantt Chart)에 대한 설명으로 틀린 것은?

    ① 프로젝트를 이루는 소작업 별로 언제 시작되고 언제 끝나야 하는지를 한 눈에 볼 수 있도록 도와준다.
② 자원 배치 계획에 유용하게 사용된다.
③ CPM 네트워크로부터 만드는 것이 가능하다.
❹ 수평 막대의 길이는 각 작업(Task)에 필요한 인원수를 나타낸다.


  1. Python 기반의 웹 크롤링(Web Crawling) 프레임워크로 옳은 것은?
    ① Li-fi ❷ Scrapy
    ③ CrawlCat ④ SBAS
  2. Secure 코딩에서 입력 데이터의 보안 약점과 관련한 설명으로 틀린 것은?

① SQL 삽입 : 사용자의 입력 값 등 외부 입력 값이 SQL 쿼리에 삽입되어 공격
② 크로스사이트 스크립트 : 검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행
③ 운영체제 명령어 삽입 : 운영체제 명령어 파라미터 입력 값이 적절한 사전검증을 거치지 않고 사용되어 공격자가 운영체제 명령어를 조작
❹ 자원 삽입 : 사용자가 내부 입력 값을 통해 시스템 내에 사용이 불가능한 자원을 지속적으로 입력함으로써 시스템에 과부하 발생


  1. Windows 파일 시스템인 FAT와 비교했을 때의 NTFS의 특징이 아닌 것은?
    ❶ 보안에 취약     ② 대용량 볼륨에 효율적
    ③ 자동 압축 및 안정성 ④ 저용량 볼륨에서의 속도 저하
  2. DES는 몇 비트의 암호화 알고리즘인가?
    ① 8 ② 24
    ❸ 64 ④ 132
  3. 리눅스에서 생성된 파일 권한이 644일 경우 umask 값은?
    ❶ 022 ② 666
    ③ 777 ④ 755
  4. 다음 내용이 설명하는 로그 파일은?

    ① tapping ② xtslog
③ linuxer ❹ wtmp


  1. 상향식 비용 산정 기법 중 LOC(원시 코드 라인 수) 기법에서 예측치를 구하기 위해 사용하는 항목이 아닌 것은?
    ① 낙관치 ② 기대치
    ③ 비관치 ❹ 모형치
  2. OSI 7 Layer 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을 조정하기 위한 패킷 분석 기술은?

    ① PLCP(Packet Level Control Processor)
② Traffic Distributor
③ Packet Tree
❹ DPI(Deep Packet Inspection)


  1. 소프트웨어 개발 방법론의 테일러링(Tailoring)과 관련한 설명으로 틀린 것은? 

❶ 프로젝트 수행 시 예상되는 변화를 배제하고 신속히 진행하여야 한다.
② 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동이다.
③ 관리 측면에서의 목적 중 하나는 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험을 식별하고 제거하는 것이다.
④ 기술적 측면에서의 목적 중 하나는 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의 기법과 도구를 사용하는 것이다.

좋은 웹페이지 즐겨찾기