제2회 (2019-04)
지필평가
1. Java swing import 패키지 명
import java.awt.*;
import javax.swing.*;
2. javac, jdb, jdbc, applet?
- javac : JDK에 포함된 주요 자바 컴파일러, 자바 컴파일 명령어
- jdb : 자바 디버거(Java Debugger)
- jdbc : Java Database Connectivity ; 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
- applet : 자바 언어로 작성된 소프트웨어, 작은 크기로 네트워크에서의 전송에 적합하고 월드 와이드 웹(www)을 사용하여 배포 가능
3. 운영체제 자원관리에 대해 서술
- 프로세스 관리
: 프로세스 스케줄링 및 동기화 관리 담당
프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당 - 기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당
- 주변장치 관리 : 입/출력 장치 스케줄링 및 전반적인 관리 담당
- 파일 관리 : 파일의 생성과 삭제, 변경, 유지 등의 관리 담당
4. 테스트 관련
- 화이트박스 테스트 : 프로그램의 내부 로직(수행 경로 구조, 루프 등)을 보면서 테스트를 수행
- 블랙박스 테스트 : 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트(주로 구현된 기능을 테스트함)
- 단위 테스트(Unit Test)
: 개발 단계에서 각 모듈이 개발 완료되는 시점에서 단위 테스트를 시행하며 하나의 기능만이 잘 동작하는지를 확인하는 과정
- 통합 테스트(Integration Test)
: 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법- 목적 → 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인
- 상향식 통합(Bottom Up): 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 시작함.
- 장점 : 장애 위치 파악 쉬움, 모든 모듈 개발 시간 낭비 필요 없음
- 단점 : 중요 모듈들이 마지막 테스트될 수 있음, 이른 프로토타입 어려움
- 하향식 통합 (Top Down)
: 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하며 테스트를 진행함. 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 '깊이-우선' 또는 '너비-우선' 방식으로 통합됨.
- 장점 : 장애 위치 파악 쉬움, 이른 프로토타입 가능, 중요 모듈의 선 테스트 가능, 설계상 결함 조기 발견
- 단점 : 많은 스텁(stub)이 필요, 하위 모듈들의 불충분한 테스트 수행
5. DBMS의 DDL, DML, DCL
- DDL(Data Definition Language; 데이터 정의어)
: 데이터를 담는 그릇을 정의하는 언어(create, alter, drop, truncate) - DML(Data Manipulation Language; 데이터 조작어)
: 데이터를 조작하는 명령어(생성 insert, 조회 select, 변경 update, 삭제 delete) - DCL(Data Control Language; 데이터 제어어)
: 데이터베이스에서 데이터 이외의 오브젝트에 대해 조작할 때 사용하는 명령어
- 오브젝트 → 사용자 권한(접근 통제), 트랜잭션(안전한 거래 보장)
- DCL : GRANT, REVOKE / TCL : COMMIT, ROLLBACK, CHECKPOINT
면접 평가
1. 화면 설계 UI 요구사항
(1) 품질 요구사항 : 소프트웨어 아키텍처 품질 특성 도출은 아키텍처 방법론에 정의된 항목을 중심으로 작성
- 기능성(Functionality)
: 실제 수행 결과와 품질 요구사항과의 차이를 분석하고, 실제 사용 시 정확하지 않은 결과가 발생할 확률 등과 관련하여 시스템의 동작을 관찰하기 위한 품질 기준 - 신뢰성(Reliability) : 시스템이 일정한 시간 또는 작동되는 시간 동안 의도하는 기능을 수행함을 보증
- 사용성(Usablity) : 사용자와 컴퓨터 사이에 발생하는 어떠한 행위를 정확하고 쉽게 인지 가능함을 의미
- 효율성(Efficiency) : 할당된 시간에 한정된 자원으로 얼마나 빨리 처리하는가를 의미
- 유지 보수성(Maintainability) : 요구사항을 개선하고 확장하는 데 있어 얼마나 용이한가를 의미
- 이식성(Portability) : 다른 플랫폼(운영 체제)에서도 많은 추가 작업 없이 얼마나 쉽게 적용이 가능한가를 의미
2. 데이터베이스 기본키와 외래 키 특징 및 정의, 차이점
- 기본 키(Primary Key)
- 기본 키는 후보 키 중에서 선택한 주 키(Main Key)
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- null값을 가질 수 없음
- 기본 키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
- 외래 키(Foregin Key)
- 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본 키와 같은 R1 릴레이션 속성을 외래 키라고 함
- 외래 키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 중요한 도구
→ 부모 테이블의 기본키를 외래 키로 지정 가능 - null값이거나 부모 테이블의 기본키 값과 동일해야 함 (참조 무결성 제약조건)
3. 요구사항 분석 후 작성해야 할 문서 3개
- 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표
- 기법/산출물 : 유스케이스 기반 분석(UML, 모델링)
4. 공개키 암호화 방식에 대한 설명 및 보안 취약점(단점)
공개키 암호화 방식?
암호 방식 중 한 종류로 사전에 비밀키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 설계된 것
비대칭 암호라고 부르기도 함
- 암/복호화에 다른 암호키를 사용하기 때문에 대칭 키 암호화에 비해 속도가 현저히 느림
- 중간자 공격에 취약함
- MITM(Man In The Middle attack) : 해커가 중간에서 통신을 가로채어 수신자에게는 송신자인 척하고 송신자에게는 수신자인 척해서 양쪽의 공개키와 실제 암호화에 사용되는 대칭 키 모두 얻어내는 기법
- 이를 차단하기 위해 사이트 인증서라는 것이 존재함
- 비대칭형 암호 : 디피-헬만 키 교환, DSS, RSA 암호화 등
5. 보안기술 CAPCHA를 왜 사용하는가?
보안기술 CAPCHA? (Completely Automated Public Turing test to tell Computers and Humans Apart, 완전 자동화된 사람과 컴퓨터 판별, 캡차) : 어떠한 사용자가 실제 사람인지 컴퓨터 프로그램인지를 구별하기 위해 사용되는 방법
- 컴퓨터 프로그램이 변형시킨 이미지는 사람이 쉽게 인식할 수 있지만 컴퓨터 프로그램은 변형된 이미지를 인식하지 못하므로 테스트를 통과하지 못한다면 테스트 대상이 사람이 아님을 판정할 수 있음
- 흔히 웹사이트 회원가입을 할 때 뜨는 자동가입 방지 프로그램 같은 곳에 쓰임
6. 시스템 설계 시 작성해야 할 문서?
- 클래스 설계서
- 컴포넌트 설계서
- 인터페이스 설계서
- 아키텍처 설계서
- UI(화면) 설계서
- 데이터베이스 설계서
- ERD, 테이블 목록, 테이블 정의서
- 프로그램 목록
- 개발 표준 정의서
- 테스트 계획서(단계별 또는 총괄)
- 단위 테스트 케이스/시나리오 통합
- 테스트 케이스/시나리오
- 시스템 테스트 케이스/시나리오
7. JVM이 무엇?
자바 가상 머신(JVM; Java Virtual Machine)
: 컴파일된 자바 바이트 코드와 실제로 프로그램의 명령어를 실행하는 마이크로 프로세서(또는 하드웨어 플랫폼) 간에 인터페이스 역할을 하는 소프트웨어