• 데이터베이스 : 공통으로 사용될 데이터를 중복을 배제하여 통합하고, 쉽게 접근하여 처리할 수 있도록 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
  • 데이터베이스 정의 4가지 : 통합된 데이터, 저장된 데이터, 운영데이터, 공용데이터
  • 통합된 데이터 : 자료의 중복을 배제한 데이터의 모임 
  • 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
  • 운영 데이터 : 조직의 고유한 업무를 수행하는 데 반드시 필요한 자료
  • 공용 데이터 : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
  • DBMS : 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어, 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성을 해결하기 위해 제안된 소프트웨어
  • DBMS의 필수 기능 3가지 : 정의기능, 조작기능 ,제어기능
  • 논리적 독립성 : 응용프로그램과 데이터베이스를 독립함으로써, 데이터의 논리적 구조를 변경시키더라도 응용 프로그램은 영향을 받지 않음을 의미하는 것
  • 물리적 독립성 : 응용프로그램과 보조기억장치 같은 물리적 장치를 독립시킴으로써, 디스크를 추가/변경하더라도 응용프로그램은 영향을 받지 않는 것
  • 스키마 : 데이터베이스의 구조와 전반적인 명세를 기술한 것
  • 스키마의 종류 : 외부스키마, 개념스키마, 내부스키마
  • 외부스키마 : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것
  • 개념스키마 : 데이터베이스의 전체적인 논리적 구조, 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스
  • 내부스키마 : 물리적 저장장치의 입장에서 본 데이터베이스 구조, 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현방법 등을 나타냄
  • 데이터베이스 설계시 고려사항 6가지 : 무결성, 일관성, 회복성, 보안, 효율성, 데이터베이스 확장(무일회보효테)
  • 무결성 : 삽입,삭제,갱신등의 연산후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야함
  • 일관성: 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함
  • 회복 : 시스템에 장애가 발생했을 때 장애 발생 직전의 상태로 복구할 수 있어야 함
  • 보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함
  • 효율성 : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 함
  • 데이터베이스의 확장 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함
  • 데이터베이스 설계 순서 : 요구조건 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현
  • 요구조건분석 : 데이터베이스를 사용할 사람들로부터 필요한 용도를 파악하는 것
  • 개념적 설계 : 현실세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
  • 논리적 설계 : 현실세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료구조로 변환시키는 과정
  • 물리적 설계 : 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
  • 데이터베이스 구현 : 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정
  • 데이터 모델 : 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
  • 데이터 모델의 구성요소3가지 : 개체,속성,관계 ( 속관개 )
  • 개체 : 데이터베이스에 표현하려는 것, 개념이나 정보단위 같은 현실 세계의 대상체
  • 속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
  • 관계 : 개체와 개체사이의 논리적인 연결
  • 데이터 모델에 표시할 요소 3가지 : 연산, 구조, 제약조건(연구제)
  • 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
  • 연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
  • 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
  • 개념적 데이터 모델 : 현실 세계의 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 변환하는 과정
  • 논리적 데이터 모델 : 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정
  • 디그리, 차수 : 속성의 수
  • 기본속성 : 업무 분석을 통해 정의한 속성, 속성 중 가장 많고 일반적임
  • 설계속성 : 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
  • 파생속성 : 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성
  • 종속 관계 : 두 개체 사이의 주 종 관계를 표현한 것
  • 중복 관계 : 두 개체 사이에 2번이상의 종속 관계가 발생한 관계
  • 재귀 관계 : 개체가 자기 자신과 관계를 갖는 것
  • 배타 관계 : 개채의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
  • 개체 : E-R 다이어그램의 기호중 사각형
  • 관계 : E-R 다이어그램의 기호중 마름모
  • 속성 : E-R 다이어그램의 기호중 타원
  • 다중값속성 : E-R다이어그램의 기호 중 이중타원
  • 기본키속성 : E-R다이어그램의 기호 중 밑줄타원
  • 복합 속성 : E-R다이어그램의 기호 중 복수타원
  • 관계형데이터베이스 : 2차원적인 표를 이용해서 데이터 상호관계를 정의하는 데이터베이스
  • 튜플 : 릴레이션을 구성하는 각각의 행
  • 도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값의 집합
  • 릴레이션의 특징 3가지 : 릴레이션에 포함된 튜플은 모두 상이, 튜플사이에는 순서가 없다, 삽입 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다
  • 관계형 데이터 모델 : 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
  • 후보키 : 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 후보키의 속성 2가지 : 유일성, 최소성
    • 유일성 : 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야함
    • 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함
  • 기본키 : 후보키 중에서 특별히 선정된 주키이다. 중복된 값을 가질 수 없고 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
  • 대체키 : 후보키가 둘 이상일때 기본키를 제외한 나머지
  • 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키, 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족X
  • 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 무결성 : 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성
    • 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질 수 없다는 규정
    • 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
    • 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
    • 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정
    • NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
    • 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정
    • 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
    • 관계 무결성 : 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
  • 관계대수 : 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
  • 순수관계연산자의 종류 4가지 : Select, Project, Join, Divison
  • 일반집합연산자의 종류 4가지 : 합집합,교집합,차집합,교차곱
  • Select:릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산의 종류와 기호
  • Project:주어진 릴레이션에서 속성리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산, 중복이 발생하면 중복이 제거되는 종류와 그 기호
  • Join:공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산의 종류와 그 기호
  • Division : R의 속성이 S의 속성값을 모두 가진 튜플에서 s가 가진 속성을 제외한 속성만을 구하는 연산
  • 합집합 : 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플을은 제거되는 연산
  • 교집합 : 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
  • 차집합 : 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
  • 교차곱 : 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
  • 이상 : 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
    • 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
    • 삭제 이상 : 테이블에 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄삭제가 발생하는 현상
    • 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
  • 함수적 종속 : 속성 x의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때를 의미하는 것 , Y는 X에 함수적 종속 또는 x가 y를 함수적으로 결정한다(속성2개가 속성1개를결정, 2개필수)
    • 완전 함수적 종속 : 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진부분집합Z에도 함수적 종속이 아닐때 속성 Y는 속성 집합X에 완점하수 종속이라고 한다.
    • 부분 함수적 종속 : 어떤 테이블R에서 속성Y가 다른 속성 집합X전체에 대해 함수적 종속이면서 속성 집합X의 임의의 진부분 집합에 대해 함수적 종속일때, 속성Y는 속성 집합X에 부분함수적 종속이라고 한다.(속성 1개만 가지고도 속성1개결정)
  • 정규화 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 과정
    • 제 1 정규화 : 모든 도메인이 원자값
    • 제 2 정규화 : 부분적 함수 종속 제거(완적 함수적 종속만족)
    • 제 3 정규화 : 이행적 함수 종속 제거
    • BCNF : 결정자이면서 후보키가 아닌것 제거
    • 제 4 정규화 : 다치 종속 제거
    • 제 5 정규화 : 조인 종속성 이용
  • 반정규화 : 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
  • 반정규화의 방법 4가지 : 테이블 통합, 테이블 분리, 중복 테이블추가, 중복 속성 추가
  • 테이블 통합 : 2개의 테이블이 조인(JOIN)되어 사용되는 경우가 많은 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것
  • 수평 분할 : 레코드를 기준으로 테이블을 분할하는 것, 레코드 별로 사용빈도의 차이가 큰 경우 사용빈도에 따라 테이블을 분할
  • 수직 분할 : 하나의 테이블에 속성이 너무 많은 경우 속성을 기준으로 테이블을 분할하는 것
  • 중복 테이블의 추가 : 여러 테이블에서 데이터를 추출해서 사용해야 할 경우, 다른 서버에 저장된 테이블을 이용해야 하는 경우 해야하는 반정규화 방법
  • 중복 테이블 추가 방법 3가지 : 집계테이블의 추가, 진행 테이블의 추가, 특정 부분만을 포함하는 테이블의 추가
    • 집계테이블추가: 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
    • 진행테이블추가: 이력 관리 등의 목적으로 추가하는 테이블
    • 특정부분만을 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
  • 중복 속성 추가 : 조인이 자주 발생하는 경우, 접근 경로가 복잡한 속성인 경우, 액세스의 조건으로 자주 사용되는 속성인 경우 해야하는 반정규화 방법
  • 시스템 카탈로그 : 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
  • 메타 데이터 : 시스템 카탈로그에 저장된 정보
  • 데이터 디렉터리 : 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템(시스템만 접근)
  • 트랜잭션 : 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
  • 트랜잭션의 특성 4 가지 : 원자성, 일관성, 독립성, 영속성
    • 원자성 : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(rollback)되어야 하는 트랜잭션의 특성
    • 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환하는 것
    • 독립성 : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음을 의미하는 것
    • 영속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
  • CRUD분석 : 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것(C>D>U>R)
  • 트랜잭션분석 : CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB를 최적화 하는 것
  • 인덱스 : 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
  • 인덱스의 종류 5가지 : 트리기반, 비트맵, 함수기반, 비트맵 조인, 도메인
    • 트리기반인덱스 : 인덱스를 저장하는 블록들이 트리구조를 이루고 있는 것
    • 비트맵 인덱스 : 인덱스 컬럼의 데이터를 비트 값인 0또는1로 변환하여 인덱스 키로 사용하는 방법
    • 함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것
    • 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
    • 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는것 
  • 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 자장되는 방식. 실제 데이터가 순서대로 저장되어 있어 원하는 데이터를 빠르게 찾을 수 있음
  • 논클러스터드 인덱스 : 인덱스의 키값만 정렬되어 있고 실제데이터는 정렬되지 않은 방식. 삽입 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 함
  • 뷰 : 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본테이블로부터 유도된 가상 테이블
  • 클러스터 : 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
  • 파티션 : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
  • 파티션의 종류 3가지 : 범위 분할, 해쉬분할, 조합 분할
    • 범위 분할 : 지정한 열의 값을 기준으로 분할 하는 것 (월별, 일별, 분기별)
    • 해시 분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할하고, 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것
    • 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
  • 분산 데이터베이스 : 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러개의 사이트에 분산된 데이터베이스
  • 분산 데이터 베이스의 목표 4가지 : 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성
    • 위치 투명성 : 액세스 하려는 데이터베이스의 설계 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있음을 의미
    • 중복 투명성 : 동일데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하는 것을 의미하는 것
    • 병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는 것을 의미하는 것
    • 장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리하는 것
  • 데이터베이스 이중화 : 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
  • 데이터베이스 이중화 기법 2가지 : Eager, lazy
    • Eager : 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법
    • lazy : 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법
  • 활동-대기 방법 : 한 db가 활성 상태돌 서비스하고 있으면 다른 db는 대기하고 있다가 활성 db에 장애가 발생하면 대기 상태에 있던 db가 서비스를 대신 수행하는 것
  • 활동-활동 방법 : 두 개의 db가 서로 다른 서비스를 제공하다가 둘 중 한쪽db에 문제가 발생하면 나머지 다른 db가 서비스를 제공하는 것
  • 클러스터링 : 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
  • 클러스터링의 종류 2가지 : 고가용성, 병렬처리클러스터링
    • 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 서버가 받아 처리하여 서비스 중단을 방지하는 방식
    • 병렬처리 클러스터링 : 전체 처리율을 높이기 위해 하나의 작업을 여러개의 서버에서 분산하여 처리하는 방식
  • RTO : 비상사태 또는 업무 중단시점으로부터 복구되어 가동될때까지의 소요 시간
  • RPO : 비상사태 또는 업무 중단시점으로부터 데이터를 복구할 수 있는 기준점
  • 암호화 : 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알 수 없도록 평문을 암호화하는 것
  • 접근통제 : 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보의 흐름을 제한하는 것
  • 접근통제 3 요소 : 접근통제 정책, 접근통제 매커니즘, 접근 통제 보안모델
    • 접근통제 정책 : 육하원칙에 따라 허용 여부 결정(신분기반, 규칙기반, 역할기반)
      • IBP : 최소 권한 정책으로, 단일 주체에게 하나의 객체에 대한 허가를 부여함
      • GBP : 복수 주체에 하나의 객체에 대한 허가를 부여함
      • MLP : 사용자나 객체별로 지정된 기밀 분류에 따른 정책
      • CBP : 집단별로 지정된 기밀 허가에 따른 정책
    • 접근통제 매커니즘 : 정의된 접근통제를 구현하는 기술적인 방법
    • 접근통제 보안모델 : 보안 정책을 구현하기 위한 정형화된 모델
      • 기밀성 모델 : 군사목적으로 개발된 최초의 수학적 모델
      • 무결성 모델 : 기밀성모델에서 정보변경을 방지하기 위한
      • 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨것(접근통제행렬)
  • 임의 접근 통제 : 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식, 데이터 소유자가 접근통제 권한을 지정하고 제어함
  • 강제 접근 통제 : 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식, 시스템이 접근통제 권한을 지정
  • 역할 기반 접근 통제 : 사용자의 역할에 따라 접근 권한을 부여하는 방식, 중앙권리자가 접근통제 권한을 지정
  • 접근 통제 조건 : 접근통제 매커니즘의 취약점을 보안하기 위해 적용할 수 있는 조건
    • 값종속통제, 다중사용자통제, 컨텍스트 기반 통제
  • 로그 : 데이터베이스의 처리 내용이나 이용상황등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
  • 스토리지 : 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
    • DAS:서버와 저장장치를 전용 케이블로 직접 연결하는 방식, 저장장치를 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬운 것
    • NAS: 서버와 저장장치를 네트워크를 통해 연결하는 방식, 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
    • SAN: DAS의 빠른처리와 NAS의 파일 공유 장점을 혼합한 방식으로, 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
  • 물리 데이터 모델 품질 기준 6가지 : 정확성,완정성,준거성,최신성,일관성,활용성(정완준최일활)
    • 정확성 : 데이터 모델이 요구사항이나 업무, 규칙, 표기법에 따라 정확하게 표현된 것
    • 완정성 : 데이터 모델이 데이터 모델의 구성요소를 누락없이 정의하고 요구사항이나 업무 영역을 누락 없이 반영한 것
    • 준거성 : 데이터 모델이 데이터 표준, 표준화 규칙, 법적 요건등을 정확하게 준수한 것
    • 최신성 : 데이터 모델이 최근의 이슈나 현행 시스템을 반영하고 있는것
    • 일관성 : 데이터 모델이 표현상의 일관성을 유지하고 있는 것
    • 활용성 : 작성된 모델과 설명을 사용자가 충분히 이해할 수 있고, 업무 변화에 따른 데이터 구조의 변경이 최소화 될 수 있는 것
  • 자료구조 : 자료를 기억장치의 공간 내에 저장하는 방법과 자료 간의 관계, 처리방법 등을 연구 분석하는 것
  • 배열 : 크기와 형이 동일한 자료를 순서대로 나열된 자료의 집합
  • 연속리스트 : 연속되는 기억장소에 저장되는 자료구조, 삽입 삭제 시 자료의 이동 필요
  • 연결리스트 : 자료들을 임의의 기억공간에 기억시키되, 노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조, 접근속도가 느리고 기억공간의 효율이 좋지 않다.
  • 스택 : 한쪽끝으로만 자료의 삽입삭제이루어짐, 후입선출
  • 큐 : 리스트의 한쪽 끝에선 삽입, 다른쪽에서는 삭제가 이루어지는 
  • 그래프 : 정점과 간선의 두 집합으로 이루어진 자료구조
  • 방향 그래프의 최대 간선 수 공식 : N(N-1)
  • 무방향 그래프의 최대 간선 수 공식 : N(N-1)/2
  • 트리 : 정점과 선분을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
  • 깊이 : Tree에서 노드가 가질 수 있는 최대의 레벨
  • 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수
  • 이진 트리 : 차수가 2 이하인 노드들로 구성된 트리
  • 트리 운행법 3가지 : preorder(가왼오), inorder(왼가오), postorder(왼오가)
  • 삽입정렬 : 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식
  • 선택정렬 : n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식
  • 버블정렬 : 인접한 두개의 레코드 비교 
  • 쉘 정렬 : 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 삽입정렬 방식으로 순서배열하는 정렬방식
  • 기수 정렬 : 큐를 이용하여 자릿수 별로 정렬하는 방식
  • 시간복잡도가O(N^2)인 정렬 방식 : 삽입, 선택, 버블, 쉘
  • 시간복잡도O(Nlogn)인 정렬 방식 : 퀵,힙,합병

 


 

  • 통합구현 : 송 수신 모듈과 중계 모듈간의 연계를 구현하는 것
  • 직접연계방식 : 중간 매개체 없이 송 수신 시스템이 직접연계하는 방식
  • 간접연계방식 : 송 수신 시스템 사이에 중간 매개체를 두어 연계하는 방식
  • 연계 서버 : 데이터를 전송 형식에 맞게 변환하고 송수신을 수행하는 등 송수신과 관련된 모든 처리를 수행하는 서버
  • xml : 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업언어, 웹 브라우저 간 HTML문법이 호환되지 않는 문제와 SGML의 복잡함을 해결
  • SOAP : 컴퓨터네트워크 상에서 HTTP/HTTPS, STMP 등을 이용하여 XML을 교환하기 위한 통신 규약
  • WSDL : 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 개시하기 위한 언어, XML로 작성되며 , UDDI의 기초

 


 

  • 웹서버 : 클라이언트로부터 직접 요청을 받아 처리하고 저용량의 정적 파일을 제공하는 서버
  • 웹 애플리케이션 서버 (WAS) : 동적서비스를 제공하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
  • 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
  • 파일 서버 : 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
  • 개발 언어의 선정 기준 5가지: 적정성, 효율성, 이식성, 친밀성, 범용성
    • 적정성 : 개발하려는 소프트웨어의 목적에 적합해야 함을 의미
    • 효율성 : 코드의 작성 및 구현이 효율적이어야 함을 의미
    • 이식성 : 다양한 시스템 및 환경에 적용이 가능해야 함을 의미
    • 친밀성 : 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 함을 의미
    • 범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 함을 의미
  • 소프트웨어 아키텍처 : 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
  • 모듈화 : 소프트웨어의 성능향상, 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것
  • 추상화 : 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화 시켜나가는 것
  • 추상화의 유형 3가지 : 과정추상화, 데이터추상화, 제어추상화
    • 과정추상화 : 자세한 수행과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법
    • 데이터추상화 : 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
    • 제어 추상화 : 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법
  • 단계적 분해 : 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법
  • 정보 은닉 : 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
  • 품질 평가 요소의 종료 : 시스템 측면, 비즈니스 측면, 아키텍처 측면(시비아)
  • 시스템 측면에서의 평가 요소 : 성능,보안,가용성,기능성,사용성,변경용이성, 확장성(가기성보사변확)
  • 비즈니스 측면에서의 평가 요소 : 시장적시성, 비용과 혜택, 예상 시스템 수명, 목표시장,공개일정(시비예목공)
  • 아키텍쳐 측면에서의 평가 요소 : 개념적 무결성, 정확성, 구축 가능성, 변경성, 시험성(개정구변시)
  • 협약에 의한 설계 : 컴포넌트를 설계할 때 클래스에 대한 여러가정을 공유 할 수 있도록 명세한 것
  • 아키텍처 패턴 : 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결방식 또는 예제
  • 레이어 패턴: 시스템을 계층으로 구분하여 구성하는 고전적인 방법의 패턴
  • 클라이언트-서버패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
  • 파이프-필터 패턴 : 데이터 스트림 각 절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴
  • MVC패턴 : 서브시스템을 모델,뷰,컨트롤러로 구조화하는 패턴
  • 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴
  • 객체지향 : 각 요소들을 객체로 만든 후 객체들을 조립해서 소프트웨어를 개발하는 기법
  • 객체지향의 구성 요소 3가지 : 객체, 클래스, 메시지
  • 객체지향의 특징 4가지 : 캡슐화, 상속, 다형성, 연관성
  • 객체 : 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
  • 클래스 : 공통된 속성과 연산을 갖는 객체의 집합
  • 메시지 : 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작이나 연산을 일으키는 외부의 요구사항
  • 캡슐화 : 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부내용을 은닉하는 것
  • 상속 : 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
  • 다형성 : 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • 연관성 : 두 개 이상의 객체들이 상호 참조하는 관계
    • 연관성의 종류 5가지 : 연관화, 분류화, 집단화, 일반화, 특수화
  • 객체지향분석 : 사용자의 요구사항과 관련된 객체,속성,연산,관계 등을 정의하여 모델링하는 작업
  • Coad와 Yourdon방법 : e-r다이어그램을 사용하여 객체의 행위를 모델링하는 방법
  • 럼바우의 분석기법 : 모든소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링하는 기법, 객체모델링기법이라고 한다
    • 럼바우 분석 활동 순서 : 객체 모델링(객체다이어그램) -> 동적 모델링(상태다이어그램) -> 기능 모델링(자료흐름도, DFD)
    • 객체 모델링 : 정보 모델링이라고 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시하는 것
    • 동적 모델링 : 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어흐름, 상호작용, 동작 순서 등의 동적인 행위를 표현하는 모델링
    • 기능 모델링 : 자료흐름도를 이용하여 다수의 프로세스들 간의 자료흐름을 중심으로 처리 과정을 표현한 모델링
  • 객체지향 설계 원칙 : 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙
    • 단일 책임 원칙(SRP): 객체는 단 하나의 책임만 가져야 한다는 원칙
    • 개방-폐쇄 원칙(OCP) : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙
    • 리스코프치환원칙(LSP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙
    • 인터페이스분리원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
    • 의존 역전 원칙(DIP) : 의존 관계성립시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
  • 모듈 : 모듈화를 통해 분리된 시스템의 각 기능
  • 결합도 : 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계 
  •  결합도의 종류 6가지 : (내공외제스자) 내용결합도,공통결합도,제어결합도,외부결합도,스탬프결합도,자료결합도
    • 내용 결합도 : 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
    • 공통 결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도, 파라미터가 아닌 모듈 밖에 선언된 전역변수를 사용하여 전역 변수를 갱신하느 결합도
    • 외부 결합도 : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의결합도
    • 제어 결합도 : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
    • 스탬프 결합도: 모듈간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
    • 자료결합도 :모듈 간의 인터페이스가 자료요소로만 구성될 때의 결합도 
  • 응집도 : 모듈의 내부요소들이 서로 관련되어 있는 정도(우논시절교순기)
    • 기능적 응집도 : 모듈내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
    • 순차적 응집도 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
    • 교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
    • 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
    • 시간적 응집도 : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
    • 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
    • 우연적 응집도 : 모듈 내부의 각 구성요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
  • 팬인 : 어떤 모듈을 제어하는 모듈의 수
  • 팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수
  • N-S차트 : 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
  • 단위 모듈 : 한가지 동작을 수행하는 기능을 모듈로 구현한 것
  • IPC: 모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
  • IPC의 대표 메소드 5가지 : Shared Memory, Socket, Semaphores, Pipes & Named Pipes, Message Queueing
    • Share Memory : 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식
    • 소켓 : 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스간에 통신하는 방식
    • Semaphores : 공유 자원에 대한 접근 제어를 통해 통신하는 방식
    • Pipes&named Pipes : Pipe라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식
    • Message Queueing : 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식
  • 테스트케이스 : 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
  • 공통 모듈 : 여러프로그램에서 공통으로 사용할 수 있는 모듈
  • 공통 모듈 명세기법의 종류 5가지 : 정확성,명확성,완정성,일관성,추적성
    • 정확성 : 시스템 구현 시 해당기능이 필요하다는 것을 알 수 있도록 정확히 작성함
    • 명확성 : 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성함
    • 완전성 : 시스템 구현을 위해 필요한 모든 것을 기술함
    • 일관성 : 공통 기능들 간 상호충돌이 발생하지 않도록 작성함
    • 추적성 : 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성
  • 재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
  • 재사용 규모에 따른 분류 3가지 : 함수와 객체, 컴포넌트, 애플리케이션
    • 함수와 객체 : 클래스나 메소드 단위의 소스코드를 재사용
    • 컴포넌트 : 컴포넌트 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용
    • 애플리케이션 : 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용
  • 코드의 주요기능5가지 : 식별, 분류, 배열, 표준화, 간소화
    • 식별기능 : 데이터 간의 성격에 따라 구분이 가능함
    • 분류기능 : 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화 할 수 있음
    • 배열기능 : 의미를 부여하거나 나열할 수 있음
    • 표준화기능 : 다양한 데이터를 기준에 맞추어 표현할 수 있음
    • 간소화기능 : 복잡한 데이터를 간소화 할 수 있음
  • 순차코드 : 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법
  • 블록코드 : 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록내에서 일련번호를 부여하는 방법
  • 10진코드 : 코드화 대상 항목을 0~9까지 10진  분할하고, 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 방법
  • 그룹 분류 코드 : 코드화 대상 항목을 일정 기준에 따라 대분류, 중분류, 소분류 등으로 구분하고 각 그룹 안에서 일련번호를 부여하는 방법
  • 연상 코드 : 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나, 문자, 기호를 이용하여 코드를 부여하는 방법
  • 표의 숫자 코드 : 성질, 즉 길이 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법
  • 합성 코드 : 필요한 기능을 하나의 코드로 수행하기 어려운 2개이상의 코드를 조합하여 만드는 방법
  • 디자인 패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
  • GOF 디자인 패턴의 종류 3가지 : 생성, 구조, 행위패턴
  • 생성 패턴 : 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
    • 추상 팩토리 : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴
    • 빌더 : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성하는 패턴
    • 팩토리 메소드: 객체생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴, 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 담당
    • 프로토 타입 : 원본객체를 복제하는 방법으로 객체를 생성하는 패턴
    • 싱글톤 : 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조 할 수 없음. 인스턴스가 하나 뿐임을 보장하는 패턴
  • 구조패턴 : 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰구조로 만드는 패턴
    • 어댑터 : 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
    • 브리지 : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
    • 컴포지트 : 여러객체를 가진 복합 객체와 단일 객체를 구분없이 다루고자 할때사용하는 패턴
    • 데코레이터 : 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
    • 퍼싸드 : 복잡한 서브클래스들을 피해 더상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
    • 플라이웨이트 : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴
  • 행위 패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
    • 책임 연쇄 : 요청을 처리할 수 있는 객체가 둘이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
    • 커맨드 : 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
    • 인터프리터 : 언어에 문법 표현을 정의하는 패턴
    • 반복자 : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
    • 중재자 : 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
    • 메멘토 : 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
    • 옵저버 : 한객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴, 일대다의 의존성을 정의
    • 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리해아 할 때 사용하는 패턴
    • 전략 : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환을 할 수 있게 정의하는 패턴
    • 템플릿 메소드 : 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
    • 방문자 : 실제 로직을 가지고 있는 객체가 로직을 적용할 객체를 방문하면서 실행하는 패턴
  • 빌드 : 소스코드파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
    • ANT : 아파치 소프트웨어 재단에서 개발하였고 자바 프로젝트의 공식적인 빌드 도구
    • MARVEN : 아파치 소프트웨어 재단에서 ANT의 대안으로 개발하였고 의존성을 설정하여 라이브러리를 관리함
    • GRADLE : ANT와 MARVEN을 보완하여 개발하였고, 안드로이드 스튜디오의 공식 빌드 도구
  • 협업 도구 : 개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행 할 수 있도록 도와주는 도구
  • SPRING : JAVA를 기반으로 만든 서버 개발 프레임워크
  • NODE.JS : JAVASCRIPT를 기반으로 만든 서버 개발 프레임워크
  • Django : python을 기반으로 만든 서버 개발 프레임워크
  • codeigniter : php를 기반으로 만든 서버 개발 프레임워크
  • ruby on rails : ruby를 기반으로 만든 서버 개발 프레임워크
  • 서버개발과정 : DTO/VO, SQL, DAO, Service, Controller를 각각 구현하는 과정
    • DTO(Data Transfer Object)/VO(Value Object) 구현 : 데이터 교환을 위해 사용할 객체를 만드는 과정, 송수신할 데이터의 자료형에 맞는 변수 및 객체를 생성
    • SQL 구현 : 데이터의 삽입,변경,삭제 등의 작업을 수행할 SQL문을 생성하는 과정
    • DAO 구현 : 데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정
    • SERVICE 구현 : 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
    • Controller 구현 : 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정
  • API : 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 라이브러리를 이용할 수 있도록 규칙을 정의해 놓은 인터페이스
  • 배치프로그램 : 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
  • 배치 프로그램의 필수요소 5가지 : 대용량데이터, 자동화, 견고성, 안정성, 성능
    • 대용량데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함을 의미
    • 자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 한다는 것을 의미
    • 견고성 : 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함을 의미
    • 안정성 : 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 한다는 것
    • 성능 : 다른 응용 프로그램의 수행을 방해하지 않아야하고, 지정된 시간 내에 처리가 완료되어야 한다는 것
  • 배치 스케줄러 : 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
    • 스프링 배치 : Spring Source 사와 Accenture 사가2007년 공동 개발한 오픈 소스 프레임워크
    • Quartz : 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리
    • cron : 리눅스의 기본 스케줄러 도구, crontab 명령어를 통해 작업 예약 가능
      • [분] [시] [일] [월] [요일] [명렁어] , 분시일월요일에 *를 입력하면 매시기마다 수행
  • 패키지 소프트웨어 : 기업에서 일반적으로 사용하는 여러 기능을 통합하여 제공하는 소프트웨어

 

 


 

  • 애플리케이션 테스트 : 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
  • Validation(확인) : 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지 확인하는 것
  • Verification(검증) : 개발자의 입장에서 개발한 소프웨어가 명세서에 맞게 만들어졌는지 점검하는 것
    • 완벽한 테스트 불가능 : 소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없음
    • 파레토 법칙 : 애플레케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙
    • 살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
    • 테스팅은 정황의존 : 소프트웨어의 특징, 테스팅환경, 테스터의 역량 등 정황에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 수행해야 함
    • 오류-부재의 궤변 : 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없는 것
    • 테스트와 위험은 반비례 : 테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있는 것
    • 테스트의 점진적 확대 : 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 하는 것
    • 테스트트의 별도 팀 수행 : 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 하는 것
  • 정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스코드를 대상으로 분석하는 테스트, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 등을 발견하기 위해 사용
  • 동적 테스트 : 프로그램을 실행하여 오류를 찾는 테스트, 소프트웨어 개발의 모든 단계에서 테스트를 수행
  • 명세기반테스트 : 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트
  • 구조기반테스트 : 소프트웨어 내부의 논리흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
  • 경험기반테스트 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트
  • 검증(Verification) : 개발자의 시각에서 제품의 생산과정을 테스트 하는 것
  • 확인(Validation) : 사용자의 시각에서 생상된 제품의 결과를 테스트 하는 것
  • 회복테스트 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
  • 안전테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트
  • 강도테스트 : 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
  • 성능테스트 : 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트
  • 구조테스트 : 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
  • 회귀테스트 : 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
  • 화이트 박스 테스트 : 원시코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
    • 기초경로검사 : 테스트케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
    • 제어구조검사 : 조건검사, 루프검사, 데이터흐름 검사를 하는 기법
      • 조건검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
      • 루프검사 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 설계 기법
      • 데이터 흐름 검사 : 프로그램의 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 설계 기법 
  • 화이트 박스 테스트의 검증 기준(커버리지) 4 가지 : 문장검증, 분기검증, 조건검증, 분기/조건 검증
    • 문장 검증 기준 : 소스 코드의 모든 구문이 한번 이상 수행되도록 테스트 케이스를 설계하는 것
    • 분기 검증 기준 : 소스 코드의 모든 조건문에 대해 조건식의 결과가 True인 경우와 False인 경우가 한번 이상 수행되도록 테스트케이스를 설계하는 기법
    • 조건 검증 기준 : 소스코드의 조건문에 포함된 개별 조건식의 결과가 True인경우와, False인 경우가 한번이상 수행되도록 테스트 케이스를 설계함
    • 분기/조건 기준 : 분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계
  • 블랙 박스 테스트 : 각 기능이 완전히 작동되는 것을 입증하는 테스트
  • 블랙박스 테스트의 5가지 종류 : 경계값 분석, 동치 분할 검사, 원인-결과 그래프 검사, 오류 예측검사, 비교 검사
    • 동치 분할 검사 : 프로그램의 입력조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 입력 자료에 맞는 결과가 출력되는지 확인하는 기법
    • 경계값 분석 : 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
    • 원인-결과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
    • 오류 예측 검사 : 과거의 경험이나 확인자의 감각으로 테스트하는 기법
    • 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트 하는 기법
  • 단위 테스트 : 소프트웨어의 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것
  • 통합 테스트 : 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로완성시키는 과정에서의 테스트
  • 시스템 테스트 : 개발된 소프트웨어가 완벽하게 수행되는가를 점검하는 테스트
  • 인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 것
    • 사용자 인수 테스트 :사용자가 시스템 사용의 적절성 여부를 확인하는 테스트
    • 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트
    • 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트
  • 비점진적 통합 방식 : 단계적으로 통합하는 절차 없이 모든 모듈이 결합되어 있는 프로그램 전체를 테스트하는 방법
  • 점직적 통합 방식 : 모듈단위로 단계적으로 통합하면서 테스트하는 방법
    • 하향식 통합 테스트 : 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
      • 스텁 : 하향식 통합 테스트에서 주요 제어 모듈의 종속 모듈을 대체하는 것
    • 상향식 통합 테스트 : 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
      • 클러스터 : 샹항샤기 통합 테스트에서 하위 모듈들을 겹합한 것
      • 드라이버 : 상위 모듈에서 데이터의 입출력을 확인하기 위한 더미 모듈
  • 혼합식 통합 테스트 : 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합 사용하여 최적의 테스트를 지원하는 방식
  • 애플리케이션 테스트 프로세스의 순서 : 테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포팅 -> 결함 추적 및 관리
  • 결함관리프로세스의 순서 : 에러 발견 -> 에러 등록 -> 에러 분석 -> 결함 확정 -> 결함 할당 -> 결함 조치 -> 결함 조치 검토 및 승인
  • 테스트 케이스 : 사용자의 요구사항을 정확하게 준수 했는지 확인하기 위해 설계된 테스트 항목에 대한 명세서
  • 테스트 시나리오 : 테스트 케이스를 적용하는 순서에 따라 여러개의 테스트케이스를 묶은 집합
  • 테스트 오라클 : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법 및 활동
  • 테스트 오라클의 특징 3가지 : 제한된 검증, 수학적 기법, 자동화 기능(제수자)
    • 제한된 검증 : 테스트 오라클을 모든 테스트 케이스에 적용할 수 없음
    • 수학적 기법 : 테스트 오라클을의 값을 수학적 기법을 이용하여 구할 수 있음
    • 자동화 기능 : 테스트 대상 프로그램의 실행, 결과 비교, 커버리지 측정 등을 자동화 할 수 있음
  • 테스트 오라클의 종류 4가지 : 참오라클, 샘플링 오라클, 추정오라클, 일관성 검사 오라클
    • 참 오라클 : 모든 테스트 케이스의 입력에 대해 기대하는 결과를 제공하는 오라클
    • 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클
    • 추정 오라클 : 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클
    • 일관성 검사 오라클 : 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 수행 후의 결과 값이 동일한지를 확인하는 오라클
  • 정적 분석 도구 : 프로그램을 실행하지 않고 분석하는 도구
  • 테스트 실행 도구 : 스크립트 언어를 사용하여 테스트를 실행하는 도구
  • 성능 테스트 도구 : 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인하는 도구
  • 테스트 통제 도구 : 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구
  • 테스트 하네스 도구 : 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구
  • 결함 : 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 것
  • 결함 관리 측정 지표 3가지 : 결함 분포, 결함 추세, 결함 에이징
    • 결함 분포: 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정
    • 결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석
    • 결함 에이징 : 특정 결함 상태로 지속되는 시간 측정
  • 애플리케이션 성능 : 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도
  • 애플리케이션 성능 측정 지표 4가지 : 처리량, 응답시간, 경과시간, 자원 사용률(처음경자)
    • 처리량 : 일정시간내에 애플리케이션이 처리하는 일의 양
    • 응답시간 : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
    • 경과시간 : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
    • 자원 사용률 : 애플리케이션이 의뢰한 작업을 처리하는 동안의 cpu 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률
  • 시간 복잡도 : 알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화 한 것
    • 빅오 표기법 : 알고리즘의 수행시간이 최악일 때를 표기하는 방법
    • 세타 표기법 : 알고리즘의 수행시간이 평균일 때를 표기하는 방법
    • 오메가 표기법 : 알고리즘의 실행시간이 최상일 때를 표기하는 방법
  • O(1) : 입력값(N)에 관계없이 일정하게 문제 해결에 하나의 단계만을 거치는 것
  • O(logn) : 문제 해결에 필요한 단계가 입력값(n) 또는 조건에 의해 감소하는 것
  • O(n) : 문제 해결에 필요한 단계가 입력값(n)과 1:1관계를 가지는 것
  • O(nlogn) : 문제 해결에 필요한 단계가 n(logn)번 만큼 수행되는 것
  • O(n^2) : 문제 해결에 필요한 단계가 입력값(n)의 제곱만큼 수행되는 것
  • O(2^n) : 문제 해결에 필요한 단계가 2의 입력값(n)제곱만큼 수행되는 것
  • 순환 복잡도 : 한 프로그램의 논리적인 복잡도를 측정하기 위한 소프트웨어의 척도
    • 순환 복잡도의 공식 : V(G) = E-N+2
  • 스파게티 코드 : 코드의 로직이 서로 복잡하게 얽혀 있는 코드
  • 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
  • 클린코드작성원칙5가지 : (가단의중추) , 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
    • 가독성 : 누구든지 코드를 쉽게 읽을 수 있도록 작성하는 것
    • 단순성 : 코드를 간단하게 작성하는 것
    • 의존성 배제 : 코드가 다른 모듈에 미치는 영향을 최소화 하고 코드 변경시 다른 부분에 영향이 없도록 작성하는 것
    • 중복성 최소화 : 코드의 중복을 최소화 하고 중복된 코드는 삭제하고 공통된 코드를 사용하는 것
    • 추상화 : 상위클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위클래스/메소드/함수에서 구현하는 것
  • 정적 분석 도구 : 작성한 소스코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구
  • 동적 분석 도구 : 작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 도구

'소프트웨어 > 정보처리기사' 카테고리의 다른 글

[소프트웨어 설계] 기출 문제  (0) 2024.03.15

+ Recent posts