본문 바로가기
정보처리기사/필기

정보처리기사 필기 공부 2과목 (소프트웨어 개발)

by 애기 개발자 2024. 1. 24.
반응형

1장 데이터 입·출력 구현

그래프

무방향 그래프 간선 개수 : n(n-1)/2

방향 그래프 간선 개수 : n(n-1)

 

트리

순회

  • 전위 순회 (PreOrder)
    • Root, Left, Right
    • 뿌리 먼저 방문
  • 중위 순회 (InOrder)
    • Left, Root, Right
    • 왼쪽 하위 노드 방문 후 뿌리 방문
  • 후위 순회 (PostOrder)
    • Left, Right, Root 순
    • 하위 노드 모두 방문 후 뿌리 방

     A
    /  \
   B   C
  /   \    \
 D   E   F
      /    /  \
   G   H    I

  1. 전위 순회 (Pre-order Traversal)
    • 순서: A → B → D → E → G → C → F → H → I
    • 설명: 루트(A)를 먼저 방문, 왼쪽 서브트리(B-D-E-G)를 방문, 그리고 오른쪽 서브트리(C-F-H-I)를 방문합니다.
  2. 중위 순회 (In-order Traversal)
    • 순서: D → B → G → E → A → H → F → I → C
    • 설명: 왼쪽 서브트리(D-B-G-E)를 먼저 방문, 그 다음 루트(A), 마지막으로 오른쪽 서브트리(H-F-I-C)를 방문합니다.
  3. 후위 순회 (Post-order Traversal)
    • 순서: D → G → E → B → H → I → F → C → A
    • 설명: 왼쪽 서브트리(D-G-E-B)를 먼저 방문, 그 다음 오른쪽 서브트리(H-I-F-C), 마지막으로 루트(A)를 방문합니다.

 

수식 표기법

 

해당 A+B를 트리구조로 표현하면 위와 같다.

 

이를 전위(Prefix)수식, 후위(Postfix)수식으로 바꾸거나 중위(Infix)로 돌리는 방법.

 

Infix -> Prefix / Postfix

 

 

Postfix / Prefix -> Infix

 

 

정렬

삽입 정렬

시간복잡도 : O(N²)

 

i번째 값을 0~i-1까지 비교하며 변경

 

1. 1번째 값과 0번째 값 비교하고 삽입 후 뒤로 밀기

2. 2번째 값을 0번째 값과 비교, 2번째 값을 1번째 값과 비교, 삽입 후 뒤로 밀기

3. 3번째 값을 0번째 값과 비교, 3번째 값을 1번째 값과 비교, 3번째 값을 2번째 값과 비교, 삽입 후 뒤로 밀기

...

 

 

 

 

선택 정렬

시간복잡도 : O(N²)

 

n개의 레코드 중에서 최소값을 찾아 첫번째 위치에 놓고, 나머지 (n-1)개 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식을 반복하는 방식

 

1. 0과 1~n-1을 계속 비교

2. 1과 2~n-1을 계속 비교

...

n. i와 i+1 ~n-1을 계속 비교

 

 

버블 정렬

시간복잡도 : O(N²)

 

인접한 두 개의 레코드 값을 비교하여 서로 교환

 

 

 

퀵 정렬

  • 시간복잡도
    • 평균 : O(nlog₂n)
    • 최악 : O(N²)
  • 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법
  • 정렬 방식중 가장 빠름
  • 스택 사용
  • 분할 정복(Divide & Conquer)
  • 피봇 (Pivot) 사용

 

힙 정렬

  • 완전 이진트리를 이용한 정렬 방식
  • 시간복잡도 : O(nlog₂n)

 

2-Way 합병 정렬 (Merge Sort)

  • 이미 정렬된 두 개의 파일을 한 개의 파일로 합병하는 방식

71, 2, 38, 5, 7, 61, 11, 26, 53, 42 를 2-way 합병 정렬로 정렬

 

1회 : 두 개씩 묶은 후 각각의 묶음 안에서 정렬

(71, 2) (38, 5) (7, 61) (11, 26) (53, 42)

(2, 71) (5, 38) (7, 61) (11, 26) (42, 53)

 

2회 : 묶여진 묶음을 두 개씩 묶은 후 각각의 묶음 안에서 정렬

(2, 71, 5, 38) (7, 61, 11, 26) (42, 53)

(2, 5, 38, 71) (7, 11, 26, 61) (42, 53)

 

3회

(2, 71, 5, 38, 7, 61, 11, 26) (42, 53)

(2, 5, 7, 11, 26, 38, 61, 71) (42, 53)

 

4회

(2, 5, 7, 11, 26, 38, 61, 71, 42, 53)

2, 5, 7, 11, 26, 38, 42, 53, 61, 71

 

 

기수 정렬 (Radix Sort = Bucket Sort)

  • 큐를 이용하여 자릿수 별로정렬
  • 같은 수 또는 같은 문자끼리 그 순서에 맞는 버킷에 분배하였다가 버킷의 순서대로 레코드를 꺼내어 정렬
  • 시간복잡도 : O(dn) 

 

 

검색 - 이분 검색 / 해싱

이분 검색

앞과 끝의 중간을 찾는 검색 방법 (=이분 탐색)

 

mid = (first + last) / 2 (정수만 취함)

 

예 1 ~ 100 에서 15를 찾는데 걸리는 횟수

 

  1.  (1+100) / 2 = 50.5 (= 50) -> 1회
    1. 50 은 찾으려는 15보다 크다.
    2. 값은 1 ~ 49사이
  2. (1+49) / 2 = 25 -> 2회
    1. 25는 찾으려는 15보다 크다
    2. 값은 1 ~ 24 사이
  3. (1 + 24) / 2 = 12.5 ( =12) -> 3회
    1. 12는 찾으려는 15보다 작다.
    2. 값은 13 ~ 24 사이
  4. (13 + 24) / 2 = 18.5 (= 18) -> 4회
    1. 18은 찾으려는15보다 크다.
    2. 값은13 ~ 17 사이
  5. (13 + 17) / 2 = 15 -> 5회

총 5회 비교

 

해싱

해시 테이블

  • 버킷
  • 슬롯
  • Collision (충돌 현상)
  • Synonym
  • Overflow

해싱 함수

  • 제산법(Division)
  • 제곱법(Mid-Square)
  • 폴딩법 (Folding)
  • 기수 변환법 (Radix)
  • 대수적 코딩법 (algebraic Coding)
  • 숫자 분석법 (Digit Analysis, 계수 분석법)
  • 무작위법 (Random)

Collision (충돌현상) 해결 방법

  • 체이닝 (Chaining)
  • 개방 주소법 (Open Addressing)
  • 재해싱 (Rehashing)

 

데이터 베이스

스키마

  • 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정희
  • 외부 스키마
    • 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것
  • 개념 스키마
    • DB의 전체적인 논리적 구조로서, 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 DB로 하나만 존재
    • 개체간의 관계와 제약조건을 나타내고, DB의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의
  • 내부 스키마
    • 물리적 저장장치의 입장에서 본 DB구로조서, 실제로 DB에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

2장 통합 구현

 

 


3장 제품 소프트웨어 패키징

디지털 저작권 관리 (DRM; Digital Right Management)

  • 저작권자가 배포한 디지털 컨텐츠가 의도한 용도로만 사용되도록 관리, 보호 하는 기술
  • 구성 요소
    • 클리어링 하우스 (Clearing House) : 저작권에 대한 사용권한, 라이선스 발급, 사용량에 따른 결제 관리등 수행
    • 콘텐츠 제공자: 콘텐츠를 제공하는 저작권자
    • 패키저 : 콘텐츠를 메타데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
    • 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
    • DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
    • 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
  • 기술 요소
    • 암호화
    • 키관리
    • 식별 기술
    • 저작권 표현
    • 정책 관리
    • 크랙 방

 

 

소프트웨어 버전 등록

형상 관리 기능

  • 형상 식별 : 형상 관리 대상에 이름과 관리번호를 부여하고, 계층(Tree)구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
  • 버전 제어 : SW업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool)를 결합시키는 작업
  • 형상 통제(변경관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
  • 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  • 형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록 관리하고 보고서를 작성

* 무결성 : 결점이 없다는 것으로, 정해진 기준에 어긋나지 않고 조건을 충실히 만족하는 정도

 

주요 기능

  • 저장소 (Repository)
  • 가져오기 (Import)
  • 체크아웃 (Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아옴
  • 체크인 (Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
  • 커밋
  • 동기화

4장 애플리케이션 테스트 관리

애플리케이션 테스트

검증(Verification)과 확인(Validation)

  • 검증 (Verification) : 소프트웨어가 요구사항에 부합하게 구현되었음을 보장하는 활동
  • 확인 (Validation) : 소프트웨어가 고객의 의도에 따라 구현되었음을 보장하는 활동

검증 -> 개발자

확인 -> 사용자

 

 

파레토 법칙

  • 테스트로 발견된 80%의 오류는 20%에 해당하는 코드(모듈)에서 발견된다.

살충제 패러독스 (Pesticide Paradox)

  • 살충제를 지속적으로 뿌리면 벌레가 내성이 생겨 죽지 않음
  • 동일한 TC로 동일한 테스트를 반복하면 더이상 결함이 발견되지 않음
  • 이를 방지하기 위해 TC를 지속적으로 보안 및 개선해야 함

오류-부재의 궤변

  • SW의 결함을 모두제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 할 수 없다.

 

애플리케이션 테스트의 분류

 

프로그램 실행 여부

  • 정적 테스트
    • 프로그램을 실행하지 않고 명세서나 코드를 대상으로 분석하는 테스트
    • 워크스루, 인스펙션, 코드검사 등
  • 동적 테스트
    • 프로그램을 실행하여 오류를 찾음, 소프트웨어 개발의 모든 단계에서 테스트 수행 가능
    • 블랙박스 테스트, 화이트박스 테스트

 

 

워크스루 (Walkthrough)

  • 요구사항 명세서 작성자를 포함하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견

 

  • 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
  • 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
  • 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행

인스펙션 (Inspection)

  • 요구사항 명세서 작정자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견.
  •  

가 - 사전 교육

나 - 준비

다 - 인스펙션 회의

라 - 수정

마 - 후속조

 

 

목적에 따른 테스트

  • 회복(Recovery) 테스트 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지 확인
  • 안전(Security) 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인
  • 강도(Stress) 테스트 : 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하시에도 정상적으로 실행되는지 확인
  • 성능(Performance) 테스트 : 실시간 성능이나 전체적인 효율성을 진단하는 테스트, 응답시간, 처리량 등 확인
  • 구조(Structure) 테스트 : SW 내부의 논리적인 경로, 소스 코드의 복잡도 등 평가
  • 회귀(Regression) 테스트 : SW의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인
  • 병행(Parallel) 테스트 : 변경된 SW와 기존 SW에 동일한 데이터를 입력하여 결과를 비교  

 

 

테스트 기법에 따른 애플리케이션 테스트

화이트박스 테스트

  • 모듈의 원시코드를 오픈시킨 상태에서 원시코드의 논리적인 모든 경로를 테스트
  • 테스트 과정의 초기에 적용된다.
  • 화이트박스 테스트의 이해를 위해 논리흐름도(Logic_Flow Diagram)을 이용
  • 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic Test)에 해당
  • 테스트 데이터를 선택하기 위해 검증기준(Test Coverage)을 정한다.

화이트박스 테스트 종류

  • 기초 경로 검사
    • 대표적인 화이트박스 테스트
    • TC설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는방법
    • 테스트 측정 결과는 실행 경로의 기초를 정의하는 지침으로 사용
  • 제어 구조 검사
    • 조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 방법
    • 루프 검사 : 프로그램의 반복구조에 초점을 맞춘 방법
    • 데이터 흐름 검사 : 변수의 정의와 변수 사용 위치에 초점을 맞춤

화이트박스 테스트의 검증 기준

  • 문장 검증 기준 : 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계
  • 분기 검증 기준 : 결정 검증 기준이라고도 함. 소스코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한번이상 수행되도록 설계
  • 조건 검증 기준 : 조건문에 포함된 개별 조건식의 결과가 True/False인 경우가 한번이상 수행되도록
  • 분기/조건 기준 : 분기 검증기준과 조건 검증 기준을 모두 만족하는 설계

 

  

블랙박스 테스트

  • 프로그램 구조를 고려하지 않는다.
  • 소프트웨어 인터페이스에서 실시됨
  • 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 DB접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 후반부에 적용
  • 기능 테스트 

블랙박스 테스트의 종류

  • 동치 분할 검사 (동치 클래스 분해) : 입력 자료에 초점을 맞춰 TC를 만들고 검사하는 방법. 동등 분할 기법이라고도 함
  • 경계값 분석 : 경계값에서 오류가 발생될 확률이 높다는 점을 이용
  • 원인-효과 그래프 검사 : 입력 데이터간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 TC를 선정하여 검사하는 방법
  • 오류 예측검사 : 과거의 경험이나 확인자으 감각으로 테스트하는 방법
  • 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 확인하는 방법 

 

 

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

 

소프트웨어 생명 주기의 V-모델

 

단위 테스트 (Unit Test)

  • 코딩 직후 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것
  • 인터페이스, 외부적 IO, 자료구조, 독립적 기초 경로, 오류 처리경로, 경계조건 등 검사
  • 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행 
  • 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
  • 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행
  • 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
  • 단위 테스트로 발견 가능한 오류
    • 알고리즘 오류에 따른 원치 않은 결과
    • 탈출구가 없는 반복문
    • 틀린 계산 수식에 의한 잘못된 결

단위 테스트 도구

  • CppUnit - C++ 단위 테스트 도구
  • JUnit - 자바 단위 테스트 도구
  • HttpUnit - 웹 브라우저 없이 웹 사이트 테스트를 수행하는 오픈 소스 소프트웨어 테스트 프레임워크

 

인수 테스트 (Acceptance Test)

  • 개발한 SW가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트
  • 개발한 SW를 사용자가 직접 테스트
  • 인수 테스트에 문제가 없으면 사용자는 SW를 인수하고 프로젝트 종료
  • 사용자 인수테스트 : 사용자가 시스템 사용의 적절성 여부 확인
  • 운영상의 인수 테스트 : 시스템관리자가 시스템 인수시 수행하는 테스트. 백업/복원 세스템, 재난복구, 사용자 관리, 정기정검 등 확인
  • 계약 인수 테스트 : 계약상의 인수/검수 조건 준수 여부 확인
  • 규정 인수 테스트 : SW가 정부 지침, 법규, 규정에 맞게 개발되었는지 확인
  • 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 ㅔ스트
  • 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트, 필드 테스팅이라고도 함

* 알파/베타 테스트 게임으로 생각하면 편함.

 

 

통합 테스트(Integration Test)

  • 상향식 통합 테스트 (Bottom Up Integration Test)
    • 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합
    • 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)필요
  • 하향식 통합 테스트(Top Down Integration Test)
    • 상위 모듈에서 하위 모듈 방향으로 통합
    • 깊이 우선 통합법, 넓이 우선 통합법 사용
    • 초기부터 사용자에게 시스템 구조를 보여줌

 

테스트 드라이버 (Test Driver)

  • 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈

테스트 스텁 (Test Stub)

  • 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할

 

구분 드라이버 스텁
개념 테스트 대상의 하위 모듈을 호출하는 도구.
매개 변수를 전달하고, 모듈 테스트 수행 후의결과를 도출 
제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
일시적으로 필요한 조건만을 가지고 있는 시험용 모듈
필요 시기 상위 모듈 없이 하위 모듈이 있는 경우 하위 모듈 구동 상위 모듈은 있지만 하위 모듈이 없는 경우 하위 모듈 대체
테스트 방식 상향식 하향식
공통점 소프트웨어 개발과 테스트를 병행할 경우 이용
차이점 이미 존재하는 하위 모듈과 존재하지 않는 상위 모듈간의 인터페이스 역할
소프트웨어 개발이 완료되면 드라이버는 본래의 모듈로 교체
일시적으로 필요한 조건만을 가지고 임시로 제공되는 가짜 모듈의 역할
시험용 모듈이기 때문에 일반적으로 드라이버보다 작성하기 쉬움 

 

 

 

테스트 케이스 / 테스트 오라클

테스트 오라클

  • 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 방법
  • 참(True) 오라클 : 모든 테스트케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클, 발생된 모든 오류를 검출 할수 있음
  • 샘플링 오라클 : 특정한 몇몇 테스트케이스의 입력값들에 대해서만 기대하는 결과를 제공
  • 추정(Heuristic) 오라클: 특정 테스트 케이스의 입력 값들에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정하는 방법
  • 일관성 검사(Consistent) 오라클 : 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지 확인   

 

 

테스트 케이스 자동화 도구

테스트 케이스 생성 도구

  • 자료 흐름도
  • 기능 테스트
  • 입력 도메인 분석
  • 랜덤 테스트

 

 

 

복잡도

 

시간 복잡도

  • 빅오 표기법 : 최악
  • 세타 표기법 : 평균
  • 오메가 표기법 : 최상

알고리즘 별 시간복잡도

  • O(1) : 스택 삽입(Push), 삭제(Pop)
  • O(log₂n) : 이진 트리, 이진 탐색
  • O(n) : for문
  • O(nlog₂n) : 힙 정렬, 2-way 합병 정렬
  • O(n²) : 삽입 정렬, 쉘 정렬, 선택 정렬, 버블 정렬, 퀵 정렬
  • O(2ⁿ) : 피보나치 수열

 

순환 복잡도

순환 복잡도 (Cyclomatic Complexity), 맥케이브 순환도 (McCabe's Cyclomatic), 제어 흐름도 이론에 기초를 둠

 

제어 흐름도 G에서 순환 복잡도 V(G)

V(G) = E - N + 2

E : 화살표 수

N : 노드의 수

 

 

순환복잡도 V(G) = 화살표수 (11) - 노드의 수(9) + 2 = 4

영역의 수 = 내부 영역(1, 2, 3) + 외부 영역(4) = 4

 

 

아래 제어 흐름도그래프의 McCabe의 Cyclomatic 수는?

 

영억 4개 -> 4 

 

 

 

애플리케이션 성능 개선

소스 코드 최적화

  • 클린 코드 : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순 명료한 코드, 잘 작성된 코드
  • 나쁜 코드
    • 스파게티 코드 : 코드의 로직이 복잡하게 얽힌 코드
    • 외계인 코드(Alien Code) : 아주 오래되거나 참고문서 또는 개발자가 없어 유지 보수 작업이 어려운 코드

클린 코드 작성 원칙

  • 가독성 : 누구나 코드를 쉽게 읽을수 있도록
  • 단순성 : 코드를 간단하게 작성
  • 의존성 배제 : 코드가 다른 모듈에 미치는 영향을 최소화
  • 중복성 최소화 : 코드의 중복을 최소화
  • 추상화 : 상위 클래스/메소드/함수에서는 간략하게 어플리케이션의 특성을 나타내고, 상세 내용은 하위 클래스/메소드/함수에서 나타냄

소스코드 품질 분석 도구

  • 정적 도구 : 작성한 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구
    • pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등
  • 동적 도구 : 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등 분석
    • Avalanche, Valgrind 

5장 인터페이스 구현

EAI (Enterprise Application Integration)

구축 유형

  • Point-to-Point
    • 기본적인 애플리케이션 통합방식, 1:1로 연결
    • 변경 및 재사용 어려움
  • Hub & Spoke
    • 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
    • 확장 및 유지보수 용이
    • 허브 장애 발생시 시스템전체에 영향 
  • Message Bus (ESB)
    • 애플리케이션 사이에 미들웨어를 두어 처리하는 방식
    • 확장성이 뛰어나며대용량 처리 가능 
  • Hybrid
    • Hub & Spoke + Message Bus 혼합방식
    • 그룹 내에서는 Hub & Spoke, 그룹 간에는 Message Bus
    • 필요한 ㄱ여우 한가지 방식으로 EAI 구현 가능
    • 데이터 병목현상 최소화 

ESB

  • EAI와 유사하지만 애플리케이션보다는 서비스중심의 통합 지향
  • 특정 서비스에 국한되지 않고 범용적으로 사용하기위해 애플리케이션과 결합도를 약하게
  • 관리 및 보안 유지 쉬움, 높은 수준의 품질 지원 가능

 

XML

  • 다목적 마크업 언어
  • HTML의 문법이 각 웹 브라우저에서 상호 호환적이지 못한 문제와 SGML의 복잡함을 해결하기 위해 개발됨
  • SGML : Stand Generalized Markup Language - 텍스트, 이미지, 오디오 및 비디오 등 멀티미디어 전자문서들을 다른 기종의 시스템들과 정보 손시 ㄹ없이 효율적으로 전송 저장 및 자동 처리하기위한 언어

 

인터페이스 보안

인터페이스 보안 기능

네트워크 영역

  • 인터페이스 송수신 간 스니핑(Sniffing) 등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해네트워크 트래픽에 대한 암호화 설정
  • IPSec, SSL, S-HTTP 등
  • IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
  • SSL : TCP/IP 계층과 애플리케이션 계층 사이
  • S-HTTP : 클라이언트/서버 간

데이터 무결성 검사 도구

  • Tripwire
  • AIDE
  • Samhain
  • Claymore
  • Slipwire
  • Fcheck 등

 

인터페이스 구현 검증

구현 검증 도구

  • xUnit
    • JUnit, CppUnit, NUnit, HttpUnit 등 다양한 언어에 적용되는 단위 테스트 프레임워크
    • 같은 테스트 코드를 여러번 작덩되지 않게 도와주고, 테스트마다 예상 결과를 기억하 ㄹ필요가 없게 하는 자동화된 해법을 제공
  • STAF
    • 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
  • FitNesse
    • 웹 기반 테스트케이스 설계, 실행, 결과 확인 등지원하는 테스트 프레임워크
  • NTAF
    • FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
  • Selenium
    • 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
  • watir
    • Ruby를 사용하는 애플리케이션 테스트 프레임워크
      •  

위험 모니터링

  • 위험 요소 징후들에 대하여 지속적으로 인지하는 것

 

컴파일 (Compile)

  • 우저인 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 기능
  • 고급언어 (사람이 인식하는 언어)에서 저급언어(기계어)로 변환하는 기능

 

최악의 경우 트리 검색 시간복잡도

  • 이진 탐색트리 : O(n)
  • AVL 트리 : O(logn)
  • 2-3 트리 : O(log3n)
  • 레드 블랙 트리 : O(logn)

 

힙 정렬(Heap Sort) 시간복잡도

  • 최적, 평균, 최악 모두 O(nlog2n)

 

N개의 데이터 시간 복잡도

  • O(Nlog2N) : 퀵정렬, 합병정렬 -> 선형 로그형 복잡도
  • O(N²) : 버블정렬, 삽입정렬, 선택정렬

* 정렬된 경우 버블정렬과 삽입정렬은 O(N)

반응형

댓글