728x90

출제 영역 분석

필자의 분석이므로 출제기관의 분석과 다를 수 있습니다.

1 5단원 / 네트워크 11 1단원 / 어플리케이션 설계
2 1단원 / 소프트웨어 설계 12 5단원 / 네트워크
3 3단원 / SQL 13 1단원 / 디자인패턴
4 3단원 / 논리 데이터베이스 설계 14 3단원 / 병행제어
5 3단원 / SQL 15 4단원 / 객체지향프로그래밍
6 3단원 / SQL 16 4단원 / C언어
7 4단원 / Python 17 4단원 / JAVA
8 5단원 / 암호 기술 18 4단원 / C언어
9 2단원 / 어플리케이션 테스트 19 4단원 / JAVA
10 3단원 / SQL 20 2단원 / 어플리케이션 테스트
단원 1단원 2단원 3단원 4단원 5단원
문제 수 2 -> 3 ( +1) 4 -> 2 ( -2) 5 -> 6 ( +1) 5 -> 6 ( +1) 4 -> 3 (-1)

단원별로 문제의 수를 살펴보면 실기인 만큼 3,4단원의 비중이 늘어난 것을 볼수 있었습니다.

응시자 15,281명 중 합격자 4,235명으로 합격률 27.7%
2021년 1회차 보다는 합격률이 낮아진 시험입니다.


1) Ch 5. 네트워크

네트워크 기술에 관한 문제 입니다.

애드혹 네트워크
: 네트워크 장치를 필요로하지 않고 네트워크 토폴로지가 동적으로 변화되는 특징이 있으며 응용 분야로는 긴급 구조, 긴급 회의, 전쟁터에서의 군사 네트워크에 활용되는 네트워크

2) Ch 1. 소프트웨어 설계

UI에 관한 문제입니다.

CLI, Command Line Interface
 : 명령 문자열을 통해 시스템과 상호작용하는 UI로 DOS, Linux, 명령 프롬프트 등에서 사용된다.
GUI, Graphic User Interface
 : 메뉴, 아이콘 등의 그래픽 요소를 통해 시스템과 상호작용하는 UI이다. Windows, mac OS 등에서 사용된다.
NUI, Natural User Interface
 : 사람의 음성, 온도, 터치 등을 통해 시스템과 상호작용 하는 UI이다. 스마트폰, 지문 인식등에서 사용된다.

3) Ch 3. SQL

트랜잭션에 관한 문제입니다.

트랜잭션
 : 한 개 이상의 데이터베이스를 조작하는 논리적인 연산의 집합
 
트랜잭션의 특성 (ACID)
- 원자성 Atomicity : 모두 실행되거나 모두 실행되지 않아야 한다.
- 일관성 Consistency : 트랜잭션을 마친 후에도 동일하게 오류가 발생하지 않아야 한다.
- 고립성 Isolation : 트랜잭션 실행 중 다른 트랜잭션에 영향을 받지 않아야 한다
- 지속성 Durability : 트랜잭션의 결과는 항상 유지 보존되어야한다.

4) Ch 3. 논리 데이터베이스 설계

정규화에 관한 문제로 자주 출제된다.

정규화
: 데이터 모델링의 단계 중 가장 중요한 단계로써 논리 데이터 모델링을 상세화 하는 단계
 - 정확성, 일치성, 단순성 ,비중복성, 안정성이 보장된다.
 - 중복되는 튜플이 없어 효과적인 데이터 표현 및 저장이 가능하다
 - 비교적 간단한 연산자로 효과적인 연산이 가능하도록 구성한다
 
제1 정규형 : 도메인이 원자 값만 가지도록 분해한다.
제2 정규형 : 부분 함수 종속을 제거한다. [ 부분 함수 종속 = 기본키만으로는 해당 데이터를 식별할 수 없는 종속관계 ]
제3 정규형 : 이행적 함수 종속을 제거한다.
보이스 코드 정규형 : 결정자가 후보 키가 아닌 종속을 제거한다. [ 후보키 = 결정자가 유일성과 최소성을 만족시키는 키]
제4 정규형 : 다치 종속을 제거한다.
제5 정규형 : 후보키를 통하지 않은 조인 종속을 제거한다.

5) Ch 3. SQL

SQL문중 DML에 해당하는 수정 문제이다.

UPDATE ~ SET 구문으로 사용된다.
UPDATE 테이블명 SET 필드 = 값[, ...] WHERE 조건식;​

6) Ch 3. SQL

SQL문중 DML에 해당하는 수정 문제이다.

//INNER JOIN : 일치하는 데이터만 조인
SELECT * FROM 학생 JOIN 과목 ON 학생.과목코드 = 과목코드.과목코드;

//LEFT JOIN : 왼쪽(학생)의 테이블 데이터는 전부 포함하고 
//오른쪽(과목) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 LEFT JOIN 학생.과목코드 = 과목.과목코드;

//RIGHT JOIN : 오른쪽(학생)의 테이블 데이터는 전부 포함하고
// 왼쪽(학생) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 RIGHT JOIN 학생.과목코드=과목.과목코드;

~ JOIN ~ ON ~ 구문으로 사용된다.


8) Ch 5. 암호 기술

대칭키, 비대칭키 알고리즘에 관한 문제이다.

대칭키 방식 - DES,AES
비대칭키 방식 - RSA

DES ( Data Encryption Standard )

 : 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘이다. 

 - 블록의 크기는 64비트, 키 길이는 56비트이다.

 - 컴퓨터의 발전에 따라 해독이 가능해졌다.

 

AES ( Advanced Encryption Standard )

 : 2001년 미국 NIST에서 발표한 개인키 암호화 알고리즘이다.

 - DES의 한계를 보완한 것으로 블록 크기는 128비트, 키 길이는 128, 192, 256으로 분류된다.

 

RSA ( Rivest Shamir Adleman )

 : 공개키 암호 알고리즘을 이용한 디지털 서명 기법으로, 공개키 기반 서명 알고리즘 중 가장 먼저 상용화 되고 보편화되어있는 알고리즘이다. 적절한 시간 내에 인수가 큰 정수의 소인수 분해가 어렵다는 점을 이용한 공개키 암호화 기법

 

SEED

 : 한국인터넷진흥원에서 개발된 암호화 알고리즘이다.

 - 128/256 비트의 고정키를 사용하고, 128/256 비트의 블록을 암호화하는 블록 암호 방식

 

ARIA ( Academy, Resaerch Institute, Agency )

 : 국가보안기술연구소 (NSRI)가 주도하여 구현된 국가 암호화 알고리즘이다.

 - SEED와 함께 전자 정부의 대국민 행정 서비스용으로 보급되고 있다.

 

ECC ( Elliptic Curve Crypto )

 :  타원곡선과 임의의 곡선과의 교점 연산에서 정의되는 이산대수 문제의 어려움을 이용하는 암호 방식이다.


9) Ch 2. 어플리케이션 테스트

테스트 커버리지에 관한 문제이다.

테스트 커버리지
 : 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준

- 구문 (Statement) 커버리지 : 모든 명령문을 적어도 한번은 수행하는 커버리지 
- 결정 (Decision) , 분기 (Branch)  커버리지 : 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행 
- 조건(Condition) 커버리지 : 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지 
- 조건/결정 커버리지 : 전체 조건식뿐만 아니라 개별 조건식도 참과 거짓 결과가 한 번씩 되도록 수행하는 커버리지 
- 변경(Modified) 조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록 설계 
- 다중 조건 커버리지 : 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

10) Ch 3. SQL

SQL문중 DDL에 해당하는 수정 문제이다.

//AND 비교
//국어와 영어 성적이 모두 80점 이상인 튜플 출력
SELETE * FROM  성적 WHERE 국어 >= 80 AND 영어 >= 80;

//OR 비교
//1반,3반,5반 의 튜플 출력
//IN : 조금더 간편하게 표현가능
SELECT * FROM 성적 WHERE 반="1반" OR 반="3반" OR 반="5반";
SELECT * FROM 성적 WHERE 반 IN ("1반", "3반", "5반");

//IS NULL 비교 : 필드가 비어있는 튜플 출력
SELECT * FROM 성적 WHERE 벌점 IS NULL;

//LIKE 비교 : 이름이 박으로 시작되거나 은으로 끝나는 튜플 출력
SELECT * FROM 성적 WHERE 이름 LIKE 박% OR &은 ;

//BETWEEN 비교 
SELECT * FROM 성적 WHERE 평균 BETWEEN 80 AND 90;

11) Ch 1. 어플리케이션 설계

1회에서도 다루었던 문제로 응집도에대한 이해 문제이다.

결합도 Coupling -  "내공외제스자"
 : 모듈 사이의 연관 관계에 의해 모듈이 서로를 의존하는 정도를 의미한다.
 - 결합도가 약할수록 의존성이 약해지기 때문에 모듈의 독립성이 높아진다.
 
내용 결합도 Content Coupling 
 : 모듈이 다른 모듈의 내부 기능과 데이터를 직접적으로 사용하는 경우
공통 결합도 Common Coupling 
 : 모듈이 다른 모듈의 내부 데이터를 참조하는 경우
 - 인수로 받은 매개변수가 아닌 호출 모듈의 내부 전역 변수를 제어 Call By Reference 방식
외부 결합도 External Coupling 
 : 두 모듈이 외부에 선언된 변수를 참조하는 경우
제어 결합도 Control Coupling 
 : 모듈 간의 인터페이스로 값만 전달되는 것이 아니라 제어 요소도 전달하는 경우
스탬프 결합도 Stamp Coupling 
 : 두 모듈이 동일한 자료구조를 부분적으로 공유하는 경우
자료 결합도 Data Coupling 
 : 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해 상호작용이 일어남
 - Call By Value 방식


응집도 Cohesion - "우논시절교순기"
: 모듈 내부 요소들이 밀접한 관계를 맺고 있는 정도를 의미한다.
 
우연적 응집도 Coincidental Cohesion 
 : 서로 관련 없는 요소로 구성된 경우
논리적 응집도 Logical  Cohesion 
 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들
시간적 응집도 Temporal Cohesion 
 : 연관성은 없지만 특성 시기에 함께 처리해야 하는 기능들을 묶어놓은 경우
절차적 응집도 Procedural  Cohesion 
 : 하나의 문제를 해결하기 위해 순차적(순서대로)으로 수행되는 경우
교환적 응집도 Communication  Cohesion 
 : 모듈의 기능들이 동일한 입출력 데이터를 사용하여 서로 다른 기능을 수행하는 경우
순차적 응집도 Sequential  Cohesion 
 : 모듈의 기능 수행의 결과물이 그다음 기능 수행의 입력 데이터로 사용되는 경우
기능적 응집도 Functional  Cohesion 
 : 모듈 내부의 모든 기능 요소들이 단일 문제를 해결하는데 수행

12) Ch 4. 네트워크

데이터 전송 제어에 관한 문제이다.

(자세한 내용은 https://facepark0408.tistory.com/59 에서 참고할 수 있습니다.)

축적 교환 방식 중에서 패킷교환 방식이다.
 - 가상 회선 패킷 교환 방식
 : 패킷들을 전송하기 전에 미리 가상 경로를 확보하여 전송하는 방식이다. 제어 패킷으로 경로를 확보한 다음 나머지 패킷들이 확보된 경로로 전달되는 방식이다.
 
 - 데이터그램 패킷 교환 방식
 : 경로를 확보하지 않고 독립적으로 자유롭게 전송하는 방식으로 제어 패킷을 사용하지 않는다. 송수 신국 사이에 논리적 연결이 설정되지 않는다.

추가적인 정보로는 회선교환 방식과 축적 교환 방식이 존재한다.
 - 회선 교환 방식 ( Circuit Switching )
 : 송수신 단말 장치 사이에서 데이터를 전송할 때마다 통신 경로를 설정하여 데이터를 교환하는 방식이다.
장점 ) 통신 경로 접속 시간이 매우 짧다. 통신 중 전송 제어 절차 정보의 형식에 제약을 받지 않는다.단점 ) 통신하는 양측의 시스템이 동시에 데이터 교환 준비가 되어있어야 한다. 접속되어 있는 동안은 두 시스템 간의 통신 회선이 독점되어있어 효율이 떨어진다.
 - 축적 교환 ( Store and forward Switching )
 : 전달된 데이터를 버퍼에 일시적으로 저장한 후, 에러 검출, 변환 등과 같은 처리를 완전히 수행한 뒤에 목적지로 전달하는 방식이다.

13) Ch 1. 어플리케이션 설계

자주 출제되는 문제 유형중 하나로 GoF 디자인 패턴 문제이다.

자세한 내용은 https://facepark0408.tistory.com/66 에서 다루었습니다.

디자인 패턴 문제는 생성, 구조, 행위로 3가지 종류가 있으며 
Command, Interpreter 가 보이는 것으로 행위 패턴 임을 유추 할 수 있어야 한다.

20) Ch 2. 어플리케이션 테스트

V-모델 중에서 통합 테스트 내용에 대한 이해문제이다.

통합 테스트
 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 단계이다.

- 점증적/비점증적 방식, 하향식 통합테스트, 상향식 통합테스트

 - 하향식 테스트 : 주요 제어 모듈의 하위 모듈은 스텁(Stub)으로 대체

 - 상향식 테스트 : 상위 모듈에서의 데이터 입출력을 확인하기 위한 드라이버(Driver) 작성

테스트 스텁  :  하향식 테스트에서 하위 모듈 역할을 대신하는 기능
테스트 드라이버 :  상향식 테스트에서 상향 모듈의 인터페이스를 담당하는 기능


기타 풀이의 오류 및 오타 추가요청이 있으시다면 댓글 달아주세요!
감사합니다 좋은 하루 되세요~

 

 

728x90
728x90

출제 영역 분석

필자의 분석이므로 출제기관의 분석과 다를 수 있습니다.

1 5단원 / 통신 프로토콜 11 5단원 /통신 프로토콜
2 3단원 / 논리 데이터 베이스 12 4단원 /운영체제
3 1단원 / 요구 분석 13 2단원 / 통합 구현, IDE
4 2단원 / 통합구현 14 3단원 / 튜플
5 4단원 / Python 15 4단원 / C언어
6 3단원 / SQL 16 3단원 / 논리 데이터 베이스
7 4단원 / JAVA 17 4단원 / Java
8 3단원 / 정규화 18 5단원 / 시스템 보안구축 접근제한
9 2단원 / 블랙박스 테스트 19 1단원 / 공통 모듈
10 2단원 / 테스트,V-모델 20 5단원 / 해킹
단원 1 2 3 4 5
문제 수 2 4 5 5 4

 

응시자 20,125명 중 합격자 7,947명으로 합격률 39.5%
2021년 1,2,3회차 중 가장 높은 합격률을 보인 시험입니다.

 


1번) Ch 5. 통신 프로토콜 - IP 계층

IP 계층에 관한 내용으로 답은 RARP였습니다.

ARP ( Address Resolution Protocol )
 : 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소인 MAC로 번역해주는 프로토콜
 - 네트워크 계층에서 작동합니다.

ICMP ( Internet Control Messge Protocol )
 : 호스트나 라우터에서 IP 패킷을 처리할때 발생하는 오류 상태 통지 및 예상치 못한 상황에 대한 정보를 제공할 수 있게 하는 프로토콜

2번, 16번) Ch 3. 논리 데이터베이스

데이터 모델링 정의에 관한 내용을 다루었습니다.

16번 문제 해설
 - 구조 : 논리적으로 표현된 데이터의 구조
 - 연산 : 데이터 구조에서 삽입, 삭제, 변경하는 기능
 - 제약 조건 : 데이터 구조에서 허용할 수 있는 관계를 명세

2번 문제 해설
 - 개념적 설계 : 정보 내용에 대한 요구 조건을 만족시키면서 쉽게 이해할 수 있는 정보 구조를 설계하는 단계. E-R 모델로 표현하는 방법이 대표적이다. 개념적 스키마 모델링, 트랜잭션 모델링
- 논리적 설계 : 개념 데이터 모델을 상세화 하여 논리적인 데이터 집합, 관리 항목, 관계 등을 정의하는 단계이다. DBMS에 맞는 데이터베이스 스키마 및 트랜잭션 인터페이스를 설계정규화 과정을 수행한다.
 - 물리적 설계 : 논리 데이터 모델을 DBMS의 특성 및 성능을 최대한 고려하여 구체화시키는 단계이다. 레코드 양식, 데이터 구조, 응답 시간, 저장 공간 등을 설계한다.

3번) Ch 1. 요구사항 분석

요구사항을 분류에 대한 설명입니다.

- 기능적 요구사항 :  시스템이 제공하는 기능, 서비스에 대한 요구사항이다.
- 비기능적 요구사항 :  시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항이다.

4번) Ch 2. 통합구현

웹 서비스 연동과 표준에서 언급된 내용입니다.

SOAP, Simple Object Access Protocol
 : 웹 서비스에서 사용되고 보편적으로 확장성 있는 XML 기반 메세지 프로토콜
UDDI, Universal Description, Discover and Integration
 : 필요한 웹 서비스 찾을 수 있는 웹 서비스 레지스트리
WSDL, Web Service Description Language
 : 웹 서비스를 기술하기 위한 표준 형식이다. XML 기반으로 설명해 주는 언어

5) Ch 4. Python

python 반복문에 대한 이해 문제입니다.

class good :
	li = ["seoul", "kyeonggi","inchon","daejeon","daegu","pusan"]

g = good()
str01 = ''
for i in g.li:
	str01 = str01 + i[0]
    
print(str01)

for 반복문에서 li 를 받아와서 탐색하는 i 들 중에서 첫글자만 가져와서 str01에 저장하는 프로그램으로
앞글자들을 따와서 skiddp 가 출력됩니다.


6) Ch 3. 튜플

SQL 출력에 대한 이해 문제입니다.

SELECT COUNT(*) FROM 급여
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;

 

앞의 조건을 만족하는 튜플은 EMPNO=200, SAL=3000
뒤의 조건을 만족하는 튜플 또한 EMPNO=200, SAL=30000
으로 단 하나의 튜플만 만족하므로 답은 1입니다.


7) Ch 4. JAVA

Java 자료형과 출력에 대한 이해 문제입니다.

public class QfranTest{
     public static void main(String []args){
        int a[][] = {{45, 50, 75}, {89}};
        System.out.println(a[0].length);
        System.out.println(a[1].length);
        System.out.println(a[0][0]);
        System.out.println(a[0][1]);
        System.out.println(a[1][0]);
     }
}

a[0].length, a[1].length는 {40,50,75}으로 3, {89}으로 1이 출력되고
{40,50,75}는 a[0][0], a[0][1], a[0][2]이므로 45,50,75 이 출력된다.

 


9) Ch 2. 블랙박스 테스트

블랙박스 테스트에 관한 이해 문제입니다.

화이트박스 테스트
 : 모든 소스 코드의 논리적인 경로를 테스트 케이스로 확인하는 방법이다.
 - 기초 경로 테스트(Basic Path Test) : 논리적 순환 복잡도를 측정
 - 조건 검사(Condition Testing)  : 소스코드의 논리적인 조건을 테스트
 - 루프 검사(Loop Testing) : 소스 코드의 반복 구조를 중점적으로 테스트
 - 데이터 흐름 검사(Data Flow Testing) : 소스 코드의 변수 정의, 사용을 중점적으로 테스트
 
블랙박스 테스트 
 : 요구사항 명세서를 기반으로 구현된 기능을 테스트 케이스로 설계하는 방법, 기능 테스트라고도 한다.
 - 동치 분할 검사 : 입력 조건에 유효한 값과 무효한 값을 균등하게 하여 테스트 케이스를 설계
 - 경계값 분석 : 입력 조건의 경계에서 오류가 발생할 확률이 높다는 점을 이용하여  경계값을 테스트케이스로 사용
 - 원인-효과 그래프 검사 : 입력 데이터와 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 설계
 - 오류 예측 검사 : 과거의 경험이나 확인자의 감각에 의존하여 테스트 케이스를 설계
 - 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 테스트

10) Ch 2. 단위 테스트, V-모델

애플리케이션 테스트에 관한 문제입니다.

단위 테스트
 : 코딩이 완료된 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트 초점에 맞춰 테스트하는 것이다.
명세 기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트를 진행
구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 진행

※ 일반적으로 단위테스트 단계에서는 구조기반 테스트를 진행하고, 명세 기반 테스트는 잘 진행하지 않는다.
 
통합 테스트
 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 단계이다.
- 점증적/비점증적 방식, 하향식 통합테스트, 상향식 통합테스트
 - 하향식 테스트 : 주요 제어 모듈의 하위 모듈은 스텁(Stub)으로 대체
 - 상향식 테스트 : 상위 모듈에서의 데이터 입출력을 확인하기 위한 드라이버(Driver) 작성
 
시스템 테스트 
 : 개발된 소프트웨어가 해당 컴퓨터 시스템에 완벽하게 수행되는가를 점검하는 테스트
 - 기능적 요구사항, 비기능적 요구사항으로 테스트 진행
 
인수테스트 
 : 개발이 완료된 소프트웨어에 대해 사용자 요구사항 충족 여부를 사용자가 직접 테스트하는 것
 - 알파 테스트 : 개발자의 장소에서 제한된 환경에서 사용자가 개발자 앞에서 행하는 테스트
 - 베타 테스트 : 다수의 사용자에게 제한되지 않은 환경에서 프로그램을 테스트하는 방법

12) Ch 4. 운영체제 중 프로세스

프로세스에 관한 이해 문제 입니다.

PCB ( Process Control Block ) : 운영체제 프로세스에 대한 정보를 기록한 테이블
- 문맥 교환 ( Context Switching ) : CPU가 할당되는 프로세스를 변경하기 위해 현재의 프로세스 상태를 저장하고 이후 작업할 프로세스를 CPU에 할당하여 실행하는 작업
 - Time Slice가 작을수록 문맥 교환수와 인터럽트 횟수, 오버헤드가 증가한다.

IPC ( InterProcess Communicatioin ) : 협력하는 프로세스들 사이에서 서로 데이터를 주고받는 행위
 - 메시지 교환 : 메모리 보호를 위해 커널이 대신 데이터를 전달
 - 메모리 공유 : 공유 메모리 생성, 성능이 우수하지만 동기화 문제 발생

스레드 ( Thread ) : 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위이다.
 - 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다.
 - 여러 개의 스레드를 생성하여 병행성을 증진시킬 수 있다. 처리율을 높일 수 있다.
 - 사용자 수준의 스레드 : 사용자가 만든 라이브러리를 사용하여 스레드를 운용, 속도는 빠르지만 구현이 어려워
 - 커널 수준의 스레드 : 운영체제의 커널에 의해 스레드를 운용, 구현이 쉽지만 속도가 느리다.

13) Ch 2. 통합구현도구

인터페이스 기술 표준에 관한 문제입니다.

EAI ( Enterprise Application Integration )
 : 서로 다른 기종의 시스템 간의 연동을 가능하게 해주는 전사적 애플리케이션 통합환경이다.
 - 어댑터를 이용해 메시지 변환이 가능하여 서로 다른 코드나 프로토콜을 사용하는 시스템 간 통신이 가능하다.
 ex) Point-to-Point, Hub & Spoke, Message Bus(ESB)
 - Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식이다.
 - ESB : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식이다.

EAI/ESB ( Hybrid)
 : 그룹 내에서는 Hub & Spoke 방식을 사용하고, 그룹 간에는 Message Bus 방식을 사용하는 표준 통합 기술이다.

19) Ch 1. 애플리케이션 설계

모듈의 성능평가에 관한 이해 문제입니다.

결합도 Coupling -  "내공외제스자"
 : 모듈 사이의 연관 관계에 의해 모듈이 서로를 의존하는 정도를 의미한다.
 - 결합도가 약할수록 의존성이 약해지기 때문에 모듈의 독립성이 높아진다.
 
내용 결합도 Content Coupling 
 : 모듈이 다른 모듈의 내부 기능과 데이터를 직접적으로 사용하는 경우
공통 결합도 Common Coupling 
 : 모듈이 다른 모듈의 내부 데이터를 참조하는 경우
 - 인수로 받은 매개변수가 아닌 호출 모듈의 내부 전역 변수를 제어 Call By Reference 방식
외부 결합도 External Coupling 
 : 두 모듈이 외부에 선언된 변수를 참조하는 경우
제어 결합도 Control Coupling 
 : 모듈 간의 인터페이스로 값만 전달되는 것이 아니라 제어 요소도 전달하는 경우
스탬프 결합도 Stamp Coupling 
 : 두 모듈이 동일한 자료구조를 부분적으로 공유하는 경우
자료 결합도 Data Coupling 
 : 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해 상호작용이 일어남
 - Call By Value 방식

응집도 Cohesion - "우논시절교순기"

: 모듈 내부 요소들이 밀접한 관계를 맺고 있는 정도를 의미한다.

 

우연적 응집도 Coincidental Cohesion 

 : 서로 관련 없는 요소로 구성된 경우

논리적 응집도 Logical  Cohesion 

 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들

시간적 응집도 Temporal Cohesion 

 : 연관성은 없지만 특성 시기에 함께 처리해야 하는 기능들을 묶어놓은 경우

절차적 응집도 Procedural  Cohesion 

 : 하나의 문제를 해결하기 위해 순차적으로 수행되는 경우

교환적 응집도 Communication  Cohesion 

 : 모듈의 기능들이 동일한 입출력 데이터를 사용하여 서로 다른 기능을 수행하는 경우

순차적 응집도 Sequential  Cohesion 

 : 모듈의 기능 수행의 결과물이 그다음 기능 수행의 입력 데이터로 사용되는 경우

기능적 응집도 Functional  Cohesio

 : 모듈 내부의 모든 기능 요소들이 단일 문제를 해결하는데 수행

 

728x90
728x90

SQL

 : 관계형 데이터 모델을 상대로 제어되는 DBMS의 표준 데이터베이스 언어이다.

 - 정의어, 조작어, 제어어


DDL ( Data Definition Language )

  - 생성/변경/삭제의 기능을 수행하는 데이터 정의어 이다.

 - Create, Alter, Drop, Truncate

 

1) Create ( 테이블 생성 )

//데이터베이스 생성
Create DataBase 학생관리;

//테이블 생성
CREATE TABLE 테이블명(
	//필드명 데이터 타입[제약조건], .... ,
    [PRIMARY KEY (필드 [, ...])]
    [
    	[FOREIGN KEY (필드[,...] REFERENCES 테이블명(필드명)]
        [ON DELETE 처리옵션],
        [ON UPDATE 처리옵션]    
    ]
	[CHECK (조건식)]
);

제약조건 유형

  • 1) PRIMARY KEY : 테이블의 기본기 정의로  NOT NULL, UNIQUE 제약을 포함한다.
  • 2) FOREIGN KEY : 테이블의 외래키 정의, 참조 무결성 위배시 처리 옵션 지정 가능
  • 3) UNIQUE : 테이블의 유일키 정의
  • 4) NOT NULL : 필수 입력 항목에 대해 설정
  • 5) CHECK : 개발자가 정의하는 제약 조건
//Table 생성의 예시
CREATE TABLE 학생(
	학번 INT PRIMARY KEY,
    이름 CHAR NOT NULL,
    연락처 CHAR(15) DEFALUT '비공개'
);

2) ALTER ( 태이블 변경) 

//필드 추가 ADD
ALTER TABLE 테이블명 ADD 필드명 데이터타입 [위치옵션];

//필드 변경 MODIFY
ALTER TABLE 학생 MODIFY 이름 CHAR(15);

//데이터명 변경 RENAME COLUMN 이름 -> 학생명
ALTER TABLE 학생 RENAME COLUMN 이름 TO 학생명;

//필드 삭제 DROP
ALTER TABLE 학생 DROP 연락처;

//제약조건 추가 ADD CONSTRAINT 
ALTER TABLE 학생 ADD CONSTRAINT 제약조건명 제약조건(필드명);

//제약조건 활성화 ENABLE CONSTRAINT
ALTER TABLE 학생 ENBLE CONSTRAINT 제약조건명;

//제약조건 삭제
ALTER TABLE 학생 DROP CONSTRAINT 제약조건명;

3) DRPO ( 테이블 구조 삭제)

//테이블 삭제
DROP TABLE 학생 [삭제옵션];

DML ( Data Manipulation Language )

 - 데이터 삽입, 수정, 삭제, 조회

 - Insert Update, Delete, Select

 

1) INSERT

INSEART INTO 테이블명 (필드[, ...]) VALUES ( 값[, ...] );

2) UPDATE

UPDATE 테이블명 SET 필드 = 값[, ...] WHERE 조건식;

3) DELETE

DELETE FROM 테이블명 WHERE 조건식;

4) SELECT 

SELECT [DISTINCT] 필드[, ...] FROM 테이블명
	[ [WHERE 조건식 | GROUP BY 필드 [HAVING 조건식] ]
    [ ORDER BY 필드 [ASC | DESC]];
  • DISTINCT : 중복 튜플을 제거하여 조회한다
  • * : 모든 필드를 조회한다
  • GROUP BY : 지정된 필드의 데이터를 기준으로 튜플을 그룹화한다.
  • HAVING BY : 그룹별 조건을 만족하는 튜플들을 조회한다.
  • ORDER BY : 지정된 필드를 기준으로 튜플을 정렬한다 (ASC 오름차순, DESC 내림차순)

5) SELETE ~ AS

//집계함수와 AS
// 성적 테이블에서 영어 점수의 합계를 출력
SELECT SUM(영어점수) AS '영어 합계' FROM 성적;
  • COUNT( ) : 개수
  • SUM ( ) : 합계
  • AVG( ) : 평균
  • MAX ( ) : 최대값
  • MIN( ) : 최소값
  • STDEV( ) : 표준편차
  • VAR ( ): 분산

6) SELECT 조건식 지정

//AND 비교
//국어와 영어 성적이 모두 80점 이상인 튜플 출력
SELETE * FROM  성적 WHERE 국어 >= 80 AND 영어 >= 80;

//OR 비교
//1반,3반,5반 의 튜플 출력
//IN : 조금더 간편하게 표현가능
SELECT * FROM 성적 WHERE 반="1반" OR 반="3반" OR 반="5반";
SELECT * FROM 성적 WHERE 반 IN ("1반", "3반", "5반");

//IS NULL 비교 : 필드가 비어있는 튜플 출력
SELECT * FROM 성적 WHERE 벌점 IS NULL;

//LIKE 비교 : 이름이 박으로 시작되거나 은으로 끝나는 튜플 출력
SELECT * FROM 성적 WHERE 이름 LIKE 박% OR &은 ;

//BETWEEN 비교 
SELECT * FROM 성적 WHERE 평균 BETWEEN 80 AND 90;

7) 그룹화

//남,여 성별에 따른 튜플의 개수를 출력
SELECT 성별, COUNT(*) FROM 성적 GROUP BY 성별;

//평균이 80 이상인 성별에 따른 튜플의 개수 출력
SELECT 성별 , COUNT (*) FROM 성적 GROUP BY 성별 HAVING BY 평균 >= 80;

 

8) 조인(JOIN)

//INNER JOIN : 일치하는 데이터만 조인
SELECT * FROM 학생 JOIN 과목 ON 학생.과목코드 = 과목코드.과목코드;

//LEFT JOIN : 왼쪽(학생)의 테이블 데이터는 전부 포함하고 
//오른쪽(과목) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 LEFT JOIN 학생.과목코드 = 과목.과목코드;

//RIGHT JOIN : 오른쪽(학생)의 테이블 데이터는 전부 포함하고
// 왼쪽(학생) 테이블은 기준을 일치하는 데이터만 조인
SELECT * FROM 학생 RIGHT JOIN 학생.과목코드=과목.과목코드;

DCL Data Control  Language

 

1) GRANT 형식

GRANT [ 권한 ] TO [ 사용자 ] [WITH GRANT / ADMIN OPTION ]

PUBLIC : 모든 사용자에게 권한 부여

WITH GRANT OPTION : 받은 권한은 다른 사용자에게 부여 가능 다른 사용자에게 부여된 권한 회수가능

WITH ADMIN OPTION : 받은 권한을 다른 사용자에게 부여가능하나 또 다른 사용자에게 부여된 권한 회수 불가능

 

2) REVOKE

REVOKE [ 권한 ] FROM [ 사용자 ];

사용자 그룹 관리는 역할 기반 접근 제어 방식을 사용한다.

 

트랜잭션

 : 한 개 이상의 데이터베이스를 조작하는 논리적인 연산의 집합

 

트랜잭션의 특성 (ACID)

  • 원자성 Atomicity : 모두 실행되거나 모두 실행되지 않아야 한다.
  • 일관성 Consistency : 트랜잭션을 마친 후에도 동일하게 오류가 발생하지 않아야 한다.
  • 고립성 Isolation : 트랜잭션 실행 중 다른 트랜잭션에 영향을 받지 않아야 한다
  • 지속성 Durability : 트랜잭션의 결과는 항상 유지 보존되어야한다.

트랜잭션 제어어 TCL, Transaction Control Language

 : 트랜잭션의 흐름을 변경하는 것이 아니라 트랜잭션의 결과를 수용하거나 취소하는 것을 의미한다.

  • 활동 Active : 트랜잭션이 실행을 시작하였거나 실행 중인 상태
  • 부분 완료 Partially Committed  : 마지막 연산을 끝내고 데이터베이스에 실행 결과를 적용하기 직전의 상태
  • 완료 Committed  : 연산을 완료하고 연산의 결과를 데이터베이스에 적용한 상태
  • 실패 Failed  : 연산 실행 중 오류에 의해 더 이상 연산이 진행될 수 없는 상태
  • 철회 Aborted : 트랜잭션을 실패하여 트랜잭션 실행 전 상태로 복구 된 상태, savepoint 지정을 통해 복구할 위치를 지정
  • 실행 취소 Undo : 변경되었던 데이터를 취소하고 원래의 내용으로 복원
  • 다시 실행 Redo : 실행취소를 통해 원래 내용으로 변경되었던 데이터를 원래 내용으로 복원한다.
728x90
728x90

데이터베이스

 : 업무를 수행하는데 필요한 데이터의 체계적인 집합으로 데이터의 중복성과 종속성 문제를 해결하고 데이터의 무결성을 보장하는 서비스. 사용자 간 데이터 공유가 가능하고 다양한 인터페이스를 제공한다.

 

데이터베이스 시스템의 정의

  • 통합 데이터 Integrted Data : 검색의 효율성을 위해 불필요한 데이터를 제거하고 중복이 최소화된 데이터들의 집합
  • 저장 데이터 Stored Data  : 컴퓨터 시스템이 접근할 수 있는 저장 매체에 저장된 데이터이다.
  • 운영 데이터 Operational Data : 조직의 목적을 위해 반드시 필요한 모든 데이터와 데이터들의 관계 집합이다.
  • 공유 데이터 Shared Data : 여러 응용 프로그램들이 공통으로 필요로 하는 데이터를 공유한다.

데이터베이스 시스템의 특징

  • 실시간 접근성 Real Time Accessibility : 사용자의 질의에 대하여 실시간으로 처리하여 응답한다.
  • 계속적인 진화 Continuous Evolution :  새로운 데이터의 생성이나 기존 데이터의 변경, 삭제 등을 통해 항상 최근의 데이터를 정확하게 유지한다.
  • 동시 공유 Concurrent Sharing : 여러 사용자가 동시에 원하는 데이터를 이용할 수 있다.
  • 내용에 의한 참조 Content Reference : 데이터가 저장된 위치가 아닌 사용자가 요구하는 데이터 내용에 따라 데이터를 참조한다.
  • 데이터 논리 독립성 Independence : 응용 프로그램과 데이터베이스를 분리하여 서로의 변경에 영향을 주지 않는다.

스키마

 : 데이터베이스의 구조와 제약조건에 대한 명세를 기술한 것이다. 외부, 개념, 내부의 3단계 논리적 구조를 가진다.

 

1) 외부 스키마

 : 프로그래머나 사용자의 입장에서 본 데이터베이스의 모습을 나타낸 것이다.

 - 일반적으로 View를 통해서 데이터베이스 내용 중 사용자가 필요한 정보만 볼 수 있도록 구현한다.

2) 개념 스키마

 : 모든 응용 프로그램과 사용자들이 필요로 하는 데이터베이스 전체를 정의한 것이다.

 - 데이터에 대한 접근 권한, 보안 정책, 무결성 규칙들이 포함 된다.

 - 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것이다.

3) 내부 스키마

 : 물리적인 저장 장치의 입장에서 본 데이터베이스의 모습을 나타낸 것이다.

 - 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등의 데이터 처리에 대한 제약사항을 정의한다.

 

데이터베이스 관리 시스템 DBMS, DataBase Management System

 : 응용 프로그램을 사용하는 사용자와 데이터베이스 사이에서 데이터를 저장하고 분석하기 위해 상호작용하는 응용 프로그램

 - 데이터 관리의 복잡성을 해결하고 관련된 대부분의 기능을 지원한다.

장점 ) 데이터의 중복을 최소화하고 일관성을 유지한다, 보안을 강화하여 무결성을 유지시킨다.

단점 ) 데이터의 규모가 크고 복잡하여 구축 자체가 어렵다. 훼손된 데이터에 대한 복구가 매우 어렵다.

 

DBMS의 특징 - "무일회보효"

  • 무결성 : 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질
  • 일관성 : 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정하게 유지되는 성질
  • 회복성 : 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질
  • 보안성 : 노출, 변경 손실로부터 보호되어야 하는 성질
  • 효율성 : 사용자, SW, 시스템 등의 요구 조건을 만족하도록 하는 성질

데이터베이스의 기본 용어

 

DBMS 기본 용어

  • 속성 Attribute : 개체 정보의 특성을 나타내며 파일 시스템에서 필드에 해당된다. DB를 구성하는 가장 작은 단위
  • 도메인 Domain : 하나의 속성에 입력될 수 있는 값들의 집합이다.
  • 튜플 Tuple  : 개체 내에서 하나의 완벽한 정보를 나타낸다. 튜플 사이에는 순서가 없다.
  • 릴레이션 Relation  : 하나 이상의 속성들의 집합으로 이루어진 표
  • 차수 Degree : 릴레이션에서 정의된 속성의 개수
  • 기수 Cardinality : 릴레이션에서 생성된 튜플의 개수
  • 정보의 부재 Null : 값이 비어있다는 것을 명시하며, 숫자 0과 공백 문자가 아니다.

키 (Key)

1) 후보키(Candidate Key) : 릴레이션에 있는 모든 튜플에 대해 유일성과 최소성을 모두 만족시키는 속성

 - 유일성 : 튜플을 유일하게 구분할 수 있는 성질

 - 최소성 : 가장 적은 수의 속성으로 구성되는 성질

 ex ) 학생 테이블이 있다면 주민번호, 학번, 이름, 연락처 속성이 후보키이다.

2) 기본키(Primary Key) : 후보키들 중 튜플의 식별을 위해 지정된 키이다. 중복이나 Null 값을 가질 수 없다.

3) 대체키(Alternate Key) : 기본키로 지정된 키를 제외한 후보키이다.

4) 슈퍼키(Super Key) : 튜플을 식별하기 위해 두 개 이상의 속성들의 집합으로 이루어진 키

 - 유일성은 만족시키지만, 최소성은 만족시키지 못한다.

5) 외래키(Foreign Key) : 관계된 다른 릴레이션의 기본키를 참조하는 속성이다.

 - 외래키는 제약사항에 따라 중복과 Null 값이 허용된다.

 

무결성(Integrity) 제약사항

  • 도메인 무결성 : 하나의 속성에 입력되는 값이 지정된 도메인의 범위를 벗어나지 않는 성질이다.
  • 개체 무결성 : 기본키로 지정된 속성은 중복 값과 Null 값이 있어서는 안 된다
  • 참조 무결성 : 외래키로 지정된 속성은 참조하는 기본키에 존재하지 않는 값을 입력할 수 없다는 성질

논리 데이터 모델링 

개체

 : 현실 세계의 식별 가능한 대상을 추상화하여 표현하는 단위

속성

 : 개체 정보의 특성을 나타내며 파일 시스템에서 필드에 해당된다. 개체를 구성하는 가장 작은 단위

식별자

 : 개체 타입에서 각각의 개체를 유일하게 식별할 수 있는 결정자의 역할

 - 모든 개체 타입에는 반드시 하나 이상의 식별자가 존재해야 한다.

 - 식별자가 지정되면 변경할 수 없으며, 주 식별자의 경우 반드시 값이 존재해야 한다.

 

데이터 모델링의 정의

 : 현실 세계의 데이터 구조를 디지털 세계의 데이터 구조로 변환하는 과정이다. 개체와 관계를 중심으로 분석하여 명확하고 체계적으로 설계한다.

  • 논리적 구조 : 논리적으로 표현된 데이터 구조
  • 연산 : 데이터 구조에서 삽입, 삭제, 변경하는 기능
  • 제약 조건 : 데이터 구조에서 허용할 수 있는 관계를 명세

절차 ) 개념적 설계 > 논리적 설계 > 물리적 설계

  •  개념적 설계 : 정보 내용에 대한 요구 조건을 만족시키면서 쉽게 이해할 수 있는 정보 구조를 설계하는 단계. E-R 모델로 표현하는 방법이 대표적이다. 개념적 스키마 모델링, 트랜잭션 모델링
  • 논리적 설계 : 개념 데이터 모델을 상세화 하여 논리적인 데이터 집합, 관리 항목, 관계 등을 정의하는 단계이다. DBMS에 맞는 데이터베이스 스키마 및 트랜잭션 인터페이스를 설계한다.
  • 물리적 설계 : 논리 데이터 모델을 DBMS의 특성 및 성능을 최대한 고려하여 구체화시키는 단계이다. 레코드 양식, 데이터 구조, 응답 시간, 저장 공간 등을 설계한다.

E-R 다이어그램

: 1976년에 피터 첸(Peter Chen)에 의해서 최초로 제안되었다. 개체와 실체 간의 관계를 그림 형태로 묘사한 것이다.

 - 논리적인 그림이기에 시스템에 아무런 영향을 받지 않는다.

 - 기본키, 외래 키, 성능, 시스템 구조 등 물리적 시스템 환경은 고려하지 않는다.

 

관계 스키마

 : 현실 세계를 데이터베이스에 정확하게 표현하기 위한 논리적 구조를 결정한다.

 - E-R 모델에 기초하여 릴레이션을 구성한다.

 - 중복 및 불필요한 데이터가 발생하지 않도록 설계한다.

 

이상 현상 Anomaly

 : 잘못된 스키마 설계로 인해 릴레이션에 예기치 못한 현상이 발생하는 것을 의미한다

  • 삭제 이상 : 특정 튜플을 삭제할 때, 관련된 정보도 함께 삭제하지 않으면 삭제가 불가능한 상태
  • 삽입 이상 : 특정 튜플을 삽입할 때, 관련되지 않은 정보도 함께 삽입하지 않으면 삽입이 불가능한 상태
  • 갱신 이상 : 특정 데이터를 갱신할 때, 데이터의 불일치가 발생하는 상태

정규화

 함수 종속 

 : 관계형 모델을 설계할 때 가장 중요한 요소로서 개체 내에 존재하는 속성 간의 종속성을 의미한다.

결정자 : 관계된 속성의 종속성을 규명할 때 기준이 되는 속성이다.

종속자 : 결정자에 의해 값이 정해지는 속성이다.

 

관계 대수

 : 연산자 또는 연산 규칙을 사용하여 기술하는 절차식 언어

 - 주어진 관계로부터 원하는 데이터와 그 데이터를 유도하는 연산자이다.

 

일반 집합 연산자

1) 합집합(Union) : 두 릴레이션을 합치며 중복된 내용은 하나로만 출력된다.

2) 교집합(Intersection) : 두 릴레이션 사이에 공통 된 부분을 추출할 때 사용한다.

3) 차집합(Difference) : 두 릴레이션 중 공통된 부분을 제거하고 추출할 때 사용한다.

4) 곱집합(Cartesian Product) : 두 릴레이션 튜플을 합쳐서 순서쌍의 집합을 만드는 연산이다.

 

순수 관계 연신자

1) Select  : σ (조건)(R)

  : 하나의 릴레이션에서 조건에 맞는 튜플(수평적)을 분리하는 연산 

2) Project  : π (속성 리스트)(R) 

  : 하나의 릴레이션에서 조건에 맞는 속성(수직적)을 분리하는 연산이다.

3) Join : (R)⋈<조건>(S)

 : R과 S속성이 포함 된 조건을 성립하는 요소

4) Natural Join  : (R)⋈N(S)

 : 두 릴레이션 공통으로 포함되는 속성값이 동일한 요소

5) Division : R ÷ S

 : 릴레이션 R에서 S의 속성의 데이터와 일치하는 요소중 S의 속성을 제외한 요소


정규화

: 데이터 모델링의 단계 중 가장 중요한 단계로써 논리 데이터 모델링을 상세화 하는 단계

 - 정확성, 일치성, 단순성 ,비중복성, 안정성이 보장된다.

 - 중복되는 튜플이 없어 효과적인 데이터 표현 및 저장이 가능하다

 - 비교적 간단한 연산자로 효과적인 연산이 가능하도록 구성한다

 

제1 정규형 : 도메인이 원자 값만 가지도록 분해한다.

제2 정규형 : 부분 함수 종속을 제거한다. [ 부분 함수 종속 = 기본키만으로는 해당 데이터를 식별할 수 없는 종속관계 ]

제3 정규형 : 이행적 함수 종속을 제거한다.

보이스 코드 정규형 : 결정자가 후보 키가 아닌 종속을 제거한다. [ 후보키 = 결정자가 유일성과 최소성을 만족시키는 키]

제4 정규형 : 다치 종속을 제거한다.

제5 정규형 : 후보키를 통하지 않은 조인 종속을 제거한다.

728x90
728x90
더보기

제품 소프트웨어 패키징

: 완료된 제품 소프트웨어를 사용자에게 전달하기 위해 묶어내는 것이다.

 

Jenkins

 - Java 기반의 오픈소스 자동화 기구

 - 가장 많이 사용되는 비륻 자동화 도구

 - Git과 같은 형상 관리 도구와 연동이 가능

Gradle

 - groovy언어 기반의 오픈 소스 자동화 도구

 - 안드로이드 앱 개발 환경에 사용

테스트

 : 구현된 소프트웨어를 대상으로 오류를 찾아내는 작업이다.

 - 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발해야한다.

 

테스트 기법

실행 기반 테스트

1) 정적 테스트

 : 프로그램을 실행하지 않고 요구사항 명세서, 소스코드를 대상으로 분석한다

 - 워크스루(회의 시작전 빠르게 검토), 동료검토(2~3명의 동료평가), 인스펙션(전문가의 도움) 등이 있다.

2) 동적 테스트

 : 프로그램을 실행하여 결함을 찾는 테스트이다.

- 화이트박스 테스트 : 프로그램의 구조, 경로 등을 위주로 테스트

 - 블랙박스 테스트 :  프로그램의 기능, 결과를 위주로 테스트

 

설계 기반 테스트

1) 명세 기반 테스트 

 : 사용자 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현 여부를 확인하는 테스트이다

 - 동등 분할, 경계 값 분석 등

2) 구조 기반 테스트

 : 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 만들어 확인한느 테스트이다.

 - 구문 기반, 결정 기반, 조건 기반 등

3) 경험 기반 테스트

 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행되는 테스트이다.

 

목적 기반 테스트

회복 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트

안전 : 시스템에 설치된 시스템 보호 도구가 잘 작동하는지 확인하는 테스트

강도 : 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부화시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트

성능 : 실시간 성능이나 전체적인 효율성을 진단하는 테스트

구조 : 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트

회귀 :  소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없는지 확인하는 테스트

병행 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트


화이트박스 테스트

 : 모든 소스 코드의 논리적인 경로를 테스트 케이스로 확인하는 방법이다.

 - 기초 경로 테스트(Basic Path Test) : 논리적 순환 복잡도를 측정

 - 조건 검사(Condition Testing)  : 소스코드의 논리적인 조건을 테스트

 - 루프 검사(Loop Testing) : 소스 코드의 반복 구조를 중점적으로 테스트

 - 데이터 흐름 검사(Data Flow Testing) : 소스 코드의 변수 정의, 사용을 중점적으로 테스트

 

블랙박스 테스트 

 : 요구사항 명세서를 기반으로 구현된 기능을 테스트 케이스로 설계하는 방법, 기능 테스트라고도 한다.

 - 동치 분할 검사 : 입력 조건에 유효한 값과 무효한 값을 균등하게 하여 테스트 케이스를 설계

 - 경계값 분석 : 입력 조건의 경계에서 오류가 발생할 확률이 높다는 점을 이용하여  경계값을 테스트케이스로 사용

 - 원인-효과 그래프 검사 : 입력 데이터와 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 설계

 - 오류 예측 검사 : 과거의 경험이나 확인자의 감각에 의존하여 테스트 케이스를 설계

 - 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 테스트

 

테스트 커버리지

 : 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준

  •  - 구문 (Statement) 커버리지 : 모든 명령문을 적어도 한번은 수행하는 커버리지
  •  - 결정 (Decision) , 분기 (Branch)  커버리지 : 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행
  •  - 조건(Condition) 커버리지 : 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
  •  - 조건/결정 커버리지 : 전체 조건식뿐만 아니라 개별 조건식도 참과 거짓 결과가 한 번씩 되도록 수행하는 커버리지
  •  - 변경(Modified) 조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록 설계
  •  - 다중 조건 커버리지 : 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

 


개발단계에 따른 애플리 케이션 테스트

V-모델 

 : 애플리케이션 테스트와 소프트웨어 개발 단계를 연결하여 표현한 것이다.

- 개발 단계에 대한 완성도를 개발자 관점에서 검증하고, 각각의 개발 결과를 사용자 관점에서 확인한다.

"단통시인" - 단위 테스트 > 통합 테스트 > 시스템 테스트 > 인수 테스트

 

단위 테스트

 : 코딩이 완료된 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트 초점에 맞춰 테스트하는 것이다.

  • 명세 기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트를 진행
  • 구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 진행

※ 일반적으로 단위테스트 단계에서는 구조기반 테스트를 진행하고, 명세 기반 테스트는 잘 진행하지 않는다.

 

통합 테스트

 : 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 단계이다.

- 점증적/비점증적 방식, 하향식 통합테스트, 상향식 통합테스트

 - 하향식 테스트 : 주요 제어 모듈의 하위 모듈은 스텁(Stub)으로 대체

 - 상향식 테스트 : 상위 모듈에서의 데이터 입출력을 확인하기 위한 드라이버(Driver) 작성

 

시스템 테스트 

 : 개발된 소프트웨어가 해당 컴퓨터 시스템에 완벽하게 수행되는가를 점검하는 테스트

 - 기능적 요구사항, 비기능적 요구사항으로 테스트 진행

 

인수테스트 

 : 개발이 완료된 소프트웨어에 대해 사용자 요구사항 충족 여부를 사용자가 직접 테스트하는 것

 - 알파 테스트 : 개발자의 장소에서 제한된 환경에서 사용자가 개발자 앞에서 행하는 테스트

 - 베타 테스트 : 다수의 사용자에게 제한되지 않은 환경에서 프로그램을 테스트하는 방법

 


결함 관리

테스트 케이스

 : SW가 사용자 요구사항을 준수하여 개발되었는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

 - 작성 순서)계획 검토 및 자료확보 > 위험 평가 및 우선순위 결정 > 요구사항 정의 > 구조 설계 및 테스트 방법 > 정의 > 타당성 및 유지 보수

 

테스트 시나리오

 : 여러 개의 테스트 케이스들을 순서대로 진행할 수 있도록 묶은 집합이다.

 - 사용자의 요구사항과 설계 문서등을 토대로 작성한다.

 

테스트 오라클 

 : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동

  • 참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대 결과를 제공하는 오라클로 모든 오류를 검출할 수 있다.
  • 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대 결과를 제공하는 오라클이다.
  • 추정 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력 값에 대한 기대 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클이다.
  • 일관성 검사 오라클 : 애플리케이션의 변경이 있을 때, 테스트케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클이다.

테스트 자동화 도구

 : 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용하는 것.

 - 정적 분석 도구 : 프로그램을 실행하지 않고 코딩 표준, 스타일, 복잡도 및 기타 결함 등을 발견하기 위해 사용된다.

 - 테스트 실행 도구 : 테스트 데이터와 수행 방법 등이 포함된 스크립트 언어를 사용하여 테스트를 실행하는 방법이다.

 - 성능 테스트 : 애플리케이션의 처리량, 응답시간, 경과 시간, 자원 사용률 등을 테스트를 수행

 - 테스트 통제 : 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구


성능 분석 및 품질 평가

성능 측정 지표

  • 처리량 : 정해진 시간내에 처리할 수 있는 연산, 트랜잭션의 수
  • 응답 시간 : 명령이 입력된 후 응답 출력이 개시될 때 까지의 시간이다.
  • 반환 시간 : 사용자가 데이터 및 명령을 입력한 시점부터, 트랜잭션 처리후 결과의 출력이 완료할 때까지 걸리는 시간.
  • 자원 사용률 : 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량 등을 말한다.

Clean Code

  •  : 중복을 최소화 한 가독성이 좋고 단순한 코드
  • 로직의 이해가 빠르고 수정 속도가 빠르다
  • 오류를 찾기 용이하고 유지보수 비용이 낮아진다.

리팩토링

 : 코드의 기능 자체를 바뀌지 않은 상태에서 구조를 개선하는 것이다.

728x90
728x90

통합 구현 도구

IDE (Integrated Development Environment)

 : 프로그램 개발에 관련된 모든 절차를 하나의 프로그램 안에서 처리하는 환경을 의미한다.

 - 개발환경, 컴파일 및 디버깅, 외부 모듈과의 통합 기능을 기원한다.

 ex ) 이클립스, 비주을 스튜디오, 안드로이드 스튜디오, 엑스코드 등

 

협업도구

 : 소프트웨어 개발에 참여하는 많은 인원의 개발자가 서로 다른 작업환경에서도 원할하게 프로젝트 수행할 수 있도록 도와주는 도구

 

형상 관리 도구

 : 프로그램의 소스코드나 문서의 버전 및 이력관리, 변경사항 등을 체계적으로 관리할 수 있는 기능을 제공하는 프로그램 및 환경

 - 불필요한 소스 코드의 수정을 제한할 수 있고 빠른 오류 복구가 가능하다

  ex ) CVS ( Concurrent Version System), SVN(Subversion), Git

 - CVS : 가장 오랫동안 사용된 형상 관리도구로 텍스트 기반 소스만 지원하며 파일이나 디렉토리 변경이 불편하다.

 - SVN : CVS와 유사하면서 CVS의 단점을 보안하여 GUI가 존재한다.

 - Git : 원격 저장소와 로컬 저장소를 동시에 사용하기 때문에 복구가 용이하다.

더보기

형상관리 도구의 기능

  • check-out : repository로부터 원하는 버전의 소프트웨어 형상의 사본을 컴퓨터로 가져오는 기능
  • check-in : 개발자가 수정한 소스 코드를 repository로 업로드 하는 기능이다.
  • commit : repository로 업로드가 성공적으로 완료되었을 때, 최종 반영을 승인하는 기능
  • import : 비어있는 repository에 처음 소스를 업로드 하는 기능
  • export : 버전 관리 파일을 뺀 순수 코드 파일만 받아오는 기능

인터페이스 구현

인터페이스 기술 표준

EAI ( Enterprise Application Integration )

 : 서로 다른 기종의 시스템 간의 연동을 가능하게 해주는 전사적 애플리케이션 통합환경이다.

 - 어댑터를 이용해 메시지 변환이 가능하여 서로 다른 코드나 프로토콜을 사용하는 시스템 간 통신이 가능하다.

 ex) Point-to-Point, Hub & Spoke, Message Bus(ESB)

 - Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식이다.

 - ESB : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식이다.

EAI/ESB ( Hybrid)

 : 그룹 내에서는 Hub & Spoke 방식을 사용하고, 그룹 간에는 Message Bus 방식을 사용하는 표준 통합 기술이다.

 

인터페이스 데이터 표준

 : 응용 프로그램 영역에서 인터페이스 형식에 맞춘 데이터 포맷을 인터페이스 대상으로 전송하고, 이를 수신측에서 파싱하여 해석하는 방식이다.

XML ( eXtensible Markup Language )

 : 특수한 목적을 갖는 마크업 언어를 만드는데 사용되는 다목적 마크업언어

JSON ( JavaScript Object Notation )

 : 기본의 XML을 대체하는 독립적인 개방형 표준형식이다. 보편적으로 AJAX기술에서 많이 사용된다.

 

웹 서비스 연동과 표준

 :  네트워크상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기위한 소프트웨어 시스템

SOAP ( Simple Object Access Protocol )

 : 웹 서비스에서 사용되는 보편적이고 확장성 있는 XML 기반 메시지 프로토콜이다.

UDDI ( Universal Description, Discover and Integration )

 : 필요한 웹 서비스를 찾을 수 있는 웹 서비스 레지스트리이다.

WSDL ( Web Service Description Language )

 : 웹 서비스를 기술하기 위한 표준 형식이다.

 - 웹 서비스에서 제공되는 기능들의 사용 방법을 XML 기반으로 설명해 주는 언어

 

인터페이스 구현 검증

xUnit : java ( Junit), C++ (Cppunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크

STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크

FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임 워크

NTAF : Naver 테스트 자동화 프레임 워크이며, STAF 와 FitNesse를 통합한 프레임 워크

Selenium : 다양한 브라우저 지원 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임 워크

watir : Ruby 기반 웹 애플리케이션 테스트 프레임워크

728x90

+ Recent posts