New 정보처리기사 개념 정리(출제 빈도 기준) — 서버 프로그램, 보안, 테스트, 패키징

정보처리기사 실기 시험 뿌시기 👊 2탄

📍갑자기 정보 처리기사?
내 최종 목표는 클라우드 아키텍트이다. 아키텍트는 기술적 커뮤니케이션을 잘 해야 한다고 생각하기 때문에, 30살에는 기술사 자격증을 취득하고 싶다. 기술사 자격증을 응시하려면, 정보처리기사 자격을 취득한 후 5년간의 경력이 있어야 한다.

필기 시험은 특별한 공부 없이 통과했지만, 실기 시험은 단답형/서술형 이기 때문에 쉽지 않다. 실기 시험의 내용은 소프트웨어 공학의 전반을 잘 다루고 있다. 앞으로 프로젝트를 할 때, 요구사항 명세부터 소프트웨어 패키징, 유지보수까지 공학적으로 접근 하는 데 도움이 될 것 같다. 그럼 스타뜨!! ➡️

서버 프로그램 구현

소프트웨어 개발 보안 구축

SW 개발 보안의 구성요소
1) 기밀성
2) 무결성
3) 가용성

SW 개발 보안 용어
1) 자: 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
2) 위협: 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
3) 취약점: 위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약점
4) 위험: 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

1. DoS 공격
- SYN 플러딩(TCP 프로토콜 구조)
- 스머프(Smurf), 스머핑: 출발지 주소를 공격 대상의 IP 로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드 캐스팅하여 마비시키는 공격
- PoD(죽음의 핑): ICMP 패킷을 정상적인 크기보다 크게 만들어 전송하면 다수의 IP 단편화가 발생
- Land Attack: 출발지 IP 와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법

2. DDoS 공격
여러대의 공격자를 분산 배치
→ 구성요소: 핸들러, 에이전트(직접 공격을 가함), 마스터(여러대의 에이전트 관리), 공격자(공격을 주도하는 해커의 컴퓨터), 몬 프로그램(에이전트 시스템의 역할을 수행)

3. DRDOS 공격

4. 애플리케이션 공격
1) HTTP GET 플러딩: Cache Control Attack
2) Slowloris(Slow HTTP Header DoS): HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않음
3) RUDY(Slow HTTP Read DoS): 요청 헤더의 Content-Length를 비정상적으로 크게 성정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
4) Hulk DoS: 공격자가 공격 대상 웹 사이트 웹 페이지 주소를 지속적으로 변경하며 다량으로 GET 요청을 발생

5. 네트워크 공격
1) 스니핑: 공격 대상에게 직접 공격하지 않고 데이터만 몰래 들여다 보는 수동적 공격 기법
2) 트로이 목마: 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행함

6. 시스템 보안 위협
1) 버퍼 오버플로우 → 스택가드(카나리) 활용, ASLR(메모리 공격을 방어하기 위해 주소 공간 난수화)
2) 백도어

7. 보안 관련 용어
1) 스피어피싱: 사회 공학의 한 기법으로 이메일로 위장한 메일을 발송
2) 스미싱: 문자를 통해 발송

인증 기술
1) 지식 기반 인증
2) 소지 기반 인증
3) 생체 기반 인증
4) 특징 기반 인증

접근 통제 기법
1) 식별
2) 인증
3) 인가
4) 책임 추적성

접근 통제 보호 모델
1) 벨-라파둘라 모델(BLP): 미국방부 지원 보안 모델로 보안 요소 중 기밀성을 강조하며 강제적 정책에 의해 접근 통제하는 모델
2) 비바 모델: 벨-라파둘라 모델의 단점을 보완한 무결성을 보장하는 최초의 모델

암호화 알고리즘
1. 양방향
1–1) 대칭키 — 스트림 암호, 블록 암호 → SEED(국내에서 개발), AES(블록 암호화), ARIA(국내에서 만든 블록 암호화)
1–2) 비대칭키 → RSA(MIT 수학 교수가 고안)
2. 일방향
2–1) MDC
2–2) MAC
+해시암호화 알고리즘
→ MD5(512 비트짜리 입력 메시지 블록에 대해 차례로 동작), SHA-1(NSA 에서 미 정부 표준으로 지정됨), HAS-160(국내 표준 서명 알고리즘을 위해 개발)

안전한 전송을 위한 데이터 암호화 전송
1) IPSec: 3계층에서 무결성과 인증을 보장하는 인증 헤더를 이용
2) SSL/TLS: 4계층

시큐어 코딩 가이드: 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하기 위함

입력 데이터 검증 및 표현 취약점
1) XSS: 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송되는 경우, 사용자가 해당 웹 페이지를 열람함으로써 웹 페이지에 포함된 부적절한 스크립트가 실행
2) CSRF(사이트 간 요청 위조): 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청
3) SQL 삽입: 악의적인 SQL 구문을 삽입 실행시켜서 DB 접근을 통해 정보를 탈취하거나 조작하는 공격 기법

비즈니스 연속성 계획(BCP) 관련 주요 용어
- RTO: 업무 중단 시점부터 업무가 복구되어 다시 가동될 때까지 시간)
- DRS: 재해복구 계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리 체계가 통합된 재해복구 센터
→ Mirror Site(바로 복구), Hot Site(재해 발생시 복구 까지의 소요시간 4시간 이내)

애플리케이션 테스트 관리

테스트 필요성
→ 오류 발견 관점, 오류 예방 관점, 품질 향상 관점

테스트의 기본 원칙
1) 테스팅은 결함이 존재함을 밝히는 것
2) 완벽한 테스팅은 불가능
3) 개발 초기에 테스팅 시작
4) 살충제 패러독스: 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다.

테스트 산출물
→ 테스트 계획서, 테스트 베이시스, 테스트 케이스, 테스트 슈트, 테스트 시나리오, 테스트 스크립트, 테스트 결과서

테스트 커버리지
주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
1) 기능 기반 커버리지
2) 라인 기반 커버리지
3) 코드 커버리지

테스트 유형
1. 정적 테스트
1–1) 리뷰 (관리 리뷰, 기술 리뷰, 인스헥션, 워크스루)
1–2) 정적 분석
2. 동적 테스트
2–1) 명세 기반의 블랙 박스 테스트
→ 경게값 분석 테스트, 유스케이스 테스트, 비교 테스트
2–2) 구조 기반의 화이트 박스 테스트
→ 구문 커버리지, 결정 커버리지, 조건 커버리지

테스트 시각에 따른 분류
— 검증
— 확인

테스트 목적에 따른 분류
1) 회복 테스트: 시스템에 고의로 실패를 유도
2) 안전 테스트: 소스 코드 내의 보안적인 결함 테스트
3) 성능 테스트 → 부하 테스트(임계점 찾기), 스트레스 테스트(임계점 이상에서 테스트), 스파이크 테스트(짧은 시간에 사용자가 몰릴 때), 내구성 테스트
4) 구조 테스트: 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가
5) 회귀 테스트: 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인
6) 병행 테스트: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법

1. 단위 테스트
개별적인 모듈을 테스트
Mock 객체 → 더미 객체, 테스트 스텁(타 모듈의 기능 단순히 수행), 테스트 드라이버(하위 모듈을 호출), 테스트 스파이(주로 테스트 대상 클래스와 협력하는 크래스로 가는 출력을 검증), 가짜 객체

2. 통합 테스트
2–1) 하향식 통합(스텁) (깊이 우선, 너비우선)
2–2) 상향식 통합(드라이버)
2–3) 샌드위치 통합: 병렬 테스트가 가능하고 시간 절약이 가능. 상위, 하위 혼합

3. 테스트 자동화 도구
→ 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구

테스트 하네스
애플리케이션 컴포넌트 및 모듈을 테스트 하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말함. 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
1) 테스트 드라이버: 테스트 대상 하위 모듈을 호출하고 파라미터를 전달하고 모듈 테스트 수행 후의 결과를 도출하는 등 상향식 테스트에 필요
2) 테스트 스텁: 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
3) 테스트 슈트: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
4) 테스트 케이스
5) 테스트 스크립트
6) 목 오브젝트

결함 생명주기
결함 등록 → 결함 검토 → 결함 할당 → 결함 수정 → 결함 확인 → 결함 종료 → 졀함 재등록 → 결함 조치 보류

어플리케이션 성능 측정 지표
1) 처리량(throughput)
2) 응답 시간(response time)
3) 경과시간 — 결과 출력까지(turnaround time)
4) 자원 사용률

성능 분석 도구
1) 성능 테스트 도구 → JMeter, LoadUI
2) 시스템 모니터링 도구 → Scouter, Zabbix

Bad Code
→ 외계인 코드, 스파게티 코드, 알수 없는 변수명, 로직 중복
→ 오염, 문서 부족, 의미 없는 이름, 높은 결합도, 아키텍처 침식

Clean Code
→ 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화
→ 의미 있는 이름, 간결하고 명확한 주석, 보기 좋은 배치, 작은 함수, 읽기 쉬운 제어 흐름, 오류 처리, 클래스 분할 배치, 느슨한 결합 기법 적용, 코딩 형식 기법 적용

성능 개선 방안
1) 소스 코드 최적화 기법 적용
2) 아키텍처 조정을 통한 성능 개선
3) 프로그램 호출 순서 조정 적용
4) 소스 코드 품질 분석 도구 활용
5) 리팩토링을 통한 성능 개선
6) 애플리케이션 성능 현황 관리

제품 소프트웨어 패키징

제품 소프트웨어 패키징 적용시 특징
1) 전체 내용을 포함: 설치와 사용에 필요한 과정 및 환경 등의 전체 내용을 포함하는 메뉴얼 작성
2) 버전 관리/릴리즈 노트
3) 고객 중심
4) 모듈화

릴리즈 노트 작성 항목
1) 헤더
2) 개요
3) 목적
4) 이슈 요약
5) 재현 항목
6) 수정 개선 내용
7) 사용자 영향도
8) 소프트웨어 지원 영향도
9) 노트
10) 면책 조항
11) 연락 정보

SQL 응용

  • 각 소프트웨어 공학적 접근의 장단점을 잘 알고 있기
  • 스타트업 개발팀 컨설팅

I will be a software architect.

I will be a software architect.