자료 구조
- 선형 : 연결 리스트, 스택, 큐, 테크
- 비선형 : 트리, 그래프
트리
- 포화 이진 트리 : 모든 레벨에서 노드가 꽉 채워진 트리
- 완전 이진 트리 : 마지막 레벨을 제외하고 노드가 채워진 트리
- 편향 이진 트리 : 노드의 왼쪽이나 오른쪽 한 곳만 노드가 존재하는 트리
- 이진 탐색 : 중복된 노드가 없으며, 특정 노드의 왼쪽 서브 트리에 해당 노드 값보다 작은 값, 오른쪽 서브트리에는 해당 노드 값보다 큰 값으로 구성되는 이진 트리
파티션의 장점
- 성능 형상
- 가용성 향상
- 백업 가능
- 경합 감소
클러스터 설계 시 고려사항
- 검색 효율은 높여 주나 입력, 수정, 삭제 시는 부하가 증가함을 고려한다.
- UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 칼럼이면 검토 대상이다.
- 수정이 자주 발생하지 않는 칼럼은 검토대상에 포함된다.
- 조인이 많아 문제가 발생되는 경우는 다중 테이블 클러스터링을 고려한다.
인덱스 설계 시 고려사항
- 지나치게 많은 인덱스는 오버헤드(Overhead)로 작용한다.
- 모든 상황에서 인덱스가 좋은 효율을 지니지 않으므로 Trade-Off를 고려해야 한다. (접근 형태와 분석을 토대로 이상적인 컬럼 구성과 순서를 결정)
- 인덱스는 추가적인 저장 공간이 필요함으로 고려해야한다.
- 넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킬 수 있음으로 유의해야 한다.
PL/SQL 구성
- 선언부
- 실행부
- 예외부
PL/SQL 저장형 객체 활용
- 저장된 프로시저
- 함수
- 패키지
- 트리거
논리 데이터 저장소 구조
- 개체(Entity)
- 속성(Attributes)
- 관계(Relationship)
물리 데이터 저장소 모델 변환 절차
- 단위 개체를 테이블로 변환
- 속성을 칼럼으로 변환
- UID를 기본 키로 변환
- 관계를 외래 키로 변환
- 칼럼 유형과 길의 정의
- 반정규화 수행
트랜잭션 인터페이스의 특징
- 데이터 접근 방법 및 인터페이스를 절차적을 명세한다.
- 트랜잭션 인터페이스는 주로 프로그래밍 언어로 구현된다.
- 트랜잭션 인터페이스는 ACID 원칙을 기반으로 설계된다.
- JDBC, ODBC가 대표적인 사례이다.
단위 모듈 구현의 원리
- 정보은닉
- 분할과 정복
- 추상화
- 모듈 독립성
테스트 커버리지의 유형
구문 커버리지
- 프로그램 내 모든 문장을 적어도 한 번 이상 실행하는 것을 기준으로 수행하는 테스트 커버리지
- 조건문 결과와 관계없이 구문 실행 개수로 계산
결정 커버리지
- 결정 조건 내 전체 조건식이 최소한 참/거짓 한 번의 값을 가지도록 측정하는 테스트 커버리지
조건 커버리지
- 전체 조건식 결과와 관계없이 각 개별 조건식이 참/거짓 한번 모두 갖도록 개별 조건식을 조합하는 테스트 커버리지
조건-결정
- 전체 조건식이 참/거짓 한 번씩 가지면서, 개별 조건식이 참/거짓 모두 한 번씩 갖도록 조합하는 테스트 커버리지
변경조건-결정
다중 조건 커버리지
협업 도구
- Google Drive
- Trello
- Evernote
형상관리 도구
- CVS
- SVN
- GIT
DRM의 요소
DRM 콘텐츠
- 서비스하고자 하는 암호화된 콘텐츠, 콘텐츠와 관련된 메타데이터, 콘텐츠 사용정보를 패키징하여 구성된 콘텐츠
패키저
- 암호화된 콘텐츠, 콘텐츠 관련 메타 데이터, 클리어링 하우스에서 부여받은 콘텐츠 사용정보를 암호화한 콘텐츠로 변환하는 도구
클러링 하우스
DRM 컨트롤러
- 배포된 디지털 콘텐츠의 이용 권한을 통제
보안 컨트롤러
- 원본 콘텐츠를 안전하게 유통하기 위한 전자적 보안 장치
DRM의 제어기술
- 접속 제어
- 사용 제어
- 내용 제어
제품 소프트웨어 사용자 매뉴얼 작성 프로세스
- 작성 지침 정의
- 사용자 매뉴얼 구성요소 정의
- 구성 요소별 내용 작성
- 사용자 매뉴얼 검토
ISO/IEC 25000
: SQuaRE로도 불리며, ISO/IEC 9126과 ISO/IEC 14598, ISO/IEC 12119를 통합하고 ISO/IEC 15288를 참고한 소프트웨어 제품 품질에 대한 통합적인 국제 표준이다.
ISO/IEC 25000 구성요소
- 품질 관리 - 2500n
- 품질 모델 - 2501n
- 품질 측정
- 품질 요구 - 2503n
- 품질 평가 - 2504n
ISO/IEC 14598 품질 특성
- 반복성
- 재현성
- 공정성
- 객관성
ISO/IEC 9126의 품질 특성
- 기능성
- 신뢰성
- 사용성
- 효율성
- 유지보수성
- 이식성
빌드 자동화 구성요소
CI(Continuous Intergration) 서버
- 빌드 프로세스를 관리하는 서버
- Jenkins, Hudson
SCM(Source Code Management)
- 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템
빌드 도구
- 컴파일, 테스트, 정적 분석 등을 통해 동작 가능한 소프트웨어 생성
테스트 도구
테스트 커버리지 도구
- 테스트 코드가 대상 소스 코드에 대해 어느 정도 커버하는지 분석하는 도구
인스펙션 도구
테스트 오라클 종류
- 참 오라클
- 샘플링 오라클
- 휴리스틱 오라클
- 일관성 검사 오라클
테스트 레벨 종류
단위 테스트
- 사용자 요구사항에 대한 단위 모듈, 서브 루틴 등을 테스트하는 단계
- 인터페이스 테스트
통합 테스트
- 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트하는 단계
- 빅뱅 테스트, 상향식 테스트, 하향식 테스트
시스템 테스트
- 개발 프로젝트 차원에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트하는 단계
인수 테스트
- 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
테스트 장치 구성요소
- 드라이버
- 스텁
- 슈트
- 케이스
- 스크립트
- 목 오브젝트
소프트웨어 테스트 원리
- 결함이 존재
- 완벽한 테스팅 불가능
- 초기에 테스팅 시작
- 결함 집중
- 살충제 패러독스
- 정황에 의존
- 오류-부재의 궤변
결함 관리 프로세스
- 에러 발견
- 에러 등록
- 에러 분석
- 결함 확정
- 결함 할당
- 결함 조치
- 결함 조치 검토 및 승인
테스트 장치
- 테스트 스텁(Test Stub) : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요
- 테스트 슈트(Test Suites) : 테스트 대상 컴포넌트나 모듈, 시스템에 사용 되는 테스트 케이스의 집합
- 테스트 케이스(Test Case) : 입력 값, 실행 조건, 기대 결과 등의 집합
알고리즘 기법
분할과 정복(Divide & Conquer)
- 문제를 나눌 수 없을 때까지 나누고, 각각을 풀면서 다시 병합하여 문제의 답을 얻는 알고리즘
동적 계획법(Dynamic Programming)
- 어떤 문제를 풀기 위해 그 문제를 더 작은 문제의 연장선으로 생각하고, 과거에 구한 해를 활용하는 방식의 알고리즘
탐욕 법(Greedy)
- 결정을 해야 할 때마다 그 순간에 가장 좋다고 생각되는 것을 해답으로 선택함으로써 최종적인 해답에 도달하는 방식의 알고리즘
백트래킹(Back Tracking)
- 어떤 노드의 유망성 점검 후, 유망하지 않으면 그 노드의 부모 노드로 되돌아간 후 다른 자손 노드를 검색하는 알고리즘
시간 복잡도
- O(1) : 상수형 복잡도, 자료 크기 무관하게 항상 같은 속도로 작동
- O(logn) : 로그형 복잡도, 문제를 해결하기 위한 단계의 수가 log2n번만큼의 수행 시간을 가짐
- O(n) : 선형 복잡도, 입력 자료를 차례로 하나씩 모두 처리
- O(nlogn) : 선형 로그형 복잡도, 문제를 해결하기 위한 단계의 수가 nlog2n번만큼의 수행시간을 가짐
배드 코드 유형
- 오염
- 문서 부족
- 의미 없는 이름
- 높은 결합도
- 아키텍처 침식
클린 코드 유형
- 의미 있는 이름
- 간결한 주석
- 보기 좋은 배치
- 작은 함수
- 읽기 쉬운 제어 흐름
- 오류 처리
'Certificate > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 공부 방법 및 합격 후기 | 요점정리 PDF 공유 (1479) | 2021.01.04 |
---|---|
정보시스템 구축 관리 (0) | 2021.01.04 |
프로그래밍 언어 (0) | 2021.01.04 |
데이터베이스 구축 언어 (0) | 2021.01.04 |
소프트웨어 설계 (0) | 2021.01.04 |