1. 데이터 입출력 구현
1-1. 논리 데이터저장소 확인
(1) 자료구조
: 자료를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것
- 선형구조
- 순차리스트
- 리스트에 나열한 데이터들이 일정한 순서를 가지고 있는 구조
- 연결리스트
- 순서가 매겨진 항목들을 모아놓은 구조 중 하나로 각 데이터를 연결하는 포인터까지 있는 구조
- 순차 자료구조: 논리적인 순서 = 물리적인 순서
- 연결 리스트: 논리적인 순서 != 물리적인 순서
- 스택
- 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)
- 큐
- 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형구조 ( FIFO - First In First Out)
- 데크
- 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조
- 순차리스트
- 비선형구조
- 트리
- 자료 간 계층 관계를 가진 계층형 자료구조이다.
- 노드(node): 트리의 원소
- 간선(edge): 노드를 연결하는 선
- 루트 노드(root node): 트리의 시작 노드
- 형제 노드(sibling node): 같은 부모 노드의 자식 노드들
- 조상 노드: 간선을 따라 루트 노드까지 이르는 경로에 있는 모든 노드들
- 서브 트리(subtree): 부모 노드와 연결된 간선을 끊었을 때 생성되는 트리
- 자손 노드: 서브 트리에 있는 하위 레벨의 노드들
- 차수(degree)
- 노드의 차수: 노드에 연결된 자식 노드의 수
- 트리의 차수: 트리에 있는 노드의 차수 중에서 가장 큰 값
- 단말 노드(리프 노드): 차수가 0인 노드. 자식 노드가 없는 노드
- 높이
- 노드의 높이: 루트에서 노드에 이르는 간선의 수. 노드의 레벨
- 트리의 높이: 트리에 있는 노드의 높이 중에서 가장 큰 값
- 이진트리(완전 이진 트리, 포화 이진 트리, 편향 이진 트리)
- 트리의 모든 노드의 차수를 2 이하로 제한하여 전체 트리의 차수가 2 이하가 되도록 정의
- 이진 트리의 모든 노드는 왼쪽 자식 노드와 오른쪽 자식 노드만 가짐
- 이진 트리 순회(암기)
- 모든 원소를 빠트리거나 중복하지 않고 처리하는 연산
- 작업D: 현재 노드 처리
- 작업L: 현재 노드의 왼쪽 서브 트리로 이동
- 작업R: 현재 노드의 오른쪽 서브 트리로 이동
- 전위 순회(D → L → R 순서): Preorder
- 중위 순회(L → D → R 순서): INORDER
- 후위 순회(L → R → D 순서): Postfix
- 그래프
- 연결할 객체를 나타내는 정점과 객체를 연결하는 간선의 집합으로 구성
- 무방향 그래프
- 두 정점을 연결하는 간선에 방향이 없는 그래프
- 정점이 n개인 무방향 그래프에서 최대의 간선 수: n(n-1)/2개
- 방향 그래프
- 간선에 방향이 있는 그래프
- 정점이 n개인 방향 그래프의 최대 간선 수: n(n-1)개
- 트리
알고리즘의 성능 분석
- 실행시간: 시간 복잡도 = 컴파일 시간 + 실행 시간
- 기억장소 크기: 공간 복잡도 = 고정 공간 + 가변 공간
빅-오 표기법(Big-O notation)
: 아무리 많이 걸려도 이 시간 안에는 끝날 것 → 처리에 필요한 시간의 최대치
- 시간 복잡도 함수 중 가장 큰 영향력을 주는 n에 대한 항만 표시할 것
- 계수는 생략할 것
정렬(sort)
:데이터들을 어떤 규칙에 따라 순서대로 나열하는 것
- Bubblr Sort
- 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하는 알고리즘
- 평균적인 시간복잡도: O(n²)
- 데이터의 개수가 적을때 이용
- 삽입정렬
- 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘
- 평균적인 시간복잡도: O(n²)
- 선택정렬
- 정렬괴지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 방식이다.
- 평균적인 시간복잡도: O(n²)
- 합병(병합)정렬
- 전체 병합 정렬의 시간복잡도: O(nlog2n)
- 해싱
- 산술적인 연산을 이용하여 키가 있는 위치를 계산하여 바로 찾아가는 계산 검색 방식
- (비교검색: 순차검색, 이진검색, 트리검색 계산검색: 해싱)
- 검색 방법
- 키 값에 대해서 해시 함수를 계산하여 주소를 구하고, 구한 주소에 해당하는 해시 테이블로 바로 이동
- 해당 주소에 찾는 항목이 있으면 검색 성공, 없으면 검색 실패
- 해시 함수
- 키 값을 원소의 위치로 변환하는 함수
- 제산 함수
- 키값을 함수로 나누고 나머지를 주소로 사용
- 접지 함수
- 키의 비트 수가 해시 테이블 인덱스의 비트 수보다 큰 경우에 주로 사용
- 이동 접지 함수: 각 분할 부분을 이동시켜서 오른쪽 끝자리가 일치하도록 맞추고 더하는 방법
- 숫자 분석 함수
- ex) 학번
- 진법 변환 함수
- 키 값이 10진수가 아닌 다른 진수일 때, 10진수로 변환하고 해시 테이블 주소로 필요한 자릿수 만큼만 하위자리의 수를 사용하는 방법
- 해시 테이블
- 해시 함수에 의해 계산된 주소의 위치에 항목을 저장한 표
- 산술적인 연산을 이용하여 키가 있는 위치를 계산하여 바로 찾아가는 계산 검색 방식
(2) 논리 데이터저장소(제3과목에서 설명)
:데이터 및 데이터 간 연관성. 제약조선을 식별하여 논리적 구조로 조직화 하여 모델링 표기법으로 형상화한 데이터의 저장소
- 개념 데이터 모델링: 전사의 정보요건을 표현한 상위수준의 모델
- 주요 엔터티타입, 기본 석성, 관계, 주요 업무기능
- 모든 업무 영역, 주요 업무 규칙 정의
- 논리데이터 모델의 기초가 된다.
- 논리 데이터 모델링: 개념모델로부터 업무영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델
- 모든 업무용 엔터티타입(Entity), 속성(Attribute), 관계(Relationship), 프로세스
- 모든 업무 데이터를 정규화(Nomalization)
- 모든 업무 규칙과 관계를 완전하고 정확하게 표현
- 성능 혹은 기타 제약 사항과는 독립적인 모델로서, 특정 DBMS로부터 독립적
- 특성
- 논리적 데이터 모델링 시 요구사항을 충분히 수집하지 않으면 다음 단계의 요구사항 변경에 따른 많은 비용이 발생한다.
- 모든 이해당사자들과 의사소통의 보조자료로서 E-R 모델을 활용한다.
- 논리적 모델은 H/W나 S/W에 독립적이다.
- 정규화
- 정의: 중복성을 최소화하고 정보의 일관성을 보장하기 위한 개념
- 특징
- 어떠한 관계구조가 바람직한 것인지, 바람직하지 못한 관계를 어떻게 분해해야 하는지에 관한 구체적인 판단기준을 제공
- 정규화된 데이터 모델은 정확성, 일치성, 단순성, 비중복성, 안정성 보장
- 삽입 이상, 갱신 이상, 삭제 이상
- 유형
- 제1정규화
- 반복되는 속성이나 Group 속성 제거
- 새로운 실체와 1:N의 관계 추가
- 모든 속성은 반드시 하나의 값을 가져야 함(반복형태가 있어서는 안됨)
- 제2정규화
- 주식별자에 완전하게 종속되지 않는 속성 제거
- 불완전 함수적 종속(Non Fully Dependency) 제거
- 모든 속성은 반드시 UID전부에 종속되어야 함
- 제3정규화
- 비식별자에 종속되는 속성 제거
- 주식별자에 이행종속(Transtive Dependency) 되는 속성 제거
- UID가 아닌 모든 속성 간에는 서로 종속될 수 없음(속성간 종속성 배제)
- 제4정규화
- 실제로 거의 고려되지 않는 정규화
- 주식별자에 다가종속되는 속성을 두가지 이상 두지 않음
- 2차 정규화된 테이블은 다대다 관계를 가질 수 없음
- 어떠한 관계구조가 바람직한 것인지, 바람직하지 못한 관계를 어떻게 분해해야 하는지에 관한 구체적인 판단기준을 제공
- BCNF
- 제5정규화
- 제1정규화
- 정규화 수준에 따른 장단점
- 정규화 수준이 높을수록
- 장점
- 유연한 데이터 구축이 가능
- 데이터의 정확성 높아짐
- 단점
- 물리적 접근이 복잡
- 길이가 짧은 데이터 생성으로 과도한 조인 발생
- 트랜잭션
- 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들의 모임
- COMMIT
- ROLLBACK
- SAVEPOINT
- 특성
- 물리 데이터 모델링: 설계단계에서 시스템의 설계적 및 정보 요건을 정확하고 완전하게 표현한 모델
- 데이터베이스 생성을 위한 물리 구조로 변환한다.
- 설계와 성능을 고려한 조정을 수행한다.
- 적용 DBMS에 적합한 성능조정을 수행한다.
1-2. 물리 데이터저장소 설계(제3과목에서 설명)
: 논리 데이터 저장소에 저장된 데이터와 구조들을 DBMS의 특성을 고려하여 저장한 하드웨어적 저장 장치
반정규화(Denormalization)
- 정의
- 정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가하는 경우가 발생하여 이를 극복하기 위해 성능에 중점을 두어 정규화하는 방법
- 특징
- 데이터 모델링 규칙에 얽메이지 않고 수행한다.
- 시스템이 물리적으로 구현되었을 때 성능향상을 목적으로 한다.
반정규화 유형
- 중복 테이블 추가
- 용도
- 다량의 범위를 자주 처리
- 특정 범위의 데이터만 자주 처리
- 처리범위 줄이지 않고 수행속도 개선 불가능 경우
- 방법
- 집계 테이블의 추가
- 진행 테이블의 추가
- 특정 부분만을 포함하는 테이블 추가
- 용도
- 테이블 조합
- 용도
- 처리가 두 개 이상의 테이블에 대해 항상 같이 일어나는 경우
- 방법
- 해당 테이블을 통합하여 설계
- 용도
- 테이블 분할
- 용도
- 칼럼의 사용빈도의 차이가 많은 경우
- 각각의 사용자가 각기 특정한 부분만 지속적으로 사용하는 경우
- 방법
- 수직 분할
- 수평 분할
- 용도
- 테이블 제거
- 용도
- 더 이상 엑세스 되지 않응 테이블이 발생할 경우
- 방법
- 해당 테이블 삭제
- 용도
- 칼럼의 중복화
- 방법
- 필요한 해당 테이블이나 칼럼을 추가
- 방법
3단계 데이터베이스 구조
- 외부 단계(사용자 관점)
- 개념 단계(조직 전체 관점)
- 내부 단계(저장 장치 관점)
1-3. 데이터 조작 프로시저 작성(제3과목에서 설명)
데이터베이스 구축과 겹쳐서 후에 설명
2. 통합 구현
2-1. 모듈 구현
단위모듈 구현: 단위 기능을 모듈로 구현
- 단위 기능 명세서 작성: 설계 과정에서 단위 기능을 명세화한 문서
- 추상화: 큰 흐름 잡기
- 구조화: 시스템을 분해하여 단위 기능별로 구분하고 계층적으로 구성
- 캡슐화(정보 은닉): 단위 모듈(Unit Module)의 내부 내용은 숨기고 인터페이스를 통해서만 메시지 전달하여 다른 모듈의 접근과 변경을 막는다.
- 기능적 독립성: 모듈은 뚜렷한 목적을 가지면서, 다른 모듈과의 상호 의존도가 낮도록 함.
- 입출력 기능 구현: 명세서에 정의한 데이터 형식에 따라 알고리즘 및 데이터 구현
- IPC(Inter-Process Communication): 모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 인터페이스 집함
- PIPE(FIFO): 'PIPE'라는 메모리를 이용하여 모든 프로세스들 사이에서 통신이 가능
- Message Queue: 메시지가 발생하면 이를 전달. PIPE가 데이터의 흐름이라면 메시지 큐는 메모리 공간
- Shared Memory(공유 메모리): 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스간 통신 수행
- Socket: 프로세스들 사이의 통신을 가능하게 함.
- Semaphore: 공유 자원에 대한 접근제어를 통해 프로세스간 데이터를 동기화 하고 보호
- IPC(Inter-Process Communication): 모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 인터페이스 집함
- 알고리즘 구현 단계
- 단위 기능별 요구 사항들을 프로그래밍 언어를 이용하여 모듈로 구현
- 디바이스 드라이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈
- 단위 기능들이 사용자의 요구와 일치하는지 확인하는 과정 필요
단위모듈 종류
- 화면모듈
- 화면에서 입력 받은 데이터 처리를 위한 서비스 컴포넌트
- 비즈니스 트랜잭션 컴포넌트
- 데이터베이스 접근 컴포넌트
- 내외부 인터페이스 컴포넌트
- 데이터 암/복호화 컴포넌트
단위모듈 구현시 고려사항
- 모듈 내 구성요소들 간의 응집도는 높이고 모듈간의 결합도는 낮춤
- 공통모듈 구현 -> 개별 단위모듈 구현(재사용)
- 예외처리 로직을 고려하여 구현
단위 모듈 테스트의 장점
- 문제점 발견의 용이성
- 구조 변경의 용이성
- 통합의 용이성(합쳐서 다시 검증하는 통합테스트에서 유용(상향식(Bottom-Up)방식))
테스트 방법 비교(암기)
단위 모듈 테스트 환경
- 사용자 화면이 없는 경우 스텁 혹은 드라이버 활용
- 테스트 드라이버: 테스트 대상이 되는 모듈의 상위 가상 모듈
- 테스트 스텁: 테스트 대상이 되는 모듈의 하위 가상 모듈
2-2. 통합 구현 관리
협업 도구의 기능
- 전사관리(전자결제, 조직도 등)
- 프로젝트 관리
- 업무의 시각화
- 업무 관리 기능
- 리마인더 기능
- 자체 드라이브 공간, 에디터 지원
- 문서 공유 지원
- 커뮤니케이션
- 타 협업툴간 연동 지원
형상관리 도구
- 형상: 구조도, 프로그램 코드, 코드를 담은 기스크, 설계 사양서, 지침서 등 개발에 필요한 모든 것
- 형상관리 프로세스
- 식별
- 버전관리
- 변경관리
- 형상감사
- 보고
- 주요기능
- 체크인
- 체크아웃
- 커밋
- 도구 종류
- CVS
- SVN
- Git
- Perforce
3. 제품소프트웨어 패키징
3-1. 제품소프트웨어 패키징
어플리케이션 패키징
- 개발 완료 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징
- 설치와 사용에 필요한 내용 메뉴얼 작성
- 패치 개발
- 버전 관리
- 개발자가 아닌 사용자 중심
패키징 수행 순서
- 기능식별
- 모듈화(느슨한 결합도 & 강한 응집도)
- 빌드 진행
- 사용자 환경 분석
- 패키징 적용 시험
- 패키징 변경 개선
릴리즈 노트: 고객에게 전달될 때 함께 따라가는 문서
중요성
- 테스트 결과와 정보 포함
- 사용자에게 확실한 정보 제공
- 제품 수행 기능 및 서비스의 변화 공유
- 전체적인 버전 및 릴리즈 정보 관리
작성 순서
- 모듈식별
- 릴리즈 정보 확인
- 릴리즈 노트 개요 작성
- 영향도 체크
- 정식 릴리즈 노트 작성
- 추가 개선 항목 식별
어플리케이션 배포 도구: 지적 재산권 보호 및 관리 기능
도구 활용 시 고려 사항
- 반드시 암호화/보안 고려
- 다양한 기종 연동 고려
- 사용자 편의성 고려(복잡성 및 비효율성)
- 적합한 암호화 알고리즘 고려
패키징 도구 구성요소
- 암호화(PKI)
- 키 관리
- 암호화 파일 생성
- 식별 기술(DOI,URI)
- 저작권 표현
- 정책 관리
- 크랙 방지
- 인증
제품 소프트웨어 저작권 관리(DRM, Digital Rights Management)
- 저작권
- 저작권 보호 기술의 개념
- 저작권 보호 기술의 필요성
- 기술 요소
- 저작권 표현(Right Expression)
- 정책 관리(Policy management)
- 크랙 방지(Tamper Resistance)
- 인증(Authentication)
저작권 관리의 흐름
- 콘텐츠 제공자(저작권자)
- 패키저(콘텐츠와 메타 데이터를 배포 가능한 단위로 묶는 기능)
- 콘텐츠
- 콘텐츠 분배자(ex)쇼핑몰)
- 콘텐츠 상거래
- 콘텐츠 소비자
- DRM 컨트롤러(콘텐츠 이용 권한 통제)
- 보안 컨테이너(안전 유통 위해 전자적 보안 장치)
- 클리어링 하우스(위 3개가 다 거쳐감)
- 권한정책
- 라이센스
3-1. 제품소프트웨어 메뉴얼 작성
제품 소프트웨어의 메뉴얼: 사용자 측면의 주요 내용을 문서화한 것
설치 메뉴얼 작성의 기본 사항
- 사용자 기준
- 순차적 진행
- 각 단계별 화면을 순서대로 캡쳐 및 설명
- 설치 중간 이상 발생 시 에러에 대한 내용 분류 및 설명
국제 표준 제품 품질 특성: 프로젝트에 대한 품질 평가를 하는 국제 표준화 기구에서 정한 기준
소프트웨어 품질의 종류
- 제품품질: 품질 자체
- 프로세스 품질: 개발 과정
- 품질 경영: 조직을 지휘 관리하는 활동
국제표준: 소프트웨어 품질 관점
품질 표준/인증 | 설명 |
ISO/IEC 91(년도)26 | 품질 특성과 측정 기준 제시(기능성/신뢰성/사용성/효율성/유지보수성/이식성), 평가방법이 없음 |
ISO/IEC 14598 | 소프트웨어 제품 평가(표준개요/측정계획관리/개발자/획득자/평가자/평가 모델) |
ISO/IEC 12119 | 정보기술 패키지 소프트웨어 대한 품질 요구사항 및 시험을 위한 국제 표준(제품 설명서, 사용자 문서, 실행 프로그램) |
ISO/IEC 25000 | 위 3개를 통합한 것 |
Good S/W | 정보통신기술협회 산하 S/W 시험 센터 주관 |
ISO/IEC 9126(암기)
- 기능성: 명시된 요구와 내재된 요구를 만족하는 기능(하위특성: 적합성, 상호운용성, 보안성, 정확성, 준수성)
- 신뢰성: 규정된 성능수준 유지 및 오류방지(하위특성: 고장허용성, 회복성, 성숙도, 준수성)
- 사용성: 사용자에 의해 이해, 학습, 선호(하위특성: 학습성, 운영성, 친밀성, 준수성)
- 효율성: 주어진 자원을 사용하여 요구된 성능 제공(하위특성: 반응시간, 자원특성, 준수성)
- 유지보수성: 운영 환경 및 요구사항, 기능적 사양에 따른 소프트웨어 수정, 개선(하위특성: 분석성, 변경성, 안정성, 테스트 용이성, 준수성)
- 이식성: 다양한 환경에서 운영 가능(하위특성: 적응성, 설치성, 공존성, 대체성, 준수성)
3-2. 제품소프트웨어 버전관리
현업에 쓰이는 다양한 버전 관리 도구별 특징
- CVS(Concurrent Versions System): 서버와 클라이언트로 구성. 다수의 인원이 동시에 범용적인 운영체제로 접근.
- SVN(Subversion): GNU의 버전 관리 시스템
- Git
빌드 자동화 도구(암기)
: 빌드란 소프트웨어를 생성, 테스트, 검사하여 배포하기 위한 모든 것. 소스코드 파일들을 소프트웨어로 변환하는 도구
- Ant
- 아파치 소프트웨어 재단 소유
- XML 기반의 빌드 스크립트 사용. 자유도와 유연성이 높다
- Maven
- Ant의 대안으로 개발.
- 자동으로 필요한 라이브러리 파일을 불러온다.
- Gradle
- 위 2개를 보완한 도구
- Task는 작업의 최소단위로 태스크 단위로 실행
- Groovy를 기반으로 하며 안드로이드 스튜디오의 공식 빌드 시스템.
- Jenkins
- 자바기반의 오픈소스. 가장 많이 활용
- 지속적 통합 서비스 제공
4. 애플리케이션 테스트 관리
4-1. 애플리케이션 테스트케이스 설계
테스트 케이스
: 특정한 프로그램의 일부분 또는 경로에 따라 수행하거나, 특정한 요구사항을 준수하는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서.
테스트 오라클
: 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동
- 참(True) 오라클
- 모든 입력 값에 대해 기대하는 결과 생성 -> 발생된 오류 모두 검출 가능
- 샘플링(Sampling) 오라클
- 특정한 몇 개의 입력 값에 대해서만 기대하는 결과 제공
- 휴리스틱(Heuristic) 오라클
- 샘플링 오라클 개선, 특정 입력 값에 대해 결과를 제공, 나머지 값들에 대해 휴리스틱(추정)으로 처리.
- 일관성 검사(Consistent) 오라클
- 애플리케이션 변경이 있을 때, 수행 전과 후의 결과 값이 동일한지 확인
테스트 레벨 종류(암기)
- 단위 테스트
- 구현된 모듈(함수, 서브루틴, 컴포넌트 등)의 기능 수행 여부를 판정
- 내부에 존재하는 논리적 오류를 검출할 수 있는 방안을 파악
- 통합 테스트
- 모듈 간의 인터페이스 연계를 검증하고, 모듈 간의 인터페이스 오류를 확인
- 모듈 간의 상호 작용 및 연계 동작 여부를 판정하는 방안을 파악
- 상향식, 하향식 테스트
- 시스템 테스트
- 단위, 통합 테스트 후 전체 시스템이 정상적으로 작동하는지 판정하는 기능 명세를 확인하는 방안을 파악
- 기능, 비기능 요구사항 테스트
- 인수 테스트
- 사용자가 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정
- 시스템이 예상대로 동작하고 있는지를 판정하는 방안을 파악
- 알파, 베타 테스트
테스트 시나리오
: 테스트 케이스의 동작 순서를 기술한 문서
작성 시 유의점(암기)
- 식별자 번호
- 순서 번호
- 테스트 데이터
- 테스트 케이스
- 예상 결과
- 확인
파레토(Pareto) 법칙(암기)
- 시스템의 20% 모듈이 전 자원의 80%를 소비
- 시스템의 20% 모듈이 실행시간의 80%를 소비
- 오류의 20%가 오류 수정 비용의 80%를 차지
- 사용도구의 20% 기능만이 도구 사용의 80%를 차지
소프트웨어 테스트의 유형
- 프로그램 실행 여부
- 정적 테스트
- 프로그램 실행 없이 소스 코드의 구조 분석, 논리적 검증
- 인스펙션
- 코드 검사
- 워크스루
- 프로그램 실행 없이 소스 코드의 구조 분석, 논리적 검증
- 동적 테스트
- 프로그램의 실행을 요구
- 화이트박스 테스트
- 조건 검사
- 기초 경로 검사
- 루프검사
- 데이터 흐름 검사
- 블랙박스 테스트
- 동치 분할 검사
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교 검사
- 화이트박스 테스트
- 프로그램의 실행을 요구
- 테스트에 대한 시각
- 검증
- 확인(암기)
- 형상 검사
- 구성 요소, 목록, 유지보수를 위한 모든 사항이 표현됐는지 검사
- 알파 검사
- 사용자가 개발자 앞에서 행하는 검사
- 통제된 환경에서 오류, 문제점들을 함께 확인
- 베타 검사
- 최종 사용자가 여러명의 사용자 앞에서 검사
- 실제 업무 가지고 사용자가 직접 테스트, 제어되지 않은 상태에서 검사
- 형상 검사
- 정적 테스트
클린 코드 작성 원칙(암기)
원칙 | 원칙 설명 |
가독성 | 이해하기 쉬운 용어 코드 작성 시 들여쓰기 기능 |
단순성 | 한 번에 한 가지 처리만 수행 클래스/메소드/함수를 최소 단위로 분리 |
의존성 | 영향도 최소화 코드의 변경이 다른 부분에 영향 없게 작성 |
중복성 | 중복된 코드 제거 공통된 코드 사용 |
추상화 | 클래스/메소드/함수에 대해 동일한 수준의 추상화 상세 내용은 하위 클래스/메소드/함수에서 구현 |
알고리즘 기법(암기)
기법 | 설명 |
분할정복(Divide and Conquer) | 주어진 문제의 입력을 분할하여 문제를 해결하는 방식 |
그리디(Greedy) | 가능한 해들 중에서 가장 좋은 해를 찾는 방식(욕심쟁이, 탐욕) |
동적계획(Dynamic Programming) | 작은부분 문제들을 먼저 해결, 최종적으로 주어진 문제 해결 |
백트래킹(Backtracking) | 해를 찾는 도중 해가 나올 가망이 없으면 되돌아가서 다시 해를 찾아간다 |
4-2. 애플리케이션 통합 테스트
결함 추이 분석
- 결함의 분포 분석: 모듈 또는 컴포넌트 결함의 수 측정
- 결함 추세 분석: 시간의 흐름에 따른 결함의 수 측정
- 결함 에이징 분석: 지속 시간을 측정
테스트 커버리지
: 테스트의 정확성과 신뢰성을 향상시키는 역할
- 기능 기반 커버리지
- 라인 커버리지
- 코드 커버리지
- 구문(Statement) 커버리지
- 조건(Condition) 커버리지
- 결정(Decision) 커버리지
- 변형 조건/결정(Modified Condition/Decsion) 커버리지: 2,3번 복합적으로 고려
테스트 자동화 도구 유형
- 정적 분석 도구(Static Analysis Tools)
- 테스트 실행 도구(Test Execution Tools)
- 성능 테스트 도구(performance Test Tools)
- 테스트 통제 도구(Test Control Tools)
- 테스트 장치(Test Harness)
- 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.
- 구성요소
- 테스트 드라이버
- 하위 모듈을 호출, 상향식 테스트
- 테스트 스텁
- 하향식 테스트
- 테스트 슈트
- 테스트 케이스
- 테스트 스크립트
- 자동화
- 목 오브젝트
- 테스트 드라이버
통합 테스트
- 하향식 통합(Top Down)
- 방식
- 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하며 테스트 깊이-우선 또는 너비-우선 방식
- 수행 단계
- 메인 제어 모듈: 작성된 프로그램, 하위 제어 모듈/컴포넌트: 스텁 개발
- 깊이-우선 또는 너비-우선 방식에 따라, 하위 모듈인 스텁이 한 번에 하나씩 실제 모듈로 대체
- 각 모듈 또는 컴포넌트 통합하면서 테스트 수행
- 테스트 완료 시 스텁이 실제 모듈 또는 컴포넌트로 작성 됨.
- 방식
- 상향식 통합(Bottom Up)
- 방식
- 최하위 모듈 또는 컴포넌트로부터 위쪽 방향으로 이동 및 테스트
- 수행 단계
- 최하위 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터(Cluster)로 결합
- 상위 모듈에서 데이터의 입출력 확인을 위한 더미 모듈인 드라이버를 작성
- 각 통합된 클러스터 단위를 테스트
- 테스트 완료 시 각 클러스터들은 프로그램의 위쪽으로 결합, 드라이버는 실제 모듈 또는 컴포넌트로 대체
- 방식
회귀 테스팅(Regression Testing)
: 통합 테스트가 완료된 후에 변경된 모듈이나 컴포넌트가 있다면 새로운 오류 여부를 확인하기 위해 수행할 수 있음
4-3. 애플리케이션 성능 개선
소스 코드 품질 분석 도구(암기)
: 코딩 스타일, 코딩 표준, 코드의 복잡도, 메모리 누수, 스레드의 결함 등을 발견하기 위하여 사용
- 정적 분석 도구
- pmd
- cppcheck
- SonarQube
- checkstyle
- 동적 분석 도구
- Avalanche(A 텐트)
- Valgrind(V 뒤집힘)
5. 인터페이스 구현
5-1. 인터페이스 설계 확인
외부 및 내부 모듈 연계 방법(EAI, ESB 연계 방법)
- EAI(Enterprise Application Intergration)
- 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해준다.
- EAI의 구축 유형
- Point-to-Point
- 미들웨어 없음
- 상대적 저렴
- 변경, 재사용 어려움
- Hub & Spoke
- 단일 접점이 허브 시스템을 통해 데이터 전송, 중앙 집중적 방식
- 모든 데이터 전송 보장
- 확장, 유지 보수 용이
- 허브 장애 시 전체 영향
- Message Bus
- 미들웨어(ex: 버스)로 처리
- 뛰어난 확정성, 대용량 처리 가능
- Hybrid
- 그룹 내는 2번 그룹 간은 3번 방식
- 필요한 경우 한 가지 방식으로 구현 가능
- 표준 통합 기술
- 데이터 병목 현상 최소화
- Point-to-Point
- ESB(Enterprise Service Bus)
- 서비스 중심으로 통합을 지향하는 아키텍처 또는 기술
인터페이스 구현을 위한 도구
- JSON(JavaScript Object Notation)
- AJAX
- XML
5-2. 인터페이스 기능 구현
데이터 통신 시 데이터 탈취 위협
- 데이터 통신 내역을 중간에서 감청하여 기밀성을 훼손할 수 있는 기법(스니핑 Sniffing)
- 도청할 수 있도록 중간에 설치되는 도구를 스니퍼(Sniffer)라고 한다.
- 주로 패킷 분석기 같은 툴을 통해 진행
네트워크 구간 보안 기능 적용 시 고려 사항(암기: 보안 기능 적용)
- IPSec AH
- IPSec ESP
- IPSec Transport
- SSL
- S-HTTP
5-3. 인터페이스 구현 검증
인터페이스 구현 검증도구(암기)
- xUnit: 다양한 언어를 지원하는 단위 테스트 프레임워크
- STAF: 서비스 호출, 컴포넌트 재사용 등
- FitNesse: 웹 기반 테스트 케이스 설계/실행/결과 확인 등 지원
- NTAF: Naver 테스트 자동화 프레임워크, 바로 위 2개를 통합
- Selenium: 다양한 브라우저 지언 및 개발언어 지원하는 웹 애플리케이션 테스트 프레임워크
- watir: Ruby 기반 웹 애플리케이션 테스트 프레임워크
인터페이스 오류 처리 방법(암기)
- 사용자 화면에서 오류를 인지하게 구현
- 인터페이스 오류 로그 생성
- 인터페이스 관련 테이블에 오류 사항 기록
'자격증 > 정보처리기사 인강 - 필기' 카테고리의 다른 글
제5과목 정보시스템 구축 관리 (0) | 2024.05.17 |
---|---|
제4과목 프로그래밍 언어 활용 (0) | 2024.05.17 |
제3과목 데이터베이스 구축 (0) | 2024.05.17 |
제1과목 소프트웨어 설계 (0) | 2024.04.16 |