[정보처리기사] 필수 암기 2

Happy Jiwon·2023년 2월 16일
2

정보처리기사

목록 보기
4/5

2과목 | 소프트웨어 개발

자료 구조의 분류

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

스택의 응용 분야

  • 함수 호출의 순서 제어
  • 인터럽트의 처리
  • 수식 계산 및 수식 표기법
  • 컴파일러를 이용한 언어 번역
  • 부 프로그램 호출 시 복귀 주소 저장
  • 서브루틴 호출 및 복귀 주소 저장

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

  • n개의 정점으로 구성
    무방향 그래프에서 최대 간선 수 : n(n-1)/2
    방향 그래프에서 최대 간선 수 : n(n-1)

트리

Degree, 차수 : 각 노드에서 뻗어나오는 가지의 수
단말 노드 Terminal Node : 자식이 하나도 없는 노드(디그리가 0인 노드)

이진 트리 운행법

Preorder : Root > Left > Right
Inorder : Left > Root > Right
Postorder : Left > Right > Root

퀵 정렬

  • 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법

삽입 정렬

  • 예를 들어 설명
    8,5,6,2,4를 삽입 정렬로 정렬
    1회전 | 5, 8, 6, 2, 4
    2회전 | 5, 6, 8, 2, 4
    3회전 | 2, 5, 6, 8, 4
    4회전 | 2, 4, 5, 6, 8

선택 정렬

n개의 레코드 중 최소값을 찾아 첫 번째 레코드 위치에 놓는다.
나머지 n-1개의 레코드 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는다.

버블 정렬

주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 위치를 서로 교환

힙 정렬

  • 전이진 트리 이용
  • 평균과 최악 모두 시간복잡도는 O(nlog2n)

2-Way 합병 정렬(Merge Sort)

  • 이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬
  • 평균과 최악 모두 시간복잡도는 O(nlog2n)

이분 검색(이진 검색)

  • 반드시 정렬된 파일이어야 검색 가능
  • 비교할수록 검색 대상의 데이터의 수는 절반으로 줄어든다.

주요 해싱 함수

  • 제산법(Division) 레코드 키를 해시표의 크기보다 큰 수 중에서 가장 작은 소수(Prime, Q)로 나눈 나머지를 홈 주소로 삼는 방식
  • 제곱법(Mid-Square)레코드 키 값을 제곱한 후 그 중간 부분의 값을 홈 주소로 삼는 방식
  • 폴딩법 레코드 키 값을 여러 부분으로 나눈 후 각 부분의 값을 더하거나 XOR한 값을 홈 주소로 삼는 방식
  • 숫자 분석법(Digit Analysis) 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 택하여 홈 주소로 삼는 방식

스키마 3계층

  • 외부 스키마 : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의
  • 개념 스키마 : 데이터베이스의 전체적이고 논리적 구조, 개체 간의 관계와 제약 조건을 나타내고, 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세 정의
  • 내부 스키마 : 물리적 저장장치의 입장에서 본 데이터베이스 구조로서, 실제로 데이터베이스에 저장될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

빌드 자동화 도구

  • Ant
    아파치 소프트웨어 재단에서 개발한 소프트웨어, 자바 프로젝트의 공식적인 빌드 도구로 사용
  • Maven
    Ant의 대안으로 개발한 소프트웨어
  • Jenkins
    Java 기반의 오픈 소스 형태, 가장 많이 사용되는 빌드 자동화 도구
  • Gradle
    Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구, 안드로이드 앱 개발 환경에서 사용

소프트웨어 패키징

  • 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것을 말함
  • 개발자가 아닌 사용자 중심으로 진행

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

  • 사용자에게 배포되는 소프트웨어이므로, 내부 콘텐츠에 대한 암호화 및 보안 고려
  • 다른 콘텐츠 및 단말기 간 DRM(디지털 저작권 관리) 연동을 한다.

DRM의 구성요소

  • 클리어링 하우스
    저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳
  • 콘텐츠 제공자
    콘텐츠를 제공하는 저작권자
  • 패키저
    콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램
  • 콘텐츠 분배자
    암호화된 콘텐츠를 유통하는 곳이나 사람
  • DRM 컨트롤러
    배포된 콘텐츠의 이용 권한을 통제하는 프로그램
  • 보안 컨테이너
    콘텐츠의 원본을 안전하게 유통하기 위한 전자적 보안 장치

DRM의 기술 요소

  • 암호화 : 콘텐츠 및 라이선스 암호화 기술
  • 키관리 : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
  • 식별 기술 : 콘텐츠에 대한 식별 체계 표현 기술
  • 정책 관리 : 라이선스 발급 및 사용자에 대한 정책 표현 및 관리 기술
  • 크랙 방지 : 크랙에 의한 콘텐츠 사용 방지 기술

형상 관리 SCM

  • 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동

형상 관리 기능

  • 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여 하고, 계층 구조로 구분하여 수정 및 추적이 용이 하도록 하는 작업
  • 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리, 이를 위해 특정 절차와 도구를 결합시키는 작업
  • 형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
  • 형상 검사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  • 형상 기록 : 형상의 식별, 통제, 감사 작업의 결과를 기록/관리하고 보고서 작성하는 작업

⭐️ RCS | Revision Control System

  • 여러 개발자가 프로젝트를 수행할 때 시간에 따른 파일 변화 과정을 관리하는 소프트웨어 버전 관리 도구
  • 소스 파일을 동시에 수정하는 것을 방지
  • 다른 방향으로 진행된 개발 결과를 합치거나, 변경 내용 추적할 수 있음

확인(Validation) vs 검증(Verification)

확인 : 사용자의 입장에서 요구사항에 맞게 구현되었는지 확인
검증 : 개발자의 입장에서 명세서에 맞게 만들어졌는지 점검

파레토 법칙

소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙

⭐️ 화이트 박스 테스트

  • 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 게이스를 설계하는 방법
  • 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행
  • 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어

⭐️ 화이트박스 vs 블랙박스 테스트 종류

  • 화이트 박스 테스트 종류
    기초 경로 검사, 제어 구조 검사(조건 검사(Condition Testing), 루프 검사(Loop Testing), 데이터 흐름 검사(Data Flow Testing))
    🖐🏻 기초 경로 검사 Base Path : 수행 가능한 모든 경로를 의미함
  • 블랙박스 테스트 종류
    동치 분할 검사, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사

단위 테스트

  • 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것
  • 발견 가능 오류
    알고리즘 오류에 따른 원치 않는 결과, 탈출구가 없는 반복문 사용, 틀린 계산 수식에 의한 잘못된 결과

통합 테스트

  • 하향식 통합 테스트
    프로그램 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
    깊이 우선 통합, 넓이 우선 통합 사용
    테스트 스텁 사용
  • 상향식 통합 테스트
    프로그램 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
    테스트 드라이버 사용

테스트 드라이버

  • 테스트 대상의 하위 모듈을 호출하는 도구
  • 매개변수를 전달, 모듈 테스트 수행 후의 결과를 도출함
  • 상위 모듈 없이 하위 모듈이 있는 경우 하위 모듈을 구동한다.
  • 상향식 통합 테스트에 사용

테스트 스텁

  • 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
  • 일시적으로 필요한 조건만을 가지고 있는 시험용 모듈
  • 상위 모듈은 있지만 하위 모듈이 없는 경우 하위 모듈을 대체
  • 하향식 통합 테스트에 사용

테스트 케이스

  • 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값
  • 목표와 방법을 설정한 후 작성해야 함

테스트 오라클

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

주요 최악의 시간 복잡도

  • O(1)
    입력값에 관계 없이 일정하게 문제 해결에 하나의 단계만을 거침
    스택의 삽입 삭제
  • O(nlog2n)
    문제 해결에 필요한 단계가 n(log2n)번 만큼 수행
    힙 정렬, 2-Way합병 정렬

순환 복잡도 계산

  • 화살표 - 노드 수 + 2
  • 내부 영역 + 외부 영역

클린 코드 작성 원칙

  • 가독성
    누구든지 코드를 쉽게 읽을 수 있도록 작성
  • 단순성
    코드를 간단하게 작성
  • 의존성 배제
    코드가 다른 모듈에 미치는 영향을 최소화
  • 중복성 최소화
    코드의 중복을 최소화
  • 추상화
    상위 클래스/메소드/함수 에서는 간략하게 애플리케이션의 특성
    하위 클래스/메소드/함수 에서는 상세내용 구현

Alien Code

아주 오래되거나 참고문서 또는 개발자가 없어 유지 보수 작업이 어려운 코드

⭐️ 소스코드 품질 분석 도구 _ 정적 분석 도구

종류 : pmd, checkstyle, cppcheck

  • 자료의 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있음
  • 실행 시키지 않고 표준이나 코딩 스타일, 결함 등을 확인

⭐️ EAI 구축 유형

  • Point-to-Point
    애플리케이션을 1:1로 연결
  • Hub & Spoke
    단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
  • Messages Bus(ESB 방식)
    애플리케이션 사이에 미들웨어를 두어 처리하는 방식
  • Hybrid
    Hub & Spoke 와 Messages Bus 의 혼합 방식

IPSec(IP Security)

  • 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
  • 암호화와 복호화가 모두 가능한 양방향 암호 방식
profile
공부가 조은 안드로이드 개발자

0개의 댓글