반응형

2장 인덱스 기본

2.1 인덱스 구조 및 탐색

인덱스 튜닝의 핵심요소

  • 인덱스 스캔 효휼화 튜닝 : 정렬을 통한 소량 스캔
  • 랜덤 액세스 최소화 튜닝 : 인덱스 스캔 후 테이블 레코드 액세스 최소화

 

2.1.1 인덱스 구조

B+ 트리

LMC : 자식 노드 중 가장 왼쪽 끝에 위치한 블록을 가리킴

리프 블록에 저장된 레코드는 ROWID(데이터 블록 주소 + 로우 번호)를 가짐.

 

2.1.2 인덱스 수직적 탐색

인덱스 스캔 시작지점을 찾는 과정

찾고자 하는 값보다 크거나 같은 값을 만나면, 바로 직전 레코드가 가리키는 하위 블록으로 이동

 

2.1.3 인덱스 수평적 탐색

조건절에 만족하는 모든 데이터의 ROWID를 얻기 위한 과정

 

2.1.4 결합 인덱스

인덱스 구성에 따라 성능 차이는 있지만, 어느 컬럼을 앞에 두든 일량의 차이는 없다.

 

2.2 인덱스 기본 사용법

인덱스 선두 컬럼이 조건절에 있어야 범위 스캔 가능

단, 인덱스 선두 컬럼을 가공하지 않아야 정상적으로 사용 가능 (인덱스 스캔 시작점 탐색)

 

2.2.1 컬럼 가공

WHERE, ORDER BY, SELECT-LIST에서 가공이 이루어진 경우 인덱스가 정상적으로 사용되지 않을 수 있음.

  • SUBSTR()
  • NVL()
  • LIKE '%...%'
  • WHERE ( ... OR ... )
  • WHERE IN ( ..., ... )
  • TO_CHAR( ..., 'FM...' )

* IN 조건절에 대해서는 SQL 옵티마이저가 IN-List Iterator 방식 사용 : IN_List 개수만큼 Index Range Scan 반복

 

2.2.2 정렬 연산 생략

인덱스 사용 시 정렬돼 있기 때문에 ORDER BY가 있어도 정렬 연산 수행 생략

 

2.2.3 자동 형변환

자동 형변환에 의해 인덱스 컬럼이 가공되어 인덱스 스캔을 못하는 경우 존재

숫자형 + 문자형 = 숫자형

날짜형 + 문자형 = 날짜형

 

에러 )

  • 실행 에러 : 숫자형 컬럼과 문자형 컬럼 비교 시 문자형 컬럼에 숫자로 변환할 수 없는 문자열을 입력하는 경우
  • 결과 오류 : DECODE(A, B, C, D) 처리 중 데이터 타입이 C에 의해 결정

 

2.3 인덱스 확장기능 사용법

2.3.1 Index Range Scan

인덱스 루트에서 리프 블록까지 수직적으로 탐색한 후에 필요한 범위만 스캔

 

2.3.2 Index Full Scan

수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색

데이터 검색을 위한 최적의 인덱스가 없을 때 차선으로 선택

 

2.3.3 Index Unique Scan

수직적 탐색만으로 데이터를 찾는 스캔 방식

 

Unique 인덱스가 존재하는 컬럼은 중복 값이 입력되지 않게 DBMS가 데이터 정합성 관리

Unique 결합 인덱스에 대해 일부 컬럼만으로 검색 시 Index Range Scan 실행

 

2.3.4 Index Skip Scan

조건절에 부합하는 레코드를 포함할 가능성이 있는 리프 블록만 골라서 액세스하는 스캔 방식

조건절에 빠진 인덱스 선두 컬럼의 Distinct Value 개수가 적고 후행 컬럼의 Distinct Value 개수가 많을 때 유용

 

2.3.5 Index Fast Full Scan

논리적인 인덱스 트리 구조를 무시하고 인덱스 세그먼트 전체를 Multiblock I/O 방식으로 스캔

결과집합이 인덱스 키 순서대로 정렬되지 않음.

쿼리에 사용한 컬럼이 모두 인덱스에 포함돼 있을 때만 사용 가능

인덱스가 파티션 돼 있지 않더라도 병렬 쿼리 가능

 

2.3.6 Index Range Scan Descending

내림차순으로 정렬된 결과집합

반응형

'자격증 > SQLP' 카테고리의 다른 글

친절한 SQL 튜닝 1장  (0) 2022.06.13
반응형

1장 SQL 처리 과정과 I/O

1.1 SQL 파싱과 최적화

1.1.1 SQL

구조적, 집합적, 선언적 질의 언어

 

1.1.2 SQL 옵티마이저

프로시저를 만들어 내는 DBMS 내부 엔진

  1. 후보군 실행계획 탐색
  2. 실행계획 예상비용 산정
  3. 최저 비용 실행계획 선택

 

1.1.3 SQL 최적화

DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 과정

  1. SQL 파싱

    1. 파싱 트리 생성
    2. Syntax 체크
    3. Semantic 체크
  2. SQL 최적화 : 옵티마이저가 효율적인 실행경로를 선택

  3. 로우 소스 생성 : 옵티마이저가 선택한 실행경로를 실행 가능한 코드로 포맷팅 하는 단계

 

1.1.4 실행계획

SQL 옵티마이저가 생성한 처리절차를 사용자가 확인할 수 있게 트리 구조로 표현한 것

 

1.1.5 비용

쿼리를 수행하는 동안 발생할 것으로 예상 I/O 횟수 또는 예상 소요시간

실측치가 아니므로 실제 수행할 때 발생하는 I/O 또는 시간과 많은 차이

 

1.1.6 옵티마이저 힌트

SQL데이터 액세스 경로를 정해주어 복잡한 SQL에서의 옵티마이저의 한계 개선

주의사항 )

  • 힌트와 힌트 사이에 콤마 사용 불가

    /*+ INDEX(A A_X01) INDEX(B, B_X03) */ --모두 유효
    /*+ INDEX(C), FULL(D) */ --첫 번째 힌트만 유효
    
  • FROM절 테이블명 별칭 사용 시 힌트에도 별칭 사용

    SELECT \*+ FULL(EMP) *\ --무효
      FROM EMP E
    

 

1.2 SQL 공유 및 재사용

1.2.1 소프트 파싱 vs 하드 파싱

SGA(System Global Area) : 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간

  • DB Buffer Cache

  • Redo Log Buffer

  • Shared Pool

    • Library Cache : 내부 프로시저를 반복 사용할 수 있도록 캐싱해 두는 메모리 공간
    • Data Dictionary Cache

 

실행과정 )

  1. 사용자

  2. SQL 파싱

  3. 캐시 힛

    • O (소프트 파싱) : 실행
    • X (하드 파싱) : 최적화 > 로우 소스 생성 > 실행

 

옵티마이저가 사용하는 정보 목록

  • 오브젝트(테이블, 컬럼, 인덱스) 구조 기본 정보
  • 오브젝트 통계
  • 시스템 통계
  • 옵티마이저 관련 파라미터

 

1.2.2 바인드 변수

SQL은 자체가 이름이기 때문에 텍스트 중 작은 부분이라도 수정되면 다른 객체 생성 (Case Sensitive)

SQL은 딕셔너리에 저장하지 않는다.

파라미터 Driven 방식으로 SQL을 작성하여 하나의 프로시저를 공유하면서 재사용 (하드파싱 1회)

 

1.3 데이터 저장 구조 및 I/O 메커니즘

디스크 I/O가 SQL 성능을 좌우

 

1.3.1 데이터베이스 저장 구조

테이블스페이스 > 세그먼트 > 익스텐트 > 데이터 블록 > 로우

  • 데이터 블록 : 데이터를 읽고 쓰는 단위
  • 익스텐트 : 공간 확장 단위, 연속된 블록 집합
  • 세그먼트 : 데이터 저장공간이 필요한 오브젝트
  • 테이블스페이스 : 세그먼트를 담는 컨테이너
  • 데이터파일 : 디스크 상의 물리적인 OS 파일

세그먼트에 할당된 모든 익스텐트가 같은 데이터파일에 위치하는 것은 아니다.

익스텐트 내 블록은 서로 인접한 연속된 공간이지만, 익스텐트끼리는 연속된 공간이 아니다.

 

DBA(Data Block Address) : 데이터 블록의 고유 주소값

 

1.3.2 시퀀셜 액세스 vs 랜덤 액세스

  • 시퀀셜 액세스 : 논리적 또는 물리적으로 연결된 순서에 따라 차례대로 블록을 읽는 방식
  • 랜덤 액세스 : 논리적, 물리적인 순서를 따르지 않고, 레코드 하나를 읽기 위해 한 블록씩 접근하는 방식

 

익스텐트 맵 : 세그먼트에 할당된 익스텐트 목록을 관리하기 위해 세그먼트 헤더에 있는 맵

 

1.3.3 논리적 I/O vs 물리적 I/O

자주 읽는 블록에 대한 디스크 접근 시간을 줄이기 데이터 캐싱 사용

데이터 블록을 읽을 땐 항상 버퍼캐시부터 탐색

 

  • 논리적 I/O : 메모리 I/O와 유사
  • 물리적 I/O : 디스크 I/O와 유사

논리적 I/O > 물리적 I/O

 

버퍼캐시 히트율(BCHR) = ( 1 - 물리적I/O / 논리적I/O) * 100

SQL 성능을 향상하려면 논리적 I/O를 줄여야 한다.

BCHR이 높다고 효율적인  SQL은 아니다.

 

1.3.4 Table Full Scan vs Index Range Scan

  • Single Block I/O : 한 번에 한 블록씩 요청해서 메모리에 적재하는 방식
  • Multiblock I/O : 한 번에 여러 블록씩 요청해서 메모리에 적재하는 방식

Multiblock I/O 방식으로 읽더라도 익슨텐트 경계를 넘지 못한다.

 

  • Table Full Scan : 테이블 전체를 스캔해서 읽는 방식

    • 시퀀셜 액세스 + Multiblock I/O
  • Index Range Scan : 인덱스를 이용해서 ROWID로 테이블 레코드를 찾아가는 방식

    • 랜덤 액세스 + Single Block I/O
    • 큰 테이블에서 소량의 데이터를 검색할 때 필수
    • 많은 데이터를 읽을 때는 Table Full Scan보다 불리

인덱스가 SQL 성능을 떨어뜨리는 경우도 상당히 많다.

 

1.3.5 캐시 탐색 매커니즘

  1. 해시 알고리즘으로 버퍼 헤더 찾기
  2. 포인터로 버퍼 블록 액세스

 

해시 체인 내에서의 정렬 보장 X

 

액세스 직렬화 매커니즘의 필요성 : 하나의 버퍼 블록을 두 개 이상의 프로세스가 동시에 접근하려고 할 때 블록 정합성 문제 위험

  • 캐시버퍼 캐시 래치 : 해시 체인 앞에 래치(걸쇠)를 두고, Key를 획득한 프로세스만이 체인에 진입
  • 버퍼 Lock : 캐시버퍼 체인 래치를 해제하기 전에 버퍼 헤더에 Lock을 설정함으로써 버퍼블록 자체에 대한 직렬화 문제 해결
반응형

'자격증 > SQLP' 카테고리의 다른 글

친절한 SQL 튜닝 2장  (0) 2022.06.21
반응형

1 애플리케이션 테스트 케이스 설계

1 애플리케이션 테스트 케이스 작성

1 소프트웨어 테스트

1 개념

개발된 응용 애플리케이션이나 시스템의 만족도와 결함을 찾는 활동

2 필요성

  • 오류 발견
  • 오류 예방
  • 품질 향상

3 원리

  • 테스팅은 결함이 존재함을 밝히는 것: 없다는 것 증명 불가
  • 완벽한 테스팅은 불가능: 완벽한 테스팅은 불필요
  • 개발 초기에 테스팅 시작: 재작업을 줄여 개발 기간 단축 및 결함 예방
  • 결함 집중: 적은 수의 모듈에서 대다수의 결함이 발견
  • 살충제 패러독스: 동일한 테스트 케이스은 새로운 버그를 찾지 못함
  • 테스팅은 정황에 의존적: 소프트웨어 성격에 맞게 테스트
  • 오류-부재의 궤변: 요구사항 부재 시 오류가 없더라도 낮은 품질

4 절차

  1. 테스트 계획
  2. 테스트 분석 및 디자인
  3. 테스트 케이스 및 시나리오 작성
  4. 테스트 수행
  5. 테스트 결과 평가 및 리포팅

5 산출물

  • 테스트 계획서: 테스트의 목적과 범위 정의
  • 테스트 케이스: 테스트 설계 산출물
  • 테스트 시나리오: 테스트 케이스 집합
  • 테스트 결과서: 테스트 프로세스 리뷰, 테스트 결과 평가

2 소프트웨어 테스트 유형

  • 프로그램 실행 여부에 따른 분류
    • 정적 테스트: 논리적 구조 분석
    • 동적 테스트
  • 테스트 기법에 따른 분류
    • 화이트박스(구조) 테스트: 내부 로직을 보면서 테스트
      • 제어구조 테스트: 논리적 복잡도 측정 후 수행 경로 집합 정의
      • 루프 테스트: 루프 구조에 국한해서 실시
    • 블랙박스(기능) 테스트: 요구사항 명세를 보면서 테스트
      • 동등 분할 테스트: 도메인별 대표값 테스트 케이스를 도출하여 테스트
      • 경계 값 분석 테스트: 등가분할 후, 경계값을 포함하여 테스트
      • 결정 테이블 테스트: 발생 조건과 행위를 조합하여 테스트
      • 상태전이 테스트: 이벤트에 의한 상태 전의 경우의 수를 테스트
      • 유스케이스 테스트: 유스케이스 모델링이 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스 명세화
      • 분류트리 테스트: SW 일부 또는 전체를 트리 구조로 분석
        • 페어와이즈 테스트: 테스트 데이터를 최소 한 번씩 조합하여 테스트
  • 테스트 시각에 따른 분류
    • 검증: 과정
    • 확인: 결과
  • 테스트 목적에 따른 분류
    • 회복: 고의로 실패, 복귀 여부
    • 안전: 보안 결함 여부
    • 강도: 정보량 과부하시 정상 작동 여부
    • 성능: 성능 평가
    • 구조: 내부 논리 경로, 소스코드 복잡도 평가
    • 회귀: 오류를 제거하거나 수정한 시스템에서의 오류를 확인하는 반복 테스트
    • 병행: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력하여 비교
  • 테스트 종류에 따른 분류
    • 명세 기반 테스트: 요구사항 명세서를 기반으로 테스트
    • 구조 기반 테스트: 소프트웨어 내부 논리 흐름에 따라 테스트
    • 경험 기반 테스트: 경험을 토대로한 직관과 기술 능력을 기반으로 테스트

3 테스트 케이스

1 개념

특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과 집합

2 작성 절차

  1. 테스트 계획 검토 및 자료 확보
  2. 위험 평가 및 우선순위 결정
  3. 테스트 요구사항 정의
  4. 테스트 구조 설계 및 테스트 방법 결정
  5. 테스트 케이스 정의
  6. 테스트 케이스 타당성 확인 및 유지보수

3 필요 항목

  • 공통 작성 항목 요소
    • 테스트 단계명, 작성자, 승인자, 작성 일자, 문서 버전 식별
    • 대상 시스템 식별
    • 변경 여부 식별
    • 테스트 범위 식별
    • 테스트 조직 식별
  • 개별 테스트케이스 항목 요소
    • 테스트 ID 작성
    • 테스트 목적 작성
    • 테스트할 기능 요약
    • 입력 데이터 작성
    • 기대 결과 작성
    • 테스트 환경 설정
    • 전제 조건 설정
    • 성공/실패 기준 설정
    • 기타 요소를 식별하여 설정

4 테스트 오라클

1 개념

테스트 결과의 참, 거짓을 판단하기 위해 사전에 정의된 참 값을 입력하여 비교

2 종류

  • 참 오라클: 모두 검사
  • 샘플링 오라클: 일부 검사
  • 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값에 대해서 휴리스틱(추정) 처리
  • 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 전후 동일 여부 확인

2 애플리케이션 테스트 시나리오 작성

1 테스트 레벨

1 개념

함께 편성되고 관리되는 테스트 활동 그룹

2 종류

  • 단위 테스트 - 개발: 사용자 요구사항에 대한 단위 모듈, 서브 루틴 등을 테스트
  • 통합 테스트 - 설계: 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계
  • 시스템 테스트 - 기계 명세 분석: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
  • 인수 테스트 - 요구사항 분석: 계약 상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계

2 테스트 시나리오

1 개념

테스트 케이스 집합

2 작성 시 유의사항

  • 테스트 시나리오 분리 작성
  • 요구사항 기반 테스트 시나리오 작성
  • 필요 항목 포함

3 테스트 환경 구축

1 개념

테스트를 위하여 실제 운영 환경을 구축하는 활동

2 유형

  • 하드웨어 기반: 서버 장비, 클라이언트 장비, 네트워크 장비 설치
  • 소프트웨어 기반: 응용 소프트웨어 설치, 필요 데이터 구축
  • 가상 시스템 기반: 물리적으로 테스트 환경 구축이 힘든 경우

3 테스트 조건

  • 테스트 시작 조건
  • 테스트 종료 조건
  • 테스트 성공과 실패의 판단 기준

2 애플리케이션 통합 테스트

1 애플리케이션 통합 테스트 수행

1 통합 테스트

1 개념

2 수행 방법 분류

  • 비점층적 방식
    • 빅뱅 방식: 모든 컴포넌트를 사전에 통합하여 테스트
  • 점층적 방식
    • 하향식 통합: 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 통합하면서 테스트
      1. 메인 제어 모듈은 아직 작성되지 않은 하위 모듈 제어
      2. 검사 초기에 시스템 구조 파악
      3. 스텁(더미 모듈) 개발
      4. 깊이/너비 우선 방식에 따라 실제 모듈 대체
      5. 각 모듈 통합
      6. 테스트가 완료되면 스텁이 실제 모듈로 작성
    • 상향식 통합: 최하위 레벨의 모듈로부터 위쪽 방향으로 제어의 경로를 따라 구축하면서 테스트
      1. 하위 레벨의 모듈들이 클러스터로 결합
      2. 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 드라이버(더미 모듈) 작성
      3. 각 통합된 클러스터 단위 테스트
      4. 클러스터는 프로그램의 위쪽으로 결합, 드라이버가 실제 모듈로 대체

2 테스트 자동화 도구

1 개념

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현

2 장단점

  • 장점: 재입력 작업 자동화, 일관성 검증에 유리, 객관적인 평가 기준 제공, 정밀한 테스트 가능
  • 단점: 사용 방법 교육 및 학습 필요, 프로세스 단계별 적용 비용, 도구 비용

3 유형

  • 정적 분석 도구: 소스코드 결함
  • 테스트 실행 도구: 작성된 스크립트 실행
    • 데이터 주도 접근 방식
    • 키워드 주도 접근 방식
  • 성능 테스트 도구: 가상의 사용자를 생성하고 테스트
  • 테스트 통제 도구: 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구

4 테스트 단계별 테스트 자동화 도구

  • 테스트 계획
    • 요구사항 관리
  • 테스트 분석/설계
    • 테스트 케이스 생성
  • 테스트 수행
    • 테스트 자동화
    • 정적 분석
    • 동적 분석
    • 성능 테스트
    • 모니터링
  • 테스트 관리
    • 커버리지 측정
    • 형상 관리
    • 결함 추적/관리

3 테스트 하네스

1 개념

모듈을 테스트하는 환경의 일부

2 구성요소

  • 테스트 드라이버
  • 테스트 스텁
  • 테스트 슈트
  • 테스트 케이스
  • 테스트 스크립트
  • 목 오브젝트

2 애플리케이션 테스트 결과 분석

1 테스트 결과 분석

1 소프트웨어 결합

  • 에러/오류: 결함의 원인
  • 결함/결점/버그: 제거하지 않으면 실패하거나 문제 발생
  • 실패/문제: 결함 실행 시 발견

2 테스트 완료 조건

최적의 완료 조건 계획 필요

3 테스트 리포팅

  • 테스트 결과 정리:
  • 테스트 요약 문서
  • 품질 상태
  • 테스트 결과서
  • 테스트 실행 절차 및 평가

2 결함 관리

1 개념

테스트 수행 결함의 재발 방지와 유사 결함 발견 시 처리 시가나 단축을 위해 결함을 추적하고 관리하는 활동

2 결함 추적 관리 활동

  • 단위 테스트
  • 통합 테스트: 설계 문서 결함 발견 시
  • 시스템 테스트: 요구사항 명세서 결함 발견 시
  • 운영 테스트: 요구사항 명세서 결함 발견 시

3 프로세스

  • 에러 발견
  • 에러 등록
  • 에러 분석
  • 결함 확정
  • 결함 할당
  • 결함 조치
  • 결함 조치 검토 및 승인

3 결함 추이 분석

1 개념

테스트 결함의 관리 측정 지표 분석, 예상 결함 추정

2 유형

  • 결함 분포 분석: 각 모듈의 특정 속성에 대한 결함 수
  • 결함 추세 분석: 테스트 진행 시간의 흐름에 따른 결함의 수
  • 결함 에이징 분석: 등록된 겨함에 대해 특정한 결함 상태의 지속 시간

3 애플리케이션 개선 조치사항 작성

1 테스트 커버리지

1 개념

테스트 범위를 측정하는 테스트 품질 측정 기준

2 유형

  • 기능 기반 커버리지
  • 라인 커버리지: 단위 테스트 척도
  • 코드 커버리지
    • 구문 커버리지
    • 결정 커버리지
    • 조건 커버리지
    • 조건/결정 커버리지
    • 변경 조건/결정 커버리지
    • 다중 조건 커버리지

2 결함의 식별 및 관리

1 단계별 결함 유입의 종류

  • 기획 시 유입되는 결함
  • 설계 시 유입되는 결함
  • 코딩 시 유입되는 결함
  • 테스트 부족으로 유입되는 결함

2 결함 심각도별 분류

  • 치명적 결함: 기능이나 제품의 테스트를 완전히 방해
  • 주요 결함: 기능이 기대와 많이 다르게 동작
  • 보통 결함: 프로그램이 특정 기준을 충족하지 못하거나, 일부 기능 부자연스러운 결함
  • 경미한 결함: 불편함 유발
  • 단순 결함: 사소한 버그

3 결함 우선순위

  • 결정적
  • 높음
  • 보통
  • 낮음

4 결함 관리 항목

  • 결함 내용
  • 결함 ID
  • 결함 유형
  • 발견일
  • 심각도
  • 우선순위
  • 시정 조치 예정일
  • 수정 담당자
  • 재 테스트 결과
  • 종료일

3 애플리케이션 성능 개선

1 애플리케이션 성능 분석

1애플리케이션 성능 점검 개요

1 애플리케이션 성능 측정 지표

  • 처리량
  • 응답 시간
  • 경과 시간
  • 자원 사용률

2 유형별 성능 분석 도구

  • 성능/부하/스트레스 점검 도구
    • JMeter
    • LoadUI
    • OpenSTA
  • 모니터링 도구
    • Scouter
    • Zabbix

2 애플리케이션 성능 저하 원인

  • 데이터베이스 관련 성능 저하 원인
    • 데이터베이스 락
    • 불필요한 데이터베이스 패치
    • 연결 누수
    • 부적절한 커넥션 풀 크기
    • 확정 관련
  • 내부 로직으로 인하나 성능 저하 원인
    • 웹 애플리케이션의 인터넷 접속 불량
    • 특정 파일의 업로드, 다운로드로 인한 성능 저하
    • 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
  • 외부 호출로 인한 성능 저하 원인: 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나, 타임아웃이 일어나는 경우
  • 잘못된 환경 설정으로 인한 성능 저하: Heap Memory Full
  • 네트워크 장비로 인한 성능 저하

3 애플리케이션 성능 테스트 프로세스

  1. 애플리케이션 성능 테스트 케이스 작성
  2. 애플리케이션 성능 테스트 수행
    1. 성능 테스트 도구 설치
    2. 테스트 환경 설정
    3. 시나리오 생성
    4. 성능 테스트 실행 및 모니터링
  3. 성능 테스트 결과 분석

2 애플리케이션 성능 개선

1 소스코드 최적화 이해

1 나쁜 코드

  • 오염
  • 문서 부족
  • 의미 없는 이름
  • 높은 결함도
  • 아키텍처 침식

2 클린 코드

높은 가독성, 단순, 의존성 중복 최소화

  • 의미 있는 이름
  • 간결하고 명확한 주석
  • 보기 좋은 배치
  • 작은 함수
  • 읽기 쉬운 제어 흐름
  • 오류 처리

2 소스코드 품질 분석

1 개념

2 도구

  • 정적 분석 도구
    • pmd
    • cppcheck
    • SonarQube
    • checkstyle
  • 동적 분석 도구
    • Avalanche
    • Valgrind
  • 코드 복잡도 도구
    • ccm
    • cobertura

3 애플리케이션 성능 개선 방안

  • 소스코드 최적화 기법 적용
  • 아키텍처 조정을 통한 성능 개선
  • 프로그램 호출 순서 조정 적용
  • 소스코드 품질분석 도구 활용
    • 메모리 사용 최소화
    • 입출력 발생 최소화
    • 로거 사용
  • 애플리케이션 성능 현황 관리
반응형
반응형

1 UI 요구사항 확인

1 UI 요구사항 확인

1 UI 개념

사람이 접하게 되는 화면

* UX는 UI 포함

2 UI 유형

  • CLI: 정적 텍스트 기반 인터페이스
  • GUI: 그래픽 반응 기반 인터페이스
  • NUI: 직관적 사용자 반응 기반 인터페이스
  • OUI: 유기적 상호작용 기반 인터페이스

3 UI 분야

  • 물리적 제어 분야: 하드웨어 기반
  • 디자인적 분야: 전체적인 구성
  • 기능적 분야: 사용자 편의성 고려

4 UI 설계 원칙

  • 직관성
  • 유효성
  • 학습성
  • 유연성

5 UI 설계 지침

  • 사용자 중심
  • 일관성
  • 단순성
  • 결과 예측 가능
  • 가시성
  • 표준화
  • 접근성
  • 명확성
  • 오류 발생 해결

6 UI 요구사항

1 개요

사용자가 정보시스템을 구축하여 얻고자 하는 최종 목적

2 구분

  • 기능적 요구사항: 시스템의 입출력, 데이터, 연산에 관한 요구사항
  • 비기능적 요구사항: 품질, 시스템 환경, 프로젝트 계획에 관한 요구사항

3 확인

UI 표준 지침에 따른 요구사항 확인

2 UI 표준

1 개념

디자인 철학과 원칙 기반 하에 전체 시스템에 공통적으로 적용되는 화면에 대한 규약

2 구성

  • 전체적인 UX 원칙: 사용자 관점
  • 정책 및 철학
  • UI 스타일 가이드: 환경 및 레이아웃
  • UI 패턴 모델 정의: CRUD 방식 기반
  • UI 표준 수립을 위한 조직 구성

3 고려사항

  • 사용자 편의
  • 많은 업무 케이스 포함
  • 다양한 사용 상황 대처
  • 충분한 가이드와 활용 수단 제공
  • 관리 조직 수반

4 UI 스타일 가이드 구성

  • UI 구동 환경 정의
    • OS
    • 웹 브라우저
    • 모니터 해상도
    • 프레임세트
  • 레이아웃 정의
    • 화면 구조 정의
    • 상단 메뉴 구성 정의
    • 좌측 메뉴 구성 정의
    • 내용 구성 정의
    • 하단 메뉴 구성 정의
    • 사용자 환경에 맞춰 페이지 폭 정의
  • 메뉴 네비게이션 정의
  • 공통표준화면 정의
  • 기능 정의
  • 구성 요소 정의
    • 그리드
    • 버튼/컨트롤 타입
    • Page 요소
    • 팝업 요소
    • Alert 요소

5 UI 패턴 모델 정의

  • 업무 화면 클라이언트 정의
  • 서버 컨트롤러 정의
  • 서버 메시지 및 예외 처리 정의
  • 클라이언트-서버 간 데이터 변환 정의
  • 기업 포털 연계 정의
  • 보고서 정의
  • 외부 컴포넌트 연계 정의

6 UI 표준 수립을 위한 조직 구성

  • 조직 구성 및 역할 정의
  • 커뮤니케이션 방안 수립

3 UI 지침

1 개념

UI 표준에 따라 사용자 인터페이스 설계, 개발 시 지켜야할 가이드라인

  1. 목표 정의
  2. 프로젝트 계획
  3. 요구사항 정의
  4. 설계 및 구현
  5. 테스트
  6. 배포 및 관리

2 환경 분석

  • 사용자 트렌드 분석
  • 기능 및 설계 분석

3 UI 개발 목표 및 범위

  • 3C 분석: 고객, 자사, 경쟁사
  • SWOT 분석: 각점, 약점, 기회, 위협
  • 시나리오 플래닝
  • 사용성 테스트
  • 워크숍

4 사용자 분석 및 니즈 조사

  • 리서치 대상 선정 및 내용 설계
  • 리서치 진행
  • 리서치 결과 정리

5 사용자 요구사항 도출

  • 페르소나 정의: 가상의 사용자
  • 콘셉트 모델 정의
  • 사용자 요구사항 정의
  • UI 컨셉션

6 UI 상세 설계

UI 시나리오 문서 작성

7 UI 화면 디자인

UI 가이드 문서 작성

8 UI 시연을 통한 사용성 검토/검증

지속적인 UI 사용에 대한 평가와 UI 디자인 평가를 통한 개선사항 반영

9 테스트, 배포 및 관리

사용자 중심 소프트웨어 매뉴얼 작성

4 스토리보드

1 개념

  • 와이어 프레임: 화면 단위의 레이아웃 설계
  • 스토리보드: 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물
  • 프로토타입: 정적인 화면으로 설계된 와이어 프레임 / 스토리보드에 동적 효과를 적용하여 시뮬레이션할 수 있는 모형

2 절차

  1. 전체 개요 작성
  2. 서비스 흐름 작성
  3. 스타일 확정
  4. 메뉴얼 화면 설계도 작성 및 상세설명
  5. 추가 관련 정보 작성

3 유의사항

  • 일관된 기호
  • 공통 영역 정의
  • 영역별 세부 설계
  • 버전 업 관리

5 UI 프로토타입 제작 및 검토

1 프로토타입

1 개념

전체적인 기능을 간략한 형태로 구현한 시제품

2 의의

  • 추후 발생 가능한 오류를 사전에 방지
  • 비용 절감

3 유형

  • 아날로그: 펜을 활용한 스케치, 적은 비용
  • 디지털: 프로토타이핑 도구를 활용, 재사용

2 UI 프로토타입 고려 사항

  • 계획 시 고려사항
    • 목표 확인
    • 환경 확인
    • 일정 확인
    • 범위 확인
    • 인원 확인
    • 아키텍처 검증 확인
    • 이슈 및 해결
    • 가이드 확정
    • 개발 생산성 확인
    • 결과 시연
  • 작성 시 고려사항
    • 계획 작성
    • 범위 확인
    • 목표 확인
    • 기간 및 비용 확인
    • 산출물 확인
    • 유의사항 확인

3 제작 및 검토 프로세스

  1. 소프트웨어 아키텍처 설계 원리 확인
    • UI 표준 및 지침에 따라 소프트웨어 아키텍처 설계 원리 확인
    • 프로토타입 방식 결정
  2. 프로토타입 유스케이스 작성
    • UI 설계 원리를 바탕으로 프로토타입 유스케이스 작성
  3. UI 요구사항을 반영한 프로토타입 제작
    • 실직적인 제작에 앞서 UI 프로토타입 제작 단계 숙지
    • 프로토타이핑 초기 작성
    • 프로토타이핑 상세 수행
  4. UI 적정성 검토
    • 실행 차를 줄이기 위한 UI 적정성 확인
    • 평가 차를 줄이기 위한 UI 적정성 확인

2 UI 설계

1 UI 흐름 설계

1 UI 설계서 구성

  • UI 설계서 표지
  • UI 설계서 개정 이력
  • UI 요구사항 정의
  • 시스템 구조
  • 사이트 맵
  • 프로세스 정의
  • 화면 설계

2 UI 설계 원리

  • 실행 차를 줄이기 위한 UI 설계
    • 사용 의도 파악
    • 행위 순서 규정
    • 행위의 순서대로 실행
  • 평가 차를 줄이기 위한 UI 설계
    • 수행한 키 조작 결과를 사용자가 빠르게 지각하도록 유도
    • 키 조작으로 변화된 시스템의 상태를 사용자가 쉽게 인지하도록 유도
    • 사용자가 가진 원래 의도와 시스템 결고 간의 유사 정도를 사용자가 쉽게 파악하도록 유도

3 UI 흐름 설계 수행 절차

  1. UI 설계안의 적정성 확인
    • 실행 차를 줄이기 위한 UI 설계 원리
      • 사용 의도 파악
      • 행위 순서 규정
      • 행위의 순서대로 실행
    • 평가 차를 줄이기 위한 UI 설계 원리
      • 수행한 키 조작 결과를 사용자가 빠르게 지각하도록 유도
      • 키 조작으로 변화된 시스템의 상태를 사용자가 쉽게 인지하도록 유도
      • 사용자가 가진 원래 의도와 시스템 결과 간의 유사 정도를 사용자가 쉽게 파악하도록 유도
  2. 화면과 폼의 흐름 설계
    • 화면에 표현되어야 할 기능 및 비기능적 요구사항 검토
    • 화면의 입력 요소 및 유스케이스를 통한 UI 요구사항 확인
    • 유스케이스 설계
    • 기능 및 양식 확인

2 UI 상세 설계

1 UI 상세설계 절차

  1. UI 요구사항 최종 확인
  2. UI 구조 설계
  3. 사용자 기반 메뉴 구조 설계
  4. 화면 설계
  5. 하위 시스템 단위의 내외부 상세 화면과 폼 설계

2 UI 검토 및 보안

  • UI 검토 수행
  • UI 검토 보완
  • 사용성 검토 및 검증 수행

3 UI 설계 도구

1 개념

UI 설계 지원 도구

2 UI 개발 단계별 활용 가능한 설계 도구

  • 분석: UI 패턴, UI 모델링
  • 설계: UI 설계
  • 구현: 프로토타이핑 툴

3 유형

  • 화면 설계 도구
    • 파워 목업
    • 발사믹 목업
    • 카카오 오븐
  • 프로토타이핑 도구
    • UX핀
    • 액슈어
    • 네이버 프로토나우
  • UI 디자인 도구
    • 스케치
    • 어도비 XD
  • UI 디자인 산출물로 작업하는 프로토타이핑 도구
    • 인비전
    • 픽사에이트
    • 프레이머
반응형
반응형

1 인터페이스 설계 확인

1 외부내부 모듈 간 공통 기능 및 데이터 인터페이스 확인

1 인터페이스 설계서

1 개념

이 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 정보가 정의된 문서

2 종류

  • 정적동적 모델을 통한 인터페이스 설계서
    • 다이어그램을 활용한 요구 조건 확인
    • 트랜잭션 확인
  • 데이터 명세를 통한 인터페이스 설계서
    • 인터페이스 서비스에 대한 상세 명세

2 내부외부 모듈 간 공통 기능 및 인터페이스 확인 방안

1 인터페이스 설계서의 내부외부 모듈의 기능 확인

  • 인터페이스 정의서를 통한 기능 확인
  • 정적동적 모형을 통한 기능 확인

2 공통적으로 제공되는 기능과 데이터의 인터페이스 확인

  • 인터페이스 설계서를 통한 공통 기능 확인
  • 인터페이스 설계서를 통한 데이터 인터페이스 확인

2 외부내부 모듈 연계를 위한 인터페이스 기능 식별

1 외부내부 모듈 연계 방법

1 EAI 방식

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 통합 가능하도록 해주는 솔루션

비즈니스 간 통합 및 연계성 증대 -> 효율성 및 확장성 증가

  • 포인트 투 포인트
    • 1:1 단순 통합 방법
    • 개발자 간의 커뮤니케이션을 통해서 통합 가능
  • 허브 앤 스포크
    • 중앙 집중식 방식
    • 허브 장애 시 전체 장애 발생
  • 메시지 버스
    • 미들웨어 통합 방식
    • 뛰어난 확장성과 대용량 데이터 처리
  • 하이브리드
    • 그룹 내는 허브 앤 스포크 방식 사용, 그룹 간에는 메시지 버스 방식 사용

2 ESB 방식

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처

버스를 중심으로 각 프로토콜이 호환할 수 있도록 애플리케이션 통합을 느슨한 결합 방식으로 지원

3 EAI vs ESB

구분 EAI ESB
수행 목적 기업 내부의 이기종 응용 모듈 간 통합 기업 간의 서비스 교환을 위해 표준 API로 통합
토폴로지 포인트 투 포인트, 허브 앤 스포크, 메시지 버스, 하이브리드 ESB의 분산형 토폴로지 구성
핵심 기술 어댑터, 브로커, 메시지 큐 웹 서비스, 지능형 라우터, 포맷 변환, 개방형 표준
통합 형태 애플리케이션 간의 단단한 통합 서비스 간의 느슨한 통합
적용 영역 기업 내부망 기업 외부 채널망

2 외부내부 모듈 연계를 위한 인터페이스 기능 식별 절차

  1. 외부내부 모듈 간 연계된 기능 식별
  2. 연계된 기능에 따른 인터페이스 기능 식별
    1. 외부 모듈과 연계된 기능을 통한 인터페이스 기능 식별
    2. 내부 모듈과 연계된 기능을 통한 인터페이스 기능 식별
    3. 외부 및 내부 모듈과 연계된 기능을 통한 인터페이스 기능 식별

3 외부내부 모듈 간 인터페이스 데이터 표준 확인

1 인터페이스 데이터 표준 확인

상호 연계하고자 하는 시스템 간 인터페이스가 되어야 할 범위의 데이터 형식과 표준 정의

2 송수신 시스템 간 인터페이스 데이터 표준 확인 절차

  1. 식별된 데이터 인터페이스를 통해 인터페이스 데이터 표준 확인
  2. 인터페이스 데이터 항목 식별
  3. 데이터 표준 최종 확인

2 인터페이스 기능 구현

1 인터페이스 기능 구현 정의

  1. 모듈 간 세부 설계서 확인: 컴포넌트 명세서, 인터페이스 명세서
  2. 일관되고 정형화된 인터페이스 기능 정의
  3. 정의된 인터페이스 기능 정형화

2 인터페이스 기능 구현

1 사전에 정의된 기능에 대한 구체적 분석

2 인터페이스 구현

  • 데이터 통신을 사용하는 인터페이스 구현
    • 인터페이스 객체 생성 구현
    • 인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환받도록 구현
  • 인터페이스 객체를 사용하는 인터페이스 구현
    • 송신 시스템의 인터페이스 테이블
    • 수신 시스템의 인터페이스 테이블

3 인터페이스 예외 처리 방안

1 데이터 통신을 사용하는 인터페이스에서 예외 처리 방법

  • 송신 측에서 예외 처리: AJAX 호출 후 반환 값을 받아 어떻게 처리할 지를 호출하는 부분에 사전 정의
  • 수신 측에서 예외 처리: 수신 측에서 받은 JSON 객체를 예외 처리하고 송신 측에 전달

2 인터페이스 객체를 사용하는 인터페이스에서 예외 처리 방법

  • 송신 인터페이스 테이블에서 예외 처리 방법
  • 수신 인터페이스 테이블에서 예외 처리 방법

4 인터페이스 보안 기능 적용

1 인터페이스 보안 취약점

  • 데이터 통신 시 데이터 탈취 위협: 스피닝
  • 데이터 통신 시 데이터 위/변조 위협

2 인터페이스 보안 구현 방안

  • 시큐어 코딩 가이드 적용
  • 데이터베이스 보안 적용
    • 알고리즘: 대칭 키 암호화, 비대칭 키 암호화, 해시 암호화
    • 기법: API 방식 - 애플리케이션 레벨, Plug-In 방식 - DB 레벨, Hybrid 방식
  • 중요 인터페이스 데이터의 암호화 전송: IPSec, SSL/TLS 활용

3 인터페이스 보안 기능 적용 절차

  1. 인터페이스 각 구간의 보안 취약점 분석
  2. 분석된 보안 취약점을 근거로 인터페이스 보안 기능 적용

3 인터페이스 구현 검증

1 인터페이스 구현 검증

1 도구

  • 단위 테스트: 인터페이스 세부 기능을 기능 단위로 테스트
  • 통합 테스트: 전체 인터페이스 흐름을 확인할 수 있는 시나리오를 통합 테스트

2 도구 종류

  • xUnit
  • STAF
  • FitNesse
  • Selenium
  • watir

3 필요 설계 산출물

인터페이스 설계 산출물 분석

4 절차

  1. 인터페이스 명세서를 통한 구현 검증에 필요한 요건 분석
  2. 구현 검증에 필요한 감시 및 검증 도구 준비
  3. 이터페이스 구현 검증 수행

2 인터페이스 오류 처리 확인 및 보고서 작성

  • 사용자 화면에서 오류를 인지하도록 구현
  • 인터페이스 오류 로그 생성
  • 인터페이스 관련 테이블에 오류 사항 기록
반응형
반응형

1 개발환경 구축

1 개념

개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해 필요

개발 도구와 서버 선정, 개발 도구의 사용 편의성과 성능, 라이선스 확인

2 분류

  • 구현 도구: 코드 작성과 디버깅, 수정을 지원하는 도구
    • Eclipse, IntelliJ, Sprint Tool Suite, NetBeans, Visual Studio
  • 테스트 도구: 코드의 기능 검증과 전체 품질을 높이기 위해 사용하는 도구
    • xUnit, PMD, Findbugs, Cppcheck, Sonar
  • 형상관리 도구: 버전 관리를 위한 도구
    • CVS, SVN, Git
  • 빌드 도구: 작성한 코드의 빌드 및 배포를 수행하는 도구, 의존성 관리 지원
    • Maven, Gradle

3 구성요소

1 하드웨어

웹 클라이언트 --요청--> 웹 서버 --처리 위임--> 웹 애플리케이션 서버 --결과 반환--> 웹 서버 --응답--> 웹 클라이언트

  • 서버 하드웨어 개발 환경: 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버로 구분
    • 웹 서버: 정적 콘텐츠(CSS, Javascript, Image) 처리
      • Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx
    • 웹 애플리케이션 서버: 동적 콘텐츠(Servlet, JSP)를
      • Tomcat, Weblogic, Jeus, Resin
    • 데이터베이스 서버: 데이터의 수집, 저장 용도로 사용
      • MySql, Oracle, MS-SQL, DB2
    • 파일 서버: 물리 저장장치를 활용한 서버
      • HDD, SSD
  • 클라이언트 하드웨어 개발 환경
    • 클라이언트 프로그램: 사용자와 커뮤니케이션
    • 웹 브라우저: 웹 사이트
    • 모바일 앱: 모바일 디바이스에 설치되어 활용되는 애플리케이션
    • 모바일 웹: 모바일에 최적화되어 제공되는 웹사이트

2 소프트웨어

  • 운영체제: 서버의 하드웨어를 사용자 과넞ㅁ에서 편리하고 유용하게 사용하기 위한 소프트웨어
  • 미들웨어: 컴퓨터 간 연결을 쉽고 안전하게 할 수 있도록 관리하는 소프트웨어
  • DBMS: 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성하고, 관리하는 소프트웨어

3 형상 관리

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리

절차

  1. 형상 식별: 형상 관리 대상 정의 및 식별
  2. 형상 통제: 통제 지원, 베이스라인 관리
  3. 형상 감사: 베이스라인 무결성 평가
  4. 형상 기록: 보고서 작성

목적

  • 제품의 무결성과 변경에 대한 추적성 확보
  • 프로젝트 변경사항 처리 메커니즘 제공

4 절차

  1. 통합 개발환경 설치
  2. 형상 관리 도구 설치
  3. 빌드 도구 설치

2 공통 모듈 구현

1 공통 모듈 구현

1 개념

기능을 분할하고 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법

2 모듈

1 개념

독립된 하나의 스프트웨어 또는 하드웨어 단위

2 특징

  • 독립성
  • 재사용성
  • 결합도 감소, 응집도 증가

3 모듈화

모듈로 분해하는 설계 및 구현 기법

  • 루틴: 특정 동작을 수행
  • 메인 루틴: 프로그램의 주요 부분
  • 서브 루틴: 메인 루틴에 의해 필요할 때마다 호출되는 루틴

3 응집도

1 개념

모듈의 독립성, 하나의 모듈은 하나의 기능 수행

2 유형

  1. 우연적 응집도
  2. 논리적 응집도
  3. 시간적 응집도
  4. 절차적 응집도
  5. 통신적 응집도
  6. 순차적 응집도
  7. 기능적 응집도

4 결합도

1 개념

외부 모듈과의 연관도

2 유형

  1. 내용 결합도
  2. 공통 결합도
  3. 외부 결합도
  4. 제어 결합도
  5. 스템프 결합도
  6. 자료 결합도

5 절차

  1. DTO/VO
  2. SQL
  3. DAO
  4. Service
  5. Controller
  6. 화면 구현
  • DTO(Data Transfer Object): 프로세스 사이에서 데이터를 전송하는 객체
  • VO(Value Object): 고정 클래스 소유
  • DAO(Data Access Object): 특정 타입의 데이터베이스에 추상 인터페이스 제공

6 팬인 및 팬아웃

1 개념

모듈을 계층적으로 분석하기 위해 활용

구분 팬인 팬아웃
개념 어떤 모듈에서 호출하는 모듈 수 어떤 모듈에서 호출되는 모듈 수
모듈 숫자 계산 모듈이 들어오면 팬인 모듈이 나가면 팬아웃
고려사항 팬인 증가 -> 재사용 증가, 관리 비용 및 테스트 비용 증가, 단일 장애 발생 가능 팬아웃 증가 -> 불필요한 모듈 호출, 단순화 여부 검토 필요

2 공통 모듈 테스트

1 개념

통합 개발 환경을 활용하여 공통 모듈에 대한 디버깅 수행

화이트 박스 기법 활용

JUnit 활용

2 종류

  • 화이트박스 테스트: 응용 프로그램의 내부 구조와 동작 검사
  • 메서드 기반 테스트: 외부에 공개된 메서드 기반 테스트
  • 화면 기반 테스트: 화면단위로 단위 모듈을 개발 하여 테스트
  • 테스트 드라이버: 하위 모듈은 있지만 상위 모듈이 없는 경우 사용
  • 테스트 스텁: 상위 모듈은 있지만 하위 모듈이 없는 경우 사용

3 구현

  1. JUnit 생성
  2. JUnit 코드 작성
  3. JUnit 실행
  4. JUnit 결과 확인

주요 어노테이션

  • @Test: 테스트 메서드 선언
  • @Before: @Test 실행 전 실행되는 코드
  • @After: @Test 실행 후 실행되는 코드
  • @BeforeClass: @Test 메서드보다 먼저 한 번 수행되어야할 경우
  • @AfterClass: 마지막에 수행되는 경우
  • @Ignore: 테스트에서 제외할 메서드

assert 메서드

  • assertEquals(a, b); - 같은 값
  • assertEquals(a, b, c); - 오차 범위
  • assertSame(a, b); - 같은 객체
  • assertTure(a);
  • assertNotNull(a);
  • assertArrayEquals(a, b);

3 서버 프로그램 구현

1 개념

서비스 제공에 필요한 업무 프로그램 구현

2 절차

  1. DTO, VO 구현: 화면에서 전달받은 회원정보로 데이터베이스에 저장하는 객체 구현
  2. SQL문 구현
    1. VO에서 정의한 객체 정보에 맞춰 정보가 저장될 테이블 정보 생성
    2. 회원 이름 검색 및 입력을 위한 SQL문 작성
  3. DAO 구현
  4. 서비스 클래스 구현
  5. 컨트롤러 클래스 구현
  6. 입출력 검증 로직 구현: 회원가입 성공/실패 시 다른 메시지 출력

4 배치 프로그램 구현

1 배치 프로그램

1 개념

사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 일괄 처리

2 필수 요소

  • 이벤트 배치: 사전에 정의해 둔 조건 충족 시 자동으로 실행
  • 온디맨드 배치: 사용자의 명시적 요구가 있을 때마다 실행
  • 정기 배치: 정해진 시점에 정기적으로 실행

3 설계

  1. 배치 프로그램 관리대장 확인: 구현해야 할 배치 프로그램 기능 확인
  2. 배치 설계서 확인: 프로그램 관리 대장의 ID와 일치하는 배치 설계서 확인

2 배치 스케줄러

1 개념

일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

2 종류

  • 스프링 배치: 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리 스케줄러
  • 쿼츠 스케줄러: 작업과 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러

3 Corn 표현식

배치 수행 시간 설정

순서

  1. 시간
  2. 요일
  3. 연도(생략 가능)

특수 문자 의미

  • *: 모든 수
  • ?: 해당 항목 미사용
  • -: 기간 설정
  • ,: 특정 기간 설정
  • /: 시작 시간과 반복 간격 설정
  • L: 마지막 기간에 동작
  • W: 가장 가까운 평일에 동작
  • #: 주, 요일 설정
반응형

+ Recent posts