정보처리기사 필기 정리 - 4과목
업데이트:
코로나 때문에 시험이 4월 25일로 미루어져 이제서야 포스팅을 올린다.
정보처리기사 4과목은 프로그래밍 언어 활용이다.
1. 서버프로그램 구현
1-1. 개발환경 구축
개발환경 구축
- 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것
- 개발 하드웨어 환경
- 클라이언트
- 서버
- 웹 서버
- 웹 애플리케이션 서버
- 데이터베이스 서버
- 파일 서버
- 개발 소프트웨어 환경
- 시스템 소프트웨어
- 운영체제(OS, Operation System)
- JVM(Java Virtual Machine)
- Web Server
- WAS(Web Application Server)
- DBMS(Database Management System)
- 개발 소프트웨어
- 요구사항 관리 도구
- 설계/모델링 도구
- 구현 도구
- 빌드 도구
- 테스트 도구
- 형상 관리 도구
- 시스템 소프트웨어
- 개발환경 구축 순서
- 목표 시스템의 환경 및 요구사항 분석
- 개발언어 선정
- 통합 개발환경 선정
- 프로그램의 배포 및 라이브러리 관리를 위한 빌드 도구 선정
- 개발 인원을 고려한 형상관리 도구를 선정
- 프로젝트 검증에 적합한 테스트 도구를 선정
서버 개발 프레임워크
- 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답처리, 아키텍처 모델 구현 등을 손쉡게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어
- 서버 개발 프레임워크의 종류
- Spring(JAVA)
- Node.js(JavaScript)
- Django(Python)
- Codeigiter(PHP)
- Ruby on Rails(Ruby)
1-2. 공통 모듈 구현
재사용
-
목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
-
재사용 범위에 따른 분류
- 함수와 객체 재사용 : Function, Class 단위
- 컴포넌트 재사용 : Component 단위
- 애플리케이션 재사용
모듈화
-
소프트웨어 개발 작업을 실제로 개발할 수 있는 작은 단위로 나누는 것
-
모듈화 측정 척도
- 응집도
- 결합도
-
모듈 간의 좋은 관계 : 응집도는 높게, 결합도는 낮게
응집도
-
인터페이스의 요청을 처리함에 있어서 공통 모듈 내의 클래스들 간에 얼마나 유기적으로 협업하여 처리하는 가에 관한 정도
-
응집도 유형
-
기능적(Functional Cohension)
-
순차적(Sequential Cohension)
-
통신적(Communication Cohension)
-
절차적(Procedual Cohension)
-
시간적(Temporal Cohension)
-
논리적(Logical Cohension)
-
우연적(Coincidental Cohension)
-
결합도
- 어떤 모듈이 다른 모듈에 의존하는 정도
- 결합도 유형
- 내용(Content Coupling)
- 공통(Common Coupling)
- 외부(External Coupling)
- 제어(Control Coupling)
- 스탬프(Stamp Coupling)
- 자료(Data Coupling)
1-3. 서버 프로그램 구현
보안 취약성 식별
- 소프트웨어 개발 보안은 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
- 소프트웨어 개발 보안 점검 항목
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
API
- API는 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정해 놓은 인터페이스
- API의 종류
- Windows API
- 단일 유닉스 규격(SUS)
- Java API
- 웹 API
1-4. 배치 프로그램 구현
배치 프로그램
- 배치 프로그램은 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것
- 배치 프로그램의 필수 요소
- 대용량 데이터
- 자동화
- 견고함
- 안정성
- 성능
- 배치 스케줄러는 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 배치 스케줄러의 종류
- Spring Batch
- Quartz
2. 프로그래밍 언어 활용
2-1. 기본문법 활용
데이터 타입
- 변수에 저장될 데이터의 형식을 나타내는 것
- 데이터 타입의 유형
- 불린 타입
- 문자 타입
- 문자열 타입
- 정수 타입
- 부동 소수점 타입
- 배열 타입
변수
- 변수는 저장하고자 하는 어떠한 값이 있을 때, 그 값을 주기억 장치에 기억하기 위한 공간을 의미
- 변수는 저장하는 값에 따라 정수형, 실수형, 문자형 등으로 구분
- C언어 변수명 설정 규칙
- 영문자, 숫자, 밑줄(_)의 사용이 가능
- 첫 글자는 영문자나 ‘_‘로 시작, 숫자는 사용불가
- 변수명에는 공백 사용 불가
- 영문자는 대소문자를 구분함
- 변수명은 제어문, 자료형 등 예약어(do, for, while, char, double 등) 사용 불가
연산자
- 연산자는 프로그램 실행을 위해 연산을 표현하는 기호
- 연산자의 종류는 산술 연산자, 관계 연산자, 비트 연산자, 시프트 연산자, 논리 연산자 등이 있음
- 연산 표기법의 종류
- 전위(Prefix) 표기법
- 중위(Infix) 표기법
- 후위(Postfix) 표기법
2-2. 언어특성 활용
절차적 프로그래밍 언어
- 일련의 처리 절차를 수행하는 프로시저를 구현하며, 정해진 문법에 따라 순서대로 기술하는 언어
- 장점 : 실행 속도가 빠르며, 모듈 구성이 용이한 구조적 프로그래밍
- 단점 : 프로그램 분석이 어렵고, 유지 보수나 코드 수정이 어려움
- 종류 : C, ALGOL, COBOL, FORTRAN
객체지향 프로그래밍 언어
- 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법
- 장점 : 재사용성, 소프트웨어 개발 및 유지보수가 용이
- 단점 : 구현 시 처리 시간의 지연
- 특징 : 캡슐화, 정보은닉, 추상화, 상속성, 다형성
- 종류 : C#, JAVA, C++, Smalltalk
스크립트 언어
- HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용되며, 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하는 언어
- 장점 : 컴파일 없이 바로 실행하며 소스 코드를 빠르게 수정 가능
- 단점 : 코드를 읽고 해석해야 하므로 실행속도가 느림
- 클라이언트용 스크립트 언어 : JavaScript
- 서버용 스크립트 언어 : ASP, JSP, PHP, Python
선언형 언어
- 명령형 언어가 문제를 해결하기 위한 방법을 기술한다면 선언형 언어는 프로그램이 수행해야 할 문제를 기술하는 언어
- 종류 : LISP, PROLOG, Haskell, SQL, HTMl, XML
2-3. 라이브러리 활용
라이브러리
- 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
- 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공
- 라이브러리 종류 : 표준 라이브러리, 외부 라이브러리
- C언어의 대표적인 표준 라이브러리
- stdio.h : 데이터 입출력
- string.h : 문자열 처리
- math.h : 수학 함수
- stdlib.h : 자료형 변환, 난수 발생, 메모리 할당
- time.h : 시간 처리
- JAVA언어의 대표적인 표준 라이브러리
- java.lang : 기본 인터페이스, 자료형
- java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리
- java.io : 파일 입출력
- java.net : 네트워크 관련
- java.awt : 사용자 인터페이스
데이터 입출력
- 키보드로 입력 받아 화면으로 출력할 때 사용하는 함수 또는 클래스와 메소드
- C언어의 데이터 표준 입출력 함수
- scanf()
- getchar()
- gets()
- printf()
- putchar()
- puts()
- JAVA 언어의 데이터 표준 입출력
- 입력 관련 클래스 : Scanner
- 서식 지정 출력 : System.out.printf()
예외 처리
- 프로그램의 정상적인 실행을 방해하는 조건이나 상태를 뜻하는 예외가 발생했을 때 해당 문제에 대한 처리 루틴을 수행하도록 하는 것
- JAVA에서의 예외 처리 : try~catch 구문을 이용한 예외 처리
프로토타입
- 프로그래밍 언어에서 프로토타입이랑 함수 원형(Prototype)이라는 의미로 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것
- C언어에서는 함수가 호출되기 전에 함수가 미리 정의된 경우에는 프로토타입을 정의하지 않아도 됨
- 프로토타입에 정의된 반환 형식은 함수 정의에 지정된 반환 형식과 반드시 일치하여야 함
3. 응용 SW 기초 기술 활용
3-1. 운영체제 기초 활용
운영체제 종류
- 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 인터페이스를 제공하는 시스템 소프트웨어
- 운영체제의 종류
- Windows
- UNIX
- LINUX
- MacOS
- MS-DOS
메모리 관리
- 기억장치의 계층 구조
- 레지스터
- 캐시 기억장치
- 주기억장치
- 보조기억장치
- 기억장치 관리 전략
- Fetch(반입) : 언제 적재?
- Placement(배치) : 어디에 위치?
- Replacement(교체) : 어느 영역 교체?
- 주기억장치 할당 기법
- 연속 할당
- 분산 할당
- 가상기억장치의 구현 기법
- 페이징 : 동일한 크기로 나눔
- 세그먼테이션 : 다양한 크기의 논리적 단위로 나눔
- 페이지 교체 알고리즘 종류
- FIFO : 선입선출
- LRU : 최근 오래 사용 않은 페이지 교체
- NUR : 최근 사용 않은 페이지 교체
- OPT : 최적 교체
- LFU : 사용 빈도가 가장 작은 페이지
- SCR : 2차 기회 교체
- 가상기억장치의 기타 관리
- Locality
- Working Set
- Thrashing
프로세스 스케줄링
- 프로세스 : 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램
- 스레드 : 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 스케줄링 : 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 비선점 스케줄링의 종류
- FIFO(FCFS)
- SJF
- HRN
- 선점 스케줄링의 종류
- RR
- SRT
- MLQ
- MFQ
환경변수
- 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
- 윈도우 환경변수
- %APPDATA%
- %COMSPEC%
- %PATH%
- %USERNAME%
- %PROGRAMFILES%
- %SYSTEMDRIVE%
- 유닉스 환경변수
- $DISPLAY
- $HOME
- $LANG
- $PATH
- $PWD
- $TERM
- $USER
shell script
- CLI(Command Line Interface)는 키보드로 명령어를 직접 입력하여 작업을 수행하는 사용자 인터페이스
- UNIX의 기본 명령어
- cat : 파일 내용을 화면에 표시
- chdir : 디렉토리의 위치 변경
- chmod : 파일의 사용 허가(권한) 지정
- chown : 소유자 변경
- cp : 파일 복사
- getpid : 자신의 프로세스 아이디를 얻음
- ls : 현재 디렉토리 내의 파일 목록을 표시
- rm : 파일 삭제
3-2. 네트워크 기초 활용
인터넷 구성의 개념
- 인터넷은 TCP/IP 프로토콜을 기반으로 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망
- 네트워크 장비의 종류
- 게이트웨이(Gateway)
- 라우터(Router)
- 리피터(Repeater)
- 허브(Hub)
- 랜 카드(NIC)
- 브리지(Bridge)
- 스위치(Switch)
네트워크 7계층
- OSI 7계층은 국제 표준화 기구인 ISO에서 다른 시스템간 통신을 위해 네트워크 구조를 제시한 기본 모델
- 7계층 : 응용 계층
- 6계층 : 표현 계층
- 5계층 : 세션 계층
- 4계층 : 전송 계층
- 3계층 : 네트워크 계층
- 2계층 : 데이터링크 계층
- 1계층 : 물리 계층
네트워크 프로토콜
- 프로토콜은 서로 다른 기기들 간의 데이터 교환을 원할하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약
- TCP/IP 4계층
- 4계층 : 응용 계층
- 3계층 : 전송 계층
- 2계층 : 인터넷 계층
- 1계층 : 네트워크 엑세스 계층
- 프로토콜의 기본 요소 : 구문, 의미, 시간
- 라우팅 프로토콜
- RIP : 거리 벡터 알고리즘
- IGRP
- OSPF : 링크 상태 알고리즘
- BGP
IP
- IP는 OSI 7계층의 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당
TCP/UDP
- TCP는 OSI 7계층의 전송 계층에서 논리적인 1:1 가상 회선을 지원하고 CRC 체크와 재전송 기능을 통해 신뢰성 있는 연결형 서비스를 제공
- TCP 사용 서비스
- FTP
- Telnet
- Http
- SMTP
- POP
- IMAP
- UDP는 비연결성이고 신뢰성이 없는 데이터 전송
- UDP 사용 서비스
- SNMP
- DNS
- TFTP
- NFS
- NETBIOS
- 인터넷 게임
3-3. 기본 개발환경 구축
웹서버
- 웹서버는 웹 브라우저 클라이언트로부터 HTTP request를 받아 HTML과 같은 정적인 contents를 제공하는 프로그램과 해당 애플리케이션 서버가 설치된 컴퓨터
- 웹 서버 종류
- Apache
- Nginx
- IIS
- GWS
- WAS서버는 DB 조회나 다양한 로직 처리를 요구하는 동적인 contents를 제공하기 위한 Apllication Server
- WAS 서버 종류
- Tomcat
- Undertow
- JEUS
- Weblogic
- Websphere
DB서버
- 사용자, 다른 애플리케이션, 데이터베이스와 상호 작용하여 데이터를 저장하고 분석하기 위한 컴퓨터 소프트웨어
- DB서버 종류
- Oracle
- DB2
- Microsoft SQL Server
- MySQL
- MongoDB
- DB서버 고려사항
- 가용성
- 성능
- 기술지원
- 상호호환성
- 구축비용
패키지
- 패키지 방식 개발은 여러 성공사례의 노하우를 기반으로 만들어진 개발된 제품을 이용하여 시스템을 구축하는 방식
- 패키지 방식 개발의 장점
- 국제 및 산업계 표준으로 정착된 비즈니스 프로세스 적용
- 품질이 검증된 안정적인 시스템 구축 가능
- 개발 기간의 단축으로 비용절감 효과
- 패키지 방식 개발의 단점
- 사용자 요구사항에 대한 대처가 쉽지 않음
- 사용자(고객)의 프로세스 개선의 저항발생
댓글남기기