[정보처리기사] 2021년 필기 기출 정리

sookyoung.k·2025년 2월 25일
0
post-thumbnail

하 이런 운빨범위시험이 다 있나... 범위가 너무 넓어서 아는 거 위주로 나오면 잘 맞고(당연함), 공부를 안 했거나 별로 잘 들어보지 못한 범위가 조금만 많이 나올라치면 아주 아슬아슬해져버림... 큰일이다 3번 중 2번은 나가리

사실 외워야 하는 거 이제 좀 특정되는데 그거 외우기 싫어서 미치겠음 하ㅏ이ㅏ밍리;ㅁㄴㅇㄹ


2021년 1회 문제 풀이

1과목: 소프트웨어 설계

미들웨어

→ 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신환경 등을 연결하여 응용 프로그램과 운영 환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어

종류: DB, RPC, MOM, TP-Monitor, ORB, WAS

유스케이스 확장 관계

→ 특별한 조건을 만족할 때 수행할 유스케이스 <<extends>>로 연결하여 표현

UML 다이어그램

  • 구조적(Structural) 다이어그램
    • 클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현
    • 객체 다이어그램: 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
    • 컴포넌트 다이어그램: 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스 표현
    • 배치 다이어그램: 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치 표현
    • 복합체 구조 다이어그램: 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
    • 패키지 다이어그램: 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계 표현
  • 행위(Behavioral) 다이어그램
    • 유스케이스 다이어그램: 사용자의 요구를 분석하는 것, 기능 모델링 작업에 사용
    • 시퀀스 다이어그램: 상호 작용하는 시스템이나 객체들이 주고받는 메시지 ㅛㅍ현
    • 커뮤니케이션 다이어그램: 메시지뿐만 아니라 객체들 간의 연관까지 표현
    • 상태 다이어그램: 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
    • 활동 다이어그램: 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
    • 상호작용 다이어그램: 제어 흐름
    • 타이밍 다이어그램: 객체 상태 변화와 시간 제약을 명시적으로 표현

리눅스 버전 확인 명령어

cat 명령어를 통해 etc 디렉터리의 release로 끝나는 파일을 읽기

uname 명령어로 시스템 정보를 확인

럼바우 분석 기법

  • 객체 모델링 (Object Modeling): 정보 모델링
  • 동적 모델링 (Dynamic Modeling): 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 동적인 행위 표현
  • 기능 모델링 (Functional Modeling): 자료 흐름도를 이용

디자인 패턴

  • 생성 패턴: 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤
  • 구조 패턴: 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시
  • 행위 패턴: 책임 연쇄, 커맨드, 인터프리터, 반복자, 주재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메소드, 방문자

객체지향 분석의 방법론

  • 럼바우 방법 → 객체 모델, 동적 모델, 기능 모델로 나누어 분석 활동 수행
  • 부치 방법 → 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석
  • Jacobson 방법 → Use Case를 강조하여 사용하는 분석 방법
  • Coad와 Yourdon 방법 → E-R 다이어그램을 사용하여 객체의 행위 모델링
  • Wirfs-Brock 방법 → 분석과 설계 간의 구분 X

객체지향 분석

→ 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 이와 관련된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링하는 작업

→ 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법

요구사항 모델링

→ 애자일 방법, 유스케이스 다이어그램, 시퀀스 다이어그램

미들웨어 - RPC

→ 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들에어

시스템 연계 기술 - 소켓

→ 통신을 위한 프로그램을 생성하여 포트를 할당하고, 클라이언트의 통신 요청 시 클라이언트와 연결하는 내/외부 송/수신 연계 기술

CASE(Computer Aided Software Engineering)

→ 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것

  • 소프트웨어 모듈의 재사용성 향상
  • 자동화된 기법을 통해 소프트웨어 품질 향상
  • 소프트웨어 유지보수를 간편하게 수행

2과목: 소프트웨어 개발

전위식 → 후위식

- / * A + B C D E

  1. 인접한 피연산자 두 개와 왼쪾의 연산자를 괄호로 묶음
  2. 연산자를 피연산자의 뒤로 옮김
  3. 필요없는 괄호 제거

정렬

  • 기수 정렬 → Queue를 이용하여 자릿수 별로 정렬하는 방식, 레코드의 키 값을 분석하여 같은 수 또는 같은 문자끼리 그 순서에 맞는 버킷에 분배 하였다가 버킷의 순서대로 레코드를 꺼내어 정렬
  • 버블 정렬 → 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
  • 퀵 정렬 → 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어가면서 정렬하는 방법, 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브 파일로 분해시키는 방식으로 정렬
  • 쉘 정렬 → 삽입 정렬을 확장한 개념, 입력 파일을 어떤 매개변수(h)의 값으로 서브 파일을 구성하고, 각 서브파일을 삽입 정렬 방식으로 순서 배열하는 과정을 반복하는 정렬 방식

DRM(디지털 저작권 관리)

→ 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현 정책 관리, 크랙 방지, 인증

인수 테스트

  • 알파 테스트: 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법, 통제된 환경에서 행해짐
  • 베타 테스트: 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법, 실업무를 가지고 사용자가 직접 테스트하는 것으로, 개발자에 의해 제어되지 않는 상태에서 테스트가 행해짐

이진 검색 알고리즘

→ 검색할 자료를 반씩 나누어서 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 검색 방법

→ 탐색 효율이 좋고 탐색 시간이 적게 소요

→ 검색할 데이터가 정렬되어 있어야 함

→ 비교횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다

Stub

→ 하향식 통합시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈

해싱 함수의 종류

→ 제산법, 제곱법, 폴딩법, 기수 변환법, 대수적 코딩법, 계수 분석법(숫자 분석법), 무작위법

블랙박스 테스트

소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트, 기능테스트라고도 한다

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

화이트박스 테스트

모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법

→ 기초 경로 검사, 제어 구조 검사, 조건/루프 검사

자료구조

큐 → 한쪽에서는 삽입이, 다른 한쪽에서는 인출이 이루어지는 선형 자료구조 / FIFO 처리 수행

스택 → 서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에 응용 / LIFO 처리 수행

3과목: 데이터베이스 구축

관계형 데이터베이스 관련 용어

카디널리티 → 테이블에 속한 튜플의 수

차수 → 속성의 수

데이터베이스 설계

  • 논리적 설계 (데이터 모델링)
    • 현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정
    • 개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계
  • 물리적 설계 (데이터 구조화)
    • 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
    • 저장 레코드의 형식, 순서, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사

시스템 카탈로그

→ 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

일반 이용자도 SQL을 통해 검색할 수는 있으나, 갱신은 허용되지 않는다

이상현상

→ 삽입 이상, 삭제 이상, 갱신 이상

트랜잭션의 특성

→ 원자성, 일관성, 독립성, 영속성

순수 관계 연산자

  • Select → 연산자의 기호: 시그마
  • Project → 연산자의 기호: 파이
  • Join → 연산자의 기호:
  • Division → 연산자의 기호: %

릴레이션

  • 릴레이션의 각 행을 스키마라고 함
  • 릴레이션의 각 열을 튜플이라고 함
  • 속성들의 집합을 릴레이션 스키마라고 함

스키마

  • 외부 스키마 = 서브 스키마 = 사용자 뷰
    • 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것 (전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마라고도 함)
  • 개념 스키마 = 전체적인 뷰
    • 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재함 (단순히 ‘스키마’라고 하면 개념 스키마를 의미하며 DBA에 의해서 구성됨)
  • 내부 스키마
    • 데이터베이스의 물리적 구조로 데이터의 실제 저장 방법을 기술 (시스템 프로그래머나 시스템 설계자가 보는 관점)

정규화 과정

image.png

정규형

  • 1NF → 릴레이션에 속한 모든 도메인이 원자값으로만 되어 있음
  • 2NF → 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족
  • 3NF → 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
  • BCNF → 결정자가 모두 후보키인 정규형
  • 4NF
  • 5NF

E-R 다이어그램 표기법

사각형 - 개체 타입

마름모 - 관계 타입

타원 - 속성

이중 타원 - 다중값 속성

밑줄 타원 - 기본 키 속성

복수 타원 - 복합 속성

선, 링크 - 개체 타입과 속성 연결

로킹

  • 로킹 단위는 병행 제어에서 한꺼번에 로킹할 수 있는 객체의 크기
  • 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있음
  • 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고 데이터베이스 공유도가 저하됨
  • 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아지고, 데이터베이스의 공유도가 증가

4과목: 프로그래밍 언어 활용

운영체제의 제어 프로그램 종류

→ 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램

교착상태 발생의 필요 충분 조건

→ 상호 배제, 점유와 대기, 환형 대기, 비선점

배치 전략

최초 적합(First-Fit) → 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법

최적 적합(Best-Fit) → 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법

최악 적합(Worst-Fit) → 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

결합도 (낮 → 높)

  • 자료 결합도 (모듈 간의 인터페이스가 자료 요소로만 구성될 때)
  • 스탬프 결합도
  • 제어 결합도
  • 외부 결합도
  • 공통 결합도
  • 내용 결합도

가상기억장치 구현 방법

  • 페이징 기법 → 동일한 크기로 나눔
  • 세그먼테이션 기법 → 다양한 크기의 논리적 단위로 나눔

C언어 함수

  • atoi() → 문자열을 정수형으로 변환
  • atof() → 문자열을 실수형으로 변환
  • itoa() → 정수형을 문자열로 변환
  • ceil() → 실수를 정수형으로 올림처리

WAS의 종류

→ Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogin, WebSphere

* JVM → 자바 가상머신

OSI-7Layer - 데이터 링크 계층

→ 물리적 연결을 이용해 신뢰성 있는 정보를 전송하려고 동기화, 오류 제어, 흐름제어 등의 전송에러를 제어하는 계층

IEEE 802.3의 매체 접근 제어 방식 → CSMA/CD

TCP

→ 전송 계층에 해당

응집도 (강→약)

  • 기능적 응집도
  • 순차적 응집도
  • 교환적 응집도
  • 절차적 응집도
  • 시간적 응집도
  • 논리적 응집도
  • 우연적 응집도

continue → 이후 코드를 수행하지 않고 반복문의 처음으로 돌아가는 예약어

5과목: 정보시스템 구축 관리

Baas

→ 블록체인 개발 환경을 클라우드로 서비스하는 개념

CBD (컴포넌트 기반 방법론)

  • 생산성과 품질을 높이고, 유지보수 비용 최소화
  • 컴포넌트 제작 기법을 통해 재사용성 향상
  • 독립적인 컴포넌트 단위의 관리로 복잡성 최소화

* 구조적 방법론 → 분할과 정복 원리를 사용하는 설계 방법론

LOC 기법

라인수 / (프로그래머 수 * 평균 생산성)

암호화 알고리즘

  • 개인키 암호화 알고리즘 → AES
  • 해시 알고리즘 → MD4, MD5, SHA-1

접근통제 기술

  • 임의 접근통제 (DAC), 강제 접근통제(MAC), 역할기반 접근통제(RBAC)

정보보안의 4요소

→ 기밀성, 무결성, 가용성

악의적인 사용자가 지인 또는 특정 유명인으로 가장하여 활동하는 공격 기법

→ Evil Twin Attack, Phishing

비용 산정 기법 - COCOMO 모델

→ Organic, Semi-Detach, Embedded

구조적 개발 방법론

→ 정형화된 분석 절차에 따라 요구사항을 파악, 문서화하는 체계쩍 분석 방법

→ 자료흐름도, 자료사전, 소단위명세서의 특징

스마트 그리드

→ 전기 및 정보통신기수릉ㄹ 활용하여 전력망을 지능화, 고도화함으로써 고품질의 전력 서비스를 제공하고 에너지 이용효율을 극대화하는 전력망

스트림 암호화 방식

  • 비트/바이트/단어들을 순차적으로 암호화
  • RC4는 스트림 암호화 방식에 해당
  • 대칭키 암호화 방식

* 해쉬 암호화 방식 → 블록 단위로 해쉬 알고리즘을 적용하는 방식

공개키 암호화 기법

  • 키의 개수: 2n
  • 복호화 키는 비공개
  • 송신자는 수신자의 공개키로 문서 암호화
  • RSA

MQTT

  • 사물통신, 사물인터넷과 같이 대역폭이 제한된 통신환경에 최적화하여 개발된 푸시기술 기반의 경량 메시지 전송 프로토콜
  • IBM이 주도하여 개발

세션 하이재킹

  • 비동기화 상태 탐지
  • ACK STORM 탐지
  • 패킷의 유실 및 재전송 증가 탐지

2021년 2회 문제 풀이

1과목: 소프트웨어 설계

디자인 패턴의 종류

  • 생성 패턴
    • 추상 팩토리 → 인터페이스를 통해 서로 연관/의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴
    • 빌더 → 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성하는 패턴
    • 팩토리 메소드 → 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
    • 프로토타입 → 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
    • 싱글톤 → 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없는 패턴
  • 구조 패턴
    • 어댑터 → 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
    • 브리지 → 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
    • 컴포지트 → 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
    • 데코레이터 → 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
    • 퍼싸드 → 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
    • 플라이웨이트 → 인스턴스가 필요할 때마다 매번 생성하는 것 X 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴
    • 프록시 → 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
  • 행위 패턴
    • 책임 연쇄 → 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
    • 커맨드 → 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
    • 인터프리터 → 언어에 문법 표현을 정의하는 패턴
    • 반복자 → 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
    • 중재자(Mediator) → 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
    • 메멘토 → 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
    • 옵서버 → 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
    • 상태 → 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
    • 전략 → 동일한 계얼의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
    • 템플릿 메소드 → 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
    • 방문자 → 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴

CASE(Computer-Aided Software Engineering)

→ 구조적 기법, 프로토타이핑 기술, 응용 프로그래밍 기술, 정보 저장소 기술, 분산처리 기술

럼바우 분석 기법의 활동

→ 객체 모델링, 동적 모델링, 기능 모델링

UML의 관계

  • 연관 관계 → 2개 이상의 사물이 서로 관련
  • 집합 관계 → 하나의 사물이 다른 사물에 포함
  • 포함 관계 → 집합 관계의 특수한 형태
  • 일반화 관계 → 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지
  • 의존 관계 → 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지
  • 실체화 관계 → 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화 할 수 있는 관계

시스템의 구성 요소

→ 입력, 처리, 추력, 제어, 피드백

요구사항 개발 프로세스

도출 → 분석 → 명세 → 확인

소프트에어 아키텍처 설계에서 시스템 품질 속성

→ 속성, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성

주요 아키텍처 패턴의 종류

  • 레이어 패턴: 시스템을 계층으로 구분하여 구성하는 고전적인 방법 중의 하나, 상위 계층은 하위 계층에 대한 서비스 제공자가 되고, 하위 계층은 상위 계층의 클라이언트가 됨
  • 클라이언스-서버 패턴: 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
  • 파이프-필터 패턴: 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴
  • 모델-뷰-컨트롤러 패턴: 서브시스템을 모델, 뷰, 컨트롤러의 세 부분으로 구조화하는 패턴

GoF 디자인 패턴의 생성 패턴

→ 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤

송신 시스템

→ 시스템 인터페이스를 구성하는 시스템으로, 연계할 데이터를 데이터베이스와 애플리케이션으로부터 연계 테이블 또는 파일 형태로 생성하며 송신하는 시스템

UML 다이어그램의 종류

  • 구조적 다이어그램
    • 클래스 다이어그램
    • 객체 다이어그램
    • 컴포넌트 다이어그램
    • 배치 다이어그램
    • 복합체 다이어그램
    • 패키지 다이어그램
  • 행위 다이어그램
    • 유스케이스 다이어그램
    • 시퀀스 다이어그램
    • 커뮤니케이션 다이어그램
    • 상태 다이어그램
    • 활동 다이어그램
    • 상호작용 개요 다이어그램
    • 타이밍 다이어그램

2과목: 소프트웨어 개발

소프트웨어 형상 관리 도구

→ Git, CVS, Subversion, Mercurial 등

* 빌드 자동화 도구 → Ant, Maven, Gradle

EAI의 구축 유형

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

소프트웨어 패키징

→ 개발자가 아니라 사용자를 중심으로 진행

DRM(디지털 저작권 관리) 구성 요소

→ 클리어링 하우스, 콘텐츠 제공자, 패키저, 콘텐츠 분배자, 콘텐츠 소비자, DRM 컨트롤러, 보안 컨테이너

파레토 법칙

→ 대부분의 결함이 소수의 특정 모듈에 집중해서 발생하는 현상 (결함 집중)

버블 정렬

주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식

초기 상태: 9, 6, 7, 3, 5

image.png

인터페이스 구현 검증 도구

→ xUnit, STAF, FitNesse, NTAF, Selenium, watir 등

빅오 표기법(Big-O Notation)

  • O(1) → 스택의 삽입, 삭제
  • O(log2n) → 이진트리, 이진 검색
  • O(n) → for문
  • O(nlog2n) → 힙 정렬, 2-Way 합병 정렬
  • O(n^2) → 삽입 정렬, 선택 정렬, 쉘 정렬, 버블 정렬, 퀵 정렬
  • O(2^n) → 피보나치 수열

화이트박스 테스트의 종류

  • 기초 경로 검사 → 수행 가능한 모든 경로를 의미함
  • 제어 구조 검사
    • 조건 검사
    • 루프 검사
    • 데이터 흐름 검사

블랙박스 테스트의 종류

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

힙 정렬 (Heap Sort)

전이진 트리를 이용한 정렬 방식

평균과 최악 모두 시간 복잡도는 O(nlog2n)

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

  • 저장소(Repository)
  • 가져오기(Import)
  • 체크아웃(Check-Out) → 저장소에서 소스 파일과 함께 버전 관리를 위한 파일들을 받아옴
  • 체크인(Check-In) → 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함
  • 커밋(Commit)
  • 동기화(Update) → 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함

스택 자료 구조

→ 재귀 호출, 후위 표기법, 깊이 우선 방식과 같이 왔던 길을 되돌아가는 경우에 사용됨

3과목: 데이터베이스 구축

카티션 프로덕트(Cartesian Product) = 교차곱

→ 두 릴레이션의 차수(Degree, 속성의 수)는 더함

→ 카디널리티(튜플의 수)는 곱함

시스템 카탈로그

→ 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

→ 사용자가 조회할 수는 있으나 갱신하는 것은 불가능

순수 관계 연산자

→ Selet(시그마), Project(파이), Join(⨝), Division(%)

데이터베이스 설계 - 물리적 설계

→ 레코드 집중의 분석 및 설계, 접근 경로 설계, 저장 레코드의 양식 설계

병행제어 기법의 종류

→ 로킹, 타임 스탬프 순서, 최적 병행수행, 다중 버전 기법

관계형 데이터베이스 용어

  • 튜플 (Tuple)
    • 릴레이션을 구성하는 각각의 행
    • 속성의 모임
    • 파일 구조에서 레코드와 같은 의미
    • 카디널리티 또는 기수, 대응수
  • 속성 (Attribute)
    • 데이터베이스를 구성하는 가장 작은 논리적 단위
    • 파일 구조상의 데이터 항목 또는 데이터 필드
    • 개체의 특성 기술
    • 속성의 수를 디그리(Degree) 또는 차수라고 함
  • 도메인 (Domain)
    • 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자 값들의 집합
    • 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용

파티셔닝(=분할) 방식

→ 범위 분할, 목록 분할, 해시분할, 조합 분할, 라운드로빈 분할

무결성 제약 조건

  • 개체 무결성 → 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
  • 도메인 무결성 → 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
  • 참조 무결성 → 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 하고, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
  • 사용자 정의 무결성 → 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다는 규정

E-R 다이어그램

사각형 - 개체 타입

다이아몬드(마름모) - 관계 타입

타원 - 속성

선, 링크 - 개체 타입과 속성 연결

4과목: 프로그래밍 언어 활용

페이징 기법

페이지 크기가 작아질 수록

→ 기억장소 이용 효율 증가

→ 입/출력 시간 늘어남

→ 내부 단편화 감소

→ 페이지의 개수가 많아져 주소를 저장하는 맵 테이블의 크기가 커짐

C 언어

#include <stdio.h>
int main(int argc, char *argv[] {
	int a = 4;
	int b = 7'
	int c = a | b;    // 정수형 c를 선언하고 a의 값과 b의 값을 | (비트 or) 연산한 값으로 초기화 
	// c = 7 
	
	printf("%d", c);
	return 0;
}

OSI-7Layer - 네트워크 계층

  • 패킷을 발신지로부터 최종 목적지까지 전달하는 책임
  • 패킷에 발신지와 목적지의 논리 주소 추가
  • 라우터 또는 교환기는 패킷 전달을 위해 경로를 지정하거나 교환 기능을 제공
  • 데이터 단위 → 패킷

* 데이터 링크 계층의 데이터 단위 → 프레임

응집도 (강 → 약)

기능적 응집도(Functional) → 순차적 응집도(Sequential) → 교환(통신)적(Communication) 응집도 → 절차적 응집도(Procedural) → 시간적(Temporal) 응집도 → 논리적(Logical) 응집도 → 우연적(Coincidental) 응집도

Java 언어

public class Operator {
	public static void main(String[] args) {
		int x = 5, y = 0, z = 0;
		y = x++;   // 후치 증가 연산자이므로 x의 값 5를 y에 저장한 후 x의 값을 1 증가시킴 
		// x = 6, y = 5, z = 0
		z = --x;   // x는 전치 감소 연산자이므로 x의 값을 1 감소시킨 후 x의 값 5를 z에 저장
		// x = 5, y = 5, z = 5
		System.out.print(x + ", " + y + ", " + z);
	}
}

출력 결과 ⇒ 5, 5, 5

C 언어

#include <stdio.h>
int main (int argc, char *argv[]) {
	int a[2][2] = {{11, 22}, {44, 55}};
	int i, sum = 0
	int *p;   // 포인터 변수 p 선언 
	p = a[0]; // p에 a 배열의 a[0]의 주소를 저장 
	for (i=1; i<4; i++)
		sum += *(p + i);   // sum에 p+i가 가리키는 곳의 값을 더한다! 먼 소린지 모르겠다! 
	printf("%d", sum);
	return 0;
}

image.png

C언어의 대표적인 표준 라이브러리

  • stdio.h
    • 데이터의 입/출력에 사용되는 기능들을 제공
  • math.h
    • 수학 함수들을 제공
  • string.h
    • 문자열 처리에 사용되는 기능들을 제공
  • stdlib.h
    • 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들 제공
  • time.h
    • 시간 처리에 사용되는 기능들 제공

스레싱(Thrashing)

프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

  • 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상, 전체 시스템의 성능 저하
  • 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 됨
  • 스래싱 현상 방지 방법
    • 다중 프로그래밍의 정도를 적정 수준으로 유지
    • 페이지 부재 빈도를 조절하여 사용
    • 워킹셋 유지
    • 부족한 자원 증설, 일부 프로세스 중단
    • CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영

은행원 알고리즘

→ 교착상태의 해결 방법 중 회피 기법에 해당함

결합도 (낮 → 높)

자료(Data) 결합도 → 스탬프(Stamp) 결합도 → 제어(Control) 결합도 → 외부(External) 결합도 → 공통(공유, Common) 결합도 → 내용(Content) 결합도

연산자 우선 순위

→ 단항, 산술, 시프트, 관계, 비트, 논리, 조건, 대입, 순서 연산자 순

→ 관계 연산자 중에서 <, <=, >=, >==, != 보다 우선순위가 높다

image.png

Java 언어

public class array1 {
	public static void main(String[] args) {
		int cnt = 0;
		do {
			cnt++;
			} while (cnt < 0);  // cnt가 0보다 작은 동안 cnt++를 반복 수행 
			// do~while문은 조건이 거짓이라도 한 번은 실행하므로 cnt가 1이 된 후 do~while문을 빠져나온다 
		if (cnt==1)
			cnt++;   // cnt = cnt + 1과 동일 -> cnt 값 1에 1을 누적 시킴 
			// cnt = 2 
		else 
			cnt = cnt + 3;
		System.out.printf("%d", cnt); // cnt의 값 2를 정수로 출력 
	}
}

UNIX/LINUX의 export 명령어

→ 기존 환경 변수의 값을 변경하거나, 새로운 환경 변수를 설정할 때 사용하는 명령어

* 환경 변수를 명령어나 스크립트에서 사용하기 위해서는 $ 를 입력해ㅑㅇ 함

* set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시

  • export가 매개변수 없이 쓰일 경우 현재 설정된 환경변수들이 출력
  • 사용자가 생성하는 변수는 export 명령어로 표시하지 않는 한 현재 쉘에 국한됨
  • 변수를 export 시키면 전역(Global) 변수처럼 되어 끝까지 기억됨

TCP 프로토콜

  • 흐름 제어 기능을 수행
  • 전이중 방식의 양방향 가상회선 제공
  • 전송 데이터와 응답 데이터를 함께 전송할 수 있음

CSMA/CA

→ 무선 랜에서 데이터 전송 시 , 매체가 비어있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법

→ 네트워크에 데이터의 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비하여 확인 신호를 전송

5과목: 정보시스템 구축 관리

SSH(Secure Shell)

  • 기본 네트워크 포트: 22번
  • 전송되는 데이터는 암호화 됨
  • 키를 통한 인증은 클라이언트의 공개키를 서버에 등록해야 함
  • 서로 연결되어 있는 컴퓨터 간 원격 명령 실행이나 셀 서비스 등을 수행

코드의 오류

  • 필사 오류 = 오자 오류: 입력 시 임의의 한 자리를 잘못 기록한 경우
  • 전위 오류: 입력 시 좌우 자리를 바꾸어 기록한 경우 발생
  • 이중 오류: 전위 오류가 2개 이상 발생한 경우
  • 생략 오류: 입력 시 한 자리를 빼놓고 기록한 경우
  • 추가 오류: 입력 시 한 자리를 더 추가하여 기록한 경우
  • 임의 오류: 오류가 두 가지 이상 결합하여 발생한 경우

N-Screen

→ PC, TV, 휴대폰에서 원하는 콘텐츠를 끊김없이 자유롭게 이용할 수 있는 서비스

스택 가드(Stack Guard)

→ 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장해 두었다가 그 값이 변경되었을 경우 오버플로우 상태로 가정하여 프로그램 실행을 중단하는 기술

벨 라파듈라 모델

→ 군대의 보안 레벨처럼 정보의 기밀성에 따라 상하 관계가 구분된 정보를 보호하기 위해 사용

* 클락-윌슨 무결성 모델 → 무결성 중심의 상업용 모델, 사용자가 직접 개체에 접근할 수 없고 프로그램에 의해 접근 가능한 보안 모델

* PDCA 모델 → 프로세스 및 제품의 제어 및 지속적인 개선을 위해 ‘계획, 행동, 평가, 개선’의 4 단계를 반복하는 모델

* 만리장성 모델 → 서로 이해 충돌 관계에 있는 객체 간의 정보 접근을 통제하는 모델

ISO 12207 표준의 기본 생명 주기의 프로세스

→ 획득 프로세스, 공급 프로세스, 개발 프로세스, 운영 프로세스, 유지 보수 프로세스 등

OSPF 라우팅 프로토콜

  • 네트워크 변화에 신속하게 대처
  • 멀티캐스팅 지원
  • 최단 경로 탐색에 Dijkstra 알고리즘 사용

* RIP → 거리 벡터 라우팅 프로토콜

SAN(Storage Area Network)

→ 네트워크상에 광채널 스위치의 이점인 고속 전송과 장거리 연결 및 멀티 프로토콜 기능을 활용

* MBR(Memory Buffer Register) → 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터

* NAC(Network Access Control) → 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔류션

* NIC(Network Interface Card) → 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치

소프트웨어 비용 산정 기법 - COCOMO 모형

→ Organic, Semi-Detached, Embedded로 구분

SPICE 모델의 프로세스 수행 능력 수준 6단계

불완전 - 0

수행 - 1

관리 - 2

확립 - 3

예측 - 4

최적화 - 5

라우터

→ 서로 다른 네트워크 대역에 있는 호스트를 상호간에 통신할 수 있도록 해주는 네트워크 장비

* L2 스위치: OSI 2계층에 속하는 장비로 MAC 주소를 기반으로 프레임 전송, 동일 네트워크 간의 연결만 가능

* HIPO → 시스템의 분석 및 설계나 문서화할 떄 사용되는 기법

* RAD → 소프트웨어를 빠르게 개발하기 위해 우수한 개발 도구를 이용하고, 기존의 개발 프로세스를 통합하는 등 빠른 개발주기를 가진 점진적 소프트웨어 개발 방식

대칭키 암호화 기법

암호화 키와 복호화 키가 동일한 암호화 알고리즘

→ DES, SEED, AES ,ARIA, LSFSR, RC4 등

IPSec

→ 암호화와 복호화가 모두 가능한 양방향 암호 방식

  • ESP는 발신지 인증, 데이터 무결성, 기밀 성 모두를 보장
  • 운영 모드는 Tunnel 모드와 Transport 모드로 분류
  • AH는 발신지 호스트를 인증하고, IP 패킷의 무결성을 보장함

nmap

→ 서버에 열린 포트 정보를 스캐닝하여 보안 취약점을 찾는데 사용하는 도구

type → 명령어의 정보를 확인하는 옵션 또는 ftp에서 전송 모드를 설정할 때 사용하는 명령어

mkdir → 서버에 디렉터리를 생성하는명령어

ftp → FTP 서버에 접속할 때 사용하는 명령어

하둡(Hadoop)

→ Sqoop, 하둡과 관계형 데이터베이스 간 데이터를 전송할 수 있도록 설계된 도구

해쉬 기법

  • 임의의 길이의 입력 데이터를 받아 고정된 길이의 해쉬 값으로 변환
  • 대표적인 해쉬 알고리즘으로 HAVAL, SHA-1 등
  • 해쉬 함수는 일방향 함수
  • RHDROZL

* 공개키 암호화 알고리즘들 → 해시 기법이 아닌 소인수 분해나 이산대수 등 고유의 방법으로 키 생성

소프트웨어 비용 추정 모형

→ COCOMO, Putnam, Function-Point

* PERT → 프로젝트 일정 계획 및 관리에 사용되는 방법론

2021 3회 문제 풀이

1과목: 소프트웨어 설계

UML의 관계

  • 연관(Association) 관계: 2개 이상의 사물이 서로 관련
  • 집합(Aggregation) 관계: 하나의 사물이 다른 사물에 포함
  • 포함(Composition) 관계: 집합 관계의 특수한 형태 → 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
  • 일반화(Generalization) 관계: 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현하는 관계
  • 의존(Dependency) 관계: 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
    • 한 사물의 명세가 바뀌면 다른 사물에 영향을 주며, 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우에 나타나는 관계
  • 실체화(Realization) 관계: 사물이 할 수 있거나 해야하는 기능으로 서로를 그룹화 할 수 잇는 관계

추상화 기법

→ 과정 추상화, 데이터 추상화, 제어 추상화

기능적 요구사항

→ 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항

* 성능, 보안, 품질, 안정 등에 대한 요구사항은 비기능적 요구사항에 해당함

크래스 다이어그램의 구성 요소

  • 클래스
    • 각각의 객체들이 갖는 속성과 오퍼레이션(동작)을 표현한 것
    • 속성 - 클래스의 상태나 정보를 표현 / 오퍼레이션 - 클래스가 수행할 수 있는 동작으로 함수라고도 함
  • 제약조건 → 중괄호를 이용
  • 관계
    • 클래스와 클래스 사이의 연관성 표현
    • 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계

요구사항 분석 과정에서 사용되는 다이어그램

→ 자료 흐름도(Data Flow Diagram), UML(Unified Modeling Language), E-R(개체-관계) 모델

* AVL Diagram → 이진 탐색트리에서 활용되는 다이어그램

GoF 디자인 패턴 - 전략(Strategy) 패턴

→ 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 행위 패턴

* 프로토타입(Prototype) 패턴 → 인스턴스를 복제하여 사용하는 패턴 (생성 패턴)

럼바우 분석 기법 - 기능 모델링

→ 자료 흐름도를 주로 이용함

순차 다이어그램

→ 시간의 흐름에 따라 상호 작용하는 개체들을 표현하는 동적 다이어그램

미들웨어

→ 애플리케이션과 사용자 사이 뿐만 아니라 클라이언트와 서버, 운영체제와 응용 프로그램과 같이 두 시스템 사이에서 다양한 서비스를 제공하는 소프트웨어

  • 분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는 소프트웨어
  • 위치 투명성을 제공
  • 분산 시스템의 여러 컴포넌트가 요구하는 재사용 가능한 서비스의 구현을 제공

파이프-필터 패턴

→ 데이터 통로인 파이프를 이용하여 컴포넌트인 필터 간에 데이터를 전송하는 구조로, 단방향 및 양방향 모두 구현할 수 있으며, 필터 간 이동 시 오버헤드 발생

2과목: 소프트웨어 개발

목적에 따른 테스트

  • 회복 테스트: 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
  • 안전 테스트: 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인
  • 강도 테스트: 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
  • 성능 테스트: 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트, 소프트웨어의 응답 시간, 처리량 등을 테스트
  • 구조 테스트: 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
  • 회귀 테스트: 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
  • 병행 테스트: 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트

버블 정렬

→ 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식

깊이 우선 탐색(DFS)

→ 정점에서 자식 노드 방향으로 운행하면서 형제 노드와 자식 노드가 있을 때 자식 노드를 우선 탐색하는 기법

→ 자식 노드의 탐색이 모두 끝나면 다시 형제 노드부터 탐색을 시작하는 방식으로 모든 노드를 한 번씩 방문

테스트 하네스(Test Harness)의 구성 요소

  • 테스트 드라이버 → 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 도구
  • 테스트 스텁 → 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈
  • 테스트 슈트 → 테스트 케이스의 집합
  • 테스트 케이스 → 테스트 항목의 명세서
  • 테스트 스크립트 → 실행 절차에 대한 명세서
  • 목 오브젝트 → 사용자 행위를 조건부로 입력해두면, 그 상황에 맞는 예정된 행위를 수행하는 객체

자료 구조의 분류

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

스택

  • 언더플로 → 더 이상 삭제할 데이터가 없는 상황에서 데이터 삭제될 때 발생
  • 오버 플로 → 모든 기억 공간이 꽉 채워져 있는 상태에서 데이터가 삽입될 때 발생

소프트웨어 검증과 확인

  • 검증 (Verification) → 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지를 점검
  • 확인 (Validation) → 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지를 확인

형상 관리 기능의 종류

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

결함(Fault)

→ 오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 것

소프트웨어 품질 특성

  • 기능성(Functionality) → 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는지 여부를 나타냄
  • 신뢰성(Reliability) → 소프트웨어가 요구된 기능을 정확하고 일관되게 오류 없이 수행할 수 있는 정도를 나타냄
  • 사용성(Usability) → 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고 사용하며, 향후 다시 사용하고 싶은 정도를 나타냄
  • 효율성(Efficiency) → 사용자가 요구하는 기능을 할당된 시간 동안 한정된 자원으로 얼마나 빨리 처리할 수 있는지 정도를 나타냄
  • 유지 보수성(Maintainability) → 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트웨어를 개선하거나 확장할 수 있는 정도를 나타냄
  • 이식성(Portability) → 소프트웨어가 다른 환경에서도 얼마나 쉽게 적용할 수 있는지 정도를 나타냄

트리 구조의 검색 효율

→ 이진 탐색트리의 평균 시간 복잡도는 O(logN)

→ 이를 보완하고자 개발된 균형트리가 AVL, 2-3, 레드-블랙 트리

중위 순회

Left → Root → Right

테스트 케이스 생성 도구

→ 자료 흐름도, 기능 테스트, 입력 도메인 분석, 랜덤 테스트

3과목: 데이터베이스 구축

논리 데이터베이스 설계

→ 트랜잭션의 인터페이스 설계, 데이터 타입 및 타입들 간의 관계 표현

키(Key)

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

  • 슈퍼키: 유일성은 만족하지만 최소성은 만족시키지 못함
  • 후보키: 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합 → 유일성과 최소성 모두 만족
  • 기본키
  • 대체키: 후보키 중에서 선정된 기본키를 제외한 나머지 후보키
  • 외래키

로킹

  • 로킹 단위가 크면 병행성 수준이 낮아짐
  • 로킹 단위가 크면 병행 제어 기법이 단순해지고, 로킹 단위가 작아지면 병행 제어 기법이 복잡해짐
  • 로킹 단위가 작으면 로크의 수가 많아지고, 로킹 단위가 크면 로크의 수가 적어짐
  • 파일, 레코드, 필드는 물론 데이터베이스까지 로킹 단위가 될 수 있음

관계해석

→ 원하는 릴레이션을 정의하는 방법을 제공하는 비절차적 특성을 지님

정규화

→ 개념적 설계 다음에 수행하는 논리적 설계 단계에서 수행하는 작업

병행 제어 기법

  • 로킹
    • 주요 데이터의 액세스를 상호 배타적으로 하는 것
  • 타임 스탬프 순서
    • 동시성 제어를 위한 직렬화 기법으로, 트랜잭션 간의 처리 순서를 미리 정함
  • 최적 병행수행(검증 기법, 확인 기법, 낙관적 기법)
  • 다중 버전 기법

제5정규형

→ 테이블의 모든 조인 종속이 테이블의 후보키를 통해서망 성립되는 정규형

함수적 종속

X가 Y를 함수적으로 종속할 때 X → Y로 표기함

4과목: 프로그래밍 언어 활용

자동반복 요청방식의 오류 제어

→ Stop-and-Wait ARQ, Go-Back-N ARQ, Selective-Repeat ARQ, Adaptive ARQ

Python

def cs(n):
	s = 0
	for num in range(n+1):   # 0에서 11까지 순서대로 num에 저장하며 
		s += num               # s에 num 값을 누적시키는 것을 반복 
	return s
print(cs(11))

C

#include <stdio.h>
int main(void) {
	int a = 3, b = 4, c = 2;
	int r1, r2, r3;
	
	r1 = b <= 4 || c == 2;
	r2 = (a > 0) && (b < 5);
	r3 = !c;
	
	printf("%d", r1+r2+r3);
	return 0;
}

image.png

뭐야 시발..

Java 연산자의 우선순위

단항 → 산술 → 시프트 → 관계 → 비트 → 논리 → 조건 → 대입 → 순서 연산자

SSTF

→ 현재 위치에서 가장 가까운 거리에 있는 트랙의 요청을 먼저 서비스

IP 주소

A 클래스 0~127

B 클래스 128~191

C 클래스 192~223

D 클래스 224~239

E 클래스 실험적 주소이며 공용되지 않음

Java

public class ovr {
	public static void main(String[] args) {
		int arr[];
		int i = 0;
		arr = new int[10];   // arr에 10개의 요소ㅡㄹ 할당 
		arr[0] = 0; 
		arr[1] = 1;
		while(i < 8) {       // i가 8보다 작은 동안 아래를 반복 수행 
			arr[i+2] = arr[i+1] + arr[i];
			i++;               // i에 1씩 누적 
		}
		System.out.println(arr[9]);
	}
}

image.png

스레드

→ 프로세스 내에서의 작업 단위

  • 프로세스가 준비 상태에서 프로세서가 배당되어 실행 상태로 변화하는 것을 디스패치라고 함
  • 프로세스 제어 블록은 프로세스 식별자, 프로세스 상태 등의 정보로 구성
  • 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정을 문맥 교환이라고 함

결합도

→ 모듈들이 변수를 공유하여 사용하게 하거나 제어 정보를 교류하게 하면 결합도가 높아짐

  • 오류가 발생했을 때 전파되어 다른 오류의 원인이 되는 파문효과를 최소화해야 함
  • 인터페이스가 정확히 설정되어 있지 않을 경우 불필요한 인터페이스가 나타나 모듈 사이의 의존도는 높아지고 결합도가 증가
  • 다른 모듈과 데이터 교류가 필요한 경우 전역변수보다는 매개변수를 사용하는 것이 결합도를 낮추는데 도움이 됨

TCP 헤더

→ 윈도우의 최대 크기는 65,535(2^16-1) byte

  • 순서 번호는 전달하는 바이트마다 번호가 부여
  • 수신 번호 확인은 상대편 호스트에서 받으려는 바이트의 번호 정의
  • 체크섬은 데이터를 포함한 세그먼트의 오류를 검사

페이지 교체 알고리즘의 종류

→ OPT, FIFO, LRU, LFU

C언어의 예약어

→ else는 예약어인데 True는 예약어가 아님 파이썬이랑 ㅏㄱ각함

파일 디스크립터

리눅스 또는 유닉스에서 프로세스가 파일에 접근하는 데 사용하는 일종의 키

→ 사용자가 파일 디스크립터의 정보를 확인할 수는 있으나 직접 참조할 수는 없다

  • 파일 관리를 위해 시스템이 필요로하는 정보를 가지고 있음
  • 보조기억장치에 저장되어 있다가 파일이 개방되면 주기억장치로 이동
  • 파일 제어 블록이라고도 함

5과목: 정보시스템 구축 관리

이상 탐지 기법

→ 평균적인 시스템의 상테를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려주는 시스템

* 오용 탐지 기법 → Signature Base나 Knowledge Base라고도 불리며 이미 발견되고 정립된 공격 패턴을 입력해두었다가 탐지 및 차단

* HIDS(Host-Based Intrusion Detection) → 운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지에 대한 기록을 남기고 추적

* NIDS(Network-Based Intrusion Detection System) → 대표적: Snort

* 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크인 DMZ에는 IDS가 설치될 수 없음

접근통제

  • MAC(Mandatory Access Control) → 강제 접근 통제, 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
  • DAC(Discretionary Access Control) → 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
  • RBAC(Role Based Access Control) → 사용자의 역할에 따라 접근 권한을 부여하는 ㅂ방식

텐서플로

→ 구글의 구글 브레인 팀이 제작하여 공개한 기계 학습을 위한 오픈 소스 소프트웨어 라이브러리

* 타조 → 오픈 소스 기반 분산 컴퓨틴 플랫폼인 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트

* 원 세그 → 일본의 디지털 휴대 이동 방송 서비스

* 포스퀘어 → 소셜 네트워크 서비스 (위치 기반)

PaaS-TA

→ 국내 IT 서비스 경쟁력 강화를 목표로 개발, 개방형 클라우드 컴퓨팅 플랫폼

* N20S → 한국전자통신연구원이 개발한 네트워크 운영체제

XDMCP

→ GUI 환경을 구축한 유닉스나 리눅스 시스템에서 서버와 클라이언트가 GUI 환경 관리자인 XDM과 네트워크를 통해 소통하는데 사용하는 프로토콜

VLAN

→ 논리적으로 LAN을 구성하여 Broadcast Domain을 구분할 수 있게 해주는 기술

RSA

→ 비대칭 암호화 방식으로 소수를 활용한 암호화 알고리즘

스토리지

  • SDS

    → 가상화를 적용하여 필요한 공간만큼 나눠 사용할 수 있도록 하며 서버 가상화와 유사, 스토리지 자원을 효율적으로 나누어 쓴느 방법

  • DAS → 서버와 저장장치를 전용 케이블로 직접 연결하는 방식

  • NAS → 서버와 저장장치를 네트워크를 통해 연결하는 방식

  • SAN →DAS + NAS

COCOMO 소프트웨어 개발 유형

  • 조직형 (Organic) → 기관 내부에서 개발된 중/소 규모의 소프트웨어, 5만 라인 이하의 소프트웨어를 개발하는 유형
  • 반분리형 (Semi-Detached) → 조직형과 내장형의 중간형, 30만 라인 이하의 소프트웨어를 개발하는 유형
  • 내장형 (Embedded) → 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 라인 이상의 소프트웨어를 개발하는 유형

나선형 모델(Spiral Model)

→ 계획 수립, 위험 분석, 개발 및 검증, 고객 평가 과정을 반복하며 수행하는 개발 방법론

  • 비교적 대규모 시스템에 적합
  • 개발 순서: 계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
  • 소프트웨어를 개발하면서 발생하 수 있는 위험을 관리하고 최소화하는 것

MQTT(Message Queuing Telemetry Transport)

→ TCP/IP 기반 네트워크에서 동작하는 발행-구독 기반의 메시징 프로토콜, 최근 IoT 환경에서 자주 사용되고 있음

SSO (Single Sign On)

→ 하나의 시스템에서 인증에 성공하면 다른 시스템에 대한 접근 권한도 얻는 시스템

LOC 기법

→ S/W 각 기능의 원시 코드 라인수와 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법

OWASP

→ 오픈소스 웹 애플리케이션 보안 프로젝트, 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 곳

profile
영차영차 😎

0개의 댓글