본문 바로가기
Certificate/정보처리기사

[정보처리기사] 2020년 2회차 실기

by HJ0216 2023. 8. 27.

정보처리기사 실기

1. 소프프웨어 개발 방법론

애자일 방법론: 일정한 주기를 갖고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식

소프트웨어 생명 주기

  • 폭포수 모형 (Waterfall Model)
    • 계획 → 분석 → 설계 → 구현 → 테스트 → 유지보수
    • 이전 단계로 돌아갈 수 없다는 전제
    • 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함
  • 나선형 모델
    • 계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
  • 프로토타입 모형(Prototype Model, 원형 모델)
    • 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
  • RAD 기법 모델
    • 짧은 개발 기간동안 개발하기위한 순차적 프로세스 모델
  • V 모델
    • 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
    • 작업 결과의 검증(테스트)에 초점
  • 4세대 기법
    • 자동화 도구들을 이용하여 요구사항 명세서로부터 실행코드를 자동으로 생성할 수 있게 해주는 방법

애자일 방법론

  • eXtreme Programming: 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
    • 5가지 핵심 가치: 의사소통, 피드백, 존중, 용기, 단순성
  • Scrum
    • 짧은 단위시간(Sprint) 내 실행가능한 SW 개발
    • 매일 15분 정도의 Scrum meeting 회의

 

2. 데이터 베이스 설계 순서

요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

데이터 모델링 3단계

  1. 개념적 설계
    • ERD 생성
  2. 논리적 설계
    • 정규화
    • Transaction Interface 설계
  3. 물리적 설계
    • 성능 향상(인덱스, 파티션, 반정규화 등)

 

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)
    • 오류 예측 테스트
    • 의사 결정 테이블 테스트
    • 상태 전이 테스트

테스트 목적

  1. 회복: 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인
  2. 안전: 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인
  3. 강도: 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인
  4. 성능
  5. 구조
  6. 회귀: 변경 또는 수정된 코드에 새로운 결함이 없음을 확인
  7. 병행: 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력해 결과를 비교

 

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);
    }
}

 

 

 

🔗 마크다운 파일

GitHub

 

📚 참고 자료

 

흥달쌤

흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관련된 이야기

www.youtube.com