[정보처리기사] 2과목 정리

sky·2021년 3월 5일
0

정보처리기사

목록 보기
9/11


2과목 중 잘 안 외워지는 것 위주로 정리해봤습니다.


자료구조

선형 구조

배열, 선형 리스트(연속리스트, 연결리스트), 스택, 큐, 덱

연속 리스트 : 배열 사용, 삽입·삭제 시 자료 이동 필요
연결 리스트 : 포인터 사용, 접근 속도 느림, 노드 삽입·삭제 작업 용이
스택 : LIFO 구조(Last In First Out, 후입선출)
→ 오버플로우, 언더플로우 발생
큐 : FIFO 구조(First In First Out, 선입선출)

비선형 구조

트리, 그래프

  • 디그리 : 노드에 뻗어나온 가지 수
  • 단말노드(Terminal Node) : 자식이 없는 노드
  • 트리의 디그리 : 노드들의 디그리 중 가장 많은 수

트리 순회 방법

  • 전위 순회(Pre-Order) : 중왼오
  • 중위 순회(In-Order) : 왼중오
  • 후위 순회(Post-Order) : 왼오중

모듈 연계

단위모듈

단위 기능 명세서 작성 → 입출력기능 구현 → 알고리즘 구현

입출력 기능 구현

IPC(Inter Process Communication) : 모듈 간 통신 구현에 쓰이는 프로그래밍 인터페이스
→ 공유 메모리, 소켓, 세마포어(공유 자원 접근 제어), 파이프(선입선출 메모리 여러 프로세스 공유), 메시지 큐잉(메시지 발생 시 전달)

제품 소프트웨어 메뉴얼 작성

국제 제품 품질 표준

  • ISO/IEC 9126 : 품질·특성 정의
  • ISO/IEC 14598 : 품질 향상 및 품질 선정 기준 제공
  • ISO/IEC 12119 : 품질 요구사항 및 테스트 국제 표준
  • ISO/IEC 25000 : 소프트웨어 품질 평가 통합 모델, 4+1 구조

국제 프로세스 품질 표준

  • ISO/IEC 9001 : 품질 보증
  • ISO/IEC 12207 : 체계적 관리
  • ISO/IEC 15504(SPICE) : 프로세스 평가 및 개선으로 품질 향상
  • CMMI : 기존 CMM 모델 통합, ISO/IEC 15504(SPICE) 준수

소프트웨어 공학

  • 브룩스 법칙 : 인력 추가는 생산성 향상이 아닌 방해
  • 파레토 법칙 : 소프트웨어 모듈 20%에서 80%의 결함 발견
  • 롱테일 법칙 : 80% 다수가 20% 소수보다 뛰어난 가치 창출(파레토 반대)

소프트웨어 버전 관리

소프트웨어 버전 등록 관련 주요 용어

Repository, Import, Check-Out, Check-In, Commit, Update

소프트웨어 버전 등록 과정

가져오기Import → 인출Check-Out → 예치Commit → 동기화Update → 차이Diff

애플리케이션 통합 테스트

개발 단계에 따른 애플리케이션 테스트

단위 테스트

구조 기반 테스트(화이트박스, 제어흐름 및 조건 결정), 명세 기반 테스트(블랙박스, 동등 분할 및 경계값 분석)

통합 테스트

  • 비점진적 통합 방식
    모듈 미리 결합 후 프로그램 전체 테스트, 빅뱅 통합 테스트, 오류 발견 및 장애 위치 파악 어려움
  • 점진적 통합 방식
    하향식 / 상향식 / 혼합식으로 구분
하향식 통합 테스트
  • 상위 → 하위로 내려가면서 통합 테스트
  • 깊이 우선 통합법, 넓이 우선 통합법
  • 스텁Stub : 상위 모듈 가진 채 하위 모듈 대체
상향식 통합 테스트
  • 하위 → 상위로 올라가면서 통합 테스트
  • 주요 제어 모듈과 클러스터 필요
  • 드라이버Driver : 상위 모듈 없이 하위 모듈 구동
혼합식 통합 테스트
회귀 테스팅

시스템 테스트

기능적 요구사항(명세서 기반 블랙박스)
비기능적 요구사항(구조적 요소 화이트박스)

인수테스트

사용자 요구사항 충족 중점, 사용자 직접 테스트

  • 사용자 인수 테스트
  • 운영상의 인수 테스트
  • 계약 인수 테스트
  • 알파 테스트 : 사용자가 개발자 앞에서 수행
  • 베타 테스트 : 사용자가 직접 테스트

애플리케이션 성능 개선

알고리즘 기법

  • 분할과 정복(Divide and Conqure) : 작은 문제로 분할하여 문제 해결
  • 동적 계획법(Dynamic Programming) : 문제를 더 작은 문제의 연장선으로 생각
  • 탐욕법(Greedy) : 그 순간 최적이라 생각되는 해답을 선택
  • 백트레킹(Back Tracking) : 유망성 점검 후 유망하지 않을 시 부모노드로 돌아가 다른 자손 노트 검색부모노드로 돌아가 다른 자손 노트 검색(해답 찾다가 답이 안 나오면 이전으로 돌아가 다시 답 찾기)

모듈 연계

시간 복잡도

O(1) : 해시함수. 입력데이터 관계없이 일정
O(logⁿ) : 이진탐색 (데이터 크기가 커질수록 처리시간이 로그만큼 짧아짐)
O(n) : 순차탐색 (데이터 크기-처리시간 비례)
O(Nlog2ⁿ) : 퀵정렬, 병합정렬
O(N²) : 거품, 삽입, 선택정렬

모듈 연계를 위한 인터페이스 기능 식별

EAI(Enterprise Application Integration)

  • Point-to-Point : 1:1 연결, 변경 및 재사용 어려움
  • Hub & Spoke : 허브 시스템 통한 중앙 집중형 방식, 허브 장애 시 전체 시스템에 영향
  • Message Bus : 애플리케이션 사이 미들웨어, 대용량 처리 가능
  • Hybrid : Hub & Spoke + Message But 혼합, 그룹 내에선 Hub Spoke / 그룹 간 Message Bus 이용, 데이터 병목 현상 최소화

ESB(Enterpirse Sevice Bus)

표준 기반 인터페이스 제공. 서비스 중심, 결합도 약하게 유지

인터페이스 기능 구현

시큐어 코딩 가이드

  • 입력데이터 검증 및 표현
  • 보안 기능
  • 시간 및 상태
  • 에러 처리
  • 코드 오류
  • 캡슐화 API 오용

암호화 전송 시 보안 채널

  • IP Sec
  • SSL/TLS
  • S-HTTP

인터페이스 구현 검증 도구

  • xUnit : Java, C++, .Net 다양한 언어 지원
  • STAF : 서비스 호출 및 컴포넌트 재사용 다양한 환경 지원
  • FitNesse : 웹 기반 테스트 지원
  • NTAF : FitNess 협업 기능 + STAF 재사용 확장성 통합, NHN 프레임워크
  • Selenium : 다양한 브라우저 및 개발 언어 지원
  • watir : Ruby 사용
profile
keep going

0개의 댓글