Computer Science/etc

[정보처리기사] 실기 핵심 내용 요약

비소_ 2022. 7. 23.

정보처리기사에서 자주 등장하는 내용 중 개인적으로 암기가 필요한 내용 위주로 정리했습니다.

 

애자일 방법론

XP : 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

  • XP 5가지 가치(용단의피존)
    • 용기
    • 단순성
    • 의사소통
    • 피드백
    • 존중
  • XP 12가지 원리
    • 짝 프로그래밍(Pair Programming)
    • 공동 코드 소유
    • 지속적 통합(CI)
    • 계획 세우기
    • 작은 릴리즈
    • 메타포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 함
    • 간단한 디자인
    • TDD
    • 리팩토링
    • 40시간 작업
    • 고객 상주
    • 코드 표준

스크럼(Scrum) : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 방법론

  • 백로그 : 요구사항
  • 스프린트 : 짧은 개발 기간 반복적 수행
  • 스크럼 미팅 : 매일 15분 정도의 미팅. Todo List 수립
  • 스크럼 마스터 : 프로젝트 리더
  • 스프린트 회고 : 주기를 되돌아보며 확인 및 기록
  • 번 다운 차트

린(LEAN) : 도요타 린 시스템 품질기법을 개발 프로세스에 적용해서 낭비 요소를 제거시킨 방법론

 

객체 지향 분석 방법론

OOSE : 야콥슨, 유스케이스를 모든 모델의 근간으로 활용하는 방법론

OMT : 럼바우, 객체 / 동적 / 기능 모델링 순으로 분석 진행, (객체 -> 상태 -> 자료 흐름도)

OOD : 부치, 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론


비용산정 모형 분류

하향식 선정방법

  • 전문가 판단
  • 델파이 기법

상향식 선정방법

  • LoC 모형 : 원시 코드 라인 수의 낙관치, 중간치, 비관치 측정
  • ManMonth 모형 : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용 산정
  • COCOMO 모형 : 보헴, 프로그램 규모에 따라 비용 산정
    • 조직형
    • 반 분리형
    • 임베디드 형
  • 푸트남(Putnam) 모형 : 개발주기 단계별로 요구할 인력의 분포를 가정, Rayleigh-Norden 곡선의 노력 분포도 기초
  • 기능점수(FP) 모형 : 요구 기능을 증가시키는 인자별로 가중치 부여, 합산 후 총 기능 점수 계산하여 비용 산정

일정관리 모델

  • 주 공정법(CPM) : 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
  • PERT : 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정 관리
  • CCPM : 주 공정 연쇄법으로 자원제약사향을 고려하여 일정 작성

소프트웨어 아키텍처 4+1 뷰

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적 접근 방법

  • 유스케이스 뷰 : 다른 뷰를 검증하는 데 사용되는 뷰
  • 논리 뷰 : 요구사항이 어떻게 제공되는지 설명하는 뷰
  • 프로세스 뷰 : 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
  • 구현 뷰 : 모듈의 구성을 보여주는 뷰
  • 배포 뷰 : 물리적인 아키텍처에 어떻게 배치되는가를 보여주는 뷰

소프트웨어 아키텍처 패턴

  • 계층화 패턴 : 시스템을 계층으로 구분하여 구성
  • 클라이언트-서버 패턴
  • 파이프-필터 패턴 : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
  • 브로커 패턴 : 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
  • MVC 패턴 : MVC 3개의 서브시스템으로 구조화하는 패턴

소프트웨어 아키텍처 비용 평가 모델

  • SAAM : 평가가 용이하여 경험이 없는 조직에서도 활용 가능한 모델
  • ATAM : 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가
  • CBAM : ATAM + 경제적 의사결정에 대한 요구를 충족하는 모델
  • ADR : 구성요소 간 응집도를 평가하는 모델
  • ADIR : ATAM + ADR, 특정 부분에 대한 품질 요소에 집중하는 모델

디자인 패턴

생성 : 객체 생성 방식을 구조화, 캡슐화 수행

  • 빌더 패턴 : 복잡한 인스턴스를 조립하여 만드는 구조
  • 프로토타입 : 일반적인 원형을 만들어놓고 복사해서 사용하는 패턴
  • 팩토리 메서드 : 상위 클래스에서 인터페이스를 정의하고, 하위 클래스에서 생성
  • 추상 팩토리 : 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
  • 싱글톤 : 객체를 하나만 생성하도록 보장

구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다룸

  • 브릿지 : 기능 클래스 계층과 구현 클래스 계층 연결, 추상화된 부분과 구현 부분을 독립적으로 확장 가능
  • 데코레이터 : 기존 클래스에 필요한 기능을 추가해 나가는 설계 패턴
  • 파사드 : 단순한 인터페이스를 제공해 시스템 구조에 대한 파악을 쉽게하는 패턴
  • Flyweight : 경량화 목적
  • 프록시 : 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만듦
  • 컴포지트 : 객체 관계를 트리 구조로 구성하여 부분-전체 계층을 표햔하는 패턴
  • 어댑터 : 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 인터페이스를 만드는 패턴

행위 : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴

  • 이터레이터 : 컬렉션 구현 방법을 노출시키지 않고 모든 항목에 접근할 수 있는 패턴
  • 템플릿 메서드 : 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업 일부분 수행
  • 옵저버 : 한 객체의 상태가 바뀌면 의존하는 다른 객체들에게 알려 자동으로 갱신되는 패턴
  • 상태 : 객체 상태에 따라 행위 내용 변경
  • 비지터 : 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원
  • 커맨드 : 요구사항을 객체로 캡슐화
  • 전략 : 행위 객체를 클래스로 캡슐화 해 동적으로 행위를 자유롭게 변환
  • 메멘토 : 객체를 이전 상태로 복구 시켜야 하는 경우
  • 연쇄 책임 : 한 요청을 2개 이상의 객체에서 처리

UI 설계 원칙

  • 직관성 : 누구나 쉽게 이해하고, 사용할 수 있어야 함
  • 유효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있어야 함
  • 학습성 : 모두가 쉽게 배우고 사용할 수 있어야 함
  • 유연성 : 요구사항을 최대한 수용하고, 실수를 방지할 수 있도록 제작

UI 설계 지침

  • 사용자 중심
  • 일관성
  • 단순성
  • 결과 예측 가능
  • 가시성
  • 표준화
  • 접근성
  • 명확성
  • 오류 발생 해결

UI 품질 요구사항

  • 기능성 : 실제 수행 결과와 품질 요구사항과의 차이 분석, 시스템의 동작을 관찰하기 위한 품질 기준
  • 신뢰성 : 작동되는 시간 동안 의도하는 기능을 수행함을 보증하는 품질 기준
  • 사용성 : 어떠한 행위를 정확하고 쉽게 인지할 수 있는 품질 기준
  • 효율성 : 한정된 자원으로 얼마나 빨리 처리할 수 있는가에 대한 품질 기준
  • 유지보수성 : 요구사항을 개선하고 확장하는 데 있어 얼마나 용이한가에 대한 품질 기준
  • 이식성 : 다른 플랫폼에서도 많은 추가 작업 없이 얼마나 쉽게 적용이 가능한가에 대한 품질 기준

UML 다이어그램

구성요소

  • 사물
  • 관계
  • 다이어그램

정적 다이어그램

  • 클래스 다이어그램 : 클래스 간 관계 표현
  • 객체 다이어그램 : 객체 관 관계 표현
  • 컴포넌트 다이어그램 : 컴포넌트 간 관계 표현
  • 배치 다이어그램 : 물리적 요소들의 위치 표현
  • 복합체 구조 다이어그램 : 복합 구조인 경우 그 내부 표현
  • 패키지 다이어그램 : 패키지 간 관계 표현

동적 다이어그램

  • 유스케이스 다이어그램 : 사용자 관점에서 표현
  • 시퀀스 다이어그램 : 시간적 개념 중심으로 메시지 표현
  • 커뮤니케이션 다이어그램 : 객체들이 주고 받는 메시지와 상호작용까지 표현
  • 상태 다이어그램 : 객체의 상태 표현
  • 활동 다이어그램 : 시스템이 수행하는 활동 표현
  • 타이밍 다이어그램 : 객체의 상태 변화와 시간 제약 표현

클래스 간 관계

  • 연간 관계 : 2개 이상의 사물이 서로 관련되어 있는 관계 (연실화, 실선 화살표)
  • 의존 관계 : 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계(의점화, 점선 화살표)
  • 일반화 관계 : 사물이 다른 사물에 비해 더 일반적인지 구체적인지 표현 (일속빈화, 속이 빈 화살표)
  • 실체화 관계 : 서로를 그룹화 할 수 있는 관계 (실속빈점화, 속이 빈 점선 화살표)
  • 포함 관계 : 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계 (포속마, 속이 채워진 마름모)
  • 집합 관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계 (집속빈마, 속이 빈 마름모)

데이터 모델링

모델 표시요소

  • 연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업 명세
  • 구조 : 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계
  • 제약 조건 : 실제 데이터의 논리적인 제약 조건

논리적 데이터 모델링

  • 관계 데이터 모델 : 2차원 테이블 형태로 구성된 모델
  • 계층 데이터 모델 : 트리 형태로 구성된 모델
  • 네트워크 데이터 모델 : 그래프 형태로 구성된 모델

데이터베이스

  • 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합
  • 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터
  • 실시간 접근성, 계속적인 변화, 동시 공용, 내용 참조

웹 서비스 유형

  • SOAP : HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
    • Envelope, Header, Body 구성
  • WSDL : 웹 서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어
  • UDDI : WSDL을 등록하고 검색하기 위한 저장소

인터페이스 기능 구현 기술

  • XML : XML 프롤로그와 요소로 구성
  • AJAX : JS를 이용한 웹 서버-클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
    • XMLHttpRequest : 비동기 통신을 담당하는 자바스크립트 객체
    • DOM : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API
    • XSLT : XML문서를 다른 XML 문서로 변환하는 데 사용하는 XML 기반 언어
  • REST : 리소스, 메서드, 메시지 3가지 요소 구성
    • 클라이언트/서버 구조
    • 무 상태성
    • 일관된 인터페이스
    • 캐시 처리 가능
    • 자체 표현 구조

데이터베이스 암호화 기법

  • API 방식 : 어플리케이션이 암호화
  • Plug-in 방식 : DB가 암호화
  • TDE 방식 : DBMS 커널이 자체적으로 암호화
  • Hybrid 방식 : API + Plug-in

인터페이스 구현 검증 도구 종류

  • xUnit : 단위테스트 프레임워크
  • STAF : 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 도구
  • FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF : NHN이 FitNess와 STAF를 통합
  • Selenium : 웹 어플리케이션 테스트 프레임워크
  • watir : Ruby 기반 웹 어플리케이션 테스트 프레임워크

인터페이스 감시 도구

  • 스카우터 : 어플리케이션에 대한 모니터링 및 DB 에이전트를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능 제공
  • 제니퍼 : 전 SDLC 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어

트랜잭션

DBMS에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

특성

  • 원자성
  • 일관성
  • 고립성
  • 영속성

병행 제어

다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 일관성 유지를 위해 상호 작용을 제어하는 기법

미보장 시 문제점

  • 갱신 손실
  • 현황 파악오류
  • 모순성
  • 연쇄복귀

병행 제어 기법 종류

  • 로킹(Locking)
  • 낙관적 검증
  • 타임 스탬프 순서
  • MVCC

회복 기법

장애로 인해 손상된 DB를 이전 상태로 복구시키는 작업

  • 로그 기반 회복기법
    • 지연 갱신 회복 기법
    • 즉각 갱신 회복 기법
  • 체크 포인트 회복
  • 그림자 페이징 회복 기법

모듈화

응집도(우논시절통순기)

  • 우연적 응집도 : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소만 구성된 응집도
  • 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  • 시간적 응집도 : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 통신적 응집도 : 동일한 입 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
  • 순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
  • 기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

결합도(내공외제스자)

  • 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  • 공통 결합도 : 전역 변수를 참조하고 갱신하는 식으로 상호 작용하는 경우의 결합도
  • 외부 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 프로토콜, 인터페이스를 공유할 경우 결합도
  • 제어 결합도 : 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 통신하는 경우의 결합도
  • 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도

테스트 목적에 따른 분류

  • 회복 테스트 : 고의로 실패를 유도하고, 정상적 복귀 여부를 테스트
  • 안전 테스트 : 보안적인 결함을 미리 점검하는 테스트
  • 성능 테스트 : 시스템이 반응하는 속도 등을 측정하는 테스트 기법
  • 구조 테스트 : 소스 코드의 복잡도를 평가하는 테스트
  • 회귀 테스트 : 오류를 제거하거나 수정한 시스템에서 새로이유입된 오류가 없는지 확인하는 반복 테스트 기법
  • 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트

테스트 실행 도구

  • 데이터 주도 접근 방식 : 테스트 데이터를 스프레드시트에 저장, 아무나 쉽게 테스트 수행 가능
  • 키워드 주도 접근 방식 : 키워드와 테스트 데이터를 스프레드시트에 저장

성능 분석 도구

성능 테스트 도구

  • JMeter : HTTP, FTP, LDAP 등 다양한 프로토콜을 지원하는 테스트 도구
  • LoadUI : 웹 서비스를 대상으로 서버 모니터링을 지원하는 부하 테스트 도구
  • OpenSTA : HTTP, HTTPS 지원하는 부하 테스트 및 생산품 모니터링 도구

시스템 모니터링 도구

  • Scouter : 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구
  • Zabbix : 웹 기반 서버, 서비스, 어플리케이션 모니터링 도구

프로세스 상태 전이

  • 디스패치 : 준비 -> 실행, 컨텍스트 스위칭 발생
  • 타이머 런 아웃 : 실행 -> 준비, 타임 슬라이스 만료 or 선점 시 타임아웃 발생
  • 블록 : 실행 -> 대기, 입출력이나 기타 사건이 발생하면 CPU를 스스로 반납하고 대기
  • 웨이크 업 : 대기 -> 준비, 입출력 종료 사실을 wait & signal 등에 의해 알려주고, 준비 상태로 전이

교착상태 발생 조건

  • 상호 배제 : 자원을 배타적으로 점유하여 다른 프로세스가 자원을 사용할 수 없는 상태
  • 점유/대기 : 한 프로세스가 자원을 점유하고 있으면서 또 다른 자원을 요청하여 대기하고 있는 상태
  • 비선점 : 다른 프로세스가 자원을 선점할 수 없음
  • 환형 대기 : 점유와 대기가 하나의 원형을 구성한 상태

교착상태 해결 방법

  • 예방 : 상호 배제를 제외한 나머지 교착상태 발생 조건을 위배하는 방안
  • 회피 : 안전한 상태를 유지할 수 있는 요구만 수락 (은행가 알고리즘)
  • 발견 : 상태를 감시 알고리즘을 통해 교착 상태 검사 (자원할당 그래프)
  • 복구 : 없어질 때 까지 순차적으로 Kill하여 제거

OSI 7 Layer

1. Physical Layer 단위 : bit

  • 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
  • 프로토콜 : RS-232C
  • 장비 : 허브, 리피터

2. DataLink Layer 단위 : Frame

  • 인접 시스템 간 데이터 전송, 전송 오류 제어
  • 동기화, 오류제어, 흐름제어, 회선 제어
  • 프로토콜 : HDLC, PPP
  • 장비 : 브리지, 스위치

3. Network Layer 단위 : Packet

  • 단말기 간 데이터 전송을 위한 최적화된 경로 제공
  • 프로토콜 : IP, ICMP
  • 장비 : 라우터

4. Transport Layer 단위 : Segment

  • 송수신 프로세스 간의 연결
  • 신뢰성 있는 통신 보장
  • 프로토콜 :TCP, UDP
  • 장비 : L4 스위치

5. Session Layer 단위 : Data

  • 송수신 간의 논리적인 연결
  • 연결 접속, 동기 제어
  • 프로토콜 : RPC, NetBIOS
  • 장비 : 호스트

6. Presentation Layer 단위 : Data

  • 데이터 형식 설정, 부호교환, 암 복호화
  • 프로토콜 :JPEG, MPEG
  • 장비 : 호스트

7. Application Layer 단위 : Data

  • 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
  • 프로토콜 : HTTP, FTP
  • 장비 : 호스트

네트워크 전달 방식

패킷 교환 방식

  • 데이터 그램 방식 : 경로를 확립하지 않고 각각의 패킷을 순서에 무관하게 독립적으로 전송
  • 가상 회선 방식 : 전송 전 송수신 스테이션 간 논리적인 통신 경로를 미리 설정
  • X.25
    • 두 단말장치가 패킷 교환망을 통해 패킷을 원활히 전달하기 위한 통신 프로토콜
    • 고정된 대역폭
    • 복잡한 기능으로 오버헤드 발생
  • 프레임 릴레이
    • ISDN을 사용하기 위한 프로토콜
    • 유연한 대역폭
    • 가격이 저렴
  • ATM
    • 비동기 전송모드, 광대역 전송에 쓰이는 스위칭 기법
    • AAL : 패킷을 작은 조각인 셀로 전송한 후 다시 조립하여 원래의 데이터로 복원하는 역할 담당
    • ATM 계층 : 셀과 셀 전송 역할 담당
    • 물리 계층 : 물리적 전송 매체를 처리하는 역할ㄷ ㅏㅁ당

서킷 교환 방식

  • 네트워크 리소스를 특정 사용층이 독점하도록 하는 통신 방식
  • 전송 보장
  • 서킷 확보 작업 수행

DRM 구성요소

  • 클리어링 하우스 : 저작권에 대한 사용 권한, 라이센스 발급, 사용량에 따른 관리 등을 수행
  • 패키저 : 컨텐츠를 메타데이터와 함께 배포 가능한 단위로 묶는 도구
  • DRM 컨트롤러 : 배포된 디지털 콘텐츠의 이용 권한 통제
  • 보안 컨테이너 : 원본 컨텐츠를 안전하게 유통하기 위한 전자적 보안장치
  • 제공자
  • 소비자
  • 분배자

패키징 도구 구성 세부 기술

  • 암호화
    • 공개키 기반구조(PKI)
    • 대칭/비대칭 암호화
    • 전자서명
  • 식별 기술
    • DOI : 저작권 보호 및 정확한 위치 추적을 위해 특정 번호를 부여하는 시스템
    • URI
  • 저작권 표현
    • XrML : XML 기반에 권리 조건을 표현한 언어
    • MPEG-21
  • 암호화 파일 생성
    • Pre-packaging : 등록하자 마자 암호화하는 방법
    • On-the-fly Packaging : 요청한 시점에 암호화하는 방법
  • 정책 관리
    • XML
    • CMS : 다양한 미디어 포맷에 따라 각종 컨텐츠를 전 공급 과정을 관리하는 기술
  • 크랙 방지
    • 코드 난독화
    • Secure DB : 커널 암호화 방식으로 DB 파일을 직접 암호화
  • 인증
    • SSO

 

 

댓글