정보처리기사

[정보처리기사 실기 기출] 2020년 2회

juble 2024. 9. 27. 11:24

 

01. 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식이다. 미리 정해진 몇 개의 단계에 따라 엄격한 순서대로 이루어지는 일직선의 과정인 폭포수의 프로세스와는 비교가 많이 되는 반대의 개념이다. 이 소프트웨어 개발 방법론을 쓰시오.

: 애자일 방법론 또는 Aglie 

 

* 애자일 방법론

  • '날렵한, 재빠른'이라는 사전적 의미와 같이 소프트웨어 개발 중 설계 변경에 신혹히 대응하여 요구사항을 수용할 수 있다. 
  • 프로세스와 도구 중심이 아닌 개발 과정의 소통을 중요하게 생각하는 소프트웨어 개발 방법론으로 반복적인 개발을 통한 잦은 출시를 목표로 한다. 
  • 어느 특정한 개발 방법론이라기보다는 '애자일'한 개발 방법론을 모두 가리킨다. Scrum, XP가 대표적인 애자일 방법론이다. 
  • 문서 중심의 기존 개발 방법론과는 달리 빠른 변화에 대응할 수 있으며, 절차와 도구보다 개인과 소통을 중요하게 생각한다. 
  • 소프트웨어가 잘 실행되는 데 가치를 두며 고객과의 피드백을 중요하게 생각한다. 
  • Scrum
    • 프로젝트를 30일마다 동작 가능한 제품을 제공하는 스플린트로 분리
    • 매일 15분 정도 회의를 한다. 
  • XP(eXtemeProgramming)
    • 의사소통, 단순성, 피드백, 용기, 존중 (사선생님, 약 피존기에 담(단)아주세요)
    • 고객과 함께 2주 정도의 반복 개발을 하고, 테스트와 우선 개발이 특징 

* 생명주기 모형의 종류

  • 폭포수 모형(Waterfall Model)
    • 계획 → 요구사항 분석  → 설계  → 구현  → 테스트  → 유지보수
  • 프로토타입 모형(Prototype Model)
    • 실제 개발될 시스템의 견본(Prototype)을 미리 만들어 최종 결과물을 예측하는 모형이다. 
  • 나선형 모형(spiral Model)
    • 계획 수립  → 위험분석  → 공학적 개발  → 고객 평가 

 

02. 다음은 데이터베이스 설계의 순서이다. 빈 칸에 해당하는 설계 순서를 쓰시오.

요구사항 분석 → (      ) → (      ) → (      ) → 구현
: 개념적 설계, 논리적 설계, 물리적 설계

 

* 데이터베이스 설계 순서

  1. 데이터베이스 계획
  2. 요구사항 분석
    • 데이터베이스에 저장된 내용을 정하기 위해 사용자의 요구사항 분석
  3. 개념적 데이터 설계
    • DBMS 독립적 개념 스키마 설계, 트랜잭션 모델링 및 정의
    • ERD
  4. 논리적 데이터 설계
    • 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
    • 정규화
  5. 물리적 데이터 설계
    • 목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계
    • 성능 고려, 반정규화
  6. 구현

03. 다음 빈 칸에 알맞은 용어를 쓰시오.

 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다.
(     )은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 되는데, (      ) 에는 몇 가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청하고, 서버는 메시지를 즉시 응답하게 되는 형식입니다. 즉 (      )는 XML을 이용해서 분산처리 환경에서 정보교환을 쉽게 할 수 있도록 도와준다.
: SOAP, Simple Object Access Protocol

 

* SOAP, Simple Object Access Protocol

  • XML기반의 메세지 교환 프로토콜 (REST는 JSON 기반)
  • HTTP를 이용하기 때문에 다른 RPC에 비해 Proxy와 방화벽에 제약을 받지 않고 쉽게 통신이 가능하다. 
  • HTTP뿐만 아니라 다른 전송 프로토콜도 이용할 수 있다. 
  • 플랫폼과 프로그래밍 언어에 독립적이다. 

 

04. 다음 빈 칸 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.

  • (      )는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, (      )는 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다.
  • (      )란 소프트웨어 소스 코드 뿐 아니라 개발 환경, 빌드 구조 등 전반적인 환경 전반적인 내역에 대한 관리 체계를 정의하고 있다.
  • 이를 지원하는 도구로 Git, SVN, CVS 등이 있다.
: 형상관리, Software Configuration Management

 

* 형상관리 

  • 소프트웨어 형상관리 : 소프트웨어 유지보수 과정에서 발생하는 결과물에 대한 계획, 개발, 운용 등을 종합하여 시스템의 형상을 만들고, 이에 대한 변경을 체계적으로 관리하기 위한 활동
  • 소프트웨어의 생산물을 확인하고 소프트웨어 통제, 변경 상태를 기록하고 보관하는 일련의 관리 작업
  • 소프트웨어에서 일어나는 수정이나 변경을 알아내고 제어하는 것을 의미한다. 
  • 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다. 
  • 형상관리의 절차 : 형상 식별  → 형상 통제 → 형상 감사 → 형상 기록

* 버전 관리 도구 분류

  • 공유 폴더 방식 - SCCS, RCS, PVCS
  • 클라이언트/서버 방식 - CVS, SVN, Clear Case
  • 분산 저장소 방식 - Git, GNU arch, Bazaar, Bitkeeper

 


05. 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있는 비동기 방식 처리 기술의 약어를 쓰시오.

: AJAX

 

* Ajax(Asynchronous JavaScript and XML)

  • 자바스크립트를 이용해서 비동기식으로 XML을 이용하여 서버와 통신하는 방식의 웹 애플리케이션 제작 기술을 의미
  • 비동기식이란 여러 가지 일이 동시적으로 발생한다는 뜻으로, 서버와 통신하는 동안 클라이언트는 다른 작업을 할 수 있다는 것을 의미한다. 
  • 최근에는 XML보다 JSON을 더 많이 사용한다. 
  • Ajax의 동작 방식
    • 요청 : 브라우저는 서버에 정보를 요청한다. 브라우저는 Ajax 요청을 담당하는 XMLHttpRequest라는 객체를 구현
    • 응답 : 서버는 응답으로 데이터(XML, JSON)를 전달한다. 브라우저는 콘텐츠를 처리하여 페이지의 해당 부분에 추가 

06. 다음은 UI의 설계 원칙 4가지이다. 빈 칸에 알맞은 용어를 쓰시오.

설계 원칙 설명
직관성 누구나 쉽게 이해하고 사용할 수 있어야 한다. 
(       ) 사용자의 목적을 정확하게 달성하여야 한다. 
학습성 누구나 쉽게 배우고 익힐 수 있어야 한다. 
유연성 사용자의 요구사항을 최대한 수용하며, 오류를 최소화하여야 한다. 

 

: 유효성

 

* UI 설계 원칙

  • 직관성 : 화면의 버튼, 항목, 입력란 등 누구나 쉽게 이해하고 사용할 수 있어야 한다. 
  • 유효성 : 사용자의 목적을 정확히 달성할 수 있도록 유용하고 효과적이어야 한다. 
  • 학습성 : 사용자가 쉽게 배우고 익힐 수 있어야 한다. 
  • 유연성 : 사용자의 요구를 최대한 수용하면서 오류를 최소화해야 한다. 

 


 

07. 프로그램을 실행시키지 않고, 소스코드에 대한 코딩 표준, 코딩 스타일, 복잡도, 보안 취약점, 잠재적인 결함을 찾는 테스트 활동이 무엇인지 쓰시오.

: 정적 분석 또는 정적 테스트

 

* 프로그램 실행 여부에 따른 테스트 

동적 테스트
(Dynamic Test)
- 애플리케이션을 직접 실행하여 오류를 찾는 테스트를 의미한다. 
- 소프트웨어 개발의 모든 단계에서 테스트를 수행한다. 
- 종류 : 블랙박스 테스트, 화이트박스 테스트
정적 테스트
(Static Test)
- 애플리케이션을 직접 실행하지 않고 명세서나 소스코드를 대상으로 분석하는 테스트를 의미한다. 
- 소프트웨어 개발 초기에 결함 발견이 가능하여, 개발 비용을 낮출 수 있다. 
- 종류 : 워크스루, 인스펙션, 코드검사 등이 있다. 

 

* 애플리케이션 테스트 유형 분류

  • 프로그램 실행 여부
    • 정적 테스트
    • 동적 테스트
  • 테스트 기법
    • 화이트박스 테스트
    • 블랙박스 테스트
  • 테스트에 대한 시각
    • 검증 테스트
    • 확인 테스트
  • 테스트 목적
    • 회복 테스트
    • 안전 테스트
    • 강도 테스트
    • 성능 테스트
    • 구조 테스트
    • 회귀 테스트
    • 병행 테스트 
  • 테스트 기반
    • 명세 기반 테스트
    • 구조 기반 테스트
    • 경험 기반 테스트 

 


08. 아래 보기의 <학생> 테이블을 대상으로 <요구사항>을 적용하여 출력하는 SQL문을 작성하시오.

<요구사항>
  1. 3학년이거나 4학년 학생의 학번과 이름을 검색하시오.
  2. 단, 조건절 작성 시 in 예약어를 사용하여 작성하시오.
학번 이름 학년
181101 KKK 1
171201 HHH 2
161107 YYY 3
151403 QQQ 4
: SELECT 학생, 이름 FROM 학생 WHERE 학년 in (3, 4)

 


09. 다음 주어진 <student> 테이블의 name 속성을 오름차순하여 idx_name를 인덱스명으로 하는 인덱스를 생성하는 SQL 명령문을 작성하시오.

: CREATE INDEX idx_name ON student (name asc)

 


10. 보안의 취약점 중 하나인 SQL Injection(SQL 인젝션)에 대해 간략히 서술하시오.

: 웹 프로그램에 SQL 구문을 삽입하여, 서버의 데이터베이스를 공격할 수 있는 공격 방식

 

* SQL Injection

  • 클라이언트(사용자)의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격하는 것을 의미한다. 
  • 공격자가 악의적으로 웹 사이트의 보안상 허점을 이용해 특정 SQL 질의문을 전송하여 공격자가 원하는 데이터베이스의 중요한 정보를 가져오는 공격 기법이다. 
  • 내부적으로 데이터베이스를 활용하는 웹 모듈에서 SQL 쿼리를 처리할 때, 쿼리 내용에 사용자 인증을 우회하는 조건이나, 운영체제 명령을 직접 호출할 수 있는 명령을 삽입하여 데이터베이스 관리자 권한을 획득하는 등의 불법 공격을 행하는 것을 말한다. 

 


11. SQL 제어어(DCL) 중 ROLLBACK 명령에 대해 간략히 설명하시오.

: 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상수행이 되었다 하더라도 수행되기 이전의 상태로 되돌리기 위한 명령이다.

 

* SQL 제어어(DCL, Data Control Language)

COMMIT 데이터베이스 내의 연산이 성공적으로 종료되어 연산에 의한 수정 내용을 지속적으로 유지하기 위한 명령어이다.
ROLLBACK 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상적으로 수행이 되었다 하더라도 수행되기 이전 상태로 되돌리기 위해 연산 내용을 취소할 때 사용하는 명령어이다. 
GRANT - 관리자가 사용자에게 데이터베이스에 대한 권한을 부여하기 위한 명령어이다. 
- 구문 : GRANT 권한내용 ON 테이블_이름 TO 사용자 [WITH GRANT OPTION];
REVOKE - 관리자가 사용자에게 부여했던 권한을 취소하기 위해 사용되는 명령어이다. 
- 구문 : REVOKE 권한내용 ON 테이블_이름 FROM 사용자 [CASCADE];

 


12. 네트워크 계층(Network Layer, 3계층)인 IP 계층에서 IP 패킷 단위의 데이터 변조 방지 및 암호화 기능을 제공하는 통신규약을 쓰시오.

: IPSec, IP Security

 

* IPSec

  • 통신 세션의 각 IP 패킷을 암호화하여 인증하는 안전한 인터넷 프로토콜 통신을 위한 3계층 보안 프로토콜이다. 
  • 기밀성, 비연결형 무결성, 데이터 원천 인증, 재전송 공격 방지, 접근 제어, 제한된 트래픽 흐름의 기밀성의 특징을 가지고 있다. 

* SSL(Secure Socket Layer)은 HTTP뿐만 아니라 TCP 프로토콜에 접목하여 보안성을 제공해주는 클라이언트/서버 기반의 프로토콜이다. 


13. 리눅스 커널을 기반으로 동작하며 자바와 코틀린 언어로 개발된 핸드폰이나 소형기기에 사용되는 오픈소스 플랫폼인 모바일 운영체제는 무엇인지 쓰시오.

: 안드로이드

 


14. 리눅스 또는 유닉스에서 a.txt 파일에 대해 다음 조건을 만족하는 권한을 부여하고자 한다. 다음 <조건>을 준수하는 적합한 명령어를 작성하시오.

<조건>
  • 사용자에게는 읽기, 쓰기, 실행의 세 개의 권한을 모두 부여한다.
  • 그룹에게는 읽기, 실행 두 개의 권한을 부여한다.
  • 그룹 외 사용자에게는 실행 권한을 부여한다.
  • 한 줄로 명령문이 작성되어야 하며, 8진수로 권한을 부여한다.
: chmod 751 a.txt

 

* chmod 명령어

  • 유닉스 또는 리눅스에서 파일이나 디렉터리에 대한 액세스(읽기, 쓰기, 실행)권한을 설정하는 명령어
  • 파일 사용자 : 소유자(owner), 그룹 소속자(group), 기타 사용자(public)
  • 파일 권한 : 읽기(r), 쓰기(w), 실행(x) → 권한 변경은 '(8진수)숫자 모드'와 '기호 모드'가 있으며 접근 제한은 하이픈(-)으로 표기
  • 형식 : chmod [옵션][모드] 파일
  • a.txt에 대한 권한
구분 사용자 권한 그룹 권한 그룹 외 권한
기호 모드 r w x r - x - - x
(8진수)
숫자 모드
4 2 1 4 0 1 0 0 1
7 5 1

 


15. 다음은 IP 인프라 서비스 관리 실무와 관련된 <실무 사례>에 대한 설명이다. 가장 적합한 용어를 한글 또는 영문으로 쓰시오.

A는 ㈜한국아이티 보안관제실에서 정보시스템의 정보관리를 위해 모니터링을 담당하며 근무하고 있다. 시스템 운영 중 자연재해나 시스템 장애 등의 이유로 대고객 서비스가 불가능한 경우가 종종 발생한다. A는 이런 장애 발생시 서비스를 정상적으로 수행하기 위해 구축 시스템을 관리하는 역할을 한다. 이 용어는 이런 비상 상황이 발생했을 때, "서비스 중단 시점과 서비스 복원 시점 간에 허용되는 최대 지연 시간"을 가리킨다.
: RTO (Recovery Time Objective) 또는 목표 복구 시간 

 


16. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의하는 디자인 패턴명을 영문으로 쓰시오.

: Observer Pattern

 


디자인 패턴은 내용이 많고, 자주 출제되므로 시험 보기 전 한 번씩 읽는 것을 추천한다 !

 

[Study] 디자인 패턴(Design Pattern)

1. 디자인 패턴자주 사용하는 설계 형태를 정형화해서 이를 유형별로 설계 템플릿을 만들어둔 것으로, 소프트웨어 개발 중 나타나는 과제를 해결하기 위한 방법 중 한가지이다.다시 말헤, 모듈

juble00.tistory.com

 


17. 다음에서 설명하는 용어를 쓰시오.

  • (     )은 개방형 정부, 개방형 공공 데이터의 시대적 요구와 맞물려 있으며, 기존의 거대한 정보 생태계인 웹을 활용하고 웹 기술과 핵심 개념을 그대로 활용한다는 점에서 주목받고 있다. 
  • (     )의 주요 특징은 URI(Uniform Resource Identifier)를사용한다는 점이다. 흔히 할고 있는 'URL(Uniform Resource Locator)'과 비슷한 개념으로 URL이 특정정보 자원의 종류와 위치를 가리킨다면, URI는 HTTP 프로토콜을 통해 웹에 저장된 객체(식별자)를 가리킨다는 점에서 다르다. 
  • 웹 상에 존재하는 전세계 오픈된 정보를 하나로 묶는 RESTful한 방식이며, 링크 기능이 강조된 시맨틱 웹(Semantic Web)의 모형에 속한다고 볼 수 있다. 즉, (     )은 '시맨틱 웹을 실현시키기 위한 방법이자 기술적 접근점'으로 볼 수 있다. 
  • (     )은 Linked Data와 Open Data의 합성어이다. Linked Data가 정보 기술적인 면이 강한 반면 Open Data는 정보 문화적인 면이 강한 용어이다. 
: Linked Open Data

 

* REST(Representational State Transfer)

  • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 
  • HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUP Operation을 적용하는 것을 의미한다. 

* 시맨틱 웹(Semantic Web)

  • 컴퓨터가 이해할 수 있는 형태의 새로운 언어로 표현해 기계들끼리 서로 의사소통을 할 수 있는 지능형 웹을 의미한다. 

 


18. 다음은 Python언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

>>> asia = {'한국', '중국', '일본'}
>>> asia.add('베트남')
>>> asia.add('중국')
>>> asia.remove('일본')
>>> asia.update(['홍콩', '한국', '태국'])
>>> print(asia)
 
: { '한국', '중국', '베트남', '홍콩', '태국' }

 

* Python의 자요형 SET은 집합 요소의 중복은 허용하지 않고, 순서는 상관이 없다. 

* 중괄호 {  } 속 집합 요소가 문자열이므로 반드시 작은따옴표 쌍으로 표시되어야 한다. 

 


19. 다음에 제시된 JAVA 프로그램은 <처리결과>와 같이 결과가 출력된다. JAVA 프로그램의 <?> 에 들어갈 JAVA 표현을 대소문자를 구별하여 쓰시오.

class Parent {
  void show() {
    System.out.println("Parent");
  }
}
class Child extends Parent {
  void show() {
    System.out.println("Child");
  }
}
public class Exam {
  public static void main(String[] args){
    Parent pa = <?> Child();
    pa.show();
  }
}
 
: new

 

  • 자바의 클래스 인스턴스 생성을 위해서는 new 연산자를 사용한다. 
  • new 연산자에 의해 힙 메모리에 Chlid 클래스 객체가 생성된다. 
  • 자식 객체를 부모형 참조변수로 참조하는 다형성에 의해서 오버라이드되어있는 자식 메소드 show()가 호출되어 Child를 결과로 출력한다. 

 


20. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

class A {
  int a;
  public A(int n) {
    a = n;
  }
  public void print() {
    System.out.println("a="+a);
  }
}
class B extends A {
  public B(int n) {
    super(n);
    super.print();
  }
}
public class Exam {
  public static void main(String[] args) {
    B obj = new B(10);
  }
}
 
: a=10

 

  • 모든 객체는 힙 영역에 생성됨과 동시에 자동으로 생성자를 호출한다. 
  • 자식 클래스 B의 객체 생성 시 매개변수를 갖는 생성자를 자동 호출하여 public B(int n) 생성자를 자동 호출한다. 
  • 생성자 내의 super(n); 명령문에 의해 정수 10을 가지고 부모 클래스 A의 매개변수를 갖는 public A(int n) 생성자를 호출하여 필드 a에 10을 대입하고 자식 생성자로 반환한 후, 다시 super.print() 메소드를 호출하여 a=10 을 출력한다. 

 


해설은 유투브 흥달쌤 강의와, 이기적 실기 기본서를 참고하였습니다 :)
https://youtu.be/lv4-n_s5AvI

728x90
반응형