자격증

[정보처리기사] 2과목 소프트웨어 개발 핵심정리

SeungbeomKim 2024. 2. 8. 16:02

자료구조의 분류

  • 선형: 배열, 선형리스트, 스택, 큐, 데크
  • 비선형: 트리, 그래프

 

스택

  • 리스트의 한쪽 끝으로만 자료 삽입, 삭제 작업 이루어짐 (LIFO)

 

스택 응용 분야

  • 인터럽트 처리
  • 수식 계산 및 수식 표기법
  • 서브루틴 호출 및 복귀주소 저장

 

스택의 삽입(Push)과 삭제(Pop)

  • push: 입력, pop: 출력

 

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

  • 무방향: n(n-1)/2, 방향: n(n-1)

 

트리

  • 정점(node)과 선분(branch)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

 

이진 트리의 운행법

 

수식의 표기법 (Infix -> Postfix)

 

수식의 표기법 (Infix -> Prefix)

 

수식의 표기법 (Postfix -> Infix)

 

삽입 정렬 ( 2 -> 1, 3 -> 2 -> 1)

 

선택 정렬 ( 1-2-3-4-5, 2-3-4-5, 3-4-5, ..)

 

버블 정렬 (1-2-3-4-5, 1-2-3-4 ..)

 

이분검색

  • 전제조건: 데이터 정렬, 비교 데이터 수가 절반으로 줄어듦, 탐색 효율이 좋다, 탐색 시간이 적게 소요

 

해싱함수

  • 제산법(K % minQ), 제곱법(K 제곱), 폴딩법(K 나눈 후 + or XOR), 숫자 분석법(고른 자리를 필요한 만큼 선택)

 

스키마 3계층

  • 외부 스키마: 논리적 구조 정의
  • 개념 스키마: 개체 간의 관계와 제약 조건, 접근 권한, 보안 및 무결성 규칙에 관한 명세 정의
  • 내부 스키마: 실제로 데이터베이스의 저장될 레코드의 형식(물리적 구조 정의)

 

빌드 자동화 도구

  • Ant:아파치
  • Maven: Ant 대안
  • Jenkins: java기반 오픈 소스 빌드 자동화 도구
  • Gradle: Groovy기반 오픈 소스의 빌드 자동화 도구

 

소프트웨어 패키징

  • 모듈별로 생성한 실행파일들을 묶어 배포용 설치 파일을 만드는 것, 사용자 중심

 

소프트웨어 패키징시 고려사항

  • 암호화 및 보안 고려, DRM(디지털 저작관 관리) 연동 고려

 

DRM의 구성요소

  • 클리어링 하우스: 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리
  • 콘텐츠 제공자: 콘텐츠를 제공하는 저작권자
  • 패키저: 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 암호화
  • 콘텐츠 분해자: 암호화된 콘텐츠를 유통하는 곳이나 사람
  • DRM 컨트롤러: 배포된 콘텐츠의 이용권한 통제

 

DRM의 기술 요소

  • 콘텐츠 암호화 및 키 관리, 콘텐츠 식별체계 표현, 라이선스 발급 및 관리, 정책 관리 기술, 크랙 방지 기술

 

소프트웨어 설치 메뉴얼

  • 설치 메뉴얼은 사용자를 기준으로 작성
  • 기본 사항: 소프트웨어 개요, 설치 관련 파일, 프로그램 삭제

 

형상관리(SCM)

  • 소프트웨어 변경사항 관리 (Git, CVS, SubVersion)

 

소프트웨어의 버전 등록 관련 주요 기능

  • 체크아웃: 저장소에서 파일 받아옴
  • 체크인: 저장소의 파일을 새로운 버전으로 갱신
  • 커밋: 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신 완료

 

파레토 법칙

  • 오류의 80%는 전체 모듈의 20% 내에서 발견

 

화이트박스 테스트

  • 원시 코드의 논리적인 모든 경로를 테스트, 제어 구조에 따라 논리적 경로 제어

 

화이트박스 테스트 종류

  • 조건검사, 루프검사, 데이터흐름검사, 기초경로검사(수행가능한 모든 경로)

 

블랙박스 테스트 종류

  • 동치분할검사, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사

 

단위 테스트

  • 모듈이나 컴포넌트에 초점을 맞춰 테스트

 

단위 테스트로 발견 가능한 오류

  • 원치 않은 결과, 탈출구가 없는 반복문, 틀린 계산 수식에 의한 잘못된 결과

 

인수 테스트

  • 알파 테스트: 사용자가 개발자 앞에서 테스트하는 기법
  • 베타 테스트: 사용자가 여러 명 사용자 앞에서 테스트

 

통합 테스트

  • 하향식: 상위 → 하위
  • 상향식: 하위 → 상위

 

테스트 드라이버

  • 하위 모듈 호출, 매개변수 전달 및 모듈 테스트 수행 후의 결과 도출, 상향식 통합 테스트에 사용

 

테스트 스텁

  • 시험용 모듈, 하향식 통합 테스트에 사용

 

테스트 오라클

  • 사전에 정의된 참값을 대입하여 비교

 

주요 최악의 시간 복잡도

  • O(1) (Push, Pop)
  • O(nlogn) (Heap Sort, Merge Sort)

 

클린 코드 작성 원칙

  • 가독성, 단순성, 의존성 배제, 중복 최소화, 추상화

 

외계인 코드

  • 유지 보수 작업이 어려운 코드

 

소스 코드 품질 분석 도구 - 정적 분석 도구

  • 하드웨어 또는 소프트웨어적인 방법으로 코드 분석이 가능

 

EAI 구축 유형

  • PtoP: 1:1
  • Hub & Spok
  • Message Bus: 애플리케이션 사이에 미들웨어를 둠
  • Hybrid: Hub & spok + Message Bus

 

JSON

  • Attribute-Value Paris 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

 

AJAX

  • 자바스크립트 등을 이용한 비동기 통신 기술
  • XML 데이터를 교환 및 제어

 

인터페이스 보안 기능 적용

  • 네트워크 트래픽에 대한 암호화 설정
  • IPSec, SSL, S-HTTP

 

tripware

  • 크래커가 침입하여 백도어를 만들어 놓거나, 설정파일을 변경했을 때 분석하는 데이터 무결성 검사 도구

 

인터페이스 구현 검증 도구

  • xUnit, STAF, FitNesse, NTAP, watir