2과목 : 소프트웨어 개발

통합 테스트

  1. 상향식 통합 테스트 (Bottom Up Intergration Test)
    • 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합
    • 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)필요

  2. 하향식 통합 테스트 (Top Down Intergration Test)
    • 상위 모듈에서 하위 모듈 방향으로 통합
    • 깊이 우선 통합법, 넓이 우선 통합법 사용
    • 초기부터 사용자에게 시스템 구조를 보여줌

단위 테스트

  • 테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈로 하향식 테스트에 필요
  • 테스트 드라이버 : 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요
  • 테스트 슈트 : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 테스트 케이스 : 사용자의 요구사항을 정확히 준수했는지 확인하기 위한 입력 값, 실행조건, 기대결과 등으로 만들어진 테스트 항목의 명세서

단위 테스트 도구

  • CppUnit : C++ 프로그래밍 언어용 단위 테스트 도구
  • JUnit : 자바 프로그래밍 언어용 단위 테스트 도구
  • HttpUnit : 웹 브라우저 없이 웹 사이트 테스트를 수행하는 데 사용되는 오픈 소스 소프트웨어 테스트 프레임워크

RCS(Revision Control System)

  • CVS와의 차이점은 소스 파일의 수정을 한 사람만으로 제한한다.
  • 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구이다.
  • 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있다.

RPC(Remote Procedure call)

  • 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신

검색 및 정렬

  1. 선형검색 : 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 검색
  2. 이진검색 : 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 한다.
  3. 퀵 정렬 : 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방식
  4. 삽입정렬 : 가장 간단한 정렬 방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
  5. 쉘 정렬 : 삽입정렬 확장 개념, 입력파일을 매개변수값으로 서브파일 구성하고 각 서브파일을 삽입정렬 방식으로 순서 배열하는 과정을 반복하는 정렬
  6. 선택정렬 : n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하는 정렬
  7. 버블정렬 : 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
  8. 힙 정렬 : 전이진 트리를 이용한 정렬 방식
  9. 2-Way 합병 정렬 : 이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬 방식

RCS(Revision Control System)

  • CVS와의 차이점은 소스 파일의 수정을 한 사람만으로 제한한다.
  • 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구이다.
  • 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있다.

RPC(Remote Procedure call)

  • 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신

화이트박스 테스트

  • 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
  • 설계된 절차에 초점을 둔 구조적 테스트이며, 테스트 과정의 초기에 적용
  • 모듈 안의 작동을 직접 관찰
  • 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행
  • 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어

블랙박스 테스트

  • 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 함
  • 사용자의 요구사항 명세를 보면서 테스트하는 것으로, 주로 구현된 기능을 테스트
  • 소프트웨어 인터페이스에서 실시되는 테스트
  • 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용

알고리즘

  1. 선형검색 : 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 검색
  2. 이진검색 : 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 함

트리 순회

  1. 전위 운행 (PreOrder) : Root, Left, Right 순서
  2. 중위 운행 (InOrder) : Left, Root, Right 순서
  3. 후위 운행 (PostOrder) : Left, Right, Root 순서

DRM(Digital Right Management)

  • 디지털 콘텐트의 지적재산권보호, 관리 기능 및 안전한 유통과 배포를 보장하는 솔루션
  • 디지털 콘텐트의 지적재산권을 보호하는 권한통제기술, 사용권한제어 기술, 패키징 기술, 라이선스 관리를 포함한 유통체계
  • 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미

1) 구성요소
- 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
- 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는곳/사람
- 패키저 : 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화하는 프로그램
- 클리어링 하우스 : 키 관리 및 라이센스 발급 관리
- DRM 컨트롤러 : 배포된 콘텐츠의 이용권한을 통제하는 프로그램

단위 테스트 도구

  • CppUnit : C++ 프로그래밍 언어용 단위 테스트 도구
  • JUnit : 자바 프로그래밍 언어용 단위 테스트 도구
  • HttpUnit : 웹 브라우저 없이 웹 사이트 테스트를 수행하는 데 사용되는 오픈 소스 소프트웨어 테스트 프레임워크

정형기술검토(FTR) 지침

  • 오류 검출에 초점을 두고 해결책을 나중으로 미룸(제품 검토의 집중성)
  • 검토를 위한 자료를 사전에 배포하여 검토하도록 한다(사전 준비성)
  • 의견을 제한하되 충분히 받아들인다(의제의 제한성)
  • 안건을 세우면 고수한다(안건 고수성)
  • 논쟁과 반박을 제한한다(논쟁 반박의 제한성)
  • 문제 영역을 공개한다(문제 공개성)
  • 참가자의 수를 제한한다(참가 인원의 제한성)
  • 발견된 오류는 문서화한다(문서성)

소프트웨어 재공학

  • Analysis: 기존 소프트웨어를 분석하여 재공학 대상을 선정하는 것
  • Migration: 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
  • Restructuring: 기존 소프트웨어를 향상시키기 위하여 코드를 재구성하는 작업(기능과 외적 동작은 변하지 않음)
  • Reverse Engineering: 기존 소프트웨어를 분석하여 소스코드를 얻어내는 작업(소스코드로 소프트웨어를 만드는 작업의 역작업)

자료구조

-비선형 구조 : 트리, 그래프
-선형 구조 : 스택, 큐, 데크, 리스트
-파일 구조 : 순차파일, 색인파일, 직접파일

NS-Chart(Nassi-Schneiderman Chart)

  • 3가지 기본구조만으로 논리를 표현(표준화 가능)
  • Flow Chart의 최대 단점인 화살표가 표시되지 않음
  • 기본구조의 입구와 출구는 각 하나씩
  • 전체적인 알고리즘을 일목요연하게 볼 수 있음

정렬 방법

  • Selection Sort - 배열 내에서 최소값을 찾은 다음 정렬 되지 않은 맨 앞 값과 교환을 하며 정렬을 해 나아가는 방법 (정렬 시간 복잡도 모두 O(n^2))
  • Bubble Sort - 왼쪽에서 부터 두 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터 보다 크면 자리를 바꾸는 정렬 알고리즘(정렬 시간 복잡도 모두 O(n^2))
  • Insert Sort - 한 개의 값을 추출한 다음 앞쪽으로 비교해서 본인의 자리를 알맞게 찾아가게끔 하는 정렬 방법. 정렬 시간 복잡도는 최상일 경우 O(n), 평균과 최악일 경우 O(n^2)
  • 병합 정렬 - 또한 분할 정복에 기반한 알고리즘으로 리스트를 1 이하인 상태까지 절반으로 자른 다음 재귀적으로 합병 정렬을 이용해서 전체적인 리스트를 합병하는 정렬 과정. O(n log n)
  • 퀵 정렬: 분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법. 최상과 평균 경우 O(nlog2n), 최악의 경우 O(n^2)

ISO/IEC

  • 2500n : 개요 및 품질관리
  • 2501n : 품질모델
  • 2502n : 품질측정
  • 2503n : 품질요구
  • 2504n : 품질평가
  • 2505n : 확장분야

  • ISO/IEC 25000
    • SW 품질 평가 통합 모델
    • SQuaRE로도 불림
    • ISO/IEC 9126, ISO/IEC 12119, ISO/IEC 14598의 3개 표준을 통합한 모델

코드 인스펙션

  • 결함 뿐만 아니라 모든 것이 표준대로 되어 있는 지 확인하기 위한 검토
  • 표준이나 명세서에 서술항 내용과 비교하여 편차와 에러를 식별하기 위해 산출물을 근거로 수행하는 검사
  • 정적 테스트에 가까움

소프트웨어 프로젝트 관리

  • 프로젝트 관리는 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
  • 프로젝트 관리는 소프트웨어 개발 계획을 세우고 분석, 설계, 구현 등의 작업을 통제하는 것으로 소프트웨어 생명 주기의 전 과정에 걸쳐 진행됨
  • 소프트웨어 프로젝트를 성공적으로 수행하기 위해서는 수행할 작업의 범위, 필요한 자원, 수행 업무, 이정표, 비용 추진 일정들을 알아야 함
  • 소요인력은 최소화 하는 것이 좋음
    ※ 프로젝트 관리는 제한된 시간과 비용으로 좋은 품질의 시스템을 개발하여 고객에게 제공함

트리의 수식 표기법

  • 전위 표기법(prefix)-연산자가 앞에
  • 중위 표기법(infix)-연산자가 안에
  • 후위 표기법(postfix)-연산자가 뒤에

ex) -/*A+BCDE

  1. 후위식
    • 연산자에 따라 묶는다 : (-(/(*A(+BC))D)E)
    • 연산자를 각 괄호 뒤로 뺀다 : (((A(BC)+)*D)/E)-
    • 괄호를 제거한다 : ABC+*D/E-

  2. 전위식
    • 연산자에 따라 묶는다 : (-(/(*A(+BC))D)E)
    • 연산자를 각 괄호 앞으로 뺀다
    • 괄호를 제거한다 : -/*A+BCDE

  3. 중위식
    • 연산자에 따라 묶는다 : (-(/(*A(+BC))D)E)
    • 연산자를 안으로 넣는다 : (((A*(B+C))/D)-E)
    • 괄호를 제거한다 : A*B+C/D-E

소스코드 품질분석

  1. 정적 분석 도구
    • pmd, cppcheck, SonarQube, ccm 등
  2. 동적 분석 도구
    • valance, Avalanche, Valgrind

네트워크 보안

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

인터페이스 구현 검증 도구

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

그래프의 최대간선수

  • 정점이 n개인 무방향 그래프에서 최대의 간선수는 n(n-1)/2개
  • 정점이 n개인 그래프에서 최대 간선수는 n(n-1)개

해싱함수

  • 폴딩법
    • 해싱함수 중 레코드 키를 여러부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용
  • 제산법
    • 레코드키를 해시표로 나눈 나머지를 홈 주소로 사용
  • 기수변환법
    • 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수 절단, 다시 주소 범위에 맞게 조정
      숫자분석법 - 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 선택

인스펙션 과정

  1. 사전교육
  2. 준비
  3. 인스펙션 회의
  4. 수정
  5. 후속조치

테스트 용어

  • 테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서
  • 테스트 시나리오 : 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합
  • 테스트 오라클 : 문제 참조

Updated: