정보처리기사(개념정리) - 2과목 소프트 웨어 개발

2025. 7. 16. 23:39·이론공부/자격증

□ 정렬 알고리즘 시간 복잡도 ☆☆☆☆☆

  • 평균 O(n²)  : 선삽버
  • 평균 O(n log n) : 퀵힙병
정렬 알고리즘  최선 (Best)  평균 (Average)  최악 (Worst)
선택 정렬 O(n²) O(n²) O(n²)
삽입 정렬 O(n) O(n²) O(n²)
버블 정렬 O(n²) O(n²) O(n²)
쉘 정렬 O(n) O(n^1.5) O(n²)
퀵 정렬 O(n log n) O(n log n) O(n²)
힙 정렬 O(n log n) O(n log n) O(n log n)
병합 정렬 O(n log n) O(n log n) O(n log n)
버킷 정렬 O(d·n) O(d·n) O(d·n)

□ 테스트 ☆☆☆☆☆

  • 테스트 유형 분류
    1. 테스트 목적 : 회복, 안전, 강도, 성능, 구조, 회귀, 병행
    2. 테스트 기반 : 명세기반, 구조기반, 경험기반
  • 테스트 하네스 도구
    • 테스트 드라이브
    • 테스트 스텁
    • 테스트 슈트
    • 테스트 케이스
    • 테스트 스크립트
    • 목 오브젝트
구분 테스트 드라이버(Test Driver) 테스트 스텁(Test Stub)
대상 상위 모듈이 없는 경우 하위 모듈이 없는 경우
목적 하위 모듈 테스트용 상위 모듈 테스트용
방향 하향식 통합 테스트에서 사용 상향식 통합 테스트에서 사용
역할 테스트 모듈을 호출 테스트 모듈에 호출됨
행동 인자를 넘겨주고 결과를 받음 결과를 만들어 테스트 모듈에 넘김
  • 테스트 단계

□ 프로그램 품질관리 ☆☆☆☆☆

  • 동료 검토(Peer Review)
    • 2~3명이 진행하는 리뷰 형태
    • 작성자가 코드를 설명하고 이해 관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행
  • 워크스루(Walkthrough)
    • 교육 목적이나 문제의 식별등이 목적
    • 문제 해결 자체에 중점을 두지 않음
    • 미리 준비된 자료를 바탕으로 정해진 절차에 따라 평가
    • 오류 조기 검출이 목적
    • 검조 자료를 회의 전에 배포하여 사전 검토 후 짧은 시간동안 회의 진행
  • 인스펙션(Inspection)
    • 오류 발견과 수저에 중점
    • 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 방식
    • 워크스루를 발전시킨 형태

□ 디지털 저작권 관리(DRM) ☆☆☆☆☆

  • 기술요소
    • 암호화 : 콘텐츠 및 라이선스 암호화
    • 키관리 : 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술
    • 식별기술 : 콘텐츠에 대한 식별체계 표현 기술
    • 저작권 표현: 라이선스의 내용 표현 기술
    • 정책 관리 : 라이선스 발급 및 사용에 대한 정책표현
    • 크랙 방지 : 크랙에 의한 콘텐츠 사용방지 기술
    • 인증 : 라이선스 발급 및 사용의 기준이 되는 인증 기술
    • 인터페이스 : 상이한 DRM 플랫폼 간의 상호 호환성 인터페이스
    • 사용권한 : 콘텐츠의 사용에 대한 권한을 관리하는 기술 요소
  • 구성요소
    • 콘텐츠 분배자(Contents Distributor) : 암호화된 콘텐츠를 유통하는 곳 또는 사람
    • 패키저(Packager) : 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화
    • 클리어링 하우스(Clearing House) : 키 관리 및 라이센스 발급 관리
    • DRM 컨트롤러(DRM Controller) : 배포된 콘텐츠의 이용권한을 통제

□ 화이트박스 블랙박스 테스트 ☆☆☆☆☆

  • 화이트 박스 테스트
    • 프로그램 내부 구조, 동작을 디테일하게 검사
    • 내부 소스코드를 테스트 하는 기법
    • 개발자 관점
    • 문장검증, 선택검증, 경로검증, 조건검증
  • 블랙 박스 테스트
    • 소프트웨어 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사
    • 내가 원하는 기능이 예측한 대로 정상 동작하는지를 확인
    • 사용자 관점
    • 동등 분할 기법, 경계값 분석 기법, 오류 예측 기법, 원인 결과 그래프 기법, 의사결정 테이블 테스팅, 상태 전이 테스팅

□ 소프트웨어 품질 목표 ☆☆☆☆☆

  • 무결성(Integrity) : 시스템이 프로그램이나 데이터에 대한 허용되지 않거나 잘못된 접근을 막는 정도
  • 신뢰성(Reliability) : 정해진 상황에서 언제든 필요한 기능을 수행할 수 있는 시스템의 능력
  • 사용성(Usability) : 사용자가 시스템을 배우고 사용하는 데 있어서의 용이함
  • 효율성(Efficiency): 메모리와 실행 시간 같은 시스템 리소스의 최소 사용
  • 정확성(Correntness) : 시스템의 사양과 설계, 구현에 있어서 오류가 없는 정도
  • 이식성(Adaptability) : 시스템을 변경하지 않고 설계된 환경에서 뿐만 아니라 다른 응용 분야 등 에서도 사용될 수 있는 정도
  • 정밀성(Accuracy) : 구성된 시스템에 오류가 없는 정도
  • 견고성(Robustness) : 시스템이 잘못된 입력이나 악조건에서도 기능을 계속 수행할 수 있는 정도

□ 전위식, 후위식 변환 및 계산방법 ☆☆☆☆☆

  • 전위식 변환
    1. 중위식을 뒤에서부터 읽는다.
    2. 피연산자는 바로 출력(앞에 적는다)
    3. 연산자는 Stack의 Top에 있는 연산자와 비교해서 Top 연산자의 우선순위가 높으면 Top을 pop하고 다시 비교 낮으면 push
  • 변환 [ A * ( B + C ) - D ]
남은식 현재 출력 스택 비고
A * ( B + C ) - D D [ ] [ ] 피연산자 바로 출력
A * ( B + C ) - - [ D ] [ - ] 연산자 push
A * ( B + C ) ( B + C ) [ +BCD ] [ - ] 괄호가 닫힐 때 까지 push 후 pop
A * * [ +BCD ] [ - * ] 스택의 Top( - ) 우선순위가 낮으므로 psuh
A A [ A+BCD ] [ - * ] 식이 끝났으므로 모두 pop
    [ -*A+BCD ]    
  • 계산 [ -*A+BCD ]
    1. 오른쪽에서 왼쪽으로 읽는다.
    2. 피연산자는 push
    3. 연산자를 만나면 피연산자 두개를 꺼내서 계산(Top이 좌항)하고 그 덩어리를 push
현재 스택 연산 연산 후 스택
D [ ]   [ D ]
C [ D ]   [ D, C ]
B [ D, C ]   [ D, C, B ]
+ [ D, C, B ] B + C [ D, (B + C) ]
A [ D, (B + C) ]   [ D, (B + C), A] 
* [ D, (B + C), A]  A * (B + C) [ D, (A * (B + C)) ]
- [ D, (A * (B + C)) ] A * (B + C) - D [ A * (B + C) - D ]

 

  • 후위식 변환
    1. 중위식을 좌에서 우로 읽는다.
    2. 피연산자는 바로 출력
    3. 연산자는 Top과 비교 현재 연산자의 우선순위가 낮거나 같으면 Top을 pop 하고 다시비교 높으면 push

□ 소스코드 품질분석 도구 ☆☆☆☆

  • 정적 분석 도구 : pmd, cppcheck, SonarQube, ccm, SonarQube, FindBug, corbertura 등
  • 동적 분석 도구 : valance, Avalanche, Valgrind

□ NS Chart ☆☆☆

  • 구조적 프로그램의 순차, 선택, 반복의 구조를 사각형으로 도식화하여 알고리즘의 논리적 기술에 중점을 둔 도형식 표현 방법
  • 조건이 복합되어있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합
  • 제어구조 :순차, 선택및 다중 선택, 반복
  • 박스 다이어그램이라고도 한다

□ 소프트 웨어 버전 관리도구 ☆☆☆

  • 분산 저장소 방식: 하나의 원격 저장소와 개발자 PC의 로컬 저장소에 저장 ex) git
  • 공유 폴더 방식 : 로컬 컴퓨터의 공유 폴더에 저장되어 관리
  • 클라이언트/서버 방식 : 중앙 시스템(서버)에 저장되어 관리 방식

□ 인터페이스 구현 검증 도구 ☆☆☆

  • xUnit : Java, C++ 등 다양한 언어를 지원하는 단위 테스트 프레임워크
  • STAF : 서비스 호출 및 컴포넌트 재사용 등 환경을 지원하는 테스트 프레임워크
  • FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 네이버의 테스트 자동화 프레임워크
  • Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
  •  Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크

□ 테스트 케이스의 구성요소 ☆☆

  • 식별자(항목 식별자, 일련번호)
  • 테스트 항목(테스트 대상 모듈 또는 기능)
  • 입력 명세(입력 데이터 또는 테스트 조건)
  • 출력 명세(테스트 케이스 수행 시 예상되는 결과)
  • 환경 설정(필요한 하드웨어나 소프트웨어 환경)
  • 특수 절차 요구(테스트 케이스 수행 시 특별히 요구되는 절차)
  • 의존성 기술(테스트 케이스 간의 의존성)

□ 해싱 함수(Hashing Function) ☆☆

  • 제산법 : 해시표로 나눈 나머지 계산
  • 제곱법 : 큰 수를 제곱수 단위로 분할하여 계산
  • 중첩(폴딩)법 : 수를 여러 부분으로 나누어 각각 계산 후 다시 합치는 방법
  • 숫자분석법 : 숫자의 자릿수별 특성을 분석하여 계산을 단순화
  • 기수변환법 : 다른 진수로 변환하여 계싼
  • 무작위방법 : 임의의 수나 값(난수)을 이용해 문제를 해결하거나 근사하는 방법

□ 인터페이스 보안 ☆☆

  • 네트워크 영역
    • IPSec : IP계층에서 무결성과 인증을 보장하는 인증헤더와 암호화를 이용해 보안서비스 제공
    • SSL : 상호 인증 및 전송 시 데이터 무결성을 보장
    • S-HTTP : 웹상에서 클라이언트와 서버간의 메세지를 암호화 하여 전송

□ 반정규화 유형 중 중복 테이블 추가 방법 ☆☆

  • 집계 테이블 추가
  • 중복 테이블 추가
  • 이력 테이블 추가
  • 부분 테이블 추가
  • 진행 테이블 추가

□ SPCIE 모델의 레벨 ☆

레벨 단계 설명
레벨 5 최적(optimizing) 단계 정의된 프로세스와 표준 프로세스가 지속적으로 개선되는 단계
레벨 4 예측(predictable) 단계 표준 프로세스 능력에 대하여 정량적인 이해와 성능이 예측되는 단계
레벨 3 확립(established) 단계 표준 프로세스를 사용하여 계획되고 관리된 단계
레벨 2 관리(managed) 단계 프로세스가 정해진 절차에 따라 이루어져 산출물을 내며, 모든 작업이 계획되고 추적되는 단계
레벨 1 수행(performed) 단계 해당 프로세스의 목적은 달성하지만 계획되거나 추적되지 않은 단계
레벨 0 불완전(incomplete) 단계 프로세스가 구현되지 않거나 프로세스 목적을 달성하지 못한 단계

□ 응집력 ☆☆

기능적(Functional) > 순차적(Sequential) > 교환적(Communicational)> 절차적(Procedural)

> 시간적(Temporal) > 논리적(Logical) > 우연적(Coincidental)

 

'이론공부 > 자격증' 카테고리의 다른 글

네트워크관리사 2급  (3) 2025.08.06
정보처리기사(개념정리) - 5과목 정보시스템 구축관리  (3) 2025.07.29
정보처리기사(개념정리) - 4과목 프로그래밍 언어 활용  (0) 2025.07.23
정보처리기사(개념정리) - 3과목 데이터베이스 구축  (0) 2025.07.19
정보처리기사(개념정리) - 1과목 소프트 웨어 설계  (4) 2025.07.14
'이론공부/자격증' 카테고리의 다른 글
  • 정보처리기사(개념정리) - 5과목 정보시스템 구축관리
  • 정보처리기사(개념정리) - 4과목 프로그래밍 언어 활용
  • 정보처리기사(개념정리) - 3과목 데이터베이스 구축
  • 정보처리기사(개념정리) - 1과목 소프트 웨어 설계
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 자격증 N
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    java enhance switch
    프로그래머스 java 기초트레이닝
    개발로드맵
    데이터 크기
    데이터 타입
    java 에라토스테네스의 체
    java 제어자
    java기초
    java arrays.copyofrnage()
    java 세수의합
    프로그래머스 java 기초 트레이닝
    java 유클리드 호제법
    java
    java 멤버
    java super
    Java this
    java 메서드
    Java 생성자
    java two-pointer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
정보처리기사(개념정리) - 2과목 소프트 웨어 개발
상단으로

티스토리툴바