정보처리기사 실기
1. 소프프웨어 개발 방법론
애자일 방법론
: 일정한 주기를 갖고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식
소프트웨어 생명 주기
- 폭포수 모형 (Waterfall Model)
- 계획 → 분석 → 설계 → 구현 → 테스트 → 유지보수
- 이전 단계로 돌아갈 수 없다는 전제
- 각 단계가 끝난 후에는 다음 단계를 수행하기 위한
결과물
이 명확하게 산출되어야 함
- 나선형 모델
계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
- 프로토타입 모형(Prototype Model, 원형 모델)
- 실제 개발될 소프트웨어에 대한
견본품
을 만들어 최종 결과물을 예측하는 모형
- 실제 개발될 소프트웨어에 대한
- RAD 기법 모델
짧은 개발 기간
동안 개발하기위한 순차적 프로세스 모델
- V 모델
- 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
- 작업 결과의
검증(테스트)
에 초점
- 4세대 기법
자동화 도구
들을 이용하여 요구사항 명세서로부터 실행코드를 자동으로 생성할 수 있게 해주는 방법
애자일 방법론
- eXtreme Programming: 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
5가지 핵심 가치: 의사소통, 피드백, 존중, 용기, 단순성
- Scrum
- 짧은 단위시간(Sprint) 내 실행가능한 SW 개발
- 매일 15분 정도의 Scrum meeting 회의
2. 데이터 베이스 설계 순서
요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계
→ 구현
데이터 모델링 3단계
- 개념적 설계
- ERD 생성
- 논리적 설계
- 정규화
- Transaction Interface 설계
- 물리적 설계
- 성능 향상(인덱스, 파티션, 반정규화 등)
3. SOAP
- HTTP, HTTPS 등을 통해 XML 기반의 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
- XML을 이용하여 분산처리환경에서 정보교환을 쉽게 할 수 있도록 도와줌
WSDL: SOAP 사용 설명서, XML 형식 ▶ UDDI에 등록
REST
- 자원을 표현, 즉 이름으로 자원의 상태, 정보를 주고받는 것
- URI로 자원을 표현하고, HTTP Method(GET, POST 등)를 통해 자원의 행위를 표현
4. 형상관리, Software Configuration Management
- 형상관리는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것
- 형상관리 지원 도구: Git, SVN, CVS
형상관리 절차: 형상식별 → 형상통제 → 형상감사 → 형상기록
- SVN, CVS: 클라이언트-서버 방식, 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리
- Git: 분산 저장소 방식, 로컬 PC와 원격지 PC에 저장되어 관리
5. Ajax
웹 페이지 전체를 다시 로딩하지 않고도, 웹페이지의 일부분만을 갱신할 수 있는 비동기 방식 처리 기술
6. UI 설계 원칙 4가지
직관성
유효성
: 사용자의 목적을 정확하게 달성해야 함학습성
유연성
: 사용자의 요구사항을 최대한 수용해야 함
7. 정적 테스트
프로그램을 실행시키지 않고
, 소스코드에 대한 코딩 표준, 복잡도, 보안 취약점 등 잠재적이 결험을 찾는 테스트 활용
화이트/블랙박스 테스트
- 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트
- 종류
- 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
- 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
- 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
- 루프 테스트
- 종류
- 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing)
: 입력값의 범위를 유사한 특징을 갖는 동등그룹으로 나누고 각 그룹마다 대표값을 선정하는 테스트 기법경곗값 분석 테스트(Boundary Value Analysis Testing)
: 경계값을 테스트 케이스로 선정하여 검사원인-결과 그래프 테스트(Cause-Effect Graphing Testing)
오류 예측 테스트
의사 결정 테이블 테스트
상태 전이 테스트
테스트 목적
- 회복: 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인
- 안전: 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인
강도
: 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인- 성능
- 구조
- 회귀: 변경 또는 수정된 코드에 새로운 결함이 없음을 확인
- 병행: 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력해 결과를 비교
8. SQL - SELECT
SELECT 학번, 이름 FROM 학생 WHERE 학년 in ('3', '4');
SELECT 학번, 이름 FROM 학생 WHERE 학년 = '3' OR 학년 = '4';
9. SQL - INDEX
CREATE INDEX idx_name ON STUDENT (NAME ASC);
10. SQL Injection
악의적으로 SQL 구문을 삽입
하여, 비정상적인 방식으로 DB를 조작하는 공격 기법
DDoS (Distributed Denial of Service)
- Phishing: 공격자가 사람들을 속여 사기에 빠지도록 고안된 악성 이메일을 보내는 것
- Pharming: 피싱 기법 중 하나로, 정확한 웹 페이지 주소를 입력해도 가짜 웹 페이지에 접속하게 하여 개인정보를 훔치는 것
- Sniffing: 네트워크 중간에서 남의 패킷 정보를 도청하는 것
- Smishing: SMS와 Phishing의 결합어로 문자메시지를 이용한 피싱
- Qshing: QR코드와 피싱(Phishing)의 합성어로 QR코드를 이용한 피싱
- Ransomware: 컴퓨터 시스템을 감염시켜 접근을 제한하고 일종의 몸값을 요구하는 악성 소프트웨어
- Key Logger: 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 등 개인의 중요한 정보를 몰래 빼가는 해킹 공격
SQL Injection
: 악의적으로SQL 구문을 삽입
하여, 비정상적인 방식으로 DB를 조작하는 공격 기법XSS(Cross Site Scripting)
: 악의적인 스크립트를 포함하여 정보 유출 등의 공격을 하는 것
Dos(Denial of Service)
- Ping Of Death: 정상 크기보다 큰 ICMP 패킷을 보내 처리하게 만들어 비정상적인 동작을 일으키는 공격
- Smurf: IP를 위조하여 ICMP 받을 대상에 과부하를 받도록 하는 공격
- Land Attack: Packet의 보내는 사람과 받는 사람을 동일하게 설정
- Teardrop Attack: Fragment를 재조립 시 정확한 조립을 위해 오프셋이라는 값을 더하게 되는데 이 오프셋 값을 고의적으로 수정하여 시스템의 기능을 마비시켜 버리는 방법
- SYN Flooding: 접속을 요청하는 SYN Packet을 대량으로 전송해 네트워크를 마비 시킴
- UDP Flooding: 많은 수의 UDP packet을 전송하여 정상적인 서비스가 불가능하도록 하는 공격
- Ping Flooding: 많은 ICMP Echo를 보내 이에 대한 응답을 하기 위해 자원을 모두 사용해버려 시스템이 정상적으로 동작하지 못하도록 하는 공격
11. DCL
- 원자성
- Rollback: Transaction이 일어나기 전 상태로 상태를 돌이키는 명령어
- Commit: 성공적으로 수행된 Transaction이 영구히 DB에 저장되도록 하는 명령어
12. IPSec
네트워크 계층인 IP계층에서 IP 패킷 단위의 데이터 변조 방지 및 암호화 기능을 제공하는 통신 규약
AH(Authentication Header)
- 무결성을 보장하기 위한 프로토콜
- IP 패킷이 전송 중 변조되지 않았음을 보장하는 서비스 제공
- 인증, 무결성 보장
ESP(Encapsulation Security Payload)
- IP 페이로드(데이터)를 암호화하여 데이터 기밀성을 제공함으로써 제 3자에게 데이터가 노출되는 것을 차단
- 인증, 무결성, 기밀성 보장
13. 안드로이드
리눅스 커널을 기반으로 동작하며 자바와 코틀린 언어로 개발된 핸드폰이나 소형기기에 사용되는 오픈소스 플랫폼인 모바일 운영체제
14.리눅스 또는 유닉스 명령어
chmod 751 a.txt
UGO RWX
umask
- 파일과 디렉토리 생성 시 기본적으로 설정되는 권한을 조절하는데 사용되는 값
15. RTO(Recovery Time Objective), 목표 복구 시간
서비스 중단 시점과 서비스 복원 시점 간에 허용되는 최대 지연 시간
RPO(Recovery Point Objective)
- 서비스 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미
- 1시에 백업을 한다고 가정하면 6시에 장애가 나면 RPO는 5시간
16. Design Pattern
Observer
Pattern: 일대다 의존성을 정의하는 디자인 패턴
GoF(Gang of Four) 디자인 패턴
생성 패턴(Creational Patterns) 5 : 객체 생성에 대한 패턴
종류 | 설명 |
---|---|
Abstract Factory | 서브 클래스를 상세히 정의하지 않고도 서로 관련성이 있는 여러 객체들을 생성하기 위한 인터페이스를 제공하는 패턴 |
Builder |
복잡한 객체들을 단계별로 생성하는 패턴 |
Factory Method | 객체를 생성하는 인터페이스를 정의하고 객체의 타입은 서브클래스가 결정하도록 하는 패턴 |
Prototype | 원본 객체를 복사하여 새 객체를 생성하는 패턴 |
SingleTon |
오직 하나의 객체만을 생성하는 패턴 |
구조 패턴(Structural Patterns) 7 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
종류 | 설명 |
---|---|
Adapter |
호환되지 않는 인터페이스를 가진 객체들간의 기능을 변환하여 호환성을 제공하는 패턴 |
Bridge | 추상화 클래스 계층과 구현 클래스 계층을 분리하는 패턴 |
Composite | 객체 집합 속에 또 다른 객체 집합을 갖는 패턴 |
Decorator | 새로운 기능이 추가될 때마다 새로운 객체를 만들고, 이전 객체의 기능은 새로운 객체내에서도 그대로 유지되는 패턴 |
Facade | 서브시스템이 복잡할 경우 간단한 인터페이스를 통해 서브 시스템의 주요기능을 사용할 수 있도록 하는 패턴 |
Fly Weight | 인스턴스의 공유를 통해 불필요한 객체 생성을 하지 않도록 하는 패턴 |
Proxy | 원래 객체에 대한 접근을 제어하여, 요청이 원래 객체에 전달되기 전 또는 후에 추가적인 작업을 수행할 수 있도록 하는 패턴 |
행위 패턴(Behavioral Patterns) 11 : 객체나 클래스 간 알고리즘이나 상호 작용을 정의하기 위한 패턴
17. Semantic Web
- 컴퓨터가 사람을 대신하여 정보를 읽고, 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 만든 차세대 지능형 웹
# Previous Web
<div>
<div>
<h1>제목1</h1>
<p>내용1</p>
</div>
<div>
<h1>제목2</h1>
<p>내용2</p>
</div>
</div>
<div>
<span>주소</span>
</div>
# Semantic Web: tag에 의미를 부여해서 검색 엔진의 의미 단위로 데이터를 추출할 수 있음
<section>
<article>
<h1>제목1</h1>
<p>내용1</p>
</article>
<article>
<h1>제목2</h1>
<p>내용2</p>
</article>
</section>
<footer>
<address>주소</address>
</footer>
18. Python
asia = {'한국', '중국', '일본'}; # {}: 중복 불가능
asia.add('베트남'); # add(): 집합에 하나의 원소를 추가
asia.remove('일본'); # 제거
asia.update(['홍콩', '한국', '태국']); # update(): 여러 개의 원소를 집합에 추가
print(asia) # {'한국', '중국', '베트남', '홍콩', '태국'}
19. Java
class Parent{
void show(){
System.out.println("Parent");
}
}
class Child extends Parent{
@Override
void show(){
super.show();
System.out.println("Child");
}
}
public class Example{
public static void main(String[] args){
Parent p = new Child();
p.show(); // "Parent" \n "Child"
}
}
20. Java
class A{
int a;
public A(int i){
a = i;
}
public void print(){
System.out.println("a=" + a);
}
}
class B extends A{
int b;
public B(int i){
super(i);
}
public void print(){
System.out.println("b=" + b);
}
}
class C extends B{
public C(int i){
super(i);
// 상속관계에서 생성자는 최상위 클래스의 생성자 호출, a=3
// B 클래스 생성자 호출 → B 클래스의 생성자에서 A 클래스의 생성자 호출 → A 클래스의 생성자에 전달된 값인 3으로 a 변수가 초기화
super.print(); // 상위 클래스의 메서드 호출, b=0
}
}
public class Example{
public static void main(String[] args){
A obj = new C(3);
}
}
🔗 마크다운 파일
📚 참고 자료
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 2020년 4회차 실기 (0) | 2023.09.05 |
---|---|
[정보처리기사] 2020년 3회차 실기 (0) | 2023.09.04 |
[정보처리기사] 2020년 1회차 실기 (0) | 2023.08.25 |
[정보처리기사] 2020년 1회차 (5)정보시스템 구축관리 (0) | 2023.07.19 |
[정보처리기사] 2020년 1회차 (4)프로그래밍 언어 활용 (0) | 2023.07.19 |