정보처리산업기사 2022 기출 키워드 정리

 2022 정보처리산업기사 

기출 키워드




스택, 큐

STACK


  • 스택은 LIFO 방식으로 후입선출 구조( 마지막에 삽이된 자료가 가장 먼저 삭제된다 

  • 스택(STACK)은 top으로 정한 곳을 통해서만 접근할 수 있다. 새로 삽입되는 자료는 top이 가리키는 가장 맨 위에 쌓이게되며, 자료를 삭제할 때도 top을 통해서 삭제가 가능하다.

QUEUE

  • 큐는 먼저 들어온것이 먼저 나가는  FIFO 방식으로 선입선출 구도 이며 스택과는 달리 큐는 한쪽 끝에서 삽입작업, 다른 쪽에서 삭제 작업이 이루어 진다 . 


WAF 

웹 트래픽 차단 방화벽 영문 약어 , 패킷의 페이로드 직접확인 , XSS와 SQL 인젝션 차단 


명령어 수행


Fetch instruction 

  • 명령어를 주기억 장치에서 레지스터로 가져오는 단계


Decode instruction 

  • 명령어를 분석하여 작업 수행에 필요한 장치에 제어신호를 보내는 단계


Operand Fetch 

  • 명령어를 주기억 장치에서 레지스터로 가져오는 단계


Execute Cycle

  • 명령어에 해당하는 연산을 실행하고 결과를 레지스터에 저장하는 단계


Interrupt Search

  • 인터럽트가 추가된 기계 사이클은 명령어 실행 단계 다음에 인터럽트 처리 여부를 확인하는 단계를 가진다 . 







통신 프로토콜의 기본 구성 요소


구문, 의미, 시간(timing)


 

스키마의 논리적 구조 

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

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

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



NEM 기법 

초심자와 숙련자를 사용성 테스트에 참여시킨 후 대상 제품의 테스트 수행시간을 비교하여 문제점을 객관적으로 제시하는 사용성 테스트 기법을 말한다 . 



성능 분석 지표 

  1. 처리량(Throughput) : 정해진 시간에 처리할 수 있는 연산, 트랜잭션의 수 

  2. 응답 시간(Response Time) : 명령이 입력된 후 응답 출력시 개시 될 때 까지의 시간 

  3. 반환 시간(Turnaround time) : 사용자가 데이터 및 명령을 입력한 시점부터 트랜잭션 처리 후 결과의 출력이 완료할 때까지 걸리는 시간

  4. 자원 사용률(Resource Usage) : 트랜잭션을 처리하는 동안 사용하는 CPU 사용, 메모리 사용량, 네트워크 사용량 

E-R Diagram  

1976년 피터첸에 의해서 최초로 제안되었으며 업무 분석 결과로 도출된 개체와 실체 간의 관계를  그림 형태로 묘사한 것이다. 






테스트 원칙 


  • 프로그램의 계획 단계부터 테스트 진행 : 소프트웨어 생명 주기의 단계 별로 적절한 테스트를 진행 

  • 완벽한 테스트는 불가 : 반복적인 테스트로 잠재적인 오류를 줄일 수 있지만 모든 오류를 발견 할 수 없다 

  • 자신이 아닌 다른 개발자가 테스트 : 자신이 코딩한 소스코드는 자신이 검토하여 오류를 발견하는 것보다 제 3자가 소스코드를 검토하여 오류를 발견할 확률이 높다 . 

  • 결함집중(Detect Clustering) : 결함은 대부분 소수의 특정 모듈에 집중되어 있으므로 결함의 발견, 가시화, 제거, 예방등을 효과적으로 진행할 수 있어야한다 . 

    • 낚시의 법칙 : 테스트 원칙 중 , 특정 위치에서 많은 결함이 발생한다는 법칙

    • 파레토 법칙 : 소프트웨어 결함의 80%은 20%의 기능을 가진 다는 법칙 

  • 살충제 파라독스 : 동일한 테스트 케이스를 반복 실행하면 더 이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트케이스를 개선하여 수행해야 한다 .

  • 오류-부재의 궤변 : 아무리 많은 오류를 제거한다고 해도 사용자의 요구 사항을 만족하지 못하는 프로그램은 품질이 높다고 할 수 없다 . 


GUI

메뉴나 아이콘 등의 그래픽 요소를 통해 시스템과 상호작용하는 사용자 인터페이스 



테스트 시나리오


여러가지의 테스트케이스를 순서대로 진행할 수 있도록 묶은 집합  



프로세스 상태 전이 


인터럽트 처리 

프로세스 수행 중에 다른 프로세스를 수행하거나 , 외부 인터럽트 장치에 의해 현재 수행 중인 프로세스가 중단되는 상태 


인터럽트의 종류 

외부 인터럽트 

  • 전원 이상 

  • 기계 착오 

  • 입출력 

내부 인터럽트

  • 프로그램 검사 인터럽트

소프트웨어 인터럽트 

  • svc 인터럽트 


PCB(Process Control Block)

운영체제가 프로세스에 대한 정보를 기록한 테이블


문맥교환

  • CPU가 할당되는 프로세스를 변경하기 위해 현재 실행되는 프로세스의 상태를 저장하고 이후 실행될 프로세스의 상태 정보를 설정한 다음 CPU를 할당하여 실행하는 작업

    • Time Slice가 작을 수록 문맥 교환수와 인터럽트 횟수, 오버헤드가 증가 

    • Time Slice가 클수록 문맥 교환수와 인터럽트 횟수, 오버헤드가 감소 

IPC

협력하는 프로세스들 사이에 서로 데이터를 주고 받는 행위 또는 그에대한 방법이나 경로 



프로세스 스케줄링 

CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리 

  • 장기 스케줄링 : 어떤 프로세스를 커널에 등록할것인가 

  • 중기 스케줄링 : 어떤 프로세스에게 메모리를 할당할 것인가 

  • 단기 스케줄링 : 어떤 프로세스에게 CPU를 할당할 것인가 


비선점형 스케줄링

현재 실행 중인 프로세스를 다른 프로세스가 강제로 중단 시킬 수 없는 방식 

ex) FIFO, SJF, HRN 


선점형 스케줄링 

현재 실행 중인 프로세스를 다른 프로세스가 강제로 중단 시킬 수 있는 방식 

ex) RR ,SRT , MFQ


0


운영체제 고려 사항 

  • 소프트웨어가 요구사항에 따라 운영되는 능력 

  • 대규모, 대용량 데이터에 대한 처리 능력 

  • 시스템에 설치 가능한 주변 기기의 정보 

  • 라이선스 비용 및 유지 관리 비용 


운영체제의 목표 

처리능력(throughout) : 일정 시간내에 시스템이 처리하는 작업의 양

반환 시간(turnaround time) : 시스템에 작업을 의뢰한 시간 부터 처리가 완료 될때 까지 걸린 시간을 의미한다 . 

사용가능도(Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용가능한 정도 

신뢰도(Reliability) : 시스템이 주어진 문제를 정확하게 해결하는지 나타내는 척도 


운영체제의 시간 

응답 시간 : 작업이 입력되고 처음 실행되기 까지 걸린 시간으로 반응 시간이라고 한다 . 

대기 시간 : 작업이 입력되고 완료되기 전까지의 시간 중 작업이 진행되지 않은 시간의 합 

실행 시간  : 작업이 입력되고 완료 되기 전까지 시간중 작업이 진행된 시간의 합 

반환 시간 : 실행 시간과 대기시간을 모두 합한 시간으로 작업이 완료될 때 까지 걸린 시간이다 

시간간격  : 프로세스가 자원을 이용하기위해 운영체제로 부터 할당받은 시간( time slice) 


주기억 장치 관리 전략 

  • 반입 전략 (fetch) : 보조 기억 장치의 데이터를 언제 주기억장치로 적재할 것인지 결정하는 전략 

    • 요구 반입 : 실행 중인 프로그램이 특정 데이터 참조를 요구 할때 적재 

    • 예상 반입 : 실행 중인 프로그램에 의해 참조될 데이터를 예상 

  • 배치 전략 (placement) :새로 반입 데이터를 주기억 장치의 어떤 공간에 위치 시킬 것인지 결정하는 전략 

    •  최초 적합 

    •  최악 적합

    •  최적 적합 

  • 교체 전략 : 주기억 장치의 모든 영역이 이미 사용중인 상태에서 새로운 데이터를 배치하려고 할 때 이미 사용중인 데이터 중 어느 영역을 교체하여 사용할 것인를 결정하는 전략 

    • FIFO, OPT, LRU, LFU, NUR ,SCR


주기억 장치 사용 방식 

  • 연속 할당 기법 

    • 단일 분할 할당 : 주기억 장치를 운영체제 영역과 사용자 영역으로 나누어 한명의 사용자만 사용자 영역을 사용하게 하는 기법   

      • 경계 레지스터가 사용 

      • 프로그램의 크기가 작을 경우 사용자영역 낭비 / 클 경우 실행 불가 

    • 오버레이 기법 

      • 주기억 장치보다 큰 사용자 프로그램을 실행하기 위한 기법 

      • 여러 조각으로 나눈 뒤 필요한 조각을 차례대로 주기억장치에 적재 

      • 조각을 나누는 작업은 프로그래머가 직접한다 . 

    • 스와핑 기법

      • 프로그램 전체를 할당하여 사용하다가 필요에 따라 다른 프로그램으로 교체하는 기법이다 . 

        • SWAP in : 보조 기억 장치에 있는 프로그램이 주기억장치로

        • SWAP out : 주기억 장치에 있있는 프로그램이 보조기억 장치로 


  • 다중 분할 기법 

    • 단편화(fragmentation) 

      • 주기억 장치에서 빈번하게 공간이 할당되고 반납됨에 따라 기억 공간들이 조각조각 나누어져 사용하지 못하는 공간이 되는 것을 말한다 . 

        • 내부 단편화 : 데이터 및 프로그램을 할당하고 남은 공간 

        • 외부 단편화 : 프로그램이 커서 할당하지 못하는 공간 

    • 단편화를 해결하기 위해 조각나있는 공간을 합쳐야 한다 . 

      • 통합 : 서로 인접해 있는 공간을 하나로 합친다 


  • 압축  : 서로 떨어져 있는 공간을 하나로 합친다 . 


  • 고정 분할 할당 기법 <MFT,Static Allocation>

    • 주기억 장치의 사용자 영역을 여러 개의 고정된 크기로 분할 하여 데이터를 할당하는 기법 

    • 단편화 발생으로 인해 주기억 장치의 공간 낭비가 크다 . 

  • 가변 분할 할당 기법(MVT,Dynamic Allocation)

    • 단편화를 줄이기 위해 프로그램을 주기억 장치에 적재하면서 필요한 만큼만 영역을 분할 하는 기법 

    • 주기억 장치를 효율적으로 사용하며 , 다중프로그래밍 정도를 높인다 . 



가상 기억 장치 

 보조기억장치 일부를 주기억장치처럼 사용하여 ,  용량이 큰 프로그램을 실행 할 수 있도록 하는 기법 .

  • 페이징 기법 : 가상기억장치에 보관되어 있는 프로그램과 주기억 장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동이랗게 나눠진 주기억 장치의 영역으로 적재하는 기법 

  • 세그멘테이션 기법 : 가상 기억 장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈뒤 주기억 장치에 적재하는 기법 

  • 내부단편화 발생하지 않으나 외부 단편화 발생가능



페이지 교체 알고리즘 

OPT : 가장 오래 사용되지 않을 페이지 교체

FIFO : 가장 먼저 적재된 (오래된) 페이지 교체 

LRU : 최근에 가장 오랫동안 사용하지 않은 페이지 교체 / 각 페이지마다 계수기나 스택을 두어 가장 오래되지 않은 페이지를 교체한다 . 

LFU : 사용 빈도가 가장 적은 페이지를 교체 

NUR : LRU 와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하며 , 최근에 사용하지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 전제로 시간적인 오버헤드를 줄일 수 있다 

SCR : FIFO의 단점을 보완하며 오랫동안 주기억 장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법이다 . 


기타 관리 사항 


페이지 크기 

페이지 크기가 작을 경우 페이지 단편화 감소, 이동시간이 줄어든다 . 

  • 효율적인 working set과 Locality 일치성 상승 

  • 페이지 맵테이블의 크기 상승으로 인한 매핑 및 입출력 속도 저하 

페이지 크기가 클 경우, 페이지 단편화 증가 , 이동시간 늘어남 

  • 비효율적인 working set과 Locality 일치성 저하

  • 페이지 맵테이블의 크기 감소으로 인한 매핑 및 입출력 속도 상승



구역성 (locality)

프로세스가 실행 되는 동안 일부 페이지를 집중적으로 참조 하게되는 성질 



워킹 셋

프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다 . 


스래싱 

프로세스의 처리시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상




데이터베이스 시스템 종류

HDBMS(Hierarchical DBMS)


데이터를 종속적인 상하 관계로 계층(Tree) 화 하여 관리하는 형태의 데이터베이스 구조이며 데이터 접근 속도가 빠르지만 구조 변화에 유연하게 대응이 어렵다 . 

모든 링크 관계는 1 : M 


NDBMS(Network DBMS)


데이터를 네트워크 형태의 논리적 구조로 표현한 데이터 모델이. 

HDBMS의 상하 종속관계는 해결되었으나 종속성문제는 해결 x 

1:1 , M:N 까지 모두 표현 


RDBMS(Relational DBMS)


관계형 데이터 베이스 관리 시스템으로서 테이블 형태의 데이터 모델로 가장 보편화된 데이터베이스 관리 시스템이며 데이터 상호관계를 표현한다 . 

시스템 부하가 커서 수행속도가 느리다 . 


  • Domain : 하나의 속성에 입력될 수 있는 값들의 집합 

  • Attribute(속성) : 개체 정보의 특성을 나타내며 파일 시스템에서 필드에 해당된다./ 데이터 베이스를 구성하는 가장 작은 단위이다 .

  • Tuple : 개체내에서 하나의 완벽한 정보를 나타낸다 . / 파일시스템에서 레코드에 해당한다 


차수(degree) :릴레이션에 정의된 속성의 개수 

기수(cardinality) 릴레이션에 생성된 튜플의개수 


key

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

  • 기본키 : 후보키들 중 튜플의 식별을 위해 지정된 키 

  • 대체키 : 기본키로 지정된 키를 제외한 모든키 

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

  • 외래키 : 관계된 다른 릴레이션의 키본키를 참조하는 속성 



무결성 

도메인 무결성 : 하나의 속성에 입력되는 값이 지정된 도메인 값을 벗어나면 안된다 . 

개체 무결성 : 기본키로 지정된 속성은 중복값과 NULL 값이 있어서는 안된다 . 

참조 무결성 : 외래키로 지정된 속성은 참조하는 기본키에 존재 하지 않는 값을 입력할 수 없다 



테스트 오라클

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


기능

  • 제한적 검증 

  • 수학적 기법 

  • 자동화 기능 



종류


참 오라클 : 모든 테스트 케이스의 입력값에 대해 기대결과를 제공하는 오라클 / 발생하는 모든 오류를 검출 

샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력값들에 대해서만 기대결과를 제공 

추정(heuristic)오라클 : 샘플링 오라클을 개선한 오라클, 특정 입력값에대해서 기대결과 제공, 나머지 입력값들에 대해서는 추정으로 처리하는 오라클 

일관성(consistent) 오라클 : 애플리케이션의 변경이 있을 때 테스트 케이스의 수행 전과 후의 결과 값이 동일한지 확인하는 오라클 


UML 다이어그램 

사물과 사물들의 관계를 도형으로 표현, 시스템을 가시화한 뷰를 제공하여 의사소통에 도움을 준다 . 

정적 모델링은 주로 구조적 다이어그램 사용 

동적 모델링은 주로 행위 다이어그램 사용 


구성요소

사물, 관계, 다이어그램 


관계 

연관 관계 ( Association ) : 둘 이상의 사물이 관련이 있을 때 실선 으로 표현 

집합 관계 (Aggregation) ) : 하나의 사물이 다른 사물에 포함되어 있는 관계를 표현하며 전체와 부분은 서로 독립적이다 . 

포함 관계 ( Composition)  : 전체와 부분은 서로 독립적이지 않다 . 

일반화 관계(Generalization) : 하나의 사물이 다른 사물에 대해 상위, 하위 관계를 표현 






실체화 관계 ( Realization)  : 사물들을 기능적 요소로 서로 그룹화 할 수 있는 관계 






개체  :  사물 또는 사건등을 의미하며 사각형으로 표현 

속성 : 개체가 가지고 있는 요소 또는 성질을 의미하며 타원으로 표현 



다이어그램 

개념 

사물과 사물의 관계를 도형으로 표현하며 시스템을 가시화한 뷰를 제공하여 의사소통에 도움을 준다 . 

정적 -> 구조적 다이어그램 

동적 -> 행위 다이어그램 



구조적 다이어그램 (정적모델링) 

  1. 클래스 다이어 그램 

    1. 클래스와 클래스 사이의 관계를 표현 

    2. 시스템 구조와 문제점을 파악 

  2. 객체(object) 다이어그램 

    1. 클래스의 인스턴스를 객체간의 관계로 표현한다 . 


  1. 컴포넌트(component)다이어그램

    1. 구현 단계에서 사용 

    2. 컴포넌트 간의 인터페이스를 표현 


  1. 배치(deployment)다이어그램 

    1. 구현 단계에서 사용된다 . 

    2. 물리적인 요소인 결과물이나 컴포넌트 등의 위치를 표현 


  1. 복합체(composite) 다이어그램 

    1. 복합적 구조를 갖는 컴포넌트, 클래스등의 내부 구조를 표현한다 . 


  1. 패키지 다이어그램 

    1. 모델 요소들을 그룹화한 패키지 관계를 표현 



행위 다이어그램 (동적 모델링)

  1. 유스케이스 다이어그램 

    1. 사용자의 요구를 분석하여 기능을 모델링하는 작업에 사용 

    2. 사용자와 사용 사례로 구성되며, 사례 간의 관계를 구성 

  2. 시퀀스 다이어램

    1. 시스템 객체들이 주고받는 메세지 표현 

    2. 생명선, 실행, 메세지, 상호작용 등으로 구성한다 . 

  3. 커뮤니케이션 다이어그램

    1. 객체들이 주고받은 메세지 뿐만 아니라 연관관계까지 표현한다 . 

  4. 상태(State)다이어그램 

    1. 자신이 속한 클래스, 자신이 상호 작용하는 객체들의 상태변화를 표현한다.

  5. 활동(Activity)다이어그램

    1. 객체 프로세스나 로직의 처리 흐름을 순서에 따라 표현한다 . 

  6. 상호작용 개요(Interaction Overview) 다이어그램 

    1. 활동 다이어그램과 시퀀스 다이어그램 접목시켜 표현한다 . 

    2. 객체의 처리흐름을 시퀀스 다이어그램을 이용하여 부분적으로 표현한다 . 

  7. 타이밍 타이어그램 

    1. 객체의 상태변화와 시간제약을 명시적으로 표현한다 . 

 

표준화 

UI 설계 시 고려사항 중, 기능 구조를 단순화하여 쉽게 조작하고 누구나 명확히 이해할 수 있도록 폰트, 색상, 용어 선택에 일관성이 있도록 하는 개념 



정규화

하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 것 


제 1정규형 

릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다.

제 2정규형 

부분적 함수 종속을 제거하는 릴레이션 스키마이다

제 3 정규형

이행적 함수 종속을 제거하는 릴레이션 스키마 이다

보이스 코드 정규형

릴레이션이 제 3정규형에 속하고, 함수 종속 관계에서 모든 결정자가 후보키면 보이스코드 정규형이다 . 

제 4 정규형

다치 종속 제거, 특정 속성값에 따라 선택적인 속성을 분리하는 과정 

제 5정규형 

후보키를 통하지않는 상태에서 조인종속을 제외한 상태 





트래픽 제어 


교착 상태 : 노드 간에 패킷을 기억 할수 있는 버퍼나 디스크의 용량이 넘쳐 패킷을 전송 할 수 없는 상태 , 흐름제어가 실패하면 체증이 유발되고 패킷의 흐름이 정지되는 상태 






디자인 패턴 

GOF 패턴

 

5가지의 생성패턴 7가지의 구조패턴 11가지의 행위패턴

스레드

프로세스 내에서의 작업단위로서, 시스템의 여러 자원을 할당받아 실행하는  프로그램 단위 



IPv4

CIDR

IPv4 주소 부족 문제 해결 방안 중 하나로 기존의 IPv4의 클래스 체계를 무시하고 네트워크 주소와 호스트주소를 임의로 구분하여 사용하는 방식





SOA(Service Orginted Architecture)

기업의 소프트웨어 인프라인 정보 시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍쳐 





TEST CASE

사용자 요구사항 준수 여부를 체크하는 입력값, 실행조건, 기대결과 등이 기록된 문서 



미들웨어

운영체제와 해당 운영체제에 실행되는 응용프로그램사이에서 운영체제가 제공하는 이외의 추가적인 서비스를 제공하는 소프트웨어



미들웨어 도구 

  • DBMS : 데이터 베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터 베이스와연결하기 위한 미들웨어 이다 . 

  • RPC : 응용 프로그램의 프로시저를 이용해 원격 프로시저를 로컬 프로시저처럼 호출 하는 방식의 미들웨어 이다 .

  • MOM : 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어 이다 . 

  • TP-Monitor : 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션을 감시하는 미들웨어 이다 . 

  • ORB : 객체 지향 미들웨어로 코바 표준 스팩을 구현한 미들웨어이다 

  • WAS: 사용자 요구에 따라 변화하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어이다 .

페이퍼 프로토타입 

손으로 직접 스케치, 그림 등을 이용하여 작성하며 적은자원으로 개발해야 하는 경우에 사용한다 . 

장점 : 비용 저렴, 회의 중 작성 가능 , 즉시 변경 , 고객의 기대감 감소 

단점 : 실제 테스트 부적절, 상호관계 표시 어려움 , 공유 어려움 


디지털 UI 프로토타입 

컴퓨터 응용 소프트웨어를 이용하여 작성하는 방법


장점 :  최종 제품과 비슷한 환경으로 테스트가 가능하다 . / 수정과 재사용 용이

단점 : 응용 프로그램의 사용법 숙지 필요 



Bridge

하나의 계층에 복잡하게 존재하는 클래스들을 기능 클래스와 구현 클래스로 분리하여 두 클래스를 연결하는 디자인 패턴을 말한다 . 


빌드 자동화 도구 

Jenkins

java 기반의 오픈 소스 자동화 도구

가장 많이 사용되는 빌드 자동화 도구 

서블릿 컨테이너에서 실행되는 웹서버 기반 도구 

git과 같은 형상 관리 도구와 연동 



쿼리 최적화 

추출(project) : 일찍 수행한다 .
검색(Select) : 가급적 일찍 수행한다

조인(Join) : 가급적 나중에 수행한다 . 


DDL

drop(테이블 구조 삭제)

  • 삭제옵션

    • CASCADE : 학생 테이블과 관련된 모든 테이블도 함께 삭제 

    • RESTRICT: 학생 테이블과 관련된 테이블이 있다면 명령 취소 


테스트 하네스 

테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트 될수 있도록 지원하는 도구  


test driver : 아직 존재 하지 않은 상위 모듈의 역할(인터페이스)을 하는 시험용 모듈

test stub : 상위 모듈의 테스트 기능만을 가지고 있는 시험용 하위 모듈 

test case : 요구 조건 만족도 검증을 위한 테스트 항목에 대한 명세서 

test suites : 테스트 케이스의 집합 

test script : 자동화된 테스트 수행 절차에 대한 명세서 

mok object : 상황에 따라 미리 정해진 행위를 수행하는 객체 



정적 테스트 

워크 스루 ( Walk Through) : 검토 회의 전에 미리 준비된 자료를 배포하여 사전 검토를 진행하고, 검토 회의를 빠르게 진행하여 오류를 조기에 발견 

동료 검토 (peer review) : 요구 사항 명세서 작성자가 동료들에게 내용을 설명하며 검토 

인스펙션 ( Inspection) : 요구 사항 명세서 작성자를 제외한 다른 전문가들이 명세서를 검토하며 검사 ./ 결함 , 표준위배 , 문제점 파악 



동적 테스트 

Whitebox Test : 모든 소스코드의 논리적인 경로를 테스트 케이스로 설계하는 방법 

Blackbox Test :  요구 사항 명세서를 기반으로 구현된 기능을 테스트 케이스로 설계하는 방법 

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

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

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

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

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




목적 기반 테스트 


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

안전 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로 부터 시스템을 보호할 수 있는지 확인하는 테스트

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

성능 테스트 : 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로, 소프트웨어의 응답 시간과 처리량 등을 테스트 한다 . 

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

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

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

bus

주변 장치 간에 정보 교환을 위해 연결된 통신 회선 



프로세스 스케줄링 

비선점 

  • FIFO 

  • SJF

  • HRN

선점

  • RR

  • SRT

  • MFQ




사용성 테스트 

제품 또는 서비스의 본질과 사용자 간 상호 작용의 품질을 검증하는것 

 

관계 대수 

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

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

  • 릴레이션을 조작하여 특정 릴레이션을 만들어 낸다 . 

  • 일반 집합 연산과 순수 관계 연산자로 구분된다 .


명령어 형식  

  • 0-주소 명령어 : op-code만 있고 operand는 없는 형식으로 주로 Stack 구조에서 사용되며 스택에 자료를 입력하는 push와 스택에서 자료를 출력하는 pop 명령을 사용한다 .

  • 1- 주소 명령어 : operand가 1개 있는 명령어 형식으로 누산기를 사용한다 . 

  • 2- 주소 명령어 : operand가 2개 있는 명령어 형식으로 두 operand를 연산한 결과를 마지막 operand에 덮어 씌운다 . 

  • 3- 주소 명령어 : operand가 3개 있는 명령어 형식으로 앞의 두 operand 에서 연산한 결과를 마지막 operand에 할당한다 . 


주소 지정 방식의 이해  

 연산에 필요한 데이터의 실제 위치에 접근하는 방식을 의미 한다 . 


즉시 주소 지정 


operation

실제 데이터


operand에 데이터주소가 아닌 실제 데이터가 존재하는 방식

기억장치에 접근하지 않기 때문에 메모리 참조 횟수 0회 

주소 대신 실제 데이터를 넣어야 하므로 데이터 크기에따라 문제가 발생할 수 있다 . 


직접 주소 지정 방식 

operand에 실제 데이터의 위치값을 저장하는 방식 

메모리 참조 1회 

간단하지만 메모리 확장 및 변경이 어려움 


간접 주소 지정 방식

operand에 실제데이터의 위치 값이 저장되어 있는 위치값을 저장하는 방식이다 

메모리 참조 횟수 2 회 

주소 필드의 길이에 상관없이 언제든 원하는 위치 참조


계산에 의한 주소 지정 방식 

operand에 저장된 값을 계산하여 실제 데이터가 있는 위치를 참조하는 방식 

인덱스 레지스터, 프로그램 카운터, 베이스 레지스터 등이 사용된다 . 



 




 교착상태 

둘 이상의 프로세스가 실현 불가능한 상태를 무한정 기다리는 상태 



교착상태가 발생할 수 있는 필요 충분 조건


상호 배제 : 하나의 리소스는 한번에 하나의 프로세스만을 사용할 수 있다 . 

점유와 대기 : 어떤 프로세스가 하나이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다린다 

비선점 : 프로세스가 작업을 마친 후 리소스를 자발적으로 반환 할 때 까지 기다린다 . 

환형 대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가진다 . 



해결방안

  1. 예방 (부정)

    1. 상호배제 부정 

    2. 비선점 부정 

    3. 점유와 대기 부정 

    4. 환형대기 부정 

  2. 회피 : 안정적인 상태를 유지 할 수 있는 프로세스만 받아들이는 방식으로 교착상태가 발생할 확률 자체를 피한다 . /ex. 은행원 알고리즘

  3. 발견 : 컴퓨터의 중단원인이 교착상태인지 파악하는것 

  4. 회복 : 교착상태가 발생한 프로세스중 희생양을 정해서 빼앗는 방식 

    1. 우선순위 낮은 프로세스

    2. 진행률이 적은 프로세스

    3. 자원을 적게 사용하는 프로세스

    4. 기아 상태로 수행 불가한 프로세스 



Module

프로그램의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한것 


공유도와 제어도

공유도(fan in)

해당 모듈이 사용하는 상위모듈의 갯수이다 . 

공유도가 많다는 것은 호출 할 수 있는 상위 모듈수가 많다는 것 

이상적인 모듈 설계 지만, 단일 실패 지점이 발생할 가능이 있으므로 중점적인 관리가 필요하다 . 


제어도(fan out)

해당 모듈을 사용하는 하위 모듈들의 개수 

제어도가 많다는 것은 호출 할 수 있는 하위 모듈이 많다는 것 

업무 로직을 좀더 단순 하게 할 수 있는 지 검토가 필요하다 .




감성공학 


UI 감성공학 

인체의 특성이나 감정을 구체적으로 UI 설계에 최대한 반영시키는 기술 


HCI

시스템, 콘텐츠, 서비스 등을 보다 편리하고 안전하게 사용할 수 있도록 연구 하는 학문 

어떻게 하면 좋은 제품을 만들 수 있는 지 연구 


UX(User eXperience)

사용자가 시스템을 이용하면서 느끼게 되는 총체적인 경험 



병행 제어 기법 

병행 제어의 목적


여러 사용자들이 데이터 베이스의 공동 사용을 최대화하는기술 

  • 응답 시간 최소화 

  • 시스템 활용도 최대화

  • 일관성 유지


로킹 

하나의 트랜잭션에서 갱신하는 데이터를 다른 트랜잭션이 접근 하지 못하도록 잠그는 행위 

로킹에 단위에 따라 데이터베이스의 성능에 영향을 미친다 . 


로크의 단위가 경우

로크의 개수가 적어져서 병행제어 기법이 단순해진다 . 

병행성(공유도) 수준이 낮아지고 오버헤드가 감소한다 . 


로크의 단위가 작은 경우

로크의 개수가 많아져서 병행제어 기법이 복잡해진다 . 

병행성(공유도)수준이 높아지고 오버헤드가 증가한다 . 


파일럿 사용성 테스트 

파일럿 테스트 파일럿 테스트란 주로 컴퓨터 프로그램 등의 최신 기술을 개발하여, 실제 상황에서 실현하기 전에 소규모로 시험 작동 해보는 것을 말한다 



인터뷰

심층 인터뷰 : 일대일 면접을 통해 응답자의 생각이나 느낌을 자유롭게 이야기 할 수 있도록 함으로서 응답자의 심리를 파악하는 기법

포커스 그룹 인터뷰 : 타겟층으로 예상되는 소비자를 6명 ~ 12 명 정도를 선정하여 한 장소에서 면접자의 진행 아래 조서 목적과 관련된 토론을 함으로서 자료를 수집하는 조사법이다 . 

맥락적 인터뷰 : 서비스 과정 가운데  특정 상황이나 맥락에서 이루어지는 인터뷰(게임과 같은 활동을 하며 인터뷰를 진행한다 .  



JAVA언어의 기술 

다형성

상속된 여러 하위 객체들이 서로 다른 형태를 가질 수 있는 형식 

  • 오버로딩 : 동일한 이름의 여러 메소드 중 , 매개변수로 전달되는 인수의 타입과 개수를 식별하여 적절한 메소드를 호출해 주는 기능 

  • 오버라이딩 : 상속받은 메소드의 내부 기능을 새롭게 정의하는 기능 




소프트웨어 아키텍쳐 패턴 

  1. 계층화 패턴

    1. 기능 분리 : 시스템을 논리적인 계층 구조로 쌓아 두고 각각의 인접 레이어 끼리만 상호 작용하는 패턴이며 특정 레이어의 유지 보수를 통해 시스템을 개선한다 . 

    2. SOA(Service oriented Architecture)

      1. 표현 계층 / presentation / UI

      2. 프로세스 계층 /process/ Service

      3. 비즈니스 / business / domain

      4. 데이터 접근 / data access / persistence

    3. n-tier 패턴 : 시스템을 물리적으로 분리 

      1. 1-tier : 클라이언트, 애플리케이션, 데이터 계층을 하나의 서버에 구현 

      2. 2-tier :  클라이언트, 애플리케이션과 데이터를 구분하여 구현 

      3. 3-tier : 클라이언트, 애플리케이션, 데이터를 모두 각각 구현 


  1. 클라이언트/서버 패턴 

    1. 서비스를 제공하는 서버와 서비스를 요청하는 클라이언트로 구성되며 분산 네트워크 방식으로 병목현상을 줄인다 / 보안에 취약하며 응용프로그램이 복잡해질 가능성이 있다 .

  2. 마스터 슬레이브 패턴 

    1. 작업을 분리하고 배포하는 주인과 요청 작업을 처리하는 하인으로 구성된다 . 

  3. 파이프 필터 패턴(pipe - filter pattern )

    1. 데이터 스트림을 생성하고 처리하는 시스템에서 사용된다 . 

  4. 브로커 패턴 

    1. 브로커는 컴포넌트 간의 통신을 조정하는 역할을 한다 .

    2. 분산 시스템에서 원격 서비스 실행을 통해 상호 작용을 한다 . 

  5. 피어투 피어 패턴 

    1. 서버와 클라이언트의 역할이 유동적으로 바뀐다 . 

  6. 이벤트버스 패턴 

    1. 알림 서비스 등에 활용된다 . 

    2. 이벤트를 처리하는 주요 컴포넌트 

      1. 이벤트 소스 

      2. 이벤트 리스너 

      3. 채널 

      4. 이벤트 버스 



MVC패턴  : 사용자 인터페이스 로부터 비즈니스 로직을 분리하여 응용 프로그램의 시각적 요소를 쉽게 수정할 수 있도록 지원한다 . 

model : 데이터 처리 

view :  데이터 시각화 담당 

Controller : 데이터와 비즈니스 로직사이의 상호작용 


블랙보드 패턴 : 음석 인식,  차량 식별 추적 등에 활용 

블랙보드 : 소스저장 메모리 

지식 소스 : 특정 데이터 , 블랙보드 내부에 저장된 데이터 

제어 컴포넌트 : 모듈 선택 , 설정 및 실행 


인터 프리터 패턴 : 명령어를 해석하는 컴포넌트를 설계할 때 사용 




소프트웨어 재공학

  1. 소프트웨어 재사용 

    1. 개발자원을 줄이기위해 기능을 파악하고 재구성하여 시스템에 적용하는 최적화 작업 

  2. 재사용의 기본 기술 

    1. 생성 중심 (모듈화)

      1. 추상화 형태로 쓰인 명세를 구체화 하여 재사용 단위를 찾아 발전 시키는 기술 

      2. 패턴 구성 방법 

    2. 합성 중심 (모델화)

      1. 모듈을 조립하여 소프트웨어를 완성시키는 기술 

      2. 블록 구성 방법 

  3. 재사용 모듈의 주의 사항 

    1. 결합도는 약하게 응집도는 강하게 

    2. 누구나 이해하기 쉽고 사용법을 공개 

    3. 공유도는 높이고 제어도는 낮게 

    4. 모듈이 계층적 설계가 돼 있어야 함 

    5. 유지보수 용이 제한 x 

  4. 소프트웨어 재공학 

    1. 소프트웨어의 위기를 개발의 생산성이아닌 유지보수의 생산성으로 해결하는것 

  5. 재공학 과정 

    1. 분석 

    2. 재구성

    3. 역공학  : 소프트웨어를 분석하여 소프트웨어 개발과정과 데이터 처리과정에 대한 정보를 재발견하거나 다시 만드는 작업 

      1. 코드 역공학 :  소스 코드를 분석하여 자료 흐름도(DFD)생성 

      2. 데이터 역공학 : 소스코드를 분석하여 자료 사전(DD)을 생성 

    4. 이식 



ISO/IEC 20000


  • IT 서비스 관리시스템(IT-SMS)의 요구 사항을 명확히 정의한 국제 표준이다 . 

  • 고객에게 제공하는 IT서비스관리 (ITSM)의 수준을 객관적으로 평가할 수 있다 . 

  • 고객의 요구사항을 신속하게 대응 하고 만족 하기 위한 서비스 중심의 프로세스를 제공한다 

  • IT 조직기능에 부합되는 견과하고 통합된 프로세스 프레임 워크를 제공한다 . 



구조적 분석 도구 

DFD /코드 역공학 

자료와 정보 시스템의 구성요소들 사이를 어떻게 흐르는지 그림으로 표현한 양식이며 자료의 흐름을 명확히 파악할 수 있다. 작업 소요시간은 알 수 없다 . 


  • 구성요소

    • 외부 입출력 / 사각형 / 자료생성 및 종착지

    • 처리 과정 / 타원 / 변환 과정 및 타원 

    • 자료 흐름 / 화살표 / 인터페이스 및 매개 변수 

    • 자료 저장소 / 선분 두개 / 파일 및 데이터 베이스 , 디스크 


자료 사전 (DD : data dictionary) /데이터 역공학 

  • 시스템과 관련된 모든 자료의 이름과 속성을 표기 하고 조직화한 도구 

  • 모든 자료는 규칙에 맞게 정리하여 명세 한다 .




IDE

프로그램 개발에 관련된 모든 절차를 하나의 프로그램 안에서 처리하는 환경을 의미하며 코드 에디터, 컴파일러 , 디버깅 툴 등을 하나로 묶어 대화식으로 수행되는 인터페이스 환경을 이르는 말이다 . 


형상관리도구

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


형상관리도구


Jenkins


java 기반의 오픈 소스 형태 

서블릿 컨테이너에서 실행되는 서버 기반 도구 

SVN, GIT등 대부분의 형상 관리 도구와 연동 가능 

친숙한 Web GUI  제공 

분산 빌드나 테스트 가능 



Gradle

groovy를 기반으로한 오픈소스 형태 

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

플러그인 설정 시 , JAVA, C/C++. Python 등의 언어도 빌드 가능 

DSL을 스크립트 언어로 사용 


헝가리안 표기법 

변수 및 함수 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙 


트랜잭션 

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

  • 하나 이상의 sql이 포함된다 

  • 분해할 수 없는 최소 단위의 작업으로 일반적으로 회복 기준 단위가 된다 . 


  1. 원자성 

    1. 트랜잭션의 연산은 모두 실행되거나 실행되지 않아야 한다

  2. 일관성 및 무결성 

    1. 트랜잭션을 마친 후에도 동일하게 오류가 발생하지 않아야 한다 . 

    2. 시스템이 가지는 고정 요소는 트랜잭션 후에도 이전과 같아야 한다 . 

  3. 고립성 및 독립성 

    1. 트랜잭션 실행 중 다른 트랜잭션에 영향을 받지 않아야 한다 . 

    2. 하나의 트랜잭션의 실행은 동시에 실행 중인 다른 트랜잭션의 간섭을 받아서는 안된다 

  4. 지속성 및 영속성 

    1. 트랜잭션의 결과는 항상 유지, 보존 되어야 한다 . 

    2. 완료된 트랜잭션의 결과는 어떠한 고장에서도 영구적으로 반영되어야 한다 . 


트랜잭션 상태제어

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


  • 활동 : 트랜잭션이 실행을 시작하였거나 실행 중인 상태 

  • 부분 완료 : (partially committed) : 트랜잭션이 마지막 연산을 끝내고 데이터 베이스에 실행결과를 적용하기 직전의 상태 

  • 완료 ( Committed) : 트랜잭션이 성공적으로 완료 연산을 수행한 상태 

  • 실패 (failed) : 연산 실행 중 어떤 오류에 의해 더이상 연산이 진행될 수 없는 상태 

  • 철회 (aborted) : 트랜잭션을 실패하여 트랜잭션 실행 전 상태로 복구된상태 

  • 실행 취소 (undo) 변경된 데이터 취소 후 원상복구 

  • 다시 실행 ( redo)  : undo를 통해 원래 내용으,로 변경됬던 데이터를 다시 원래 내용으로 복원 / 로그 파일 이용 

  • COMMIT : 변경사항이 반영된다 

  • ROLLBACK : 이미 수행되었던 모든 작업을 취소하고 원래 상태로 복귀 

  • SAVEPOINT : 트랜잭션의 규모가 너무 크거나 복잡할 경우 주로 사용 / 특점 지점을 정의하여 그 지점 부터 사용할 수 있게 한다 . 

인조 식별자

  • 후보 식별자 중 주 식별자로 선정할 식별자가 마땅치 않거나 속성 조합이 지나치게 복잡할 때 지정하는 식별자이다 .

  • 코드 및 일련번호 등의 데이터를 새로 생성하여 속성을 지정하기 때문에 식별자가 단순해진다 . 

  • 실제 업무에 필요한 식별자 외에 추가적인 키 관리가 필요하며 가독성이 저하된다 . 


코드의 3대 기능 

식별 기능 : 다른 것과 구별될 수 있는 기능

분류 기능 : 동일 특성이나 유형을 가진 데이터로 그룹화하여 나누는 기능

배열 기능 : 의미를 부여한 일련의 순서로 나열할수 있는 기능


코드의 분류

  1. 순차 코드 

    1. 일정한 일련번호를 부여하는 방법 

  2. 블록 코드 

    1. 코드화 대상 항목을 공통의 특성에 따라서 임의 크기의 블록으로 구분한 뒤, 각 블록 내에서 순서대로 번호를 부여하는 방식이다. 

  3. 10진 코드 

    1. 10진수의 원칙에 따라 코드의 좌측 부분은 그룹화, 우측 부분은 세분화하여 지정하는 코드 

  4. 그룹 분류 코드 

    1. 전체 대상을 대분류, 중분류, 소분류로 구분하여 순차 번호를 부여하는 방식 

  5. 연상코드(Mnemonic Code) 

    1. 대상 항목의 명칭 등을 코드에 반영하여 대상에 대한 연상이 가능하도록 하는 코드 

    2. 표의성이 뛰어남

    3. 대상 항목의 중랼, 면적, 용량등의 물리적 수치를 이용하여 만든 코드 

  6. 합성 코드

    1. 2개 이상의 코드를 조합하여 만든 코드 


코드 오류 발생 형태 

생략 오류(ommission error)

입력 시 한 자리를 뺴놓고 기록한 경우


필사 오류(transfiction error)

입력시 임의의 한자리를 잘못 기록한 경우 


전위 오류(transposition error)

입력 시 좌우 자리를 바꾸어 기록한 경우


이중 오류(double transpostion error)

전위 오류가  가지 이상 발생한 경우 


추가 오류(Addition error)
입력 시 한 자리를 추가로 기록한 경우 


임의 오류(Random error

위의 오류가 두 가지 이상 결합하여 발생한 경우

ITIL 

ITSM 분야의 사실상 표준으로, 거의 모든 업계에 적용 가능한 IT 운영 관리의 모범 사례를 제공하는 프레임워크 






NS(Nassi-Schneiderman) 차트의 도표

총체적 도표 , 세부적 도표, 가시적 도표 



단위 테스트(Unit Test)

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




통합 테스트 (Integration Test)

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



점증적인 통합 테스트

  1. 점증적 / 비점증적 방식 

    1. 점증적 방식 : 개발된 모듈 일부를 테스트하고 점차적으로 늘려가며 테스트 진행으로 하향식 통합 과 상향식 통합이 있다.

    2. 비점증적 방식 : 모든모듈을 통합하여 전체 프로그램을 한번에 테스트

  2. 하향식 통합테스트 

    1. 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트 하는 기법이다. 

      1. 깊이 우선 탐색  : 종속된 모듈을 우선탐색 

      2. 넓이 우선 탐색 : 같은 레벨의 모듈을 우선 탐색 



인수 테스트 (Acceptance Test) 


알파 테스트

개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법 


베타 테스트 

다수의 사용자에게 제한되지 않는 환경에서 프로그램을 사용하게 하고 오류가 발견되면 개발자에게 통보하는 방식의 테스트 방식

댓글