Certificate/정보처리기사

소프트웨어 개발

Dev다D 2021. 1. 4. 21:08
반응형

자료 구조

- 선형 : 연결 리스트, 스택, 큐, 테크

- 비선형 : 트리, 그래프

트리

- 포화 이진 트리 : 모든 레벨에서 노드가 꽉 채워진 트리

- 완전 이진 트리 : 마지막 레벨을 제외하고 노드가 채워진 트리

- 편향 이진 트리 : 노드의 왼쪽이나 오른쪽 한 곳만 노드가 존재하는 트리

- 이진 탐색 : 중복된 노드가 없으며, 특정 노드의 왼쪽 서브 트리에 해당 노드 값보다 작은 값, 오른쪽 서브트리에는 해당 노드 값보다 큰 값으로 구성되는 이진 트리

파티션의 장점

- 성능 형상

- 가용성 향상

- 백업 가능

- 경합 감소

클러스터 설계 시 고려사항

- 검색 효율은 높여 주나 입력, 수정, 삭제 시는 부하가 증가함을 고려한다.

- 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번만큼의 수행시간을 가짐

배드 코드 유형

- 오염

- 문서 부족

- 의미 없는 이름

- 높은 결합도

- 아키텍처 침식

클린 코드 유형

- 의미 있는 이름

- 간결한 주석

- 보기 좋은 배치

- 작은 함수

- 읽기 쉬운 제어 흐름

- 오류 처리

반응형