[정보처리기사] 실기 합격 후기 및 정리본

슈퍼만쓰·2022년 1월 7일
4

자격증

목록 보기
1/2
post-thumbnail

서론


개발자로서 일을 하기 위해 기사를 따야하나? 많은 고민을 했다. 필기는 학교다닐 때 땄지만, 4학년 2학기 때 바로 취업을 했기 때문에 실기를 치지 않은 상태였다. 그리고 퇴근하고 실기 공부를 할 바에는 차라리 기술 스터디를 하는 게 낫지 않냐는 생각도 많았다.

그러나, 시간이 갈 수록 이론이 기술 못지 않게 중요하다는 것을 깨달았고 1개월 남은 시점부터 공부를 하기 시작했다.


특징
정보처리기사 실기는 공부한 경험에 의하면 절대 난이도가 높고 깊이 있는 문제라는 생각은 들지 않았다. 다만 문제에 대격변이 있었던 2020년 1회차 이래로 합격률이 굉장히 저조한데, 이는 기출문제가 없고, 넓고 방대한 범위 때문이라고 생각한다.





본론


1. 공부 방법

1-1. 교재 + 기출

책은 '수제비 정보처리기사 실기 2020'을 봤다. 학교 다니면서 당연히 딸 줄 알고 미리 샀던 책... 2020년 버전임에도 새 책을 사지 않은 이유는 첫 째로 어차피 이론 공부가 목적이지 자격증이 목표가 아니었고 둘 째는 어차피 시험이 다 개편되어 기출문제도 없었기 때문이다.


1-2. 공부 시간

평일은 출근을 해야했기 때문에 하루 평균 0~4시간 정도 책을 읽었다. 첫 2주는 문제는 거의 안 풀었고, 문제라고 하면 기출이 5회분 정도가 있었던 걸로 기억하는데 그건 틈틈히 풀었다. 주말에는 못해도 4시간은 봤던 것으로 기억하고 시험 전날은 밤을 샜다.


1-3. 전략

아무리 자격증 목표가 아니었다고 하지만 공부한 결과를 결과로 받으면 좋으니까 나름의 전략은 세웠다. 자격증만 놓고 본다면, 공부 시간만큼 전략도 중요하기 때문에 나름 머리를 굴렸다.

2년 간 출제 빈도가 높은 부분을 위주로 학습을 했고, 무작정 외우는 것보다 이해를 기반으로 반복하며 읽고 잘 안 외워지는 부분만 따로 정리해서 30분 정도 일찍 출근해서 보는 식으로 했다.



2. 정리본

단원 별로 구분하였으며, 단원 옆 괄호의 숫자는 21년 2회차까지의 출제 빈도를 기입하였다.


2-1. 요구사항 확인 (4)

  1. 유스케이스 (Usecase)

    • 사용자 입장에서 바라본 시스템의 기능
  2. 유스케이스 다이어그램

    • 기능적 요구사항을 유스케이스로 표현하고 액터와 시스템의 관계를 표현한 다이어그램
  3. 소프트웨어 아키텍처

    • 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중 외부에 드러나는 특성. 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체.
  4. 인터페이스 (Interface)

    • 관련이 없는 것들이 연결되기 위한 디바이스나 시스템
  5. 프레임워크

    • 소프트웨어 설계와 구현을 용이하게 클래스들을 제공하는 틀
  6. 프로토콜 (protocol)

    • 시스템 간의 데이터 교환을 원활히 하기 위한 일련의 통신규약
  7. 배치 작업

    • 일련의 작업을 하나의 작업 단위로 묶어서 처리하는 작업
  8. 백본망 (backbone network)

    • 각기 다른 네트워크 망 간에 정보를 교환하기 위한 경로를 제공하는 망
  9. 라우터 (Router)

    • 3계층 데이터 패킷을 발신지에서 목적지까지 전달하기 위해 최적의 경로를 지정하는 장치
  10. 스위치

    • 2계층 출발지에 들어온 데이터 프레임을 목적지 MAC 주소 기반으로 전달하는 네트워크 장비
  11. 게이트웨이 (3계층)

    • 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간 통신을 가능하게 하는 장비
  12. 미들웨어

    • 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 한경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
  13. 트랜잭션

    • 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
  14. 기능적 요구사항

    • 시스템이 제공하는 기능, 서비스에 대한 요구사항
    • 기능성 / 완전성 / 일관성
  15. 비기능적 요구사항

    • 시스템 기능 이외의 사항, 구축에 대한 제약사항에 관한 요구사항
    • 신뢰성 / 사용성 / 효율성 / 유지보수성 / 이식성
  16. 요구사항 확인 기법

    • 동료검토 (peer review): 요구사항 명세서 작성자가 이해 관계자들에게 설명 (2~3명)
    • 워크 스루 (walk through): 회의 전에 사전검토 후 짧은 시간 동안 회의 진행
    • 인스펙션 (inspection): 저작자 외의 다른 전문가나 팀이 검사하여 오류를 찾음
  17. UML (unified modeling language)

    • 객체지향 소프트웨어 개발과정에서 사용되는 범용 모델링 언어
  18. 상호 운용성

    • 다른 목적을 지닌 시스템들이 효과적으로 운영 될 수 있는 시스템의 능력
  19. 델파이 기법

    • 전문가의 경험적 지식을 통해 미래 예측을 위한 기법

2-2. 데이터 입출력 구현 (5)

  1. 쿼리 성능 개선

    • DB에서 프로시저에 있는 SQL 실행 계획을 관리하여 효율적으로 원하는 결과를 얻도록 프로시저를 수정하는 작업
  2. 논리 데이터 모델링 특성

    • 정규화
    • 포용성
    • 완전성
    • 독립성
  3. 논리 데이터 모델링 속성

    • 개체
    • 관계
    • 속성
  4. 프로시저 (Procedure)

    • 특정한 로직을 처리하기만 하고 결과값을 반환하지 않는 서브 프로그램
    • DB 프로시저: 절차형 sql을 활용하여 특정 기능을 수행할 수 있는 트랜잭션 언어
  5. APM (application performance monitoring)

    • 안정적인 시스템 운영을 위해 장애진단 등을 목적으로 하는 성능 모니터링 도구
  6. E-R 모델

    • 현실 세계에 존재하는 데이터와 그들의 관계를 사람이 이해할 수 있는 형태로 표현하는 모델
  7. 관계형 DB에서의 정규화 (Normalization)

    • 중복을 최소화하여 데이터를 구조화하는 프로세스
  8. 이상현상 (Anomaly)

    • 데이터 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상 (삽입, 삭제, 갱신)
    • 삽입: 정보 저장 시 불필요한 세부정보를 입력해야 하는 경우
    • 삭제: 원치 않는 다른 정보가 같이 삭제되는 경우
    • 갱신: 중복 데이터 중 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우
  9. 릴레이션

    • 행과 열로 구성된 테이블
  10. 반정규화

    • 시스템 성능을 향상, 개발 및 운영의 편의성 증대를 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
  11. 참조무결성 제약조건

    • 릴레이션 - 릴레이션 사이의 참조 일관성을 보장하기 위한 조건
    • 두 릴레이션의 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야 한다.
    • 제한 (Restricted): 참조 무결성에 위배되면 연산을 거절한다.
    • 연쇄 (Cascade): 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 튜플들도 함께 삭제한다.
    • 널 값 (Nullify): 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 튜플들의 외래키에 NULL 을 넣는다. 만약 외래키 어트리뷰트 속성이 NOT NULL 이면 연산을 거절한다.
  12. 튜플

    • 관계형 DB의 행 (Row)
  13. 카디널리티 (Cardinality)

    • 튜플 (Row)의 개수
  14. View 속성

    • REPLACE
    • FORCE
    • NOFORCE
  15. 데이터 정의어 (DDL)

    • 데이터를 정의하는 언어
    • 테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어
  16. 데이터 조작어 (Data Manipulation Language)

    • DB에 저장된 자료를 입력, 수정, 삭제, 조회하는 언어
    • SELECT, INSERT, UPDATE, DELETE
  17. 클러스터 (Cluster)

    • 대상이 되는 범위의 요소를 몇 개 모은 단위체
    • UNION, DISTINCT, ORDER BY, GROUP BY가 빈번하면 검토 대상이다.
  18. 파티셔닝의 장점

    • 성능 향상
    • 가용성 향상
    • 백업 가능
    • 경합 감소
  19. 파티션의 종류

    • 레인지: 연속적인 숫자나 날짜를 기준으로 나눈다.
    • 해시: 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
    • 리스트: 명시적 제어가 가능한 파티셔닝 기법
    • 컴포지트: 범위 분할 후, 해시 함수를 적용하여 재분할 하는 파티셔닝
  20. 디스크 스트라이핑 (Disk Striping)

    • 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용하는 기술
  21. 프로시저 (Procedure)

    • SQL을 통해 생성된 데이터를 조작하는 프로그램
    • DB 내부에 저장, 일정한 조건이 되면 자동으로 수행
  22. PL / SQL

    • 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어
  23. 쿼리 성능 개선

    • DB에서 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수행하는 작업
  24. 옵티마이저 (Optimizer)

    • SQL을 빠르고 효율적으로 수행하기 위해 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진
    • RBO (rule based optimizer): 통계 정보가 없는 상태에서 사전 등록 된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저
    • CBO (cost based optimizer): 통계 정보로부터 모든 접근 경로를 고려한 질의실행 게획을 선택하는 옵티마이저
  25. 힌트
    - 옵티마이저가 항상 최적의 실행경로를 생성할 수 없으므로, 사전에 정보를 주어 SQL 처리를 빠르게 하기 위한 문법
    힌트 문법

  26. 슈퍼 타입 / 서브 타입 테이블

    • 슈퍼 타입: 모든 서브 타입으로 상속되는 공통 속성
    • 서브 타입: 개체의 전체 집합에서 일부만 모아놓은 부분 속성
  27. DBMS_OUTPUT

    • 메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스를 제공하는 패키지
  28. DBMS_OUTPUT 패키지

    • SHOW ERRORS
    • SET SERVEROUTPUT ON
  29. 데이터모델의 구성요소

    • 구조: 논리적으로 표현된 개체들 간의 관계를 표시
    • 연산: DB에 저장된 실제 데이터를 처리하는 방법을 표시
    • 제약조건: DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 표시

2-3. 통합 구현 (7)

  1. 연계 메커니즘

    • 응용 s/w와 연계 대상 모듈 간 데이터 연계 시 요구사항을 고려한 연계 방법과 주기를 설계하기 위한 메커니즘
  2. 개체 정의서

    • 개념 모델링 단계에서 도출한 개체의 타입과 속성 식별자 등의 정보를 개괄적으로 명세한 정의서
  3. 테이블 정의서

    • 논리 및 물리 모델링 과정 설계 산출물, 테이블을 구성하는 컬럼 특성, 인덱스, 업무 규칙을 문서화한 것
  4. 연계 방식

    • 직접 연계
      - DB Link: 수신 시스템에서 DB 링크 생성, 송신 시스템에서 DB 링크 참조

      • DB Connection: 커넥션 풀을 생성하고 그것을 이용해 연결
      • API / Open API: 송신 시스템의 DB 데이터를 읽어서 제공
      • JDBC: JDBC 드라이버를 이용하여 송신 시스템 DB와 연결
      • Hyper Link: 현재 페이지에서 다른 부분으로 가거나 전혀 다른 페이지로 이동
    • 간접 연계
      - EAI: (Enterprise Application Integration): 기업 내 이기종 간에 데이터를 전달, 통합하는 솔루션

      • ESB: Enterprise Service Bus: 기업 외부의 이기종 간에 시스템을 하나로 관리 운영할 수 있도록 서비스 중심의 통합을 위한 솔루션
      • 소켓: 소켓을 생성하여 포트 할당, 클라이언트 요청을 연결하여 통신
  5. 웹 서비스 방식

    • 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술
  6. WSDL

    • 웹 서비스에 대한 상세 정보를 기술한 파일
    • 웹 서비스 서식, 프로토콜 등을 표준적인 방법으로 기술, 게시하기 위한 언어
    • XML로 작성되며 UDDI의 기초가 된다.
  7. SOAP

    • XML 기반의 메세지를 네트워크 상태에서 교환하는 프로토콜 (HTTP, HTTPS, SMTP)
    • header에 Envelope가 있다.
  8. 트리거

    • 특정 테이블에 변경 이벤트 발생 시, DBMS에서 자동적으로 실행 되도록 구현된 프로그램.
  9. UDDI (Universal Description, Discovery and Integration)

    • 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근이 가능한 레지스트리
  10. REST (Representational State Transfer)

    • HTTP URL을 통해 자원을 명시하고 HTTP 메소드 (POST, GET, PUT, DELETE) 를 통해 명령을 적용하는 것
  11. 테스트 케이스

    • 명세 기반 테스트의 설계 산출물로 (입력값, 실행조건, 기대 결과)로 구성된 테스트 항목의 명세서
  12. AJAX (Asynchronous JavaScript and XML)

    • HTML, CSS, 자바스크립트, DOM, XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법
    • 빠르게 동작하는 동적인 웹 사이트를 만들기 위해
  13. JSON

    • 비동기 브라우저 / 서버 통신 간 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 이해할 수 있는 텍스트를 사용하는 개방형 표준 포맷

2-4. 서버 프로그램 구현 (10)

  1. WAS (web application server)

    • 사용자 요청 스레드를 처리하고 DB에서 SQL에 대한 결과를 반환하는 서버
    • 동적 콘텐츠를 처리하고 제공하기 위해 사용
  2. JVM (Java Virtual Machine)

    • 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 실행 환경을 제공하는 s/w
  3. JDK (Java Development Kit)

    • 자바 애플리케이션을 구축하기 위한 핵심 플랫폼
  4. 운영체제

    • 서버의 하드웨어를 사용자 관점에서 유연하게 사용하기 위한 소프트웨어
  5. 미들웨어

    • 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 도와주는 소프트웨어
  6. DBMS

    • 사용자와 DB 사이에서 사용자의 요구에 따라 정보를 생성해주고 DB를 관리해주는 소프트웨어
  7. 형상 관리

    • 소프트웨어 개발 중 발생하는 모든 변경 사항을 관리하는 것
  8. 모듈

    • 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위
  9. 모듈화

    • 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 사용이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
  10. 루틴

    • 루틴: 소프트웨어에서 특정 동작을 수행하는 일련의 코드로, 기능을 가진 명령들의 모임
    • 메인 루틴: 프로그램의 메인 부분, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
    • 서브 루틴: 메인 루틴에 의해 필요할 때마다 호출되는 루틴
  11. 공통 모듈

    • 전체 프로그램 기능 중 특정 기능을 처리할 수 있는 실행 코드
  12. 모듈의 결합도 (coupling): 외부 모듈과의 상호 의존도

    • 자료: 모듈 간 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우
    • 스탬프: 모듈 간 인터페이스로 배열이나 객체, 구조 등이 전달
    • 제어: 단순 처리할 대상인 값만 전달 되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달
    • 외부: 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유
    • 공통: 파라미터가 아닌 모듈 밖에 전역 변수를 참조하고 전역 변수를 갱신하는 식의 상호작용
    • 내용: 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용
  13. 모듈의 응집도 (cohesion): 모듈의 독립성을 나타내는 개념. 모듈 내부 구성요소 간 연관 정도.

    • 기능: 모듈 내부의 기능이 단일 목적을 위해 수행
    • 순차: 모듈 내의 한 활동으로부터 나온 출력값을 다른 활동이 사용
    • 통신: 동일한 입출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
    • 절차: 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행
    • 시간: 연관된 기능보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리
    • 논리: 유사한 성격을 갖는 요소들을 한 모듈에서 처리
    • 우연: 모듈 내부 구성 요소가 연관이 없다.
  14. 화이트박스 테스트

    • 내부 소스 코드의 구조와 동작을 테스트
  15. MyBatis

    • 자바의 관계형 DB 프로그래밍 프레임워크
    • SQL Mapping 기반 Access Framework, DBMS에 질의하기 위한 SQL 쿼리를 별도의 XML 파일로 분리하고 맵핑을 통해 sql 실행.
    • JDBC 코드 단순화, SQL 사용을 그대로, spring 기반 프레임워크 통합 기능
  16. DAO (data access object)

    • 특정 타입의 DB에 추상 인터페이스를 제공하는 개체로 세부내용 노출 없이 데이터 조작
  17. DTO (data transfer object)

    • 프로세스 사이에서 데이터를 전송하는 객체
  18. VO (value object)

    • 간단한 엔티티를 의미하는 작은 객체. 가변 클래스인 DTO와 달리 고정 클래스를 가짐
  19. 배치

    • 사용자와 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
    • 이벤트 (배치): 사전에 정의해 둔 조건 충족 시 자동으로 실행
    • 온디맨드: 사용자의 명시적 요구가 있을 때마다 실행
    • 정기: 정해진 시점에 정기적으로 실행
  20. 배치 스케쥴러

    • 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
    • 스프링 배치: 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러
    • 쿼츠 스케줄러: 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러
  21. Cron 표현식

    • 초 / 분 / 시간 / 일 / 월 / 요일 / 연도
    • *: 모든 수
    • ?: 미사용
    • -: 기간
    • ,: 특정 기간
    • /: 반복
    • L: 마지막 기간에 동작
    • W: 가장 가까운 평일
    • #: 몇 번째 주, 요일
  22. 형상 관리 베이스라인

    • 개발과정의 각 단계별 산출물의 변화를 통제하는 시점의 기준이며, 각 형상 항목들의 기술적 통제 시점
  23. 컴포넌트

    • 독립적인 기능을 수행하는 소프트웨어 모듈
  24. JUnit

    • 자바 프로그래밍 언어용 단위 테스트 도구
  25. Fan-in: 어떤 모듈을 제어 (호출)하는 모듈의 수

  26. Fan-out: 어떤 모듈에 의해 제어 (호출)되는 모듈의 수
    *시스템 복잡도 최적화를 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 한다.


2-5. 애플리케이션 테스트 관리 (8)

  1. 테스트

    • 요구사항에 맞는 기능과 성능을 확인하고, 숨어 있는 s/w 결함을 찾아내는 활동
  2. 테스트 원리

    • 결함이 존재함을 밝히는 것
    • 완벽한 테스팅은 없다
    • 개발 초기에 테스트 시작
    • 결함집중
    • 살충제 패러독스: 동일한 테스트 케이스의 반복은 새로운 결함을 찾지 못함
    • 정황에 의존적
    • 오류-부재의 궤변
  3. 프로그램 실행 여부에 따른 분류

    • 정적 테스트: 실행 x, 구조 분석 (동료 검토, 워크스루, 인스펙션)
    • 동적 테스트: 실행 o, (화이트박스 테스트, 블랙박스 테스트)
  4. 동료 검토 (peer review)

    • 2~3명이 진행하는 리뷰의 형태, 요구사항 명세서 작성자가 설명하고 이해 관계자들이 결함을 발견
  5. 워크스루 (walk through)

    • 검토 자료를 회의 전에 배포 -> 사전 검토 후 짧은 시간 동안 리뷰
  6. 인스펙션 (inspection)

    • 개발 단계별 산출물 검토를 위해 다른 전문가 또는 팀이 검사 후 오류 발견
  7. 테스트 기법에 따른 분류

    • 화이트박스 테스트 (구조 테스트)
    • 커버리지 테스트
    • 블랙박스 테스트 (기능 테스트)
    • 동치 분할 테스트: 입력 데이터의 영역을 유사한 도메인별로 유효 값/무효 값 그루핑하여 대표 값 테스트 케이스를 도출하여 테스트
    • 경계 값 분석 테스트: 동치분할 후, 경계 값 부분에서 오류 발생 확률이 높기에 경계값을 포함하여 테스트케이스 설계
    • 결정 테이블 테스트: 조건과 행위를 모두 조합하여 테스트
    • 상태전이 테스트: 테스트 대상 상태를 구분, 다른 상태로 전이 되는 경우의 수를 수행하는 테스트 기법
    • 유스케이스 테스트: 프로세스 흐름을 기반으로 테스트 케이스 명세화
    • 분류트리 테스트: s/w를 트리 구조로 표현하여 테스트
    • 페어와이즈 테스트: 테스트 데이터 간 최소 한 번 씩을 조합하는 방식, 상대적으로 적은 양의 테스트 세트를 구성하기 위한 기법
  8. 테스트 시각에 따른 분류

    • 검증: s/w 과정을 테스트, 올바른 제품을 생산하고 있는지 검증 (개발자의 시각)
    • 확인: s/w 결과를 테스트, 제품이 동작하는지 확인 (사용자의 시각)
  9. 테스트 목적에 따른 분류

    • 회복 (테스트): 고의로 실패 유도, 시스템 복귀 여부 테스트
    • 안전: 보안적인 결함 점검
    • 강도: 시스템 과다 정보량 부과 후 정상 작동 확인
    • 성능: 응답시간,업무량, 반응 속도 등을 측정
    • 구조: 논리 경로, 소스 복잡도 평가
    • 회귀: 시스템 수정 후 새로 유입된 오류가 없는지 확인하는 반복 테스트 기법
    • 병행: 변경 전과 후 동일한 데이터를 넣어 입력 결과 비교
  10. 테스트 종류에 따른 분류

    • 구조 기반 테스트 (화이트 박스): 내부 논리 흐름에 따라 테스트 케이스 작성
    • 명세 기반 테스트 (블랙박스): 요구사항 명세서를 기반으로 테스트
    • 경험 기반 테스트: 직관과 기술 능력을 기반으로 수행
  11. 테스트 케이스

    • s/w 테스트를 위한 입력값, 실행 조건, 예상된 결과의 집합
  12. 테스트 오라클

    • 결과의 참 / 거짓을 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법
  13. 테스트 오라클 종류

    • 참 (오라클): 모든 입력값에 대해 기대하는 결과 생성, 발생된 오류 모두 검출
    • 샘플링: 특정 입력값에 대해서 기대하는 결과를 제공해 주는 오라클
    • 휴리스틱: 샘플링 오라클의 개선 버전. 특정 입력값은 올바른 결과 제공, 나머지는 휴리스틱 (추정)으로 처리
    • 일관성 검사: 애플리케이션 변경이 있을 때, 수행 전 후의 결괏값이 동일한지 확인
  1. 테스트 레벨 종류

    • 단위 (테스트): 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트 (인터페이스, 자료구조, 실행 경로, 오류 처리 테스트)
    • 통합: 모듈 사이의 인터페이스, 컴포넌트 간의 상호작용을 검증 (빅뱅, 상 / 하향식 테스트)
    • 시스템: 기능 / 비기능 요구사항 테스트
    • 인수: 알파 / 베타 테스트
  2. 테스트 시나리오

    • 테스트 수행을 위한 여러 테스트 케이스의 집합. 동작 순서를 기술한 문서이며 절차를 명세.
  3. 통합 테스트

    • 소프트웨어 각 모듈 간 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트
    • 빅뱅 / 상 / 하향식 테스트
  4. 하향식 테스트 (스텁)

    • 스텁: 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈
    • 깊이-우선: 다음 분기로 넘어가기 전 해당 분기를 완벽히 탐색
    • 너비-우선: 인접한 노드를 먼저 탐색
  5. 상향식 테스트 (드라이버)

    • 상위 모듈에서 데이터의 입, 출력을 확인하기 위한 더미 모듈
    • 스텁이 개발이 용이하다
  6. 테스트 하네스

    • 컴포넌트 및 모듈을 테스트 하는 환경의 일부분, 테스트를 지원하기 위한 코드와 데이터를 말한다. 단위 / 모듈 테스트를 위해 코드 개발자가 직접 작성.
  7. 테스트 커버리지

    • s/w 테스트 범위를 측정하는 품질 측정 기준
    • 정확성과 신뢰성 향상
  8. 테스트 커버리지 유형

    • 기능 기반 (커버리지): 기능을 모수로 설정
    • 라인: 전체 소스 라인 수를 모수로 설정
    • 코드: 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지 측정
  9. 코드 커버리지 유형

    • 구문 (커버리지): 모든 명령문을 적어도 한 번 수행
    • 결정: 전체 결정문이 적어도 한 번은 참과 거짓 결과를 수행
    • 조건: 각 조건이 적어도 한 번 참과 거짓의 결과가 되도록 수행
    • 조건 / 결정: 전체 조건식 + 개별 조건식 참 한 번 거짓 한 번
    • 변경 조건 / 결정: 각 개별 조건식이 다른 개별 조건식 영향 x 전체 조건식에 독립적으로 영향을 주고 조건/결정 커버리지를 향상
    • 다중 조건: 모든 개발 조건식의 가능한 조합을 100% 보장
  10. 애플리케이션 성능 측정 지표

    • 처리량: 주어진 시간에 처리할 수 있는 트랜잭션의 수
    • 응답 시간: 사용자 입력이 끝난 후, 응답 출력이 개시될 때까지의 시간
    • 경과 시간: 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 결과의 출력이 완료될 때까지의 시간
    • 자원 사용률: 트랜잭션 처리하는 동안 CPU /메모리 / 네트워크 사용량
  11. DB 성능 저하 원인

    • 내부 로직, 외부 호출, 잘못된 환경 설정, 네트워크의 문제
    • DB Lock: 대량의 데이터 조회 / 업데이트 / 인덱스 생성 시 발생
    • DB Fetch: 실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어온 경우. (불필요한 데이터베이스 패치)
    • Connection Leak: DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않음
    • Connection Pool Size: 커넥션 풀 크기를 너무 작거나 크게 설정
  12. 클린 코드

    • 가독성이 높고, 단순하고, 의존성을 줄이고, 중복 최소화
  13. 소스 코드 품질분석 도구

    • 정적 분석 도구: pmd / cppcheck / SonarQube / checkstyle
    • 동적 분석 도구: Avalanche / Valgrind
  14. LDAP (Lightweight Directory Access Protocol)

    • TCP/IP 위에서 조직화되고 비슷한 특성을 가진 객체들의 모임인 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜
  15. 목 오브젝트

    • 사용자의 행위를 조건부로 사전에 입력해 두면, 그 상황에 예정된 행위를 수행하는 객체
  16. 에이징 분석 기법

    • 특정한 결함 상태의 지속 시간을 측정하여 분석

2-6. SQL 응용 (14)

  1. 절차형 sql => 프로시저, 사용자 정의 함수, 트리거로 처리한다.

  2. 데이터 조작어 (DML)

    • DB에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어; SELECT, INSERT, UPDATE, DELETE
  3. TURNCATE

    • 데이터가 하나도 없이 테이블 구조만 남은 최초의 상태로 가는 명령어
  4. DB 프로시저

    • 절차형 sql을 활용하여 특정 기술을 수행할 수 있는 트랜잭션 언어
    • DECLARE -> BEGIN/END -> CONTROL -> SQL -> EXCEPTION -> TRANSACTION
  5. DB 사용자 정의함수

    • 절차형 sql을 활용하여 일련의 sql 처리를 수행하고 결과를 단일 값으로 반환하는 함수
  6. 트리거

    • 특정 테이블에서 이벤트가 발생하면 DBMS에서 자동적으로 실행되도록 만든 프로그램
  7. 프로시저의 구성
    - 선언부 (DECLARE): 프로시저 명칭, 변수, 데이터 타입 정의
    - 시작 / 종료부 (BEGINE / END): 시작 종류를 표현함. 시작 / 종료는 한 쌍
    - 제어부 (CONTROL): 순차적으로 처리, 조건문과 반복문으로 제어
    SQL: DML 사용
    - 예외부 (EXCEPTION): 예외 처리
    - 실행부 (TRANSACTION): 트리거에서 수행된 DML 수행 내역의 DBMS 적용 또는 취소 여부를 결정하는 처리부

  8. 실행부에서의 COMMINT과 ROLLBACK

    • COMMIT: 하나의 트랜잭션이 끝나고 DB가 일관성 있는 상태에 있을 때, 사용
    • ROLLBACK: 트랜잭션이 비정상적으로 종료되어 원자성이 깨질 경우 처음부터 다시 시작하거나 부분적으로 연산을 취소
  9. 프로시저 모드

    • IN: 운영체제 -> 프로시저 값 전달
    • OUT: 프로시저 -> 운영체제 값 전달
    • INOUT: 두 가지 기능 동시에 수행
  10. 프로시저 호출

    • EXECUTE 프로시저명 (파라미터 1, 2)
  11. 사용자 정의함수의 구성

    • 프로시저의 구성과 동일하나 실행부는 반환부 (RETURN)이다.
    • 문법도 동일하다.
  12. 트리거

    • 정의: 특정 테이블에 이벤트가 발생하면 DBMS에서 자동적으로 실행되도록 구현된 프로그램
    • 목적: 데이터 무결성 유지 및 로그 출력 처리
    • 행 트리거: 데이터 변화가 생길 때 마다 실행
    • 문장 트리거: 트리거에 의해 단 한 번 실행
    • 특징: 반환 값이 없다. TCL 사용 불가.
  13. 트리거 구성

    • 선언부
    • 이벤트부 (EVENT)
    • 시작 / 종료부
    • 제어부
    • SQL
    • 예외부
  14. 데이터 분석 함수

    • 총합, 평균 등의 데이터 분석을 위해 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수
  15. 데이터 분석 함수의 종류

    • 집계 함수
    • 그룹 함수
    • 윈도 함수: 온라인 분석 처리 용도
    • (OLAP: Online Analytical Processing): 다차원 데이터 분석을 할 수 있도록 도와주는 기술
  16. Prepared Statement

    • DBMS에서 동일하거나 비슷한 DB 문을 효율적, 반복적으로 실행하기 위해 사용되는 기능
  17. DCL

    • DB 관리자가 데이터 보안, 무결성, 병행 제어, 회복을 위해 사용하는 제어용 언어
    • GRANT
    • REVOKE
  18. 솔트 (Salt): 일방향 해시 함수에서 다이제스트를 생성할 때, 추가되는 바이트 단위의 임의 문자열

  19. 다이제스트: 해시함수로 생성된 암호화된 메시지


2-7. 소프트웨어 개발 보안 구축 (8)

  1. 소프트웨어 보안

    • 소스 코드의 보안 취약점을 제거, 보안을 고려하여 기능을 설계 및 구현하는 활동
  2. SW 개발 보안 용어 (자위치위)

    • 자산, 위협, 취약점, 위험
  3. 개발 보안의 구성요소 (기무가)

    • 기밀성: 인가되지 않은 접근에 정보 공개 및 노출을 차단
    • 가용성: 권한을 가진 사용자가 원하는 서비스를 지속 사용할 수 있도록 보장
    • 무결성: 정당한 방법 외로 데이터 변경 x, 데이터의 훼손을 방어
  4. 자원 고갈 공격

    • SYN 플러딩: TCP 프로토콜 구조적인 문제를 이용한 공격, 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 이용 불가능하게 함, ACK를 발송하지 않고 계속 새로운 연결 요청을 하여 서버가 자원할당을 해지하지 않고 자원만 소비하여 자원이 고갈

    • UDP 플러딩: 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지 (ICMP)를 생성하게 하여 지속해서 자원을 고갈시키는 공격

    • ICMP (Internet Control Message Protocol): 네트워크 계층에서 여러 정보를 전달하거나 컨트롤하는 용도로 사용되는 프로토콜입니다.

    • 스머프 (Smurf): 출발지 주소를 공격 대상의 IP주소로 하여 네트워크 전체에 ICMP echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격

    • PoD (Ping of Death): 큰 사이즈의 패킷을 의도적으로 발생시켜 시스템을 공격

  5. 애플리케이션 공격

    • HTTP GET 플러딩: http 캐시 옵션을 조작하여 캐시 서버가 아닌 웹 서버가 직접 처리하도록 유도

    • Slowloris: Http Get 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않고 연결상태를 지속하는 공격 기법

    • RUDY: 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 연결 상태를 유지하는 공격 기법

  6. 네트워크 서비스 공격

    • 네트워크 스캐너, 스니퍼: 네트워크 h/d, s/w의 취약점 파악 후 공격
    • 패스워드 크래킹: 사전 크래킹과 무차별 크래킹으로 네트워크 패스워드를 탐색
    • IP 스푸핑: 서버에 대한 인증되지 않은 액세스 권한을 입수하는 데 사용
    • 트로이목마: 겉보기엔 정상이나 악성 루틴이 숨어 있는 프로그램
  7. 취약점 공격

    • 랜드 어택: 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 가용성을 침해하는 공격
    • 봉크 / 보잉크: 프로토콜 오류 제어를 이용한 공격기법, 시스템의 패킷 재전송과 재조립이 과부하를 유발
    • 봉크: 같은 시퀀스 번호를 계속 보냄
    • 보잉크: 일정한 간격으로 시퀀스 번호에 빈 공간 생성
    • 티어드롭: IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 Dos 공격
    • 랜드 어택 대응: 수신되는 패킷 중 출발지와 목적지 주소가 동일하면 차단
    • 붕크 / 보잉크 / 티어드롭 대응: 과부하가 걸리거나 반복되는 패킷 재전송 요구 하지 않고 버림
  8. 암호 알고리즘 방식

    • 대칭키: 블록 암호 (DES, AES, SEED) / 스트림 암호
    • 비대칭 키: 디피-헬만, RSA
    • 해시: SHA, MD5
  9. 개인정보보호 관련 법령

    • 개인정보보호법
    • 정보통신망법
    • 신용정보법
  10. SSL

    • 응용 계층과 TCP/IP 계층 사이에 웹 데이터 암호화 및 전송 시 기밀성을 보장하는 공개키 기반의 보안 프로토콜
  11. 정보

    • 고유 식별정보: 개인을 고유하게 구분하기 위하여 부여된 식별 정보
    • 민감 정보: 사생활을 현저히 침해할 수 있는 정보
  12. s/w 개발 보안 적용 사례

    • MS-SDL
    • seven-touchpotins: 추적, 모니터링
    • CLASP: 이미 운영 중인 시스템에 적용
  13. 시큐어 코딩 가이드

    • 설계 및 구현 단계에서 잠재적인 보안 취약점을 제거, 안전한 s/w를 개발하는 기법
    • 입력 데이터 검증 및 표현: SQL 삽입 -> preparedStatement, XSS -> 문자열 치환 함수
    • 보안 기능
    • 시간 및 상태: 경쟁조건 -> mutex 사용, 종료되지 않은 반복 / 재귀함수
      에러 처리
    • 코드 오류: 널 포인터 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지 않은 변수 사용
    • 캡슐화
    • api 오용
  14. preparedStatement

    • 쿼리 객체, 비슷한 DB 문을 높은 효율성으로 반복적으로 실행하기 위한 기능
  15. 패스워드 권고

    • 숫자/영문: 10자
    • 숫자/영문/특수문자: 8자
    • 변경주기: 6개월
  16. 무차별 공격

    • 특정 패스워드를 풀기 위해 무차별 적으로 문자 조합을 대입하는 공격 기법
  17. SEED

    • 한국의 대칭키 128비트 암호화 알고리즘
  18. 난수 발생 시드

    • 어떤 특정 시작 숫자를 정해주면 난수처럼 보이는 수열 생성함. 이때 시작 숫자를 의미
  19. 스니핑 (Sniffing): 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법

  • 상호배제 Mutex (Mutual Exclusion): 임계영역을 가진 스레드의 실행 시간이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술
  1. 세션 (Session): 클라이언트와 서버의 논리적 연결

  2. DNS (Domain Name Service): 도메인 이름과 IP 주소를 변환하는 역할을 수행

  3. API (Application Programming Interface): 일련의 서브 프로그램, 상호 작용을 위한 인터페이스 사양

  4. s/w 개발 보안 테스트 유형

    • 화이트박스 테스트: 내부 로직을 보면서 수행하는 테스트 (구조 테스트)
    • 블랙박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트 (기능 테스트)

2-8. 프로그래밍 언어 활용 (25)

책 & 기출 참고


2-9. 응용 SW 기초 기술 활용 (19)

  1. 운영체제
    - 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공
    한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영

  2. 윈도즈

    • 선점형 멀티태스킹 기능과 GUI 환경
    • OLE (Object Linking and Embedding)
  3. 유닉스

    • 다중 사용자 방식의 시분할 운영체제
    • 멀티 태스킹과 다중 사용자 지원
    • 대화식 운영체제
  4. 리눅스

    • 유닉스를 기반으로 개발된 오픈 소스 기반 운영체제
    • 애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반 운영체제
  5. 안드로이드

    • 리눅스 기반
    • 자바와 코틀린 언어
    • 런타임 라이브러리
  6. 메모리 관리 기법 (반배할교)

    • 반입 (기법): 요구 / 호출 반입 기법
    • 배치: 최초 최적 최악 적합
    • 할당: 연속 / 분산 할당 기법
    • 교체:
  7. 프로세스 스케쥴링 주요 용어

    • 서비스 시간: 결과를 산출하기까지 소요되는 시간
    • 응답 (반환) 시간: 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간
    • 대기 시간: 할당 대기까지 큐에 대기하는 시간
    • 응답률: (대기시간 + 서비스 시간) / 서비스 시간 -> HRN 스케줄링에서 사용
  8. 선점형 스케줄링 알고리즘

    • RR
    • SRT (shortest remaining time first)
    • 다단계 큐
    • 다단계 피드백 큐
  9. 비선점형 스케줄링 알고리즘

    • 우선순위
    • 기한부
    • FCFS (first come first service)
    • SJF (Shortest Job First)
    • HRN: 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택 (기아 현상 최소화)
  10. 기아현상: 시스템 부하가 많아서 준비 큐에 있는 낮은 등급의 프로세스가 무한정 기다리는 현상 -> 에이징 기법으로 해결한다

  11. 가상화

    • 물리적인 리소스들을 하나로 보이게 하거나 하나의 리소스를 여러 개로 보이게 하는 기술
    • 대부분의 서버는 용량의 20%만 사용하는데, 가상화를 통해 서버 가동률을 60~70%까지 올릴 수 있다.
  12. 가상화 기술요소

    • 컴퓨팅 (가상화): 하이퍼바이저
    • 스토리지: 분산 파일 시스템
    • I/O
    • 컨테이너: 도커
    • 분산처리 기술
    • 네트워크 가상화 기술
  13. 클라우드 컴퓨팅

    • 가상화된 컴퓨터 시스템 리소스를 제공하고 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술
    • 사설 클라우드
    • 공용 클라우드
    • 하이브리드 클라우드
  14. 클라우드 서비스 유형

    • 인프라형 서비스 (IaaS)
    • 플랫폼형 서비스 (PaaS)
    • SW형 서비스 (SaaS)
  15. DB 개념

    • 다수의 인원 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합
    • 파일 / 계층(H) / 관계(R) / 망(N)
  16. DBMS

    • 데이터 관리 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색 등의 기능을 지원하는 SW
    • 키-값
    • 컬럼 기반 데이터 저장
    • 문서 저장
    • 그래프
  1. DBMS 특징

    • 무결성: 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않음
    • 일관성: 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 일정함
    • 회복성: 장애가 발생하였을 시 특정 상태로 복구됨
    • 보안성: 불법적인 노출, 변경, 손실로부터 보호됨
    • 효율성: 응답 시간, 저장 공간 등이 최적화되어 요구 조건을 만족시킴
  2. ERD

    • 실체와 엔티티 간의 관계를 도식화한 다이어그램
  3. 트랜잭션

    • DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위
    • 원자성: 전부 적용되거나 하나도 적용되지 않아야 함
    • 격리성: 트랜잭션 실행 중 생성하는 연산 중간 결과를 다른 트랜잭션이 접근 불가
    • 영속성: 성공이 완료된 트랜잭션 결과는 영속적으로 DB에 저장됨
    • 일관성: 트랜잭션 성공 후 항상 일관된 DB 상태를 보존
  4. noSQL

    • 고정된 테이블 스키마가 필요하지 않고 조인 연산이 없으며, 수평적 확장이 가능한 DBMS
  5. 데이터마이닝

    • 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
  6. 데이터마이닝 주요기법

    • 분류
    • 연관
    • 연속
    • 데이터 군집화
  7. 온톨로지

    • 실세계에 존재하는 모든 개념들과 개념들의 속성, 개념들 간의 관계 정보를 컴퓨터가 이해할 수 있도록 서술해 놓은 지식 베이스
  8. 시맨틱 웹

    • 온톨로지를 활용하여 서비스를 기술하고, 온톨로지의 의미적 상호 운용성을 이용해서 서비스 검색, 조합, 중재 기능을 자동화하는 웹
  9. 네트워크

    • 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라
  10. OSI 7 Layer 장비

    • 1 계층: 허브, 리피터
    • 2계층: L2 스위치, 브리지, NIC, 스위칭 허브
    • 3계층: L3 스위치, 라우터, 게이트웨이, 공유기, 망(백본) 스위칭 허브
    • 4계층: L4 스위치
  11. 프로토콜

    • 서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신규약
    • 구문: 데이터 형식, 코딩 신호 레벨 등의 규정
    • 의미: 조정과 에러 처리를 위한 규정
    • 타이밍: 속도 조절과 순서 관리 규정
  12. 프로토콜 특징

    • 단편화
    • 재조립
    • 캡슐화
    • 연결 제어
    • 오류 제어
    • 동기화
    • 다중화
    • 주소 지정
  13. TCP

    • 신뢰성 있고 연결적이며 순서화된 전송 제어 프로토콜
  14. UDP

    • 신뢰성 없고 비연결적이며 순서화되지 않은 전솔 계층 프로토콜
    • 멀티캐스트: 다:다
    • 유니캐스트: 1:1
    • 브로드캐스트: 1:다 (같은 서브 네트워크 상의 모든 수신자에게)
    • 애니캐스트: 1:다 (잠재적 수신자 그룹 안에서 가장 가까운 노드로 연결)
  15. 패킷 스위칭

    • 컴퓨터 네트워크와 통신 방식 중 하나로 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용
    • X.25: 두 단말장치가 패킷 교환망을 통해 원활히 전달하기 위한 통신 프로토콜
    • 프레임 릴레이: ISDN을 사용하기 위한 프로토콜
    • ATM (Asynchronous Transfer Mode): 비동기 전송모드라고 하는 광대역 전송에 쓰이는 스위칭 기법
  16. 서킷 스위칭

    • 네트워크 리소스를 특정 사용층이 독점하도록 하는 통신 방식
  17. 라우팅 알고리즘

    • 거리 벡터 알고리즘: 인접 라우터와 정보 공유, 목적지까지 거리와 방향 결정, 벨만-포드
    • 링크 상태 알고리즘: 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리 구성, 다익스트라 알고리즘
  18. 라우팅 프로토콜의 종류

    • RIP: 최초의 라우팅 프로토콜 (거리 벡터)
    • IGRP: RIP 개선, 네트워크 상태 고려하여 라우팅
    • OSPF: 링크 상태 알고리즘, 토폴로지에 대한 정보가 전체 라우터에 동일하게 유지, 변경 정보에 대해 RIP보다 빠르게 업데이트
    • BGP: 규모가 큰 네트워크 상호 연결, 대형 사업자 (ISP) 간의 상호 라우팅
  19. 개발환경 인프라 구성 방식

    • 온프레미스 (On-Premise): 인트라넷망만을 활용
    • 클라우드: 회사들의 서비스를 임대하여 개발환경 구축
    • 하이브리드: 둘 다 사용


3. 기타 용어

  • 로드밸런싱 (부하분산): 컴퓨터 자원들에 작업을 나누는 것
  • 브로드캐스팅: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식을 의미한다.
  • LDAP (Lightweight Directory Access Protocol): 사용자 정보 유지를 위한 질의 및 디렉터리 서비스를 수정하기 위한 인터넷 프로토콜 (디렉터리 서비스 조회)
  • 세션 하이재킹: 통신 내용을 엿보거나 세션을 가로채어 불법으로 시스템에 접근하는 공격기법
  • 정적 / 동적 테스트 안에 화이트 / 블랙 박스 테스트 나눌 수 있다.




4. 기출 정리

4-1. 2020 1회 기출

  • 데이터 마이닝: 많은 데이터 가운데 유용한 상관관계를 발견하여 정보를 추출하고 의사 결정에 이용하는 과정
  • 프로토콜 3요소: 구문, 의미, 타이밍
  • 트랜잭션의 특성: 종류와 그에 대한 설명 공부하자
  • 릴리즈노트 작성 항목


4-2. 2020 2회 기출

  • AJAX: 자바스크립트를 사용하여 클라이언트 간 비동기적으로 XML을 교환하고 조작하기 위한 기술
  • ROLLBACK: 트랜잭션이 실패하면 작업을 취소하고 이전 상태로 되돌리는 DCL이다.
  • IPsec: 네트워크 계층에서 인터넷 프로토콜 보안성을 제공해주는 IP 보안 프로토콜
  • 정적 분석 도구: 애플리케이션을 실행하지 않고 소스 코드를 분석하는 애플리케이션 자동화 테스트 도구
  • 디자인 패턴 (필기)
  • index 생성
  • UI 설계 원칙
  • LINUX 명령어 + 사용법 chmod
  • User / Group / Other (R, W, X : 4, 2, 1)


4-3. 2020 3회 기출

  • EAI 구축유형
  • OSPF (응용 SW 기초 기술 활용)
  • 헝가리안 표기법: 컴퓨터 프로그래밍에서 변수, 함수의 이름 앞에 데이터 타입을 명시하는 코딩 규칙
  • camelCasing
  • PascalCasing
  • snake_casing
  • strHungarianCasing
  • gnu_naming_convengion
  • MACRO_CASING (상수 표기법)
  • 데이터베이스 스키마: 데이터베이스의 구조와 제약조건에 대한 명세를 기술
  • C++ 생성자: 객체 생성 시 초기화 작업을 위한 함수, 생성할 때 자동으로 호출된다.
  • 형상 통제 개념 설명 (서버 프로그램 구현)
  • ICMP: TCP/IP 기반의 인터넷 통신 서비스에서 IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로의 변경 등을 위한 제어 메시지를 취급하는 무연결 전송 용의 프로토콜로 네트워크 계층에 해당
  • SQL: ALTER TABLE table_name ADD attribution VARCHAR(20)
  • 리팩토링: 코드 외부 행위는 바꾸지 않고 내부 구조를 개선하여 중복, 거대한 클래스 등을 고치는 행위
  • 커버리지
  • 관계대수 (응용 SW 기초 기술 활용)
  • JAVA의 추상클래스: abstract class 클래스명 { }, 공통되는 필드와 메소드를 정의한 구체적이지 않은 클래스
  • 오버로딩: 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 함


4-4. 2020 4회 기출

  • 아스키코드 A: 65
  • 즉시 갱신 기법 (응용 SW 기초 기술 활용)
  • UML 다이어그램


4-5. 2021 1회 기출

  • IP -> MAC: ARP
  • MAC -> IP: RARP
  • IPv4: 8비트 씩 총 32비트 (10 진수)
  • IPv6 16비트 씩 총 128비트 (16 진수)
  • IPC: 실행 프로세스 간 통신을 가능하게 하는 기술
    공유 메모리 기법
  • 메시지 전달 기법: 시그널, 세마포어, 파이프, 소켓
  • 데이터 모델 구성 3요소 (데이터 입출력 구현)
  • 접근 통제 방법
    - 임의 접근 통제: 임의 접근통제는 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
    - 강제 접근 통제: 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
    - 역할기반 접근 통제: 주체의 신분이 아니라 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법
  • 결합도, 응집도 종류


4-6. 2021 2회 기출

  • 트랜잭션의 특성

    • 원자성: 모두 반영되거나 아니면 전혀 반영되지 않아야 한다.
    • 일관성: 트랜잭션이 실행을 완료하면 언제나 일관성 있는 DB 상태로 변환한다.
    • 독립성: 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
    • 영속성: 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
  • JOIN (sql)

  • SELECT FROM JOIN ON

  • 패킷 교환 방식

  • 디자인 패턴

  • 병행 제어

  • 럼바우 데이터 모델링

  • java - static

    • 클래스 내에서 객체 생성 없이 사용할 수 있는 메소드, 컴파일 시 메모리에 로드되어 메소드 영역에 존재한다.
    • static 클래스는 instance 클래스의 변수 사용 불가. (static 변수로 선언해야 한다.)




부록

  • 디자인패턴

  • SQL
    - ALTER TABLE table_name ADD column type()
    - ALTER TABLE table_name MODIFY column type()
    - ALTER TABLE table_name CHANGE column1 column2 type()
    - ALTER TABLE table_name DROP column
    - ALTER TABLE table_name RENAME table_name2

profile
All is well 🎵

2개의 댓글

comment-user-thumbnail
2022년 3월 31일

멋집니다!

1개의 답글