1. 요구사항 분석 기법
- 기능 요구사항 : 수행될 기능과 관련된 입력과 출력 및 그들 사이의 처리 과정과 목표 시스템 구현을 위해 소프트웨어가 가져야 할 기능적 속성에 대한 요구사항
- 비기능 요구사항 : 시스템의 기능에 관련되지 않은 사항으로, 시스템이 정상적으로 작동하기 위한 성능, 보안과 같은 제약 조건에 대한 요구사항
[요구사항]
기능 요구사항(Functional requirements)
-시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
-시스템의 입력이나 출력으로 무엇이 포함되어야 하는지에 대한 사항
-시스템이 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항
-시스템이 반드시 수행해야 하는 기능
-사용자가 시스템을 통해 제공받기를 원하는 기능
비기능 요구사항(Non-functional requirements)
-품질이나 제약사항과 관련된 요구사항
-시스템 장비 구성 요구사항
-성능 요구사항
-인터페이스 요구사항
-데이터를 구축하기 위해 필요한 요구사항
-테스트 요구사항
-보안 요구사항
-품질 요구사항 : 가용성, 정합성, 상호 호환성, 대응성, 이식성, 확장성, 보안성 등
-제약사항
-프로젝트 관리 요구사항
-프로젝트 자원 요구사항
2. 데이터 모델
- 물리적 데이터 모델 : 데이터베이스 파일의 저장 구조 및 접근 경로를 결정하고, 테이블 정의서 등이 결과로 작성되는 단계
- 개념적 데이터 모델 : E-R다이어그램, 트랜잭션 모델링을 병행적으로 수행하는 단계
- 논리적 데이터 모델 : 테이블을 설계하고, 정규화 과정를 거치는 단계
[데이터 모델]
-현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
-데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위한 개념적 도구들로 구성되어 있다.
-데이터베이스 설계 과정에서 데이터의 구조(Schema)를 논리적으로 표현하기 위해 지능적 도구로 사용된다.
-데이터 모델 구성 요소 : 개체, 속성, 관계
-데이터 모델 종류 : 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
-데이터 모델에 표시할 요소 : 구조, 연산, 제약 조건
개념적 데이터 모델
-현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
-속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현한다.
-현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 한다.
-대표적인 개념적 데이터 모델로는 E-R 모델이 있다.
논리적 데이터 모델
-개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정이다.
-필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현한다.
-단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미한다.
-특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용한다.
-데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분한다.
물리적 데이터 모델
-데이터베이스 파일의 저장 구조 및 접근 경로를 결정하고, 테이블 정의서 등이 결과로 작성되는 단계
-특정 DBMS에 의존하는 데이터형식, 제약조건, 뷰, 인덱스 등을 설정하는 작업
3. 반정규화 : 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
반정규화를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.
과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
반정규화의 방법 : 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
4. EAI : 기업 내부에서 운영되는 각종 플랫폼 및 애플리케이션 간의 상호 정보 전달, 연계, 통합을 가능하게 해주는 솔루션.
[EAI 구축 유형]
Point-to-Point
-가장 기본적인 애플리케이션 통합 방식
-애플리케이션을 1:1로 연결함
-변경 및 재사용이 어려움
Hub&Spoke
-단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
-확장 및 유지 보수가 용이함
-허브 장애 발생 시 시스템 전체에 영향을 미침
Message Bus(ESB방식)
-애플리케이션 사이에 미들웨어를 두어 처리하는 방식
-확장성이 뛰어나며 대용량 처리가 가능함
Hybrid
-Hub&Spoke와 Message Bus의 혼합 방식
-그룹 내에서는 Hub&Spoke 방식을, 그룹 간에는 Message Bus 방식을 사용함
-필요한 경우 한 가지 방식으로 EAI 구현 가능함
-데이터 병목 현상을 최소화할 수 있음
5. WSDL : 웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세정보가 기술된 XML 형식으로 구현되어 있는 언어.
웹서비스에서는 저장소로 UDDI를 사용하고 저장소에 접근과 그 저장된 자료의 접근 형식을 적은 설명서로 WDSL이 사용되며 이 자료를 사용하기 위해 실행 프로토콜로 SOAP이 사용된다.
6. 결합도
- 자료 결합도 : 모듈 간의 인터페이스가 자료 요소로만 구성된 경우
- 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
- 제어 결합도 : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
- 외부 결합도 : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
- 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
- 내용 결합도 : 모듈 간 데이터, 지역 변수를 직접 참조하는 경우의 결합도
결합도는 낮을수록, 응집도는 높을수록 좋다. 자<스<제<외<공<내
7. 블랙박스 검사 기법
- 경곗값 분석(Boundary Value Analysis) : 0<=x<=10이면 x=-1, x=10, x=11을 검사하는 기법
- 동치 분할 검사(Equivalence Partitioning Testing) : 입력 값의 범위가 1~100이면 유효 값 1~100과 무효 값 -1, 0, 101, 102를 나눠서 검사하는 기법
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류 예측 검사(Error Guessing) : 과거의 경험이나 확인자의 감각으로 테스트하는 기법
- 비교 검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
[경곗값 분석(Boundary Value Analysis)]
-입력 조건의 중간값보다 경곗값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경곗값을 테스트 케이스로 선정하여 검사하는 기법
-입력 자료에만 집중한 동치(동등) 분할 검사를 보완한 기법
[동치 분할 검사(Equivalence Partitioning Testing)]
-프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법
-동등 분할 기법이라고도 함
-입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법
-입력 조건에 타당한 입력 자료(유효 값)와 그렇지 않은 자료(무효 값)로 분할해 테스트 케이스를 정한다.
-검사 사례 설계를 프로그램 입력 명세 조건에 따라 설정한다.
즉, 검사 사례는 일반적으로 입력 데이터에 해당하므로 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값(유효 값)과 그렇지 못한 값을 설정한다.
8. 테스트 종류
- 단위 테스트(Unit Test) : '모듈 테스트'라고도하며, 작은 소프트웨어 단위(컴포넌트 또는 모듈)를 개별 테스트하는 것.
- 통합 테스트(Integration Test) :소프트웨어 각 모듈(인터페이스) 간의 상호작용이 정상적으로 실행되는지 확인하는 테스트
- 시스템 테스트(System Test) :개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트하는 방법이다.
- 인수 테스트(Accaptance Test) : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법이다.
테스트 종류 | 설명 |
사용자 인수 테스트 | 사용자가 시스템 사용의 적절성 여부를 확인함 |
운영상의 인수 테스트 | -시스템 관리자가 시스템 인수 시 수행하는 테스트 기법 -백업/복원 시스템, 재난 복구, 사용자 관리, 정기 점검 등을 확인함 |
계약 인수 테스트 | 계약상의 인수/검수 조건을 준수하는지 여부를 확인함 |
규정 인수 테스트 | 소프트웨어가 정부 지침, 법규, 규정 등 규정에 맞게 개발되었는지 확인함 |
알파 테스트 | -개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법 -테스트는 통제된 환경에서 행해지며, 오류와 사용상의 문제점의 사용자와 개발자가 함께 확인하면서 기록함 |
베타 테스트 | -선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기버 -실업무를 가지고 사용자가 직접 테스트 |
9. SQL문
<EMP>
EMPNO | ENAME | AGE | SAL | DEPT_ID |
100 | 홍길동 | 25 | 1000 | 20 |
200 | 강감찬 | 40 | 3000 | 30 |
300 | 이순신 | 42 | 2000 | 40 |
400 | 강희영 | 25 | 2500 | 40 |
<SQL>
# EMP 테이블에서 숫자를 세라.
SELECT COUNT(*) FROM EMP
# EMPNO가 100 초과 SAL이 3000 이상 또는 EMPNO가 200인 것
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
# 전부 만족하는 것은 1개
EMPNO | ENAME | AGE | SAL | DEPT_ID |
200 | 강감찬 | 40 | 3000 | 30 |
↓
1 또는
COUNT(*) |
1 |
10. DAC(임의적 접근 통제) : 시스템 객체의 접근을 개인 또는 그룹의 식별자에 기반한 방법으로 어떤 종류의 접근 권한을 가진 사용자가 다른 사용자에게 자신의 판단에 따라 권한을 허용하는 접근 제어 방식
[접근 제어 모델(정보의 접근통제 정책)]
정보의 접근통제 정책은 시스템의 자원 이용에 대한 불법적인 접근을 방지하는 과정으로 비인가자가 컴퓨터 시스템에 액세스 하지 못하도록 하는 것.
사용자가 특정 데이터에 접근할 때 접근을 요구하는 사용자에 대한 식별과 보안 정책에 근거하여 접근을 승인하거나 거부하여 허가받지 않은 사용자의 불법적 자원에 대한 접근과 파괴 등의 행위를 예방하는 보안 관리의 모든 행위를 의미
임의 접근통제(DAC, Discretionary Access Control)
-데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
-데이터 소유자가 접근통제 권한을 지정하고 제어함
-객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있음
시스템 객체의 접근을 개인 또는 그룹의 식별자에 기반한 기법
어떤 종류의 접근 권한을 가진 사용자가 다른 사용자에 자신의 판단에 따라 권한을 허용하는 접근제어 방식
강제 접근통제(MAC, Mandatory Access Contol)
-주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
-시스템이 접근통제 권한을 지정함
-데이터베이스 객체별로 보안 등급을 부여할 수 있음
-사용자별로 인가 등급을 부여할 수 있음
역할 기반 접근통제(RBAC, Role Based Access Control)
-사용자의 역할에 따라 접근 권한을 부여하는 방식
-중앙 관리자가 접근통제 권한을 지정함
-임의 접근통제와 강제 접근통제의 단점을 보안하였음
-다중 프로그래밍 환경에 최적화된 방식
11. C언어 문제
#include <stdio.h>
struct insa //구조체 insa 정의
{
char name[10]; //멤버1:문자열 배열 name
int age; //멤버2:정수형 변수 age
};
void main()
{
struct insa a[]={"Kim", 28, "Lee", 38, "Kang", 48}; //구조체 insa 배열a선언 및 초기화
struct insa *p; //구조체 insa를 가리키는 포인터 변수 p선언
p = a; //p에 a저장->배열 시작 위치인 a[0]위치 저장
p++; //다음 주소(두 번째 주소)로 이동
printf("%s|n", p->name); //구조체 포인터 변수 p가 가리키는 메모리 주소로 찾아가 해당 값 중 name멤버에 접근하여 문자열(s)출력
printf("%s|n", p->age); //구조체 포인터 변수 p가 가리키는 메모리 주소로 찾아가 해당 값 중 age멤버에 접근하여 10진수 정수(d) 출력
}
답 :
Lee
38
name | age | |
a[0] | "Kim" | 28 |
a[1] | "Lee" | 38 |
a[2] | "Kang" | 48 |
포인터(Pointer) : 변수의 주소
포인터 변수 : 어떤 데이터가 차지하는 기억 장소의 주소를 저장하기 위한 변수
구조체(Struct) :데이터(변수)를 체계적으로 관리하기 위한 문법(관련 정보를 하나의 의미로 묶을 때 사용한다.)]
-JAVA(객체 지향 프로그래밍)의 Class와 유사
-배열:같은 자료형 묶음. 구조체:서로 다른 자료형
12. JAVA 문제
public class Exam {
public static void main(String[] args) {
int a[][] = {{45,50,55},{89}}; //이차원 배열 a선언 및 초기화
System.out.println(a[0].length); //a[0]의 길이 출력
System.out.println(a[1].length); //a[1]의 길이 출력
System.out.println(a[0]a[0]);
System.out.println(a[0]a[1]);
System.out.println(a[1]a[0]);
답:
3
1
45
89
[0][0] [0][1] [0][2]
a[0] 45 50 55
[1][0]
a[1] 89
a[0].length는 a[0]행의 길이=3(45, 50, 55)
a[1].length는 a[1]행의 길이=1(89)
a[0][0]=45
a[0][1]=50
a[1][0]=89
legth : 배열의 길이 반환, 사용법 : [배열명].length
13. JAVA 문제
public class Exam {
public static void main(String[] args) {
int i,j = 0;
for(i=0; i<=5; i++){
j+=i;
System.out.println(i);
if(i == 5) {
System.out.print("=");
} else{
System.out.print("+");
}
System.out.println(j);
}
}
답 : 0+1+2+3+4+5=15
for문에서 i=0부터 시작, i가 5까지 반복, i는 1씩 증가
j는 i만큼 더해진다. j=j+i
i가 0일 때, 0<=5, j=0+0=0, i값 0출력, if문에서 0==5는 거짓이므로 +출력
i가 1일 때, 1<=5, j=0+1=1, i값 1출력, if문에서 1==5는 거짓이므로 +출력
i가 2일 때, 2<=5, j=1+2=3, i값 2출력, if문에서 2==5는 거짓이므로 +출력
i가 3일 때, 3<=5, j=3+3=6, i값 3출력, if문에서 3==5는 거짓이므로 +출력
i가 4일 때, 4<=5, j=6+4=10, i값 4출력, if문에서 3==5는 거짓이므로 +출력
i가 5일 때, 5<=5, j=10+5=15, i값 5출력, if문에서 5==5는 참이므로 =출력
i가 6이면 6<=5는 거짓이므로 반복문을 빠져나온다. j값 15출력
i | j | i==5 | |
0 | 0 | F | 0+ |
1 | 1 | F | 0+1 |
2 | 3 | F | 0+1+2+ |
3 | 6 | F | 0+1+2+3+ |
4 | 10 | F | 0+1+2+3+4+ |
5 | 15 | T | 0+1+2+3+4+5=15 |
14. PYTHON 문제
class Arr: //클래스 생성
a = ["Seoul", "Kyeonggi", "Inchon", "Daejoen", "Deagu", "Pusan"] //리스트 a선언 및 초기화
str01 = ' ' //str01 선언 및 초기화
for i in Arr.a: //클래스 arr의 리스트 a[0]~a[5]를 i에 차례대로 대입
str01 = str01 + i[0] //str01에 str01+i[0]값 저장 -> 문자열 덧셈
print(str01)
답 : SKIDDP
i[0]
↓
a[0] | S | e | o | u | l | |||
a[1] | K | y | e | o | n | g | g | i |
a[2] | I | n | c | h | e | o | n | |
a[3] | D | a | e | j | e | o | n | |
a[4] | D | a | e | g | u | |||
a[5] | P | u | s | a | n |
15. <학생> 릴레이션의 카디널리티(Cardinality)와 디그리(Degree)
<학생> 릴레이션
학번 | 성명 | 학년 | 전화번호 |
110011 | 홍길동 | 1 | 010-1111-1111 |
220022 | 이순신 | 2 | 010-2222-2222 |
330033 | 킹세종 | 2 | 010-3333-3333 |
440044 | 임꺽정 | 3 | 010-4444-4444 |
550055 | 돌쇠 | 4 | 010-5555-5555 |
카디널리티(Cardinality) : 5
디그리(Degree) : 4
카디널리티(Cadinality) : 튜플의 수
디그리(Degree, 차수) : 애트리뷰트의 수
16. 데이터 모델에 표시할 요소
- 연산(Operation) : 데이터베이스에 표현된 개체 인스턴스를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구에 해당한다.
- 구조(Structure) : 데이터베이스에 표현될 대상으로서의 개체 타입과 개체 타입들 간의 관계에 해당한다.
- 제약 조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
17. IPC(Inter Process Communication)
프로세스 간 통신이라고도 하며, 세마포어, 소켓 등 프로세스 간 메시지 전달이나 공유 메모리 기법을 통해 자원이나 데이터를 서로 주고받는 행위 또는 그에 대한 방법이나 경로를 의미하는 용어
[프로세스 간 통신(IPC, Inter Process Communication)
정의 : 여러 프로세스 간의 자원이나 데이터를 주고받는 통신 방법
필요성 : 정보 공유, 실행 속도 향상, 모듈성, 편리성
기법 : 메시지 전달(Message passing), 공유 메모리(Shared memory)
18. IP주소
- IPv6는 128비트를 가진다
- IPv4는 길이 32비트이며, 8비트씩 4 분할한다.
[IPv6의 특징]
-IPv6는 현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발되었다.
-128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 있다.
-IPv4에 비해 자료 전송 속도가 빠르다.
-인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결할 수 있다.
-주소의 확장성, 융통성, 연동성이 뛰어나다.
-실시간 흐름 제어로 향상된 멀티미디어 기능을 지원한다.
-패킷 크기를 확장할 수 있으므로 패킷 크기에 제한이 없다.
-기본 헤더 위에 확장 헤더를 더함으로써 더욱 다양항 정보의 저장이 가능해져 네트워크 기능 확장이 용이하다.
-IPv4와 호환성이 뛰어나다.
-16비트씩 8 부분, 총 128비트로 구성되어 있다.
-각 부분을 16진수로 표현하고, 콜론(:)으로 구분한다.
-IPv6은 유니캐스트(Unicast), 멀티캐스트(Multicast) 애니캐스트(Anycast)의 세 가지 주소 체계로 나누어진다.
19. RARP(Reverse Address Resolution Protocol) : 물리적 주소를 IP주소로 변환하는 기능을 함
TCP/IP의 인터넷 계층의 프로토콜로 호스트의 물리 주소를 통하여 논리 주소인 IP주소를 얻어 오기 위해 사용되는 프로토콜
IP 호스트가 자신의 MAC 주소는 알지만 IP주소는 모르는 경우, 서버로부터 MAC주소에 해당하는 IP주소를 요청하기 위해 사용하는 프로토콜
[인터넷 계층(네트워크 계층) 주소와 링크 계층 주소 사이의 변환을 담당하는 프로토콜]
-ARP(Address Resolution Protocol) : IP주소 -> MAC주소
-RARP(Reverse Address Resolution Protocol) : MAC주소 -> IP주소
20. 세션 하이재킹(Session Hijacking)
'세션 가로채기'라고도 하며, 두 시스템 간의 정상적 연결이 활성화된 상태, 즉 로그인된 상태를 가로채는 것이다.
RST(Reset) 패킷을 통해 일시적으로 TCP 세션을 끊고 시퀀스 넘버를 종료시킨 후 서버와 클라이언트에 각각 잘못된 시퀀스 번호를 위조해서 연결된 세션에 잠시 혼란을 준 뒤 자신이 끼어들어가는 방식을 사용하는 능동적 공격 기법이다.
TCP 세션 하이재킹은 TCP 세션을 훔쳐서 서버에게 새로운 시퀀스 넘버를 보내서 마치 클라이언트 인척 하며 연결을 이어나가 인증을 회피하는 공격으로 서버가 세션과 클라이언트의 유효성을 검사하지 않아 발생하게 된다.
Telnet, FTP 등 TCP를 사용한 모든 세션의 갈취가 가능하다.
'개발자 되기 > 자격증' 카테고리의 다른 글
[정보처리기사] 실기 SQL문 정리 (0) | 2022.05.30 |
---|---|
[정보처리기사] 2022년 1회 실기 후기 (0) | 2022.05.07 |
[정보처리기사] PYTHON 필기 기출 문제 해설 (0) | 2022.04.14 |
[정보처리기사] JAVA 필기 기출 문제 해설 (0) | 2022.04.14 |
[정보처리기사] C언어 필기 기출 문제 해설 (0) | 2022.04.13 |