[2021년 3회] 정보처리기사 실기 기출 정리
- 1. 다음 Java 코드에 대한 알맞는 출력 값을 쓰시오.
class Connection {
private static Connection _inst = null;
private int count = 0;
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() { count ++; }
public int getCount() { return count; }
}
public class testcon {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
답 : 3
- conn1.count() : Connection.get()이 호출될때 _inst가 null이므로 새로운 객체를 생성하기 때문에 count는 1이 됩니다.
- conn2.count() : 다시 Connection.get()을 호출할때 _inst는 1이므로 그대로 리턴되어 count++하게 되어 2가 됩니다.
- 다시 반복하여 conn1.getCount()는 3이 됩니다.
2. 다음은 정보 보호 기술인 AAA에 대한 설명이다. 각 설명에 맞는 용어를 적으시오.
1. 시스템을 접근하기 전에 접근 시도하는 사용자의 신원을 검증
2. 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용
3. 사용자의 자원(시간, 정보, 위치 등)에 대한 사용자 정보를 수집
답 : Authentication, Authorization, Accounting
- 인증(Authentication) : 시스템을 접근하기 전에 접근 시도하는 사용자의 신원을 검증
- 인가 및 권한부여(Authorization) : 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용
- 회계 및 계정관리(Accounting) : 사용자의 자원에 대한 사용 정보를 수집
* AAA 특징
- 분산된 클라이언트/서버 구조
- AAA 서버 : 분산된 정보를 중앙에서 저장, 관리, 허용 여부 통지 등 ex) 인증서버
- AAA 클라이언트 : 원격 사용자의 인증용 정보를 중아의 서버에게 전달 ex) NAS(Network Access Server) - 보안상, 텔넷이나 콘솔 접근을 가급적 제한
- 주로, 다이얼업 클라이언트, VPN 클라이언트와 같은 원격 사용자에게 시스템 또는 네트워크로의 접근을 관리
3. 데이터 제어어(DCL) 중 GRANT에 대하여 설명하시오.
답 : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한을 부여한다.
- DCL : 데이터 보안, 무결성, 회복, 병행 수행 제어 등을 위한 SQL 언어.
GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한을 부여한다.
REVOLE : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수한다. - DDL : 데이터베이스의 객체를 생성, 삭제, 변경할 수 있는 SQL 언어.
CREATE : 데이터베이스 객체 생성
ALTER : 데이터베이스 객체 변경
DROP : 데이터베이스 객체 삭제
TRUNCATE : 데이터베이스 객체 내 튜플(행) 삭제
- DML : 데이터베이스 내부 스키마에 있는 데이터를 조회하기 위한 SQL 언어.
INSERT : 데이터 삽입
UPDATE : 데이터 수정
DELETE : 데이터 삭제
4. 다음은 스푸핑 공격에 대한 설명이다. 괄호 안에 들어갈 알맞은 답안을 작성하시오.
( )스푸핑은 근거리 통신망 하에서 ( ) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기번이다. 이 공격은 데이터 링크 상의 프로토콜인 ( )를 이용하기 때문에 근거리 상의 통신에서만 사용할 수 있는 공격이다.
답 : ARP 스푸핑
* 스푸핑 종류
- ARP 스푸핑 : MAC 주소를 속여 랜에서의 통신 흐름을 왜곡시키는 공격으로,
공격 대상 컴퓨터와 서버 사이의 트래픽을 공격자의 컴퓨터로 우회시켜 패스워드 정보 등 원하는 정보를 획득할 수 있다. - IP 스푸핑 : IP 자체의 보안 취약성을 악용한 것으로 자신의 IP주소을 속여서 접속하는 공격으로,
IP 스푸핑을 통해 서비스 거부 공격(Dos)도 수행 가능하며 공격 대상 컴퓨터와 서버 사이의 연결된 세션을 끊을 수도 있다.
- DNS 스푸핑 : DNS 프로토콜은 인터넷 연결 시 도메인 주소를 실제 IP주소로 대응시켜 주는 프로토콜이다,
정상적인 접속에서는 접속하고자 하는 사이트에 대한 IP주소를 DNS서버에서 받아와야 하지만, 공격자가 DNS 서버를 장악하거나 사용자와 DNS사이의 트래픽을 스니핑하여 공격자가 설정한 임의의 IP주소를 사용자에게 보내 원하는 사이트로 이동시키는 공격이다.
5. 다음은 Coupling에 대한 설명이다. 설명에 대한 Coupling 종류를 영문으로 작성하시오.
어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도이다. 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생할 수 있다.
답 : Control(제어) 결합도
결합도 : 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다. 결합도가 약할수록 독립적이다. 결합도는 약할수록 좋다.
자료결합도<스탬프결합도<제어결합도<외부결합도<공유결합도<내용결합도(자스제외공내)
- 자료(Data)결합도 : 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
- 스탬프(Stamp)결합도 : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
- 제어(Control)결합도 : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 통신하거나 제어 요소를 전달하는 결합도
- 외부(External)결합도 : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
- 공유(Common)결합도 : 공유되는 공통 데이터 영역(전역변수)을 여러 모듈이 사용할 때의 결합도
- 내용(Content)결합도 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
6. OSI 7 Layer에 대한 설명이다. 다음 각 설명에 해당되는 계층을 적으시오.
1. 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
2. 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
3. 수신자에서 데이터의 압축을 풀 수 있는 방식으로 된 데이터 압축
답 : 1. 데이터링크 2. 네트워크 3. 표현
OSI 7 Layer : 다른 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)이다.
물리 계층->데이터링크 계층->네트워크 계층(하위 계층)->전송 계층->세션 계층->표현 계층->응용 계층(상위 계층)
1. 물리 계층(Pysical Layer) : 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의함
2. 데이터링크 계층(Data Link Layer) : 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 함
(흐름 제어, 프레임 동기화, 오류 제어, 순서 제어)
3. 네트워크 계층(Network Layer, 망 계층) : 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 함
(경로 설정(Routing), 트래픽 제어, 패킷 정보 전송
4. 전송 계층(Transport Layer) : 종단 시스템(End-to-End) 간의 전송 연결 설정, 데이터 전송, 연결 해제 기능을 함
(주소 설정, 다중화(데이터의 분할과 재조립), 오류 제어, 흐름 제어)
5. 세션 계층(Session Layer) : 송/수신 측 간의 관련성을 유지하고 대화 제어를 담당함
(대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능)
6. 표현 계층(Presentation Layer) : 응용 계층으로부터 받은 데이터를 세션 계층에 맞게, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능
(코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포맷) 변환, 문맥 관리 기능
7. 응용 계층(Application Layer) : 사용자(응용 프로그램)가 OSI 환경에 접근할 수 있도록 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공함
7. 다음 객체지향 추상화에 대한 설명 중 괄호 안에 들어갈 알맞은 용어를 적으시오.
( A ) 은/는 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고, ( B ) 은/는 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
답 : A - Aggregation, B - Generalization
관계 종류
- 연관(Association) 관계 : 2개 이상의 사물이 서로 관련되어 있음을 표현함
- 집합(Aggregation) 관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계를 표현함
- 포함(Composition) 관계 : 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현함
- 일반화(Generalization) 관계 : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
- 의존(Dependency) 관계 : 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현함
- 실체화(Realization) 관계 : 사물이 할 수 있거나 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화 할 수 있는 관계를 표현함
8. 다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞은 보기를 고르시오.
식별자 ID | 테스트 항목 | ( ) | ( ) | ( ) |
DS-45S-21 | 로그인 기능 | 사용자 초기 화면 | 사용자 아이디 (Test11) 비밀번호 (test@#@!#) |
로그인 성공 |
DS-45S-25 | 로그인 기능 | 사용자 초기 화면 | 사용자 아이디(Test11) 비밀번호 ("") |
로그인 실패 |
답 : 테스트 조건, 테스트 데이터, 예상 결과
테스트 케이스 : 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합이다.
테스트 케이스 작성 절차
1. 테스트 계획 검토 및 자료 확보
2. 위험 평가 및 우선순위 결정
3. 테스트 요구사항 정의
4. 테스트 구조 설계 및 테스트 방법 결정
5. 테스트 케이스 정의
6. 테스트 케이스 타당성 확인 및 유지보수
테스트 케이스 구성요소 : 식별자, 테스트 항목, 입력명세, 출력명세, 환경설정, 특수절차요구, 의존성 기술
9. 아래에서 설명하는 테스트 기법은 무엇인가?
입력 자료 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석 후 효용성이 높은 테스트 케이스를 선정해서 테스트하는 기법
답 : 원인 결과 그래프(Cause Effect Graph)
- 블랙박스 테스트
1. 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다.
2. 사용자의 요구사항 명세를 보면서 테스트하는 것으로, 주로 구현된 기능을 테스트한다.
3. 소프트웨어 인터페이스에서 실시되는 테스트이다.
- 블랙박스 테스트 종류
1. 동치 분할 검사 : 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 기번
2. 경계값 분석 : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법으로, 입력 조건의 경계값을 테스트 케이스로 선정하여 검사함
3. 원인-효과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
4. 오류 예측 검사 : 과거의 경험이나 확인자의 감각으로 테스트하는 기법
5. 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
10. 다음에서 설명하는 블록 암호 알고리즘을 적으시오.
이것은 미국 NBS(National Bureau of Stamdards, 현재 NIST)에서 국가 표준으로 정한 암호 알고리즘으로, 64비트 평문을 64비트 암호문으로 암호하는 대칭키 암호 알고리즘이다. 키는 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트이다. 현재는 취약하여 사용되지 않는다.
답 : DES
- 개인키(대칭, 단일키) 암호화 기법 : 동일한 키로 데이터를 암호화하고 복호화한다.
개인키 암호화 기법은 한번에 하나의 데이터 블록을 암호화 하는 블록암호화 방식과 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 하는 스트림 암호화 방식으로 구분한다.
* 블록암호화 방식
1. SEED : 1999년 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
블록 크기는 128비트이며, 키 길이에 따라 128, 256으로 분류
2. ARIA : 2004년 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
블록 크기는 128비트이며, 키 길이에 따라 128, 192, 256으로 분류
3. DES : 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
블록 크기는 64비트이며, 키 길이는 56비트
4. AES : 2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
블록 크기는 128비트이며, 키 길이에 따라 128, 192, 256으로 분류
* 스트림 암호화 방식
1. LFSR
2. RC4
- 공개키(비대칭) 암호화 기법 : 데이터를 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 비밀리에 관리
1. RSA : 1978년 MIT의 라이베스트, 샤미르. 애들먼에 의해 제안된 공개키 암호화 알고리즘
소인수 분해 문제를 이용한 공개키 암호화 기법에 널리 사용되는 암호화 알고리즘
- 해시 기법(단방향) : 해시는 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
종류 : SHA 시리즈, MD5, N-NASH, SNEFRU
11. 다음 JAVA 코드에 대한 알맞은 출력값을 쓰시오.
public class testco {
public static void main(String[] args) {
int a = 3, b = 4, c = 3, d = 5;
if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
a = b + c;
if(7 == b ^ c != a) {
System.out.println(a);
} else {
System.out.println(b);
}
} else {
a = c + d;
if(7 == c ^ d != a) {
System.out.println(a);
} else {
System.out.println(d);
}
}
}
}
답 : 7
12. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.
#include
int main(){
int *arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("%dn", *arr[1] + **arr + 1);
}
답 : 37
13. 다음은 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.
답 : 4
14. 다음 파이썬 코드의 알맞는 출력값을 쓰시오.
a,b = 100, 200
print(a==b)
답 : FALSE
15. 다음은 UML의 다이어그램에 대한 설명이다. 어떤 다이어그램에 대한 설명인가?
이 다이어그램은 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다. 또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다. 이 다이어그램은 속성(attribute)과 메서드(method)를 포함한다.
답 : 클래스 다이어그램
구분 | 다이어그램 | 설명 |
구조적(Structural) 다이어그램 | class | 1. 시스템 내 클래스들의 정적 구조를 표현 2. 클래스는 객체들의 집합으로 속성(Attribute)과 동작(Behavior)으로 구성 |
object | 1. 클래스의 여러 객체 인스턴스(Instance)를 나타내는 대신 실제 클래스를 사용 2. 관계 있는 모든 인스턴스를 표현 |
|
component | 1. 코드 컴포넌트에 바탕을 둔 코드의 물리적 구조 표현 2. 컴포넌트는 논리적 클래스 혹은 클래스 자신의 구현에 대한 정보를 포함하고 실질적인 프로그램 작업에 사용 |
|
depolyment | 1. 시스템 하드웨어와 소프트웨어 간의 물리적 구조를 표현하며 실질적인 컴퓨터와 디바이스 간의 관계를 표현하는데 이용 2. 컴포넌트 사이의 종속성을 표현 |
|
package | 1. 시스템 계층적인 구조 표현 2. 클래스들로 이루어진 패키지와 그들 간의 의존 관계를 보여줌 |
|
composite Structural | 1. 전체 클래스 안에 각 컴포넌트 클래스 표현 2. 클래스 내부 구조 파악에 용이 |
|
행위(behavioral) 다이어그램 | usecase | 1. 사용자의 입장에서 본 시스템의 행동 표현 2. 유즈케이스는 시스템의 기능적인 요구를 정의 |
state | 1. 클래스의 객체가 가질수 있는 모든 가능한 상태와 상태간의 전이를 표현 2. 진입조건, 탈출조건, 상태전이에 필요한 사건 등 자세한 사항이 기술 3. 설계단계에서 클래스 객체의 동적인 행동방식을 표현하는데 사용 |
|
activity | 1. 행위의 순서적 흐름을 표시 2. 순서도나 병렬적인 처리를 요하는 행위를 표현할 때 사용 |
|
상호작용(interaction) 다이어그램 | sequence | 1. 객체와 객체간의 상호작용을 메시지 흐름으로 표시 2. 오브젝트 사이에 메시지를 보내는 시간 또는 순서를 보여주기 위해 사용 |
communication | 1. 상호작용에 참여하는 객체/컴포넌트 간의 관계를 명시적으로 표현 | |
interaction overview | 1. 활동 다이어그램과 시퀀스 다이어그램 혼합 2. 상호작용에 대한 제어흐름을 표현 |
|
timing | 1. 시간적 제약과 객체상태 변화를 표현 2. 인스턴스간의 상태전이와 상호작용을 시간 제약으로 표현 |
16. 다음 보기에서 설명하는 객체지향 디자인 패턴은 무엇인가?
부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위)클래스가 어떤 객체를 생성할 지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.
답 : GoF 디자인패턴
- 디자인 패턴 : 소프트웨어 공학론 안의 좋은 코드(객체 간 응집도는 높이고, 결합도는 낮게 하여 요구사항 변경 시, 코드 변경을 최소화 할 수 있는 코드)를 설계하기 위한 일종의 설계 방법론
- 디자인 패턴 종류
1. 생성 패턴 : 객체 인스턴스 생성을 위한 클래스 정의와 객체 생성 방식의 구조화 캡슐화 방법 등을 제공
종류 | 개념 |
Factory method | 객체를 생성하기 위한 인터페이스를 따로 정의하며 어떤 클래스를 객체를 생성하는 일을 서브 클래스가 담당토록 하는 패턴 |
Singleton | 지정한 클래스이 인스턴스가 반드시 한개만 존재하도록 하는 패턴 |
Abstract factory | 구체적인 클래스를 지정하지 않고 관련성을 갖는 객체들의 집합을 생성하거나 서로 독립적인 객체들의 집합을 생성 할 수 있는 인터페이스를 제공하는 패턴 |
Builder | 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리해 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 |
Prototype | 원본이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 견본을 복사해서 새로운 객체를 생성하는 패턴 |
2. 구조 패턴 : 다른 기능을 가진 객체 간에 협력이 필요할 때 객체들을 조직화 하는 방법과 기능을 구현하기 위해 객체를 구성하는 방식을 제공
종류 | 개념 |
Adaptor | 클래스의 재사용성을 높이기 위해 클래스 간의 기능을 변화 제공 하여 호환성을 확보하는 패턴 |
Bridge | 인터페이스(API)가 서로 다른 클래스를 연결하는 패턴으로 기능의 계층과 구현의 계층을 연결시키는 패턴 |
Composite | 복잡한 객체 구조를 표현하여 객체 집합 속에 또 다른 객체 집합을 갖는 패턴 |
Decorator | 새로운 기능이 추가될 때마다 새로운 객체를 만들고, 이전 객체의 기능은 새로운 객체 내부에서도 그대로 유지, 보장해주는 패턴 |
Facade | 서브 시스템이 복잡할 경우 간단한 인터페이스를 통해 서브시스템의 주요기능을 사용할 수 있는 패턴 |
Fly weight | 인스턴스를 가능한 한 공유시켜 불필요한 생성을 하지 않도록 하는 패턴 |
Proxy | 객체 접근을 제어하려는 목적으로 인터페이스 역할을 하는 객체(Proxy Object)를 사용하여 제어하는 패턴 |
3. 행위 패턴 : 객체 간의 기능을 분배하는 일과 같은 로직 수행에 주로 이용하여 객체 간 연동에 대한 유형을 제공
종류 | 설명 |
Template method | 상위 클래스에서 처리의 흐름을 정하고 하위 클래스에서 구체적인 내용을 재정의 하는 패턴 |
Interpreter | 간단한 언어의 문법을 정의하는 방법과 그 언어로 문장을 구성하는 방법, 문장을 해석하는 방법을 제시하는 패턴 |
Iterator | 집합 객체 요소들의 내부 표현 방식을 공개하지 않고, 순차적으로 접근하는 구조를 제공하는 패턴 |
Command | 요청 자체를 객체화(캡슐화)하고 매개변수(파라미터)를 추가하여 여러가지 요구사항을 추가 할 수 있는 패턴(로그기록, 작업취소 지원) |
Chain of Responsibility | 요청을 처리할 수 있는 기회를 하나 이상의 객체에 부여함으로써 객체 간의 결합도를 없애려는 패턴 |
State | 상태를 일반적인 데이터 변수로 두지 않고 객체로 만들어 그 상태에 따른 행동들을 분리한 패턴 |
Strategy | 상황에 따라 알고리즘이 변경할 필요가 있을 때, 각 알고리즘 클래스들을 공통된 인터페이스에 맞게 구현하여 다형성을 활용하는 패턴 |
Mediator | 중재자를 통해 한 집합에 속해있는 객체들의 상호작용을 캡슐화하는 패턴 |
Memento | 어떤 시점에서의 객체 상태를 저장해 두었다가 필요 시 객체를 그 시점의 상태로 되돌리는 패턴 |
Visitor | 데이터 구조 안을 돌아다니는 주체인 '방문자'를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡김으로서 기능 추가 시 유연성을 제공하는 패턴 |
Observer | 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 통지되고 필요 시 자동으로 내용이 갱신되는 패턴 |
17. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.
#include
struct jsu {
char nae[12];
int os, db, hab, hhab;
};
int main(){
struct jsu st[3] = {{"데이터1", 95, 88},
{"데이터2", 84, 91},
{"데이터3", 86, 75}};
struct jsu* p;
p = &st[0];
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
printf("%dn", (p+1)->hab + (p+1)->hhab);
}
답 : 501
18. 다음은 파일 구조(File Structures)에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식으로 접근 방식에 따라 방식이 달라진다.
접근 방법 중, 레코드들을 키-값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 ( )을 구성하여 편성하는 방식이 있으며, 레코드를 참조할 때는 ( ) 이 가르키는 주소를 사용하여 직접 참조할 수 있다. 파일 구조에는 순차 접근, ( ) 접근, 해싱 접근이 있다.
답 : 인덱스(색인)
19. 다음 설명에 대한 알맞는 답을 영문약어로 작성하시오.
( )는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말한다. 이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만 ( )에서는 키보드 뿐만 아니라 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행한다.
화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식이다.
대표적으로는 마이크로소프트의 Windows, 애플의 Mac운영체제 등이 있다.
답 : GUI
사용자 인터페이스(UI) : 사용자와 시스템 간의 상호작용이 원활하게 이루어지고록 도와주는 장치나 소프트웨어를 의미
CLI(Command Line Interface) : 명령과 출력이 텍스트 형태로 이루어지는 인터페이스
GUI(Graphical User Interface) : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작한는 인터페이스
20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
( A ) 방식은 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 ( B ) 가 필요하다. ( C ) 는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.
답 : A - 상향식 / B - 테스트 드라이버 / C - 테스트 스텁
1. 하향식 통합 방식 : 메인 제어 모듈(프로그램)로부터 아래 방향으로 제어의 경로를 따라 하향식으로 통합하면서 테스트를 진행하는 테스트 방법이다. 모듈부터 통합하며 시험시 테스트 Stub가 필요한 테스트 방법이다.
2. 상향식 통합 방식 : 애플리케이션 구조에서 최하위 레베의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행하는 테스트 방법이다. 최하위 모듈 통합 후 위층의 모듈을 추가 테스트 하는 방법으로 테스트 드라이버가 필요한 테스트 방법이다.