01. 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식이다. 미리 정해진 몇 개의 단계에 따라 엄격한 순서대로 이루어지는 일직선의 과정인 폭포수의 프로세스와는 비교가 많이 되는 반대의 개념이다. 이 소프트웨어 개발 방법론을 쓰시오.
: 애자일 방법론 또는 Aglie
* 애자일 방법론
- '날렵한, 재빠른'이라는 사전적 의미와 같이 소프트웨어 개발 중 설계 변경에 신혹히 대응하여 요구사항을 수용할 수 있다.
- 프로세스와 도구 중심이 아닌 개발 과정의 소통을 중요하게 생각하는 소프트웨어 개발 방법론으로 반복적인 개발을 통한 잦은 출시를 목표로 한다.
- 어느 특정한 개발 방법론이라기보다는 '애자일'한 개발 방법론을 모두 가리킨다. Scrum, XP가 대표적인 애자일 방법론이다.
- 문서 중심의 기존 개발 방법론과는 달리 빠른 변화에 대응할 수 있으며, 절차와 도구보다 개인과 소통을 중요하게 생각한다.
- 소프트웨어가 잘 실행되는 데 가치를 두며 고객과의 피드백을 중요하게 생각한다.
- Scrum
- 프로젝트를 30일마다 동작 가능한 제품을 제공하는 스플린트로 분리
- 매일 15분 정도 회의를 한다.
- XP(eXtemeProgramming)
- 의사소통, 단순성, 피드백, 용기, 존중
(의사선생님, 약 피존 용기에 담(단)아주세요) - 고객과 함께 2주 정도의 반복 개발을 하고, 테스트와 우선 개발이 특징
- 의사소통, 단순성, 피드백, 용기, 존중
* 생명주기 모형의 종류
- 폭포수 모형(Waterfall Model)
- 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
- 프로토타입 모형(Prototype Model)
- 실제 개발될 시스템의 견본(Prototype)을 미리 만들어 최종 결과물을 예측하는 모형이다.
- 나선형 모형(spiral Model)
- 계획 수립 → 위험분석 → 공학적 개발 → 고객 평가
02. 다음은 데이터베이스 설계의 순서이다. 빈 칸에 해당하는 설계 순서를 쓰시오.
요구사항 분석 → ( ) → ( ) → ( ) → 구현
|
: 개념적 설계, 논리적 설계, 물리적 설계
* 데이터베이스 설계 순서
- 데이터베이스 계획
- 요구사항 분석
- 데이터베이스에 저장된 내용을 정하기 위해 사용자의 요구사항 분석
- 개념적 데이터 설계
- DBMS 독립적 개념 스키마 설계, 트랜잭션 모델링 및 정의
- ERD
- 논리적 데이터 설계
- 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
- 정규화
- 물리적 데이터 설계
- 목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계
- 성능 고려, 반정규화
- 구현
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. 다음 빈 칸 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.
|
: 형상관리, 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문을 작성하시오.
<요구사항>
|
학번 | 이름 | 학년 |
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 파일에 대해 다음 조건을 만족하는 권한을 부여하고자 한다. 다음 <조건>을 준수하는 적합한 명령어를 작성하시오.
<조건>
|
: 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
디자인 패턴은 내용이 많고, 자주 출제되므로 시험 보기 전 한 번씩 읽는 것을 추천한다 !
17. 다음에서 설명하는 용어를 쓰시오.
|
: 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
반응형
'정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 기출] 2021년 2회 (10) | 2024.10.08 |
---|---|
[정보처리기사 실기 기출] 2021년 1회 (2) | 2024.10.08 |
[정보처리기사 실기 기출] 2020년 4회 (11) | 2024.10.07 |
[정보처리기사 실기 기출] 2020년 3회 (7) | 2024.09.28 |
[정보처리기사 실기 기출] 2020년 1회 (24) | 2024.09.25 |