포스트

모의고사 08회

Q. 재난 및 재해 상황을 대비하여 기업의 비지니스 연속성을 유지하기 위한 업무 복구에 대한 계획을 ()(이)라고 부른다. () 안에 들어갈 가장 적합한 용어를 쓰시오.

BCP(Business Continuity Planning; 업무연속성 계획)

  • 기업의 비지니스 연속성 관리를 위한 용어는 다음과 같다.

    용어설명
    BCP(Business Continuity Planning)재난 및 재해 상황을 대비하여 기업의 비지니스 연속성을 유지하기 위한 업무 복구에 대한 계획
    BIA(Business Impact Analysis)장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비지니스 영향 분석
    RTO(Recovery Time Objective)업무중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간
    RPO(Recovery Point Objective)업무중단 시점부터 데이터가 복구되어 다시 정상 가동될 때 데이터의 손실 허용 지점

Q. 칩 설계회사인 ARM에서 개발한 기술로, 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리하는 하드웨어 기반의 보안 기술은 무엇인가?

트러스트 존(Trust Zone)

  • 칩 설계회사인 ARM에서 개발한 기술로, 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리하는 하드웨어 기반의 보안 기술은 트러스트 존이다.

Q. Secure SDLC 모델 및 방법론 중에서 ( ① )은/는 실무적으로 검증된 개발 보안 방법론 중 하나로써 SW 보안의 모범 사례를 SDLC(Software Development Life Cycle)에 통합한 소프트웨어 개발 보안 생명주기 방법론이고, ( ② )은/는 마이크로소프트사가 2004년 이후 자사의 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안강화 프레임워크로, 개발 중인 제품이 보안 위협에 대해 얼마나 강인한가를 측정하는 모델이다. () 안에 들어갈 용어를 쓰시오.

Seven TouchPoints, MS SDL(Security Development Lifecycle)

  • Secure SDLC 모델 및 방법론은 다음과 같다.
    • BSIMM(Building Security In Maturity Model)
      • 미국 국토안보국의 지원을 받아 수행된 소프트웨어 보증(Software Assurance; SwA) 프로젝트의 결과물 중 하나
      • 보안 활동의 성숙도 수준을 영역별로 측정함으로써 소프트웨어 개발에 필요한 보안 능력 향상을 목표로 하는 개발 프레임워크
    • Open SAMM(Software Assurance Maturity Model)
      • OWASP에서 개발한 개방형 보안 프레임워크
      • 개방을 원칙으로 소규모, 중규모, 대규모로 점진적인 확대가 가능한 융통성 있는 프레임워크
      • BSIMM과는 달리 설계 리뷰와 코드 리뷰, 그리고 보안 테스팅을 3개의 중요한 검증 활동으로 정의함으로써 이들 활동 간의 연계성 강조
    • Seven TouchPoints
      • 실무적으로 검증된 개발 보안 방법론 중 하나로써 SW 보안의 모범 사례를 SDLC(Software Development Life Cycle)에 통합한 소프트웨어 개발 보안 생명주기 방법론
    • MS SDL(Security Development Lifecycle)
      • 마이크로소프트사가 2004년 이후 자사의 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안강화 프레임워크
      • SDL은 개발 중인 제품이 보안 위협에 대해 얼마나 강인한가를 측정하기 위해 동일한 제품에 대해 ‘pre-SDL’과 ‘post-SDL’의 두 개의 버전으로 테스트
    • OWASP(The Open Worldwide Application Security Project) CLASP
      • 개념 관점, 역할 기반 관점, 활동평가 관점, 활동구현 관점, 취약성 관점 등의 활동 중심, 역할 기반의 프로세스로 구성된 보안 프레임워크로 이미 운영 중인 시스템에 적용하기 쉬운 보안 개발방법론
      • 프로그램 설계나 코딩 오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록을 제공

Q. ( ① )은/는 모든 하드웨어가 가상화되어 가상 자원의 풀(Pool)을 구성하고, 데이터 센터 전체를 운영하는 소프트웨어가 필요한 기능 및 규모에 따라 동적으로 자원을 할당, 관리하는 역할을 수행하는 데이터 센터이고, 구성요소 중에서 ( ② )은/는 서버와 전통적인 스토리지 장치에 장착된 이질적이고 연결되어 있지 않은 물리적 디스크 드라이브를 하나의 논리적인 스토리지로 통합한 가상화 스토리지 기술이다. () 안에 들어갈 용어를 쓰시오.

SDDC(Software-Defined Data Center), SDS(Software-Defined Storage)

  • 모든 하드웨어가 가상화되어 가상 자원의 풀(Pool)을 구성하고, 데이터 센터 전체를 운영하는 소프트웨어가 필요한 기능 및 규모에 따라 동적으로 자원을 할당, 관리하는 역할을 수행하는 데이터 센터는 SDDC이다.
  • SDDC의 구성요소는 다음과 같다.

    구성요소설명
    SDC(Computing)소프트웨어 정의 컴퓨팅 환경으로 서버의 CPU, 메모리에 대해서 소프트웨어 명령어 기반으로 제어할 수 있는 컴퓨터
    SDN(Networking)개방형 API를 통해 네트워크의 트래픽 전달 동작을 소프트웨어 기반 컨트롤러에서 제어/관리하는 가상화 네트워크 기술
    SDS(Storage)서버와 전통적인 스토리지 장치에 장착된 이질적이고 연결되어 있지 않은 물리적 디스크 드라이브를 하나의 논리적인 스토리지로 통합한 가상화 스토리지 기술
    프로비저닝SDDC 자원에 대한 할당관리 기술
  • Software-defined Data Center(SDDC)
    • 데이터센터의 모든 인프라인 네트워크, 스토리지, 컴퓨터, 보안 등이 가상화 되어 서비스로서 제공되는 차세대의 핵심적인 데이터센터 솔루션이다.
    • 소프트웨어로 표현되는 논리적 컴퓨팅, 네트워크, 스토리지 및 기타 리소스의 프로그래밍 방식 추상화이다. 이러한 리소스는 워크로드 요구 사항에 따라 동적으로 검색, 프로비저닝 및 구성된다. 따라서 SDDC는 워크로드의 정책 중심의 조정을 가능 하게하고 소비되는 자원의 측정 및 관리를 가능하게 한다.

    이미지


Q. 다음은 [학생] 테이블이다. 3학년과 4학년 학생의 학번, 이름을 검색하는 SQL 문을 IN 키워드를 사용하여 작성하시오.

1
2
3
SELECT 학번, 이름
FROM 학생
WHERE 학년 IN (3, 4);

[학생]

학번이름학년
200101윤봉길1
200102안중근3
200103이순신2
200104홍범도3
200105김좌진4
200106유관순3
200107이봉창2
  • WHERE절 조건에서는 비교, 범위, 집합, 패턴, NULL, 복합조건이 있고, 여러 값을 찾을 때 IN을 사용한다.
  • IN 문법은 다음과 같다.

    1
    
      컬럼 IN (1, 2, ...)
    

Q. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

25

1
2
3
4
5
6
7
8
9
10
i=0
j=0
sum=0
total=0
for i in range(0, 2):
	for j in range(0, 5):
		sum=i+j
		total+=sum

print(total)
  • 바깥 for 문에서는 i가 0부터 1까지 증가하며 반복한다. range에서 0은 시작 값, 2는 끝값 +1이다.
  • 안쪽 for 문에서는 j가 0부터 4까지 증가하며 반복한다. range에서 0은 시작 값, 5는 끝값 +1이다.
  • sum=i+j에서 i와 j 값을 더한 값을 sum에 대입한다.
  • total에는 sum 값을 누적해서 더한다.
  • for 문이 종료되고 total을 화면에 출력한다.
  • 아래 표와 같이 i, j, sum, total 값이 변화한다.

    ijsumtotal
    0000
    0111
    0223
    0336
    04410
    10111
    11213
    12316
    13420
    14525

Q. 인증기관에서 공개키 암호 방식 기반의 전자 서명된 인증서를 발급받아 네트워크상에서 안전하게 비밀통신을 가능하도록 하는 기술은?

공개키 기반구조(PKI)

  • PKI는 패키징 도구 구성 기술 중 하나이다.
  • 패키징 도구 구성 내부 세부 기술은 다음과 같다.
    • 공개키 기반구조(PKI; Public Key Infrastructure)
      • 인증기관(CA, Certificate Authority)에서 공개키 암호 방식 기반의 전자서명된 인증서를 발급받아 네트워크상에서 안전하게 비밀통신을 기능하도록 하는 기술
      • PKI는 공개 키 알고리즘을 통한 암호화 및 정보 통신에 필요한 인증을 제공하기 위한 복합적인 보안 환경을 의미한다. 즉, 암호화와 복호화 키로 구성된 공개키를 이용해 송수신 데이터를 암호화하고 디지털 인증서를 통해 사용자를 인증하는 시스템이다. 모든 웹 브라우저에서 사용되는 PKI는 VPN 기술과 더불어 가장 일반적이고 안전한 인터넷 보안 방식 중 하나이다.
      • PKI는 공개 키와 개인 키라는 두 가지 유형의 암호화 키를 사용하는데, 두 가지 종류의 키가 함께 인터넷에서 통신의 기밀성, 무결성 및 신뢰성을 보장한다. PKI는 신뢰할 수 있는 기관에서 발급한 디지털 인증서를 사용하는데, 이를 인증 기관(CA)이라고 한다. 디지털 인증서는 소유자의 공개 키와 기타 식별 정보를 보관하고, 사용자의 진위를 확인하며, 공개 키가 유효한지 확인한다.
      • PKI는 온라인에서 디지털 정보를 안전하게 교환하는데 필요한 정책, 절차 및 기술의 조합이다. 알고리즘을 사용하여 메시지와 파일을 안전하게 보호하고 의도된 수신자에게만 전달되도록 한다.
    • 대칭 및 비대칭 암호화
      • 대칭 암호화
        • 암호화와 복호화를 위해 동일한 키를 사용하는 암호화 방식
        • 대칭 암호화는 발신자와 수신자가 동일한 개인 암호화 키를 사용하여 암호화된 메시지를 디코딩하고 인코딩하는 경우를 말한다. 단점은 당사자끼리 키를 공유해야 한다는 것이다. 보안 터널이 설정되지 않은 경우, 해커가 중간에서 키를 가로채 메시지를 해독할 수 있다.
      • 비대칭 암호화
        • 두 개의 키(공개키와 개인키)가 메시지를 암호화 방식
        • 공개키는 발신자와 수신자 모두 동일한 키를 가지고 있지만 개인키는 각 당사자가 고유한 키를 가지고 있다는 점에서 차이가 있다. 이는 통신에 참여한 발신자와 수신자가 서로의 개인 키를 알지 못한다는 것을 의미한다. 이런 경우에는 개인 키와 공개 키를 모두 가진 사용자만 메시지에 액세스할 수 있다. 메시지가 전송되던 중 다른 사용자의 손에 들어간다고 해도, 공개 키만 가지고 있는 해커가 정보에 액세스할 수 없게 된다. 고유한 개인키를 가지고 있는 사람만이 암호를 해독할 수 있다.
    • 전자 서명
      • 서명자를 확인하고 서명자가 해당 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보
      • 참고로, 개인키와 공개키의 위치를 바꿔서 실행하면 모두가 알고 있는 ‘전자서명’이 된다.
  • 인증 기관이라고도 하는 CA(Certificate Authority)는 웹사이트, 이메일 주소, 회사 또는 개인의 디지털 신원을 확인하는 엔터티이다.

Q. 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위주한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 기법은 무엇인가?

ARP 스푸핑(ARP Spoofing)

  • 네트워크 공격은 다음과 같다.
    • IP 스푸핑(IP Spoofing)
      • 타깃 시스템의 정보를 빼내기 위해 침입자가 인증된 시스템으로 속여 자신의 패킷 헤더를 인증된 호스트의 IP 주소로 위조하여 타깃에 전송하는 공격 기법
    • ARP 스푸핑(ARP Spoofing)
      • ARP 메시지를 이용하여 상대방의 데이터 패킷을 중간에 가로채는 중간자 공격 기법(MITM: Man In The Middle)
      • ARP 프로토콜의 허점을 이용하여 자신의 MAC(Media Access Control) 주소를 다른 컴퓨터의 MAC인 것처럼 속임
    • ICMP Redirect 공격
      • ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜) Redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격 기법
    • 트로이 목마(Trojan Horses)
      • 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램
  • ARP(Address Resolution Protocol): 호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 변환해주는 프로토콜
  • 물리적 주소(MAC Address): 랜카드에 부여한 고유 번호
  • 스푸핑(가로채기): 권한을 획득하고 정보를 가로채는 공격기법
  • 스누핑(훔쳐보기): 정보를 염탐하여 불법적으로 얻는 공격 기법
  • 스니핑(훔쳐듣기): 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나로 수동적 공격에 해당함
  • 스머핑: IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 기법

Q. ESP(Encapsulating Security Payload)에 대해서 서술하시오.

ESP는 IPSec에서 암호화 알고리즘을 활용하여 캡슐화 기반의 페이로드 기밀성을 제공하는 프로토콜이다.

  • IPSec의 AH와 ESP 주요 기능은 다음과 같다.
    • AH(Authentication Header, 인증 헤더)
      • 강력한 무결성, 데이터 인증을 제공하는 프로토콜
      • 발신자가 보낸 콘텐츠를 그대로 수신자가 수신 가능
    • ESP(Encapsulation Security Payload)
      • 암호화 옵션을 사용하여 IP 페이로드를 암호화하는 프로토콜
      • 캡슐화 기반의 페이로드 기밀성을 제공
  • 페이로드(payload)는 전송되는 ‘순수한 데이터’를 뜻한다. 페이로드는 전송의 근본적인 목적이 되는 데이터의 일부분으로 그 데이터와 함께 전송되는 헤더, 메타데이터와 같은 부분은 제외한다. 즉, 페이로드는 전송 행위의 본래 의도를 뜻한다.

Q. 관계 데이터베이스인 테이블 R1에 대해 학년 값이 중복되지 않도록 출력하는 쿼리를 작성하시오.

1
2
SELECT DISTINCT 학년
FROM R1;

[R1]

학번이름학년학과주소
1000홍길동1컴퓨터공학서울
2000김철수1전기공학경기
3000강남길2전자공학경기
4000오말자2컴퓨터공학경기
5000장미화3전자공학서울

[결과]

학년
1
2
3
  • DISTINCT의 경우 동일한 튜플을 제거하고 검색한다.(중복 제거)
  • SELECT DISTINCT 학년 FROM R1;의 경우 R1 테이블에서 학년을 출력할 때 튜플이 중복된 경우를 제거한다.

Q. 다음과 같이 릴레이션을 변경했을 때 몇 정규형을 만족하는지 쓰시오.

1정규형

국가도시
대한민국서울, 부산
미국워싱턴, 뉴욕
중국베이징
국가도시
대한민국서울
대한민국부산
미국워싱턴
미국뉴욕
중국베이징
  • 도메인은 하나의 값이어야 1정규형을 만족하는데, {서울, 부산}과 같이 한 도메인에 여러 개의 값이 있는 경우 1정규형을 만족하지 않는다.

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
void main() {
	int i, j;
	int sum=0;
	int arr[2][5];
	
	for(i=0; i<2; i++) {
		for(j=0; j<5; j++) {
			if(i%2 ==0 ) {
				arr[i][j] = i+j;
			}
			else {
				arr[i][j] = i-j;
			}
		}
	}
	
	for(i=0; i<2; i++) {
		for(j=0; j<5; j++) {
			sum += arr[i][j];
		}
	}
	
}
  • for 반복문에서 사용할 정수형 변수 i, j를 선언한다.
  • 값을 누적할 정수형 변수 sum을 선언하고 0으로 초기화한다.
  • 값을 저장할 정수형 변수 배열을 2행 5열로 선언한다.
  • 상단의 2중 for 문에서 배열에 값을 넣는다. i가 2로 나눈 나머지가 0과 같으면 i와 j를 더한 값을 배열에 넣고 다를 경우에는 i와 j를 뺀 값을 넣는다.
  • 하단의 2중 for 문에서 sum 변수에 배열의 값을 누적합으로 계산하고 for 문이 완료되고 sum 변수를 화면에 출력한다.
ijarr[i][j]sum
0000
0111
0223
0336
04410
10111
11011
12-110
13-28
14-35

Q. 다음은 형상 관리의 절차이다. ()에 들어갈 용어를 쓰시오.

형상 감사, 형상 식별

  • ( ① ): 소프트웨어 베이스라인의 무결성을 평가하고 베이스라인 변경 시 요구사항 일치 여부를 검토
  • ( ② ): 형상 관리 대상을 정의 및 식별하는 활동으로 추적성 부여를 위해 ID와 관리번호를 부여
  • 형상 관리의 절차는 다음과 같다.
    • 형상 식별
      • 형상 관리 대상을 정의 및 식별하는 활동
      • 추적성 부여를 위해 ID와 관리번호를 부여
      • 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적
    • 형상 통제
      • 형상 항목의 버전 관리를 위한 형상통제위원회(CCB: Configuration Control Board) 운영
      • 변경요구 관리, 변경제어, 형상 관리 등 통제 지원
      • 베이스라인에 대한 관리 및 형상 통제 수행 가능
      • CCB 역할: • 형상항목 결정 • 베이스라인 수립 여부 결정 • 승인된 변경에 대한 책임 및 보증 • 베이스라인의 변경 요청이 필요한 경우, 이에 대한 검토 및 승인 • 베이스라인 라이브러리에 산출물들의 완성을 승인
    • 형상 기록
      • 소프트웨어 향상 및 변경관리에 대한 각종 수행결과를 기록
      • 형상결과 보고서 작성
    • 형상 감사
      • 소프트웨어 베이스라인의 무결성 평가
      • 베이스라인 변경 시 요구사항과 일치 여부 검토
      • 형상 담당자(Configuration Manager)가 실시

이미지

  • 형상이란?
    • 소프트웨어 개발 산출물(문서나 소스 코드 등)이 배치되어 있는 배열
  • 형상 관리란?
    • 정의
      • 형상 항목을 식별하여 그 기능적 물리적 특성을 문서화하고,
      • 그러한 특성에 대한 변경을 제어하고,
      • 변경 처리 상태를 기록 및 보고하고,
      • 명시된 요구사항에 부합하는지 확인하는 기술적이고 관리적인 감독, 감시 활동
    • 목적
      • 프로젝트의 생명 주기 동안 제품의 무결성(integrity)과 변경에 대한 추적성 (traceability)을 확보하기 위한 활동
  • 형상 식별
    • 형상 관리를 할 항목을 식별하는 것
  • 형상 통제(제어)
    • 형상에 대한 변경 요청이 있을 경우, 변경 여부와 변경 활동을 통제하는 것
  • 형상 기록(상태 보고)
    • 형상 변경에 대한 내용을 기록하고 보고하는 것
  • 형상 감사
    • 형상 항목이 요구사항에 맞도록 잘 변경 되었는지 확인하는 것

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

Soojebi 2021

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public Parent {
	int year = "2020";
	String name = "Parent";
	public Parent(int year, String name) {
		this.year=year;
		this.name=name;
	}
	public void show() {
		System.out.println(name+" "+year);
	}
}
class Child extends Parent {
	public Child(int year, String name) {
		super(year, name);
	}
	public void show() {
		super.show();
	}
}
public class Soojebi {
	public static void main(String[] args) {
		Child a = new Child(2021, "Soojebi");
		a.show();
	}
}
  • Parent 클래스와 Child 클래스는 상속 관계이다.
  • Parent 클래스는 멤버 변수로 year와 name을 가지고 “2020”, “Parent”로 초기화한다.
  • Parent 생성자 메서드에서 year, name을 파라미터로 전달받아서 this.year, this.name에 대입한다.
  • show 메서드에서 name과 year를 화면에 출력한다.
  • Child 클래스의 Child 생성자에서 super을 호출한다.
  • Child 클래스의 show 메서드에서 super.show()를 호출한다.
  • main 메서드에서 Child() 생성자에서 객체를 생성하고 a.show에서 값을 출력하여 “Soojebi 2021”를 화면에 출력한다.

Q. 다음 프로그램에 대하여 100% 문장 커버리지를 만족하는 테스트 케이스를 [보기]에서 고르시오.

TC1

[프로그램]

1
2
3
4
5
6
IF ((X > 2) AND (Y == 2))
	Z = Z * X
END
IF ((X == 3 ) OR (Z > 4))
	Z = Z + 1
END 
  • 구문 커버리지(=문장 커버리지(Statement Coverage))는 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지 테스트이다.
  • 구문 커버리지는 조건문 결과와 관계없이 구문 실행 개수로 계산한다.
  • 문장 커버리지(%)=테스트 케이스 집합에 의해 (실행된 문장의 수) / (전체 실행 가능한 프로그램 문장의 수) x 100
  • TC1일 경우, 4개의 문장을 모두 수행하는 100% 문장 커버리지를 만족할 수 있다.

Q. 다음은 C언어에서 팩토리얼을 구하는 함수를 구현하려고 한다. 빈칸에 알맞은 코드를 작성하시오.

n <= 1 또는 n == 1, n*fn(n-1)

1
2
3
4
5
6
7
8
9
10
11
12
#include <stuio.h>

int fn(int n) {
	if(  )
	  ruturn 1;
	else
	  return (  );
}

void main() {
	printf("%d", fn(5));
}
  • 주어진 코드는 재귀호출 코드이다. 재귀호출은 호출한 함수에서 자기 자신을 호출하는 함수이다.

    fn 함수재귀호출된 fn 함수
    fn(5)5*fn(4) = 120
    fn(4)4*fn(3)
    fn(3)3*fn(2)
    fn(2)2*fn(1)
    fn(1)1*fn(0)
    fn(0)1

Q. UI 품질 요구사항(ISO/IEC 9126, ISO/IEC 25010 기반)에 대한 설명이다. () 안에 들어갈 품질 요구사항을 쓰시오.

신뢰성(Reliability), 고장 허용성(Fault Tolerance), 회복성(Recoverability)

  • ( ① )은/는 시스템이 일정한 시간 또는 작동되는 시간 동안 의도하는 기능을 수행함을 보증하는 품질 기준으로 세 가지의 부 특성이 존재한다.
  • 소프트웨어 결함으로 인한 고장을 회피할 수 있는 소프트웨어 능력인 성숙성(Maturity)과 소프트웨어 결함이나 인터페이스 오류 시에도 특정 수준 이상의 성능을 유지할 수 있는 능력인 ( ② ), 소프트웨어 고장 발생 시 영향을 받은 데이터를 복구하고 성능의 수준을 다시 확보할 수 있는 능력인 ( ③ )이/가 있다.
  • UI 품질 요구사항 중 신뢰성과 신뢰성의 부 특성인 성숙성, 고장 허용성, 회복성의 특성은 다음과 같다.

    구분설명
    신뢰성(Reliability)시스템이 일정한 시간 또는 작동되는 시간 동안 의도하는 기능을 수행함을 보증하는 품질 기준
    성숙성(Maturity)소프트웨어 결함으로 인한 고장을 회피할 수 있는 소프트웨어의 능력
    고장 허용성(Fault Tolerance)소프트웨어 결함이나 인터페이스 오류 시에도 특정 수준 이상의 성능을 유지할 수 있는 능력
    회복성(Recoverability)소프트웨어 고장 발생 시 영향을 받은 데이터를 복구하고 성능의 수준을 다시 확보할 수 있는 능력

Q. UML의 관계 중 ( ① )은/는 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계로 하나의 사물이 다른 사물에 포함되어 있는 관계를 표현하고, 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 빈 마름모를 연결하여 표현한다. 또한 ( ② )은/는 영구적이고, ( ① )보다 더 강한 관계로 구성되고, 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 채워진 마름모를 연결하여 표현한다. ( ② )은/는 ( ① )의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계로 표현한다. () 안에 들어갈 용어를 쓰시오.

집합 관계(Aggregation), 복합 관계(Composition)(=포함 관계)

  • 집합 관계와 복합 관계는 다음과 같은 관계를 갖는다.
    • 집합 관계(Aggregation)
      • 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계
      • 집합 관계는 하나의 사물이 다른 사물에 포함되어 있는 관계로 표현
      • 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 빈 마름모를 연결하여 표현
      • 예: 차와 엔진, 바퀴, 운전대
    • 복합 관계(Composition)
      • 영구적이고, 집합 관계보다 더 강한 관계로 구성
      • 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 채워진 마름모를 연결하여 표현
      • 복합 관계는 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에 영향을 미치는 관계를 표현
      • 복합 관계는 포함 관계라고도 함
      • 예: 엔진과 피스톤, 플러그

    이미지


Q. 단위 모듈의 구현 원리에는 4가지가 있다. 그중 ( ① )은/는 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐하는 원리이고, 분할과 정복(Divide & Conquer)은 복잡한 문제를 분해, 모듈 단위로 문제를 해결하는 원리이다. 또한 ( ② )은/는 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료구조의 표현 내역을 은폐하는 원리이고, 모듈 독립성(Module Independency)은 낮은 결합도와 높은 응집도를 가진다는 원리이다. () 안에 들어갈 원리를 쓰시오.

정보 은닉(Information Hiding), 데이터 추상화(Data Abstraction)

  • 단위 모듈은 다음 4가지 핵심 원리를 기반으로 구현한다.

    원리설명
    정보 은닉(Information Hiding)어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
    분할과 정복(Divide & Conquer)복잡한 문제를 분해, 모듈 단위로 문제 해결
    데이터 추상화(Data Abstraction)각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료구조의 표현 내역을 은폐
    모듈 독립성(Module Independency)낮은 결합도와 높은 응집도를 가짐

Q. 다음은 Java 언어 코드이다. 밑줄 친 곳에 들어갈 가장 적합한 답을 쓰시오.

3, 5

1
2
3
4
5
6
7
8
9
10
11
12
public class Soojebi {
	public static void main(String[] args) {
		int[][] arr = new int[][];
		for(int i=0; i<3; i++) {
			for(int j=0; i<5; j++) {
				arr[i][j] = i + j;
				System.out.printf("%d", arr[i][j]);	
			}
			System.out.println();
		}
	}
}

[출력 결과]

1
2
3
01234
12345
23456
  • int[][] arr = new int[][]에서 2차원 배열을 선언한다.
  • 2중 for 반복문을 수행한다. 바깥쪽 for 반복문에서는 i에 0을 대입하고 3보다 작을 때까지 1씩 증가한다.
  • 안쪽 for 반복문에서는 j에 0을 대입하고 보다 작을 때까지 1씩 증가한다. arr[i][j]에는 i와 j를 더한 값을 대입한다.
  • System.out.printf 메서드에서는 “%d” 포맷 스트링을 이용하여 arr[i][j] 값을 출력한다.
  • 안쪽 for 반복문이 종료되면 System.out.println();을 실행하여 화면 출력에 개행(줄바꿈)을 한다.
i000001111122222
j012340123401234
arr012341234523456


참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.