자격증 ⁺₊

정보처리기사 필기 2과목 정리 - 소프트웨어 개발

by ₊⁺우산이끼⁺₊ 2024. 5. 21.
반응형

스택(Stack): LIFO(Last In First Out) 후입선출
큐(Queue): FIFO(First In First Out) 선입선출

그래프의 최대 간선 수(무방향/방향)

트리

단말 노드(Terminal Node) == Leaf Node: 가지가 없는 노드
차수(Degree, 디그리): 노드에서 뻗어나온 가지의 수
트리의 차수(Degree): 노드의 디그리 중 가장 많은 수
Depth: Root Node부터 Level 1

트리 순회 순서(전위/중위/후위)

 

테스트는 오류 발견, 디버깅은 오류 추적 및 수정

빌드 도구: Ant, Maven, Gradle

해싱함수

제산법(Division)
제곱법(Mid-Square)
폴딩법(Folding)
기수 변환법(Radix)
대수적 코딩법(Algebraic Coding)
숫자 분석법(Digit Analysis, 계수 분석법)
무작위법(Random)

디지털 저작권 관리(DRM; Digital Right Management)

구성요소
- 클리어링 하우스(Clearing House)
- 콘텐츠 제공자(Contents Provider)
- 패키저(Packager)
- 콘텐츠 분배자(Contents Distributor)
- 콘텐츠 소비자(Customer)
- DRM 컨트롤러(DRM Controller)
- 보안 컨테이너(Security Container)

기술 요소
- 암호화(Encryption)
- 키 관리(Key Management)
- 암호화 파일 생성(Packager)
- 식별 기술(Identification)
- 저작권 표현(Right Expression)
- 정책 관리(Policy Management)
- 크랙 방지(Tamper Resistance)
- 인증(Authentication)

형상 관리(SCM; Software Configuration Management)

: 소프트웨어의 변경 사항을 관리하기 위해 개발된 활동

기능
- 형상 식별
- 버전 제어
- 형상 통제(변경 관리)
- 형상 감사
- 형상 기록(상태 보고)

CVS

Subversion
- 클라이언트/서버 구조. 서버(저장소)에 최신 버전의 파일과 변경 내역 저장
- 모든 개발 작업은 trunk 디렉터리에서 수행, 추가 작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업 완료 후 병합.
- Commit할 때마다 Revision이 1씩 증가

Git
- 분산 버전 관리 시스템
- 로컬 저장소: 실제 개발을 진행하는 장소
- 원격 저장소: 여러 사람들의 협업을 위해 버전을 공동으로 관리하는 곳
- 파일 변화를 스냅샷(Snapshot)으로 저장

테스트

화이트박스 테스트 블랙박스 테스트
원시 코드의 논리적인 모든 경로를 테스트 각 기능이 완전히 작동되는 것을 입증하는 테스트
기초 경로 검사(Base Path Testing)
제어 구조 검사(Control Structure Testing)
동치 분할 검사(Equivalence Partitioning Testing)
경계값 분석(Boundary Value Analysis)
원인-효과 그래프 검사(Cause-Effect Graphing Testing)
오류 예측 검사(Error Guessing)
비교 검사(Comparison Testing)

통합 테스트: 하향식, 상향식 통합 테스트

상향식 하향식
하위 모듈에서 상위 모듈 방향으로 통합
하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster) 필요
상위 모듈에서 하위 모듈로 통합
깊이 우선 통합법, 넓이 우선 통합법 사용
초기부터 사용자에게 시스템 구조를 보여줌.

인수 테스트: 알파, 베타 테스트

단위 테스트: CppUnit, Junit, HttpUnit

테스트 드라이버 테스트 스텁
상향식 테스트
대상의 하위 모듈 호출
매개 변수를 전달해 모듈 테스트 수행 후의 결과를 도출
하향식 테스트
제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
일시적으로 필요한 조건만을 가지고 있는 시험용 모듈

테스트 오라클

참(True) 오라클 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공
샘플링(Sampling) 오라클 특정 몇몇 테스트 케이스의 입력 값에 대해서만 기대하는 결과를 제공
추정(Heuristic) 오라클 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 값들에게 대해서는 추정으로 처리
일관성 검사(Consistent) 오라클 변경이 있을 때 테스트 케이스 수행 전과 후의 결과 값이 동일한지 확인

소스 코드 품질 분석 도구

정적 분석 도구: pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등
동적 분석 도구: Avalanche, Valgrind 등

클린코드: 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화

EAI (Enterprise Application Integration)

:기업 내 각종 애플리케이션 및 플랫폼 간의 상호 연동을 가능하게 해주는 솔루션

- Point-to-Point: 애플리케이션을 1:1로 연결. 변경 및 재사용 어려움.
- Hub & Spoke: 중앙 집중형 방식,. 확장 및 유지 보수 용이
- Message Bus(ESB 방식): 애플리케이션 사이에 미들웨어. 대용량 처리 가능
- Hybrid: Hub & Spoke + Message Bus. 데이터 병목 현상 최소화

반응형

댓글