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

[정보처리기사] 2022년 1회차 (2)소프트웨어 개발

by HJ0216 2023. 7. 8.

정보처리기사

Clean Code 작성 원칙

: 가독성, 단순성, 의존성, 중복성, 추상성

Alien Code: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램
Spaghetti Code: 소스 코드가 복잡하게 얽힌 프로그램
Legacy Code: 더 이상 쓰기 힘들고 난해한 코드

 

테스트 하네스(Test Harness)의 구성 요소

  1. 테스트 드라이버: 상향식 테스트에서 사용, 가상의 서버 역할
  2. 테스트 스텁: 하향식 테스트에서 사용, 가상의 클라이언트 역할
  3. 테스트 슈트: 테스트 케이스의 집합
  4. 테스트 케이스: 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
  5. 테스트 스크립트: 자동화된 테스트 실행 절차에 대한 명세서
  6. 목 오브젝트: 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체

 

테스트 레벨

  1. 단위(Unit) 테스트
    : 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트
    • 정적: 소스코드의 실행없이 내부 확인
    • 동적: 입력값에 대한 출력값 확인
  2. 통합(Integration) 테스트
    : 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트
    • 빅뱅 테스트: 프로그램 전체를 대상으로 테스트
    • 상향식 테스트: 테스트 드라이버 사용
    • 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 테스트 스텁 사용
    • 백본(BackBone) 테스트: : 하위 수준에서는 상향식 통합, 상위수준에서는 하향식 통합 사용하여 최적의 테스트를 지원, 샌드위치(Sandwich)식 통합 테스트 방법
    • 회귀(Regression) 테스팅: 통합 테스트가 완료된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
  3. 시스템(System) 테스트
    : 전체 시스템 또는 제품의 동작에 대해 테스트
    • 기능 요구사항 테스트
    • 비기능 요구사항 테스트
  4. 인수(Acceptance) 테스트
    : 계약상의 요구사항이 만족되었는지 확인
    • 알파 테스트: 개발자 + 사용자
    • 베타 테스트: 사용자

 

자료 구조

  1. 비선형: 데이터를 비연속적으로 연결한 자료 구조
    • Tree: 노드와 노드를 연결하는 Link 로 구성, 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
    • Graph: 노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조
  2. 선형: 데이터를 연속적으로 연결한 자료 구조
    • Stack: LIFO, 깊이우선탐색
    • Queue: FIFO, 넓이우선탐색
    • List
      • 선형 리스트: 배열과 같이 연속된 기억 장소에 저장되는 리스트
      • 연결 리스트: 노드의 포인터 부분으로 서로 연결시킨 리스트
    • Deque(Double Ended Queue): 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조
      • Scroll: 한 쪽 끝에서의 삽입 작업에 제한을 둔 입력 제한 덱
      • Shelf: 한 쪽 끝에서의 제거 작업에 제한을 둔 출력 제한 덱

 

소프트웨어 3R

  1. 역공학(Reverse-Engineering)
    : 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업
  2. 재공학(Re-Engineering)
    : 소프트웨어의 위기를 유지 보수의 생산성으로 해결하려는 방법
    • Migration: 기존 SW 시스템을 새로운 환경에서 사용할 수 있도록 변환하는 작업
  3. 재사용(Re-Use)

 

시간복잡도에 따른 정렬 분류

  • 선택(n^2)selection_sort
    • 가장 적은 값을 맨 앞으로 이동 후, 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체
  • 삽입(n^2)insertion_sort
    • 자료 배열의 모든 요소를 앞에서부터 차례대로 비교하면서 자리를 교환
  • 버블(n^2)bubble_sort
    • 서로 인접한 두 원소의 크기를 비교하여 정렬
  • Quick(nlog2n)quick_sort - 분할정복(Divide & Conquer) 알고리즘, 피벗 사용 - pivot 의 좌측에는 pivot 보다 작은값을 두고 우측에는 pivot 보다 큰 값을 두는 방식
  • Heap(nlog2n)heap_sort
  • 병합(nlog2n)merge_sort
    • 분할 정복(Divide and Conquer) 알고리즘

 

화이트/블랙박스 테스트

  • 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트
    • 종류
      • 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
      • 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
      • 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
      • 루프 테스트
  • 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
    • 동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing): 입력값의 범위를 유사한 특징을 갖는 동등그룹으로 나누고 각 그룹마다 대표값을 선정하는 테스트 기법
    • 경곗값 분석 테스트(Boundary Value Analysis Testing): 경계값을 테스트 케이스로 선정하여 검사
    • 원인-결과 그래프 테스트(Cause-Effect Graphing Testing)
    • 오류 예측 테스트
    • 의사 결정 테이블 테스트
    • 상태 전이 테스트

 

ISO/IEC 9126 모델 품질 요구 사항 6가지

: 기능, 신뢰, 사용, 효율, 유지보수, 이식

 

소스코드 품질 분석 → Refactoring

  1. Peer Review
  2. WalkThrough
  3. Inspection
    • 계획 → 사전교육 → 준비 → 회의 → 수정(재작업) → 후속조치
    • 정적 테스트

 

 

 

참고 자료

 

흥달쌤

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

www.youtube.com

 

11. 덱(Deque), 입력제한덱(Scroll), 출력제한덱(Shelp)

덱 # 리스트의 양쪽 끝 모두에서 입출력을 할 수 있는 자료구조이다. # 큐와 스택의 개념을 일반화시킨 자료구조라고 할 수 있다. # 연결 리스트나 배열 기반으로 만들 수 있는데 배열 기반으로

lypicfa.tistory.com

 

[알고리즘] 병합정렬(Merge Sort)

병합정렬(합병정렬) 이란?​ 비교 기반의 정렬로, 안정 정렬에 속하며 분할 정복(Divide and Conquer) 알고리즘 중 하나이다. ※ 분할 정복(Divde and Conquer) 이란? : 그대로 해결할 수 없는 문제를 작은 문

hongcoding.tistory.com