Certificate/정보처리기사

프로그래밍 언어

Dev다D 2021. 1. 4. 21:28
반응형

개발 도구

빌드 도구 

- 작성한 코드의 빌드 및 배포를 수행

- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원하는 것

구현 도구

- 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현 소프트웨어가 어떤 프로그래밍 언어로 개발되는지 선택

테스트 도구

- 코드의 기능 검증과 전체의 품질을 높이기 위해 사용

형상 관리 도구

- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구

개발환경 구성요소

- 서버 하드웨어 개발환경에는 프로젝트 구성에 다라 웹서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 구분한다.

- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위해서 형상관리 툴을 사용한다.

- 클라이언트 하드웨어 개발환경은 클라이언트 서버, 웹 브라우저, 모바일 앱, 모바일 웹으로 구분한다.

- 프로젝트 요구사항에 부합한 운영체제, 미들웨어, 데이터베이스 시스템을 선정한다.

프레임워크 구성요소

- 개발환경 : 설계, 구현, 테스트 등 개발에 필요한 지원도구 모음

- 실행환경 : 자바기반 응용시스템 개발 시 필수적 기능을 패턴화해 미리 구현해둔 라이브러리 코드 모음

- 운영환경 : 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통 및 모니터링 도구 모음

- 관리환경 : 표준 프레임 워크에 대한 기술지원, 업그레이드 등 관리하기 위한 내부 업무 시스템

프레임워크의 특징

모듈화 (Modularity)

- 프레임워크는 구현을 인터페이스 뒤에 감춰 모듈화를 강화

- 설계와 구현 변경에 따르는 영향을 최소화

재사용성 (Reuseability)

- 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성을 높임

확장성 (Extensibility)

- 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장하게 해줌

제어의 역행 (IoC; Inversion of control)

- 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어

- 외부의 이벤트에 대해 애플리케이션이 어떤 메서드를 수행해야 할지 결정

재사용 프로그래밍 기법

- 재사용의 유형에는 함수/객체 재사용, 컴포넌트 재사용, 애플리케이션 재사용 등이 있다.

- 재사용은 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업이다.

- 재사용 프로그래밍 기법에는 객체지향, 제네릭, 자동, 메타 프로그래밍이 있다.

- 재사용 사례에는 라이브러리, 프레임워크, 소프트웨어 아키텍처가 있다.

모듈화의 원리

- 정보 은닉 : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐하는 원래

- 분할과 정복 : 복잡합 문제를 분해, 모듈 단위로 문제 해결하는 원리

- 데이터 추상화 : 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은폐하는 원리

- 모듈 독립성 : 낮은 결합도와 높은 응집도를 갖는 원리

모듈화의 유형

- 모듈화

- 컴포넌트

- 서비스

- 함수

- 매크로

- 인라인

침투 테스트

- 응용 프로그램의 보안 취약점, 위협 요소, 허점을 탐지하는 데 도움을 준다.

- 위험한 코드 삽입, SQL 삽입, 매개변수화, 권한 없는 입력 등의 공격을 수행하여 안전하지 않은 비즈니스 로직과 악용 가능성이 있는 부적절한 보안 조치를 식별하고 평가한다.

결합도 유형

- 자료 결합도 (Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우

- 스탬프 결합도 (Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우

- 제어 결합도 (Control Coupling) : 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 겨우

- 외부 결합도 (External Coupling) : 모듈이 다수와 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우

- 공통 결합도 (Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우

- 내용 결합도 (Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

취약성에 따른 공격 기법

- 서비스 거부(DoS) : 무의미한 서비스 요청 등의 반복을 통해 특정 시스템의 가용자원을 소모시켜 서비스 가용성을 저하시키는 공격 기법

- 사이트 간 요청 위조 공격(CSRF) : 웹사이트 취약점 공격의 하나로, 사용자 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 기법

- SQL 인젝션 : 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람할 수 있는 공격 기법

- 크로스 사이트 스크립팅(XSS) : 공격자가 게시판에 악성 스크립트를 삽입하여 사용자가 그것을 보았을 때 이벤트 발생을 통해 사용자의 쿠키 정보, 개인 정보 등을 특정 사이트로 전송하는 공격 기법

배치 프로그램의 유형

- 이벤트 배치

- 온디맨드 배치

- 정기 배치

데이터 타입의 유형

- 불린 타입 (Boolean type) : 조건이 참(True)인지 거짓(False)인지 판단하고자 할 때 사용

- 문자 타입 (Char type) : 문자 하나를 저장하고자 할 때 사용

- 문자열 타입 (String type) : 나열된 여러 개의 문자를 저장하고자 할 때 사용

- 정수 타입 (Int type) : 정수 값을 저장하고자 할 때 사용

- 부동 소수점 타입 (Float type) : 소수점을 포함하는 실숫값을 저장하고자 할 때 사용

- 배열 타입 (Array type) : 여러 데이터를 하나로 묶어서 저장하고자 할 때 사용

연산자 분류

- 산술

- 시프트

- 관계

- 논리

- 비트

변수 설정 규칙

- 영문 대문자/소문자, 숫자, 밑줄의 사용이 가능하다.

- 첫자리에는 숫자를 사용할 수 없다.

- 변 수이름 중간에는 공백을 사용할 수 없다.

- 이미 사용되고 있는 예약어의 경우에는 변수로 사용할 수 없다.

스크립트 언어의 유형

- PHP

- Python

- Perl

- Javascript

객체지향 프로그래밍

- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위인 “객체”들을 중심으로 하는 프로그래밍 언어이다.

- 클래스에 하나의 문제 해결을 위한 데이터를 모아놓음으로써 응집력을 강화한다.

- 클래스 간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다.

- 언어의 종류 : C++, C#, JAVA, Delphi

선언형 언어

- 하스켈(Haskell) : 패턴 맞춤, 커링, 조건 제시법, 가드, 연산자 정의 등의 기능이 존재하는 함수

- 리스프(LISP) : 수학 표기법을 나타내기 위한 목적으로 생성하고, 트리 자료구조, 가비지 콜렌셕, 동적 자료형과 인터프리터와 같은 개념을 제시한다.

- SQL : 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.

라이브러리

- 효율적인 프로그램 개발을 위해 필요한 프로그래밍을 모아 놓은 집합체

- 프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공한다.

- 라이브러리란 영어로 도서관을 의미하며, 필요할 때 찾아서 쓸 수 있도록 모듈화 되어 제공되어 있다.

- 표준 라이브러리는 보통 내부 모듈이 구현되어 있는 상태로 배포된다.

표준 라이브러리

- 입출력 : 핵심 입력과 출력 함수들을 정의하고, C언어에서는 stdio 헤더를 사용하고, JAVA에서는 Scanner 클래스를 사용한다.

- 문자열 : 문자열 처리 함수들을 정의하고, C언어에서는 String 헤더를 사용하고, JAVA에서는 String 클래스를 사용한다.

- 시간 처리 : 데이터와 시간 처리 함수들을 정의하고, C언어는 time.H헤더를 사용하고, JAVA에서는 Date 클래스를 사용한다.

- 수학 : 일반적인 수학 함수 정의하고, C언어는 math 헤더를 사용하고, JAVA에서는 Math 클래스를 사용한다.

프로세스 상태 전이

- 디스패치

- 타이머 런 아웃

- 블록

- 웨이크 업

- 스왑 인 아웃

프로토타입 구성요소

- 복제(Cloning) : 원형 객체가 있는 상태에서 객체를 복제하는 방법

- 객체 생성 : 원형 객체가 없는 상태에서 객체를 생성하는 방법

- 오브젝트 객체(Master Object) : 이 객체의 원형에는 모든 객체가 공통적으로 필요한 특징(속성, 메서드)들이 정의

유닉스 계열 운영체제의 특징

- 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공

- 다수의 작업(프로세스)이 중앙 처리 장치(CPU)와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공

- 90% 이상 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화 되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능

메모리 관리기법

- 반입 기법 : 주기억 장치에 적재할 다음 프로세스의 반입 시기를 결정하는 기법(WHEN)

- 배치 기법 : 디스크에 있는 프로세스를 주기억 장치의 어느 위치에 저장할 것인지 결정하는 기법(WHERE)

- 할당 기법 : 실행해야 할 프로세스를 주기억 장치에 어떤 방법으로 할당할 것인지 결정하는 기법 (HOW)

- 교체 기법 : 재배치 기법으로 주기억 장치에 있는 프로세스 중 어떤 프로세스를 제거할 것 인지를 결정하는 기법 (WHO)

워킹 세트

: 각 프로세스가 많이 참조하는 페이지들의 집합을 주기억 장치 공간에 계속 상주하게 하여 빈번한 페이지 교체 현상을 줄이고자 하는 기법

반응형