반응형

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

1 테스트 케이스

1 개념

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

 

2 작성 절차

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

 

3 테스트 오라클

1 개념

테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법

 

2 종류

  • 참 오라클: 모든 입력값에 대하여 기대하는 결과 생성
  • 샘플링 오라클: 특정 입력값에 대해서만 기대하는 결과 제공
  • 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값들에 대해서는 추정하여 처리
  • 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 일관성 확인

 

2 테스트 레벨

1 개념

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

각각의 테스트 레벨은 독립적

 

2 종류

  • 단위 테스트
  • 통합 테스트
  • 시스템 테스트
  • 인수 테스트

 

3 테스트 시나리오

1 개념

테스트 케이스 집합

 

2 작성 시 유의점

  • 테스트 시나리오 분리 작성
  • 고객의 요구사항과 설계 문서 등을 토대로 테스트 시나리오 작성

 

4 테스트 지식 체계

1 소프트웨어 테스트 종류

  • 블랙박스 테스트
  • 화이트 박스 테스트
  • 경험 기반 테스트

 

2 소프트웨어 테스트 원리

  • 테스팅은 결함이 존재함을 밝히는 것
  • 완벽한 테스팅은 불가능
  • 개발 초기에 테스팅 시작
  • 결함 집중
  • 살충제 패러독스
  • 테스팅은 정황에 의존적
  • 오류-부재의 궤변

 


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

1 결함 관리 도구

1 개념

각 단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구

 

2 결함 관리 프로세스

  1. 에러 발견
  2. 에러 등록
  3. 에러 분석
  4. 결함 확정
  5. 결함 할당
  6. 결함 조치
  7. 결함 조치 검토 및 승인

 

3 결함 추이 분석

1 개념

테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 결함을 추정하는 작업

 

2 유형

  • 결함 분포 분석
  • 결함 추세 분석
  • 결함 에이징 분석

 

4 테스트 커버리지

1 개념

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

 

2 유형

  • 기능 기반 커버리지
  • 라인 커버리지
  • 코드 커버리지

 

3 종류

  • 구문 커버리지
  • 결정 커버리지
  • 조건 커버리지
  • 변경 조건/결정 커버리지

 

5 결함 식별

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

 

단계별 결함 유입별 분류

  • 치명적 결함
  • 주요 결함
  • 보통 결함
  • 경미한 결함
  • 단순 결함

 

결함 심각도별 분류

  • 치명적 결함
  • 주요 결함
  • 보통 결함
  • 경미한 결함
  • 단순 결함

 

결함 우선순위

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

 

6 결함 관리 항목

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

 

2 테스트 자동화 도구

1 개념

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법

 

2 장단점

장점

  • 반복 작업 자동화
  • 사용자 요구 기능의 일관성 검증
  • 객관적인 평가 기준
  • 테스트 결과의 다양한 표시 형태 제공
  • 정밀한 테스트

 

단점

  • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습
  • 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력 필요
  • 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자 필요

 

3 유형

정적 분석 도구

애플리케이션을 실행하지 않고 분석하는 방법

소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용

 

테스트 실행 도구

테스트를 위해 작성된 스크립트를 실행

  • 데이터 주도 접근 방식
  • 키워드 주도 접근 방식

 

성능 테스트 도구

애플리케이션의 가상의 사용자를 생성하여 테스트

 

테스트 통제 도구

  • 테스트 관리 도구: 테스트 계획 및 관리
  • 형상 관리 도구: 테스트 수행에 필요한 데이터와 도구를 관리
  • 결함 추적 / 관리 도구: 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원

 

테스트 장치

개념

애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분

 

구성요소
  • 테스트 드라이버: 상향식 테스트에 필요
  • 테스트 스텁: 하향식 테스트에 필요
  • 테스트 슈트: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 테스트 케이스: 입려값, 실행 조건, 기대 결과 등의 집합
  • 테스트 스크립트: 자동화된 테스트 실행 절차
  • 목 오브젝트: 사용자의 행위를 조건부로 사전에 입력해 두면, 상황에 예정된 행위를 수행

 

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

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

 


3 통합 테스트

1 개념

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

단위 테스트가 끝난 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인

 

2 수행 방법의 분류

테스트 방안빅뱅상향식하향식
테스트 수행 방법모든 모듈을 동시에 통합 후 테스트 수행최하위 모듈부터 점진적으로 테스트최상위 모듈부터 통합하면서 테스트
드라이버 / 스텁드라이버 / 스텁 없이 실제 모듈로 테스트테스트 드라이버 필요테스트 스텁 필요
장점단시간 테스트 가능, 작은 시스템에 유리장애 위치 파악 쉬움, 모든 모듈 개발 시간 필요 X장애 위치 파악 쉬움, 중요 모듈의 선테스트 가능, 이른 프로토 타입
단점장애 위치 파악 어려움, 모든 모듈이 개발되어야 가능중요 모듈이 마지막에 테스트, 이른 프로토타입 어려움많은 스텁 가능, 하위 모듈의 불충분한 테스트

* 스텁: 모듈 및 하위 컴포넌트를 대신하여 더미 모듈

* 드라이버: 상위 모듈에서 데이터 입출력을 확인하기 위한 더미 모듈

 


3 애플리케이션 성능 개선

1 알고리즘

1 개념

자료 구조와 함께 프로그램을 구성하는 문제에 대한 답을 찾는 해법

 

2 특성

  • 입력
  • 출력
  • 명확성
  • 유한성
  • 유효성

 

3 기법

  • 분할 정복
  • 동적계획법
  • 탐용법
  • 백트래킹

 

4 시간 복잡도에 따른 알고리즘 분류

  • O(1): 해시 함수
  • O(logn): 이진 탐색
  • O(n): 순차 탐색
  • O(nlogn): 퀵 정렬, 병합 정렬
  • O(n2): 버블 정렬, 삽입 정렬, 선택 정렬

 

2 소스 코드 품질 분석

1 개념

 

2 도구 유형

  • 정적 분석 도구
  • 동적 분석 도구: 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석

 

3 도구

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

 

3 코드 최적화

1 개념

클린 코드를 작성하는 것

 

2 클린 코드

1 개념

잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드

 

2 특징

  • 중복 코드 제거
  • 가독성
  • 쉬운 버그 찾기, 빠른 프로그래밍 속도

 

3 유형

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

 

3 베드 코드

1. 개념

  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
  • 스파게티 코드, 이름 정의를 알 수 없는 코드, 동일한 처리 로직이 중복되게 작성된 코드

 

2 유형

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

1 제품 소프트웨어 패키징

1 애플리케이션 패키징

1 개념

개발이 완료된 소프트웨어를 고객에게 전달하기 위한 형태로 제작하고, 매뉴얼을 작성하는 활동

2 특징

사용자 중심, 신규/변경 이력 확인

3 고려사항

  • 사용자 시스템 환경 정의
  • UI 제공
  • 관리 서비스 형태로 제공
  • 패키징의 변경 및 개선 관리 고려

4 프로세스

  1. 기능 식별
  2. 모듈화
  3. 빌드 진행
  4. 사용자 환경 분석
  5. 패키징 적용 시험
  6. 패키징 변경 개선

5 릴리즈 노트

1 개념

고객과 잘 정리된 배포 정보를 공유하는 문서

2 작성 항목

  • 헤더
  • 개요
  • 목적
  • 이슈 요약
  • 재현 항목
  • 수정/개선 내용
  • 사용자 영향도
  • 소프트웨어 지원 영향도
  • 노트
  • 면책 조항
  • 연락 정보

3 작성 프로세스

  1. 모듈 식별
  2. 릴리즈 정보 확인
  3. 릴리즈 노트 개요 작성
  4. 영향도 체크
  5. 정식 릴리즈 노트 작성
  6. 추가 개선 항목 식별

2 애플리케이션 배포 도구

1 개념

배포를 위한 패키징 시 디지털 콘텐츠의 지적 재산권을 보호/관리

2 구성 요소

  • 암호화
  • 키 관리
  • 식별 기술
  • 저작권 표현
  • 암호화 파일 생성
  • 정책 관리
  • 크랙 방지
  • 인증

3 세부 기술

  • 공개키 기반 구조
  • 대칭 및 비대칭 암호화
  • 전자서명
  • DIO
  • URI
  • XrML
  • MPEG-21
  • XML
  • CMS
  • 코드 난독화
  • Secure DB
  • SSO

4 배포 프로세스

  1. 빌드 내용 식별
  2. 패키징 도구 식별
  3. DRM 흐름을 확인하여 패키징 수행
  4. 패키징 도구 설치
  5. 배포 작업
  6. 정상 배포 확인

5 고려사항

  • 암호화/보안
  • 이기종 연동
  • 복잡성 및 비효율성 문제
  • 최적합 암호화 알고리즘 적용

3 애플리케이션 모니터링 도구

1 개념

제품 소프트웨어를 사용자 환경에 설치한 후 모니터링을 통해 제품을 최적화하기 위한 도구

2 기능

  • 애플리케이션 변경 관리
  • 애플리케이션 성능 관리
  • 애플리케이션 정적 분석
  • 애플리케이션 동적 분석

3 효과

  • 서비스 가용성
  • 서비스 성능
  • 장애 인지/리소스 측정
  • 근본 원인 분석

4 DRM

1 개념

허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술

2 특징

  • 거래 투명성
  • 사용규칙 제공
  • 자유로운 상거래 제공

3 구성

콘텐츠 제공자

  • DRM 콘텐츠
  • 패키저

클리어링 하우스

  • 콘텐츠 정책
  • 콘텐츠 라이선스
  • 콘텐츠 관리정보
  • 콘텐츠 사용정보

콘텐츠 소비자

  • DRM 컨트롤러
  • 보안 컨테이너

4 기술요소

  • 접속 제어
  • 사용 제어
  • 내용 제어

5 모바일 DRM

무선 디지털 콘텐츠 유통시장에서 콘텐츠 및 지적 재산권을 보호하는 기술

스마트폰 OS에 의존적

기능

  • 콘텐츠 다운로드
  • 콘텐츠 사용제어
  • 콘텐츠 권리 개체 관리

2 제품 소프트웨어 매뉴얼 작성

1 제품 소프트웨어 매뉴얼

1 개념

제품 소프트웨어 개발 단계부터 적용한 기준 등을 문서로 기록한 것

설치 매뉴얼과 사용자 매뉴얼로 구성

2 제품 소프트웨어 설치 매뉴얼

1 개념

사용자가 제품을 구매한 후 최초 설치 시 참조하는 매뉴얼

2 기본 작성 항목

  • 목차 및 개요
  • 문서 이력 정보
  • 설치 매뉴얼 주석
  • 설치 도구의 구성
  • 설치 위치 지정

3 제품 소프트웨어 설치 매뉴얼 구성요소

  • 제품 소프트웨어 개요
  • 설치 관련 파일
  • 설치 절차
  • 설치 아이콘
  • 삭제 방법
  • 설치 버전 및 작성자
  • 고객 지원 방법 및 FAQ
  • 준수 정보 & 제한 보증

4 제품 소프트웨어 설치 매뉴얼 작성 프로세스

  1. 개요 및 기능 식별
  2. UI 분류
  3. 설치 파일 / 백업 파일 확인
  4. 삭제 절차 확인
  5. 이상 유형 확인
  6. 최종 매뉴얼 확인

4 제품 소프트웨어 사용자 매뉴얼

1 개념

개발 완료된 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 필요한 전체 내용을 포함하는 문서

2 작성 항목

  • 목차 및 개요
  • 문서 이력 정보
  • 사용자 매뉴얼 주석
  • 기록항목
  • 기본항목
  • 고객 지원 방법 및 FAQ
  • 준수 정보 & 제한 보증

3 프로세스

  1. 작성 지침 정의
  2. 사용자 매뉴얼 구성요소 정의
  3. 구성요소별 내용 작성
  4. 사용자 매뉴얼 검토

2 국제 표준 제품 품질 특성

1 개념

제품에 대하여 명확하게 정의된 특성, 품질 평가 기준 항목

2 국제 제품 품질 표준

  • ISO/IEC 9126
  • ISO/IEC 14598
  • ISO/IEC 12119
  • ISO/IEC 25000

ISO/IEC 9126

품질 특성 및 측정 기준을 정의하고 있는 표준

  • 기능성
  • 신뢰성
  • 사용성
  • 효율성
  • 유지보수성
  • 이식성

ISO/IEC 14598

품질 특성과 내부 품질과 외부 품질을 조정하고, 품질 측정 절차를 정의

  • 반복성
  • 재현성
  • 공정성
  • 객관성

3 국제 프로세스 품질 표준

  • ISO/IEC 9001
  • ISO/IEC 12207
  • ISO/IEC 15504
  • CMMi

4 ISO/IEC 25000

1 개념

소프트웨어 품질 특성(ISO/IEC 9126) 및 품질 평가 방법(ISO/IEC 14598)을 통합한 소프트웨어 품질 평가 모델 국제 표준

= SQuaRE

2 구조

4+1

  • 2500n - 품질 관리
  • 2501n - 품질 모델
  • 2502n - 품질 측정
  • 2503n - 품질 요구
  • 2504n - 품질 평가

3 제품 소프트웨어 버전 관리

1 소프트웨어 버전 관리 도구

1 개념

형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 사항 관리 도구

2 유형

  • 공유 폴더 방식(RCS, SCCS)
  • 클라이언트 / 서버 방식(CVS, SVN)
  • 분산 저장소 방식(Git, Bitkeeper)

3 도구별 특징

  • CVS: 서버와 클라이언트로 구성, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능
  • SVN: 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있도록 도와주는 도구
  • RCS: 소스 파일의 수정을 한 사람으로 제한
  • Bitkeeper: 중앙 통제 방식, 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전 관리 도구
  • Git: 속도에 중점을 둔 분산형 버전 관리 시스템
  • Clear Case: 복수 서버, 복수 클라이언트 구조, 서버가 필요할 때 추가

4 유의사항

  • 버전에 대한 쉬운 정보 접근성
  • 불필요한 사용자에 대한 접근 제어
  • 동일 프로젝트에 대한 동시 사용성
  • 빠른 오류 복구

5 활용 방안

  • 통합 버전 현황 관리
  • 제품 소프트웨어 소스 및 자료 백업
    • 물리적 복사
    • 버전 관리 도구의 백업 기능 활용

2 빌드 자동화 도구

1 개념

제품 소프트웨어 실행파일 생성을 자동화하기 위해 저장소에 있는 소스를 자동으로 읽어 빌드한 후 테스트하고 검사하여 실행파일을 만드는 도구

2 빌드 자동화 프로세스

  • 컴파일
  • 패키징
  • 단위테스트
  • 정적 분석
  • 리포팅
  • 배포
  • 최종 빌드

3 빌드 자동화 구성요소

  • CI 서버
  • SCM
  • 빌드 도구
  • 테스트 도구
  • 테스트 커버리지 도구
  • 인스펙션 도구

4 기능

  • 코드 컴파일
  • 컴포넌트 패키징
  • 파일 조작
  • 개발 테스트 실행
  • 버전 관리 도구 통합
  • 문서 생성
  • 배포 기능
  • 코드 품질 분석

5 젠킨스

자바 기반의 오픈소스로 가장 많이 활용되는 빌드 자동화 도구, 지속적 통합관리를 가능하게 한다.

서블릿 컨테이너 서버 기반

특징

  • 쉬운 설치
  • 친숙한 웹 GUI
  • 젖장소 부하 감소
  • 최근 빌드 제공
  • 실시간 피드백
  • 분산 빌드
  • 3rd Party 플러그인을 통한 확장

5 그래들

Groovy를 이용한 빌드 자동화 시스템

반응형
반응형

1 모듈 구현

1 단위 모듈 구현

1 개념

기능을 분할하고 추상화하여 성능 향상, 효과적인 유지보수

2 원리

  • 정보 은닉
  • 분학 정복
  • 데이터 추상화
  • 모듈 독립성

3 대상

화면 모듈, 서비스 컴포넌트, 트랜잭션 컴포넌트

2 단위 모듈 테스트

1 개념

IDE 도구를 활용하여 개별 단위 모듈에 대한 디버깅 수행

화이트 박스 기법 사용

2 종류

  • 화이트박스 테스트: 모듈 내부의 소스를 보면서 수행, 다양한 테스트 케이스 생성
  • 메소드 기반 테스트: 외부에 공개된 메소드 기반 테스트
  • 화면 기반 테스트: 화면에 직접 데이터를 입력하여 테스트
  • 테스트 드라이버 / 테스트 스텁: 화면이 구현되지 않은 경우
    • 테스트 드라이버: 상향식, 상위 모듈 인터페이스 역할
    • 테스트 스텁: 하향식, 기능의 임시 수행

3 커버리지

1 개념

테스트 수행 정도

2 유형

  • 구분 커버리지: 모든 문장 적어도 한 번 이상 실행
  • 결정 커버리지: 결정 조건 내 전체 조건식
  • 조건 커버리지: 각 개별 조건식이 참/거짓 한 번 모두 갖도록
  • 조건/결정 커버리지: 전체 조건식이 참/거짓 한번 씩 가지면서, 개별 조건식이 참/거짓 모두 한 번씩
  • 변경 조건/결정 커버리지: 각 개별 조건식이 전체 조건식의 결과에 독립적으로 영향
  • 다중 조건 커버리지: 결정 조건 내 모든 개발 조건식의 모든 가능한 조합 보장

2 통합 구현 관리

1 IDE 도구

1 개념

프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어

2 기능

  • 개발환경 지원
  • 컴파일
  • 디버깅
  • 외부 연계
  • DB 연동

3 IDE 도구 간 비교

비교 이클립스 비주얼 스튜디오 엑스 코드
개발사 IBM 마이크로소프트 애플
플랫폼 크로스 플랫폼 크로스 플랫폼 애플 플랫폼
운영 체제 대부분 윈도우즈 맥 OS
언어 Java, PHP, JSP Visual Basic, C++ Object C, Swift
라이선스 이클립스 상용 GCC
특징 Java 개발 최적화 C 계열 언어 중심 iOS 기반 앱 개발

2 협업 도구

1 개념

개발자 간 커뮤니케이션을 수행하기 위한 도구

2 분류

  • 문서 공유: 구글 드라이브
  • 소스 공유: 깃허브
  • 아이디어 공유: 에버노트
  • 디자인 공유: 레드 펜
  • 마인드 맵: 마인드 마이스터
  • 프로젝트 관리: 트렐로, 레드마인, 지라
  • 일정 관리: 구글 캘린더

3 기능

  • 개발자 간 커뮤니케이션
  • 일정 및 이슈 공유
  • 개발자 간 집단 지성 활용

3 형상 관리 도구

1 개념

소프트웨어 변경 사항을 관리하기 위한 도구

2 기능

  • 체크인: 개발자가 수정한 소스를 형상 관리 저장소로 업로드
  • 체크아웃: 최신 버전을 개발자 PC로 다운로드
  • 커밋: 개발자가 형상 관리 저장소로 업로드 후 반영

3 사례

  • CVS
  • SVN
  • Git
반응형
반응형

1 논리 데이터 저장소 확인

1 자료 구조

1 개념

자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조

2 분류

선형 구조

  • 배열
  • 연결 리스트
  • 스택

비선형 구조

  • 트리
  • 그래프

3 리스트

  • 선형 리스트: 배열, 빠른 접근, 삽입 삭제 시 기존 자료의 이동
  • 연결 리스트: 노드, 느린 접근, 노드의 삽입 삭제가 편리

4 스택 / 큐 / 데크

스택

LIFO 형식

PUSH, POP, TOP

FIFO 형식

ENQUEUE, DEQUEUE

데크

큐의 양 끝에서 삽입 삭제

5 트리

1 개념

데이터를 계층화시킨 자료 구조

노드 간 링크로 구성

2 용어

  • 루트 노드: 부모가 없는 노드
  • 단말 노드: 자식이 없는 노드
  • 레벨: 루트 노드로부터의 경로의 길이+1
  • 조상 노드: 루트에 이르는 경로상 모든 노드
  • 자식 노드: 다음 레벨의 노드
  • 부모 노드: 이전 레벨의 노드
  • 형제 노드: 같은 부모를 가진 노드
  • 깊이: 최대 레벨
  • 차수: 자식 노드 수

3 트리 순회방법

  • 전위 순회: Root -> Left -> Right
  • 중위 순회: Left -> Root -> Right
  • 후위 순회: Left -> Right -> Root

4 이진 트리

1 개념

차수가 2 이하인 노드로 구성된 트리

2 유형
  • 포화 이진 트리: 모든 레벨에서 노드가 꽉 채워진 트리
  • 완전 이진 트리: 마지막 레벨을 제외하고 노드가 채워진 트리
  • 편향 이진 트리: 노드가 한 방향으로만 존재하는 트리

6 그래프

1 개념

노드와 간선을 모아놓은 자료 구조

2 유형

  • 방향 그래프
  • 무방향 그래프

3 표현방법

그래프 G = (V, E)
V(G) = 정점(Vertices)
E(G) = 간선(Edges)

4 용어

  • 경로: 임의의 정점에서 다른 정점으로 이르는 길
  • 경로 길이: 경로상 있는 간선의 수
  • 단순 경로: 한 경로의 모든 간선이 다를 때의 경로
  • 사이클: 동일 정점에서 시작과 끝이 이어지는 경로

2 논리 데이터 저장소

1 개념

데이터를 추상화한 저장소

구조

  • 개체: 관리할 대상이 되는 실체
  • 속성: 관리할 정보의 구체적 항목
  • 관계: 개체 간의 대응 관계

2 검증 절차

  1. 개체 확인: 입출력 데이터 식별, 연계 데이터 식별, 신규 데이터 요구사항 식별
  2. 속성 확인: 데이터 속성, 공통코드 파악 수준 점검, 외부 연계 데이터 속성 파악 수준 점검
  3. 관계 확인: 개체 간 관계의 적절성 확인, 무결성 보장 여부 확인
  4. 데이터베이스 요구사항 확인: 데이터베이스 백업 및 복구 정책, 초기 데이터 구축 방안 요구사항 확인
  5. 데이터 흐름 확인: 프로세스별 입출력 데이터 정의 수준 확인
  6. 데이터 설계 기준 확인: 데이터베이스 설계 표준 지침 작성 여부 및 적절성 확인
  7. 데이터 접근권한 확인: 데이터 접근권한 및 통제 분석 적정성 확인

2 물리 데이터 저장소 설계

1 물리 데이터 저장소

1 개념

논리 데이터 모델을 데이터베이스 저장 구조로 변환하기 위한 데이터 저장소

2 모델 변환

절차

  1. 개체(Entity) -> 테이블
  2. 속성 -> 컬럼
  3. UID -> 기본키
  4. 관계를 외래키로 변환
  5. 컴럼 유형과 길이 정의
  6. 반 정규화(De-normalization)

반 정규화 수행 방법

  • 중복 테이블 추가
  • 테이블 조합: 1:1 관계 테이블 조합 / 1:M 관계 테이블 조합 / 슈퍼 타입 서브 타입 테이블 조합
  • 테이블 분할: 수직 분할 / 수평 분할
  • 테이블 제거: 접근하지 않는 테이블 제거
  • 컬럼 중복화: 조인 성능 향상

3 구성

  1. 테이블 제약조건 설계
    • 삭제 제약조건
      • 연쇄: 외부키와 일치하는 모든 Row 삭제
      • 제한: 외부키에 없는 것만 삭제 가능
      • 무효: 외부키와 일치한 것을 Null로 수정
    • 갱신 제약조건
      • 연쇄: 외부키와 일치하는 모든 Row 수정
      • 제한: 외부키에 없는 것만 수정 가능
      • 무효: 외부키와 일치하는 것을 Null로 수정
  2. 인덱스 설계
    • 인덱스 적용 기준
      • 조회 및 출력 조건으로 사용되는 컬럼인 경우 적용
      • 인덱스 자동생성 기본키와 Unique키의 제약조건을 사용할 경우 적용
    • 인덱스 컬럼 선정
      • 분포도가 좋은 컬럼은 단독적으로 생성
      • 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
      • 수정이 빈번하지 않은 컬럼 선정
    • 고려사항
      • 지나치게 많은 인덱스는 오버헤드로 작용
      • 인덱스는 추가적인 저장 공간 필요
      • 넓은 범위 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드 발생 가능
  3. 뷰 설계
    • 뷰 속성
      • REPLACE: 뷰가 이미 존재하는 경우 재생성
      • FORCE: 기본 테이블의 존재 여부에 관계 없이 뷰 생성
      • NOFORCE: 기본 테이블이 존재할 때만 뷰 생성
      • WITH CHECK OPTION: 서브 쿼리 내의 조건을 만족하는 행만 변경
      • WITH READ ONLY: DML 작업 불가
    • 고려사항
      • 수행속도 문제
      • 뷰 SELECT 문의 조건은 최적의 엑세스 경로 사용
  4. 클러스터 설계
    • 적용 기준
      • 인덱스의 단점을 해결, 분포도가 넓을수록 유리
      • 액세스 효율 향상을 위한 물리적 저장 방법(액세스 기법 X)
      • 분포도 넓은 테이블의 클러스터링은 저장 공간의 절약 가능
      • 대량 범위를 자주 액세스하는 경우 적용
      • 여러 개의 테이블이 빈번하게 조인을 일으킬 때 활용
    • 고려사항
      • 입력, 수정, 삭제 시 부하가 증가
      • UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼은 검토 대상
      • 수정이 자주 발생하지 않는 컬럼은 검토 대상
      • 처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링을 고려
      • 조인이 많아 문제가 발생하는 경우 다중 테이블 클러스터링 고려
  5. 파티션 설계
    • 파티션 종류
      • 레인지 파티셔닝: 지정한 열의 값을 기준으로 분할
      • 해시 파티셔닝: 해시 함수에 따라 데이터 분할
      • 리스트 파티셔닝: 미리 정해진 그룹핑 기준에 따라 데이터 분할
      • 컴포지트 파티셔닝범위 분할 이후 해시 함수를 적용하여 재분할
    • 파티션 장점
      • 성능 향상: 데이터 액세스 범위 감소
      • 가용성 향상: 훼손 가능성 감소
      • 백업 가능: 분할 영역 독립적 백업 및 복구 가능
      • 경합 감소: 디스크 스트라이핑으로 입출력 성능 향상

      * 디스크 스트라이핑: 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 병렬로 사용

  6. 디스크 구성 설계
    • 정확한 용량 산정 -> 효율 향상
    • 업무량이 집중되어 있는 디스크를 분리하여 설계
    • 입출력 경합 최소화 -> 데이터 접근 성능 향상

2 ORM 프레임워크

1 개념

관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법

객체지향 언어에서 사용하는 객체를 관계형 데이터베이스로 변환하여 테이블을 구성하는데 활용

2 유형

  • SQL Mapping 기반 기술
    • iBatis: SQL에 기반한 데이터베이스와 자바, 닷넷, 루비 등을 연결시켜 주는 역할을 하는 개발 프레임워크
    • Mybatis: 자바의 관계형 DB 프로그래밍을 쉽게 할 수 있도록 도와주는 개발 프래임워크
  • OR Mapping 기반 기술
    • Hibernate: 자바 언어를 위한 객체 관계 매핑 프레임워크

3 매핑 기법

  • 객체 - 테이블
  • 속성 - 컬럼
  • 오퍼레이션 - 프로시저/함수

4 절차

절차

  1. 클래스 -> 테이블: 클래스의 인스턴스를 테이블의 레코드로 변환
  2. 애트리뷰트 -> 컬럼: 클래스 인스턴스의 애트리뷰트를 테이블 컬럼으로 변환
  3. 클래스 간 관계 -> 테이블 간 관계: 클래스 간 관계를 테이블 제약사항으로 변환

논리 데이터 저장소 구조

구분 부분적 ORM 완전 ORM
개요 SQL을 특정 이름으로 정의하여 사용 내부 엔진에서 SQL 자동생성
매퍼 사용 SQL Mapper Object Relation Mapper
방법 iBatis, MyBatis, Embeded SQL Hibernate
장점 데이터 전송 방식의 효율성 효율적인 매핑 기법

3 트랜잭션 인터페이스

1 개념

데이터베이스 트랜잭션의 골격 및 인터페이스를 정의

2 특징

ACID 원칙 기반

  • 원자성: 트랜잭션 연산을 모두 반영 or 모두 반영 X(All or Nothing)
  • 일관성: 트랜잭션이 성공적으로 완료 시 일관성 있는 데이터베이스 상태 유지
  • 독립성: 둘 이상 트랜잭션 동시 실행 시 한 개의 트랜잭션만 접근 가능(간섭 불가)
  • 영속성: 성공적으로 완료된 트랜잭션 결과는 영구 반영

3 설계

데이터 접근 방법 및 인터페이스를 절차적으로 명세

트랜잭션 인터페이스는 주로 프로그래밍 언어로 구현

사례: JDBC, ODBC


3 데이터 조작 프로시저 작성

1 프로시저

1 개념

SQL을 이용해 생성된 데이터를 조작하는 프로그램

데이터베이스 내부에 저장, 일정 조건에 따라 자동 수행

2 절차형 데이터 조작 프로시저

Oracle PL/SQL

개념

표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어

장점

  • 컴파일 불필요
  • 모듈화 가능
  • 절차적 언어 사용
  • 에러 처리

구성

  • 선언부
  • 실행부
  • 예외부

활용

  • 저장된 프로시저
  • 저장된 함수
  • 저장된 패키지
  • 트리거

2 프로그램 디버깅

1 개념

프로시저에 대한 검증 작업

2 도구

SQL Plus

명령어

  • 파일 명령어
  • 편집 명령어
  • 실행 명령어
  • 환경 명령어
  • 형식 명령어
  • 대화 명령어

3 단위 테스트 도구

1 개념

구현된 프로시저의 적합성을 확인하는 도구

2 PL/SQL 테스트

DBMS_OUTPUT 패키지 활용: 메시지를 버퍼에 저장, 버퍼로부터 메시지를 읽어오기 위한 패키지

DBMS_OUTPUT 패키지 기능

  • DISABLE: 메시지 버퍼 내용 삭제
  • ENABLE: 메시지 버퍼 내용 할당
  • PUT: 메시지 마지막 라인 끝에 신규라인 문자 추가
  • GET_LINE: 호출 시 한 줄 읽기
  • GET_LINES: 지정된 라인 모두 읽기

4 데이터 조작 프로시저 최적화

1 쿼리 성능 측정

1 개념

프로시저에 있는 SQL 실행 계획은 분석, 수정 -> 최소 시간으로 원하는 결과를 얻오록 프로시저 수정

2 실행계획 기반 쿼리 성능 측정

SQL문을 분석 및 해석 -> 실행 계획 수립, 연관 테이블에 저장하도록 지원하는 도구

3 실행계획 실행

  1. 자동추적 모드 on
  2. 연관 테이블 확인
  3. 연관 테이블 결과 항목 정보

4 SQL 성능 개선 절차

  1. 문제 있는 SQL 식별
  2. 옵티마이저 통계 확인
  3. SQL문 재구성
  4. 인덱스 재구성
  5. 실행계획 유지관리

2 소스 코드 인스펙션

1 개념

프로시저 코드를 보면서 성능 개선

2 SQL 코드 인스펙션 대상

  • 미사용 변수
  • 미사용 서브쿼리
  • Null 값 비교
  • 과거 테이터 타입 사용

3 SQL 코드 인스펙션 절차

  1. 계획
  2. 개관: 문제점 공유
  3. 준비
  4. 검사
  5. 재작업
  6. 추적
반응형
반응형

1 인터페이스 요구사항 확인

1 내외부 인터페이스 요구사항

1 개념

내외부 인터페이스에 대한 필수적인 요구사항

* 내외부 인터페이스: 조직 내외부에 존재하는 시스템들이 연동을 통해 상호 작용을 하기 위한 접속 방법이나 규칙

2 구성

  • 인터페이스 이름
  • 연계 대상 시스템
  • 연계 범위 및 내용
  • 연계방식
  • 송신 데이터
  • 인터페이스 주기
  • 기타 고려사항

3 분류

  • 기능적 요구사항: 소프트웨어가 가져야하는 기능적 속성에 대한 요구사항
  • 비기능적 요구사항: 성능, 용이성, 신뢰도, 보안성, 제약, 안정성 등과 관련된 요구사항

4 분석 방안

1 내외부 인터페이스 관련 요구사항 식별 및 분류

  1. 요구사항 식별
  2. 관련 명세서 및 현황 자료 준비
  3. 기능 요구사항 및 비기능 요구사항 분류

2 내외부 인터페이스 요구사항 명세서 구체화

  1. 요구사항 분해
  2. 요구사항 내용의 이해 및 수정
  3. 누락된 요구사항 신규 정의
  4. 요구사항 정리

2 요구공학

1 개념

사용자 요구사항을 구조화한 활동

2 목적

  • 이해관계자 사이에 효과적인 의사소통 수단 제공
  • 요구사항 누락 방지 및 불필요한 비용 절감, 변경 추적에 용이
  • 개발 비용과 시간 절약

3 분류

기능적 요구사항

  • 개념: 시스템이 제공하는 기능, 서비스에 대한 요구사항
  • 도출 방법: 특정 입력(상황)에 대한 시스템의 반응(동작)
  • 특성: 기능성, 완전성, 일관성
  • 사례: 온라인 쇼핑몰의 장바구니 기능, 여러 결제수단의 결제 기능

비기능적 요구사항

  • 개념: 시스템의 기능 이외의 사항
  • 도출 방법: 품질 관련, 제한 조건
  • 특성: 신뢰성, 사용성, 효율성, 유지 보수성, 이식성
  • 사례: 특정 함수 호출 제한시간, 가동률, 패치 및 업그레이드 지원

4 프로세스

1 요구사항 개발 단계(CMM Level 3)

  1. 요구사항 추출
  2. 요구사항 분석
  3. 요구사항 명세
  4. 요구사항 검증

주요 기법: 인터뷰, 델파이 기법, 롤 플레잉, UML, 모델링, 요구사항 명세서, 베이스라인, 요구사항 추적표

검증 항목: 명확성, 완전성, 검증 가능성, 일관성, 수정 용이성, 추적 가능성, 개발 후 이용성

2 요구사항 관리 단계(CMM Level 2)

  1. 요구사항 협상
  2. 요구사항 기준선
  3. 요구사항 변경 관리
  4. 요구사항 확인 및 검증

요구사항의 변경에 대해 일치성무결성을 제공하기 위해 일련의 관리를 수행하는 활동

산출물: 요구사항 변경요청서, 요구사항 변경승인서, 요구사항 추적표

5 요구사항 검증

요구사항 명세서에 사용자의 요구가 올바르게 기술되었는지 검토, 베이스라인을 설정

요구사항 검증 절차

  1. 요구사항 검토 계획 수립
  2. 요구사항 명세서 검토 및 오류 수정
  3. 요구사항 베이스라인 설정

요구사항 검증 방법

  • 프로토타이핑 활용: 주요 기능이나 일부분을 약식으로 개발
  • 테스트 케이스 활용: 테스트 케이스를 생성하여 요구사항이 현실적으로 테스트 가능한지 검토
  • CASE 도구 활용: 자동화된 일관성 분석을 제공하는 CASE 도구 활용
  • 정형 기술 검토(FTR) 활용
    • 동료 검토: 2~3명이 진행, 이해관계자들이 작성자의 설명을 들으면서 결함을 발견
    • 워크 스루: 검토 자료를 회의 전에 배포하여 사전검토, 오류 조기 검출 목적
    • 인스펙션: 저작자 외의 다른 전문가가 검사하여 오류를 찾아내는 방법

    * 가이드라인

    • 제품의 검토에만 집중
    • 의제를 제한하여 진행
    • 논쟁과 반박을 제한
    • 문제 영역을 명확히 표현
    • 참가자 수를 제한
    • 자원과 시간 일정을 할당
    • 검토 과정과 결과를 재검토

2 인터페이스 대상 식별

1 시스템 아키텍처

1 개념

시스템의 구조, 행위, 동작 원리를 설명하는 프레임워크

2 요구사항

  • 시스템 구성 및 동작 원리를 나타내고 있어야 한다
  • 시스템 구성요소에 대해 설계 및 구혀능ㄹ 지원하는 수준으로 자세히
  • 구성요소 간의 관계 및 시스템 외부 환경과의 관계 설명
  • 요구사항 및 시스템의 전체 생명주기 고려
  • 시스템 전체에 대한 논리적인 기능 체계와 구성 방식, 최적화 목표

cf) 라이브러리 - 소프트웨어 개발 시 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이 필요

3 설계 원칙

중점 고려사항

  • 기술적 제약사항
  • 기술 요구사항
  • 기존 운영상의 문제점 개선

설계 원칙

  • 대규모 트랜잭션 처리 및 온라인 성능 보장
  • 시스템 아키텍처 확장성 보장
  • 서비스 고가용성 보장
  • 운영관리 효율성
  • 시스템 보안 강화

4 물리 설계

  • 1-Tier 아키텍처: AP/DB 서버 1대 이상 구성
  • 2-Tier 아키텍처: AP 서버, DB 서버 2대 이상 구성
  • 3-Tier 아키텍처: 프레젠테이션 서버, AP 서버, DB 서버 3대 이상으로 구성

2 인터페이스 시스템

1 개념

서로 다른 두 시스템/장치/소프트웨어를 이어주는 접속 및 중계 시스템

2 구성

  • 송신 시스템: 연계할 데이터를 생성하여 송신
  • 수신 시스템: 수신한 데이터를 형식에 맞게 변환
  • 중계 서버: 데이터를 송수신하고, 송수신 현황 모니터링

3 분류 체계

기업 내부에서 사용하고 있는 시스템 분류 체계를 기반으로 식별자를 정의

4 식별 정보

  • 대내외 구분 정보: 기업 내부 시스템인지 외부 기관 시스템인지 구분
  • 기관명: 대외 기관일 경우 기관명
  • 시스템 ID: 시스템 식별 체계에 따라 부여된 식별 번호
  • 한글명, 영문명
  • 시스템 설명
  • 시스템 위치
  • 네트워크 특성: 네트워크 전송 속도, 대역폭, 유의사항 등
  • 전용 회선 정보
  • IP/URL
  • Port
  • Login
  • DB 정보
  • 담당자 정보

5 데이터 표준

  • 인터페이스 데이터 공통부: 인터페이스 표준 항목 포함
  • 인터페이스 데이터 개별부: 송수신 시스템에서 업무 처리에 필요한 데이터 포함
  • 인터페이스 데이터 종료부: 전송 데이터의 끝을 표시하는 문자를 포함하여 종료 표시

송수신 전문 구성: 전문 공통부(전문길이, 시스템공통, 거래공통), 전문 개별부, 전문 종료부

6 처리 프로세스

송신 시스템 -> 연계 서버 -> 수신 시스템

3 인터페이스 상세 설계

1 내외부 송수신

1 개념

내외부 송수신을 위한 연계 방식과 연계 기술, 통신 유형의 선택은 성능에 큰 영향

2 연계방식

직접 연계 방식

  • 장점: 빠른 연계 처리 속도, 단순한 구현, 낮은 개발 비용, 짧은 개발 기간
  • 단점: 송수신 시스템 간 높은 결합도, 보안 작업 시 인터페이스별 작성, 통합 환경 구축

간접 연계 방식

  • 장점: 다양한 환경을 갖는 시스템을 연계 및 통합 관리, 인터페이스 변경 시 유연한 대처
  • 단점: 절차가 복잡하고 성능 저하, 길어지는 개발 및 테스트 기간

3 연계 기술

  • DB 링크: 수신 시스템에서 DB 링크를 생성하고 송신 시스템에서 해당 DB 링크를 직접 참조
  • DB 연결: 수신 시스템의 WAS에서 송신 시스템 DB로 연겷는 DB 컨넥션 풀을 생성하고 연계 프로그램에서 사용
  • API/Open API: 송신 시스템의 DB에서 데이터를 읽어서 제공하는 어플리케이션 프로그래밍 인터페이스 프로그램
  • JDBC: 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결
  • 하이퍼 링크: 웹 애플리케이션에서 하이퍼링크 이용
  • 소켓: 서버는 통신을 위한 소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청시 클라이언트와 연결하고 통신

4 통신 유형

실시간

  • 단방향: 데이터를 이용하고자 하는 시스템에서 거래를 요청
  • 동기: 데이터를 이용하고자 하는 시스템에서 거래 요청을 하고 응답 대기
  • 비동기: 요청을 보내고 다른 작업을 하다가 데이터가 준비되었다는 신호를 받으면 다시 처리
  • 지연 처리: 순차 처리 및 지연 처리가 필요한 업무에 사용

배치

  • DB/File 거래: 정해진 시간에 통신을 수행

2 데이터 명세화

1 개념

인터페이스 요구사항 분석 과정에서 식별한 정보를 분석하여 필요한 데이터 명세를 만드는 작업

2 정보파악

인터페이스 요구사항 분석 과정에서 식별한 개체 정의서, 테이블 정의서, 코드 정의서를 분석하여 필요한 정보를 파악

  • 개체 정의서: 데이터베이스 개념 모델링 단계에서 도출한 개체의 정보를 개괄적으로 명세화한 정의서

    논리 DB명, 엔터티명, 주 식별자, 슈퍼타입 엔터티 명

  • 테이블 정의서: 논리 및 물리 모델링 과정에서 작성하는 설계 산출물

    물리 DB명, 테이블 소유자, 테이블 명칭, 테이블 유형, 관련 엔터티 명, 테이블 설명, 보존 기간, ...

  • 코드 정의서: 코드에 대한 명명 규칙을 정하고, 명명 규칙에 따라 어떤 코드를 사용할지 정의한 문서

3 송수신 데이터 명세 작성

연계하고자 하는 데이터 단위로 명세 작성

송수신 데이터 항목의 데이터 타입, 길이, 필수 입력 여부, 식별자 여부 정의

암호화 대상 컬럼 선정 및 적용 여부 정의

3 오류 처리 방안 명세화

1 인터페이스 오류 유형

  • 연계 서버: 연계 서버 다운, 송수신 시스템 접속 오류
  • 송신 시스템 연계 프로그램: 데이터베이스 접근 권한 오류, 예외 상황 미처리, 미등록 코드
  • 연계 데이터: 유효하지 않은 연계 데이터 값
  • 수신 시스템 연계 프로그램: 데이터 등록 및 갱신 오류

2 인터페이스 오류 처리 방법

절차

  1. 로그 파일에 에러 내용을 기록하도록 프로그램 작성
  2. 인터페이스 오류 발생
  3. 로그 파일을 확인하여 오류 원인 분석, 해결 방안 수립
  4. 연계 데이터 오류의 경우 데이터 보정, 재전송
  5. 송수신 시스템의 접속 오류의 경우 담당자를 통해 해결 후 재전송

인터페이스 오류 코드

  • 오류 코드
  • 오류 내용

3 오류 처리 방안 명세화 프로세스

  1. 오류 상황 식별 분류
  2. 오류 처리 방안 명세화
    1. 오류 발생 영역 정의
    2. 오류 그룹 번호 정의
    3. 오류 코드 부여, 오류 메시지 정의
    4. 오류 상세 기술
    5. 오류 해결 방법 기술

4 인터페이스 설계

1 인터페이스 목록 도출

송수신 시스템의 정보, 연계 방식, 통신 유형 등의 정보

인터페이스 목록 주요 항목

  • 인터페이스 ID
  • 인터페이스 명
  • 송신 시스템
  • 수신 시스템
  • 대내외 구분
  • 통신 유형
  • 처리 유형
  • 주기
  • 데이터 형식
  • 관련 요구사항 ID

2 인터페이스 정의서 작성

데이터 송수신 시스템 간의 데이터 저장소와 속성 등의 상세 내역

연계 방식에 따라 인터페이스 명세 항목이 다르다

인터페이스 정의서 주요 항목

  • 인터페이스 ID
  • 최대 처리 횟수
  • 데이터 크기
  • 시스템 정보
  • 데이터 정보

3 인터페이스 설계 프로세스

  1. 양식 준비
  2. 인터페이스 기본 정보 작성
  3. 송수신 시스템의 정보 작성
  4. 프로그램 명세서 확인 및 보완
  5. 송수신 데이터 항목 작성
  6. 코드 매핑 정보 작성
  7. 인터페이스 설계 내용 검토 및 보완

5 미들웨어 솔루션

1 개념

컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 관리를 도와주는 소프트웨어

2 유형

  • DB 미들웨어: DB 솔루션 업체에서 제공하는 애플리케이션과 DB 간의 원활한 통신을 목적
  • 원격 프로시저 호출(RPC): 응용 프로그램의 프로시저를 사용하여 원격 크로시저를 로컬 프로시저처럼 호출
  • 메시지 지향 미들웨어(MOM): 메시지 기반의 비동기형 메시지 전달
  • 트랜잭션 처리(TP): 모니터분산 트랜잭션을 처리하기 위한 미들웨어
  • 레거시웨어: 기존 애플리케이션이나 DB 기반에 새로운 업데이트된 기능 추가 시 사용
  • 객체 기반(ORB) 미들웨어: CORBA 표준 스펙을 구현한 객체지향 미들웨어
  • WAS: 웹 환경을 구현하기 위한 미들웨어

3 웹 애플리케이션 서버(WAS)

서버계층에서 애플리케이션이 동작할 수 있는 환경을 제공, 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과의 연동 지원

* 웹 서버와의 차이점: 동적 서버 콘텐츠 수행

처리 프로세스

  1. 웹 브라우저가 웹 서버에 페이지 요청
  2. 요청된 페이지의 로직 및 DB와의 연동을 위해 애플리케이션 서버에 처리를 요청
  3. 웹 애플리케이션 서버는 DB와의 연동이 필요하면 DB와 데이터의 처리를 수행
  4. 로직 및 DB 작업의 처리 결과를 웹 서버에 응답
  5. 웹 서버가 결과를 웹 브라우저에 응답

4 EAI와 ESB

EAI(Enterprise Application Integration)

비즈니스 프로세스를 중심으로 기업 내 각종 애플리케이션을 통합

비표준 어댑터를 배포하여 통합

ESB(Enterprise Service Bus)

웹 서비스를 이용하여 메시징 / 웹 서비스 / 데이터 변형 / 인텔리전트 라우팅을 결합하여 연결과 상호작용을 지원

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

기술 및 토폴로지

  • 허브 앤 스포크 방식: 중앙 집중된 허브를 통해서 통합, 단위 애플리케이션의 업무 간의 재사용성 극대화
  • 어댑터: 다양한 애플리케이션을 연결하는 EAI의 핵심 장치
  • 브로커: 시스템 간 데이터가 전송될 때, 데이터 포맷과 코드를 변환
  • 메시지 큐: 비동기 메시지를 사용하는 다른 애플리케이션 간 데이터를 송수신
반응형
반응형

1 공통 모듈 설계

1 공통 모듈

 

1 개념

전체 프로그램의 기능 중 특정 기능을 추리할 수 있는 실행 코드

자체적으로 컴파일 가능, 재사용 가능

 

2 원칙

  • 정확성: 해당 기능의 필요 여부
  • 명확성: 해당 기능에 대해 일관되게 한 가지로 해석
  • 완전성: 필요 요구 사항에 대해서 모두 기술
  • 일관성: 기능 간 상호 충돌 X
  • 추적성: 기능의 유기적 관계에 대한 식별 가능

 

3 모듈화

1 개념

프로그램의 관리를 효율적으로 하기 위해 시스템을 분해, 추상화함으로써

성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 쉽게 하는 기법

 

2 필요성

모듈의 크기 少 -> 모듈 개수 多 -> 통합 비용 大

모듈의 크기 大 -> 모듈 통합 비용 少 but 모듈 당 개발 비용 大

 

3 유형

  • 응집도: 모듈 내부의 구성요소 간 관계의 밀접한 정도 (강하게)
  • 결합도: 모듈 간의 관련성 정도(<---> 독립성) (약하게)

 

1 응집도 유형

우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적

2 결합도 유형

내용 > 공통 > 외부 > 제어 > 스탬프 > 자료

 

2 설계 모델링

 

1 개념

필수 기능의 구체적인 구현 방법

소프트웨어의 요구사항을 만족하도록 모델링하여 표현, 분석, 검증하는 과정

 

2 원칙

  • 변경이 쉽도록 구조화
  • 특정 기능을 수행하는데 필요한 자료만 사용하도록 규제
  • 독립적이고 기능적인 특성
  • 계층적 구조

 

3 유형

모델링 유형

  • 구조 모델링: 시스템의 구성요소들과 이들 사이의 구조적인 관계와 특성을 모델링
  • 행위 모델링: 시스템의 구성요소들의 동적인 특성을 모델링

 

모델 유형

  • 구조 모델: 유형, 배열 및 결합 관계, 인터페이스, 상호작용 채널, 위치의 이동 및 복제
  • 행위 모델: 입출력 데이터, 입출력 매핑, 데이터 흐름 채널, 상호작용 프로토콜, 처리 순서, 알고리즘

 

4 소프트웨어 설계 유형

자료 구조 설계: 소프트웨어를 구현하는데 필요한 자료 구조로 변환하는 과정

아키텍처 설계: 컴포넌트 간의 관계

인터페이스 설계: 통신

프로시저 설계: 아키텍처의 컴포넌트를 프로시저 서술로 변환하는 과정

 

3 소프트웨어 아키텍처

 

1 개념

외부에 드러나는 특성, 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체

 

2 필요성

조율을 통한 시스템 최적화

비기능적 요소에 집중하되 기능적 요소 고려

 

3 소프트웨어 아키텍처 프레임워크

IEEE1471

[IEEE1471]

  • Mission: 목적 달성을 위해 시스템이 수행하는 방향성
  • Environment: 내부/외부 제약
  • System: 특정 목적 달성을 위한 컴포넌트 집합
  • Architectures: 시스템 구조
  • Stakeholder: 사람/조직
  • Architectures Description: 아키텍처를 기록하기 위한 산출물
  • Concern: 관계자 관심사
  • View Point: View를 구성하기 위한 규칙을 정의한 패턴
  • Rational: 아키텍처 평가 판단 기준
  • Library view point: 모델 작업 방법 사례
  • Model: 모델

 

4 소프트웨어 아키텍처 4+1뷰

1 개념

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 접근 방법

4개의 구조가 충돌되지 않는지, 요구사항을 충족하는지 증명하기 위해 유스케이스 사용

 

2 구성요소

1: 유스케이스 뷰

4: 논리 뷰(최종 사용자), 프로세스 뷰(프로그래머), 구현 뷰(프로그래머), 배포 뷰(시스템 엔지니어)

  • 유스케이스 뷰: 아키텍처의 다른 뷰를 검증하는 데 사용
  • 논리 뷰: 기능적인 요구사항, 모델의 추상화
  • 프로세스 뷰: 런타임 시 테스크, 스레드, 프로세스 간의 관계 표현, 비기능적 요구사항(성능, 가용성) 고려
  • 구현 뷰(= 컴포넌트 뷰): 정적인 소프트웨어 모듈의 구성, 개발자 관점
  • 배포 뷰: 실행 파일과 런타임 컴포넌트의 매핑 방법을 보여주며, 비기능적인 요구사항 고려

 

5 소프트웨어 아키텍처 비용 평가 모델

1 개념

아키텍처의 적합성을 평가하는 모델

 

2 종류

  • SAAM: 변경 용이성과 기능성에 집중
  • ATAM: 아키텍처 품질 속성을 만족시키는지 판단
  • CBAM: 경제적 의사결정에 대한 요구 충족
  • ADR: 아키텍처 구성요소 간 응집도 평가
  • ARID: 전체가 아닌 특정 부분에 대한 품질요소에 집중

 

2 객체지향 설계

1 객체지향

1 개념

실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현

 

2 구성요소

  • 클래스: 같은 종류의 집단에 속하는 속성(변수)와 행위(메서드)
  • 객체: 클래스로부터 생성, 객체마다 각각의 상태와 식별성 소유
  • 메서드: 객체를 사용하는 방법
  • 메시지: 객체에게 행위를 지시하는 방법
  • 인스턴스: 클래스에 속한 각각의 객체, 실제 메모리상에 할당
  • 속성: 객체가 가지고 있는 값

 

3 기법

  • 캡슐화: 관련성이 높은 데이터와 함수를 묶어서 처리, 결합도를 낮추고 재사용이 용이
  • 상속성: 상위 클래스의 속성과 메소드를 하위 클래스에서 물려받아 사용
  • 다형성: 하나의 메시지에 대해 고유한 방법으로 응답, 오버로딩/오버라이딩
  • 추상화: 공통 성질을 추출하여 추상 클래스를 설정
  • 정보은닉: 데이터와 메소드를 공개 인터페이스를 통해서만 접근하도록하여 side effect 최소화

cf ) 프로시저 기반 - 절차적 프로그래밍

 

4 설계 원칙(SOLID)

  • 단일 책임: 하나의 클래스는 하나의 목적
  • 개방 패쇄: 소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다
  • 리스코프 치환: 자식 클래스는 부모 클래스를 대체
  • 인터페이스 분리: 한 클래스는 자신이 사용하지 않는 인터페이스를 구현하지 않는다
  • 의존성 역전: 사용 관계는 바뀌지 않으며, 관계는 최대한 느슨하게

 

5 방법론 종류

  • 객체지향 소프트웨어 공학(OOSE): 유스케이스에 의한 접근 방법

  • 럼바우 객체 모델링 기법(OMT): 객체지향 분석 -> 시스템 설계 -> 오브젝트 설계 및 구현

    • 객체 모델링: 정적 구조 표현
    • 동적 모델링: 객체의 제어 흐름 표현
    • 기능 모델링: 값의 변화 과정 표현
  • 객체 지향 설계(Booch): 설계 부분만 존재, 설계 문서화 강조

*-----------------------------

Coad와 Yourdon 방법: 객체 지향 분석 방법론 중 ERD 사용

-------------------------*

 

2 디자인 패턴

 

1 개념

반복적으로 나타나는 문제점에 대한 전문가의 경험을 정리하여 해결 방안을 제시한 패턴

개발의 효율성, 유지 보수성, 운용성 등의 품질 향상, 프로그램 최적화

 

2 구성요소

  • 패턴 이름: 문제와 해법을 설명
  • 문제: 해결하고자 하는 문제와 배경, 패턴 사용 시점
  • 해법: 요소, 요소 간의 관계, 책임, 상호관계
  • 결과: 결과와 장단점

 

3 유형

목적

  • 생성: 구조화, 캡슐화
  • 구조: 더 큰 구조 형성 목적
  • 행위: 상호작용 방법과 역할 분담

cf ) 기능 X

 

범위

  • 클래스: 상속 관계, 컴파일 타임에 정적으로 결정
  • 객체: 런타임에 동적으로 결정

 

 생성구조행위
클래스Factory MethodAdapterInterpreter / Template Method
객체Abstract Factory / Builder / Prototype / SingletonBridge / Composite / Decorator / Facade / Flyweight / ProxyChain of Responsibility / Command / Iterator / Mediator/ Memento / Observer / State / Strategy / Visitor

 

4 종류

  • Factory Method: 서브 클래스가 인스턴스를 결정하도록하고 책임을 위임
  • Singleton: 유일한 하나의 인스턴스를 보장
  • Facade: 하나의 인터페이스를 통해 느슨한 결합 제공
  • Proxy: 대리인이 대신 일을 처리
  • Template: 알고리즘 골격의 구조를 정의
  • Command: 요청 자체를 캡술화하여 파라미터로 넘긴다
  • Observer: 상태가 변할 때 알리고, 자동 업데이트
반응형

+ Recent posts