[정처기] 2과목 소프트웨어 개발 21년 기출 정리

하나·2022년 5월 14일
0

CS

목록 보기
6/7
post-thumbnail

21년 1회

  1. 디지털 저작권 관리 (DRM) 기술요소

    • 암호화
    • 키관리
    • 암호화 파일생성
    • 식별기술
    • 저작권 표현
    • 정책관리
    • 크랙방지
    • 인증
  2. 사용자 인터페이스

    • 체크박스 : 1개 이상 값 선택 가능
    • 라디오버튼 : 하나만 선택 가능
    • 텍스트박스 : 텍스트 입력 수정 가능
    • 토글버튼 : on off 같ㅌ이 둘 중 하나 선택하는 버튼
  3. 스택은 서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에서 응용 됨

  4. 블랙박스 검사 기법

    • 동치분할검사
    • 경계값 분석
    • 원인-효과 그래프 검사
    • 오류 예측 검사
    • 비교 검사
  5. 화이트 박스 검사 기법 (기조루흐)

    • 기초경로 검사
    • 조건 검사
    • 루프 검사
    • 데이터흐름 검사
  6. 테스트 케이스의 구성 요소

  • 식별자(항목식별자, 일련번호)
  • 테스트항목
  • 입력명세 (입력데이터, 테스트 조건)
  • 출력명세 (테스트케이스 수행 시 예상되는 출력 결과)
  • 환경 설정 (필요한 HW, SW 환경)
  • 특수 절차 요구
  • 의존성 기술
  1. 퀵정렬

    • 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬

    삽입정렬

    • 가장 간단한 정렬방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입

    쉘 정렬

    • 삽입정렬의 확장, 입력파일을 매개변수값으로 서브 파일 구성하고 각 서브파일을 삽입정렬 방식으로 순서배열 과정을 반복

    선택 정렬

    • n 개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 두고, 나머지 n-1 개 중에서 다시 최솟값을 찾아 두 번째 레코드 위치에 놓는 과정 반복

    버블 정렬

    • 인접한 두 레코드 키 값 비교해서 교환

    힙정렬

    • 전이진 트리를 이용

    2 way 합병 정렬

    • 이미 정렬되어 있는 두개의 파일을 한개로 합병하는 정렬 방식
  2. 해싱함수

    • 제산법
    • 제곱법
    • 중첩법(폴딩법)
    • 숫자분석법
    • 기수 변환법
    • 무작위 방법

21년 3회

  1. 테스트
    • 회복 테스트 : 시스템의 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지
    • 강도 테스트 : 과다 정보량 부과, 과부하시에도 정상적으로 작동되는지 테스트
    • 성능 테스트 : 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하느 속도 등 테스트
    • 안전 테스트 : 부단하고 불법적인 침입을 시도하여 보안 시스템이 불법적인 침투를 잘 막아내는지 테스트
  1. 모듈이 되기 위한 특징
  • 다른 것들과 구분될 수 있는 독립적인 기능을 갖는 단위
  • 유니크한 이름을 가짐
  • 모듈에서 또 다른 모듈 호출 가능
  • 다른 프로그램에서도 모듈 호출 가능
  1. 테스트 드라이버 : 테스트 대상 하위 모듈을 호출, 파라미터 전달, 모듈 테스트 수행 후의 결과 도출

    (상향식 테스트에 사용됨)

    테스트 스텁 (test stub) : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구

    (하향식 테스트에 사용됨)

  2. 선형 자료 구조 : 리스트, 스택, 큐, 데크

    비선형 자료 구조 : 그래프, 트리

  1. 검증은 작업 제품이 요구 명세의 기능,비기능 요구사항을 얼마나 잘 준수하는지 측정하는 작업

  2. 테스트

  • 단위 테스트 : 동적, 정적 테스트
  • 통합 테스트 : 상향식(밑에서 위로 말아올리는 것, 위에 모듈 없으면 드라이버 만듦), 하향식(위에서 아래로, 스텁), 백본(상향식,하향식 같이, 샌드위치 테스트) ,빅뱅(한꺼번에 다 같이)
  • 시스템 테스트 : 서버에 올려서 테스트. 기능(사용자 요구에 맞는 기능) , 비기능 테스트(보안, 성능)
  • 인수 테스트 : 알파, 베타, 형상테스트
  1. 형상관리하는 절차 : 형상 식별 → 형상 통제(베이스라인) → 형상 감사 → 형상 기록

    1. 형상 식별

      형상 관리 대상들 구분, 관리 목록의 번호 정의,부여하는 과정

      형상 관리 대상 : 품질관리 계획서, 품질관리 매뉴얼, 요구사항 명세서, 설계/인터페이스 명세서, 테스트 설계서, 소스코드

    2. 형상 통제

      소프트웨어 형상 변경 제안을 검토, 현재 SW기준선(베이스라인)에 반영하도록 통제

      형상통제가 이루어지기 위해서는 형상통제위원회(CCB)의 승인을 통한 변경 통제가 이루어짐

    3. 형상 감사

      형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지 검토/승인하는 것

      개발자, 유지보수 담당자가 아닌 제 3의 객관적인 확인 및 검증 과정을 통해 새로운 형상의 무결성을 확보

      형상 통제 과정에서 즉시 수용이 아니고 절차가 있음. 즉시 수용 x

    4. 형상 기록/보고

      SW개발 상태에 대한 보고서 제공, 베이스라인 산출물에 대한 변경과 처리 과정에서의 변경 상태 보고에 모두 기록

    CVS, SVN - 중앙집중식, GIT- 분산

  1. 이식성 : 하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 시스템 능력 (기신사효유이)

ISO9126 기능성 신뢰성 사용성 효율성 유지보수성 이식성

  1. 2-3 트리, 레드-블랙 트리는 index 를 만들 때 사용, (B트리)
  2. 트리 순회
  3. 테스트 수행 도구 : 자료흐름도, 기능 테스트, 입력 도메인 분석, 랜덤 테스트
  4. 저작권 관리 구성 요소
    • 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
    • 콘텐츠 분배자 : 암호화된 콘텐츠를 제공
    • 패키저 : 콘텐츠 + 매타 데이터 함께 배포 가능한 단위로 묶는 기능
    • 보안 컨테이너 : 원본을 안전하게 유통하기 위한 전자적 보안장치
    • DRM 컨트롤러: 배포된 콘텐츠의 이용 권한을 통제
    • 클리어링 하우스 : 소비자와 유통업자 사이에 발생하는 거래에 대해 디지털 저작권 라이선스를 중개하고 라이선스 발급을 수행하는 장소

21년 2회

  1. 힙 정렬 (heap sort)
  • 정렬할 입력 레코드들로 힙을 구성, 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복하여 정렬
  • 평균 수행 시간 O(nlog2n) = 최악의 수행 시간
  • 완전 이진트리로 입력자료의 레코드를 구성
  1. 단위테스트를 통해 발견할 수 있는 오류
  • 알고리즘 오류에 따른 원치 않는 결과
  • 탈출구가 없는 반복문의 사용
  • 틀린 계산 수식에 의한 잘못된 결과
  • 단위테스트는 테스트 코드가 독립적이어야 함으로 각 모듈간의 상호작용은 해당되지 않음
  1. 소프트웨어 테스트의 기본 원칙
  • 살충제 패러독스 : 동일한 테스트 케이스로 반복 실행하면 더 이상 새로운 결함 발견할 수 없으므로 주기적으로 테스트케이스를 점검하고 개선해야 함
  • 오류 부재의 궤변 : 사용자의 요구사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 할 수 없음
  • 결함 집중 : 파레토 법칙, 결함은 대부분 소수의 특정한 모듈에 집중되어 존재, 발생한 모듈에서 계속 추가로 발생할 가능성 높음
  1. 버전 관리
  • 형상 감사 : 기준선의 무결성 평가하기 위해 확인, 검증, 검열 과정 통해 공식적으로 승인하는 작업
  • 저장소 : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
  • 가져오기 (import) : 버전관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일 복사
  • 체크아웃 : 프로그램 수정 위해 저장소에서 파일 받아옴
  • 체크인 : 체크아웃한 파일의 수정 완료 후 저장소의 파일을 새로운 버전으로 갱신
  • 커밋 : 체크인 수행할 때 이전에 갱신된 내용 있는 경우 충돌 알리고 diff 도구 통해 수정한 후 갱신 완료
  • 동기화 : 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화
  • 롤백 : 데이터베이스에서 업데이트에 오류가 있을 때, 이전 상태로 되돌리는 것
  1. 소프트웨어 테스트
  • 화이트박스 테스트 : 내부 구조와 동작을 검사, 내부 소스 테스트, 기본 경로는 싸이클을 최대 한 번 지남
  • 블랙 박스 테스트 : 내부 구조나 작동 원리를 모르는 상태에서 입력에 따른 출력 결과 테스트
  • 화이트 박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검 가능
  • 테스트 케이스에는 일반적으로 시험 조건, 테스트 데이터, 예상 결과가 포함되어야 함.
  1. 단위 테스트 종류
  • 명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인
  • 구조 기반 테스트 : 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정이 목적
  • 성능 테스트 도구 : 어플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인 인위적으로 적용한 가상 사용자를 만들어 테스트 수행
  1. 소프트웨어 형상 관리
  • 소프트웨어에 가해지는 변경 제어 관리
  • 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트케이스 모두 관리 대상
  • 유지 보수 단계 뿐만 아니라 개발 단계에서도 적용
  • Github
  • Ant, Maven, Grade 은 빌드 자동화 도구
  1. 디지털 저작권 관리 (DRM) 구성 요소
  • 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳/사람
  • 패키저 : 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화
  • 클리어링 하우스 : 키 관리 및 라이센스 발급 관리, 디지털 저작권 라이센스의 중개 및 발급을 수행하는 곳, 디지털 저작물의 이용 내역을 근거로 저작권료의 정산 및 분배 수행
  • DRM 컨트롤러 : 배포된 콘텐츠의 이용권한을 통제
  1. 소프트웨어 버전 관리도구 방식
  • 분산 저장소 : 하나의 원격 저장소와 개발자 PC의 로컬 저장소에 저장
  • 공유 폴더 : 로컬 컴퓨터의 공유 폴더에 저장되어 관리, 공유 폴더의 파일을 자기 PC로 복사 후 이상 유무 확인
  • 클라이언트/서버 방식 : 중앙 시스템(서버)에 저장되어 관리 방식, 개발자 별로 자신의 pc(클라이언트)로 복사, 모든 버전 관리는 서버에서 수행, 서버에 문제가 생기면 다른 개발자 협업 및 버전 관리 작업 중단
  1. 블랙박스 테스트
  • 경계값 분석
  • 기능테스트
  • 프로그램 구조 고려 x
  • 비정상적인 자료 입력해도 오류 처리 수행하지 않는 경우/ 정상적인 자료 입력해도 요구된 기능이 제대로 수행 되지 않는 경우 확인 가능
  1. O(nlog2n) : 선형 로그 복잡도, 로그 변수에 비례 (퀵정렬, 병합정렬)

    O(n제곱) : 제곱형, 제곱에 비례 (버블정렬, 삽입정렬, 선택정렬)

    → 정렬된 데이터의 경우, 버블정렬과 삽입정렬은 O(n)이 될 수 있음

  1. EAI : 기업 내 상호 연동이 가능하게 해주는 솔루션, 비즈니스 간 통합 및 연계성을 증대시켜 각 시스템 간의 확정성을 높여줌

구축유형

  • point to point : 1대1로 연결, 변경 및 재사용이 어려움
  • Hub&Spoke : 단일 접점인 허브 통해 데이터 전송하는 중앙 집중형 방식, 확장 및 유지 보수 용이, 허브 장애 발생 시 시스템 전체에 영향
  • Message Bus (ESB 방식) : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식, 확장성이 뛰어나며 대용량 처리 가능
  • Hybrid : 그룹내에서는 hub&spoke, 그룹 간에서는 Message 방식 사용, 데이터 병목 현상 최소화
  1. 인터페이스 구현 검증 도구
  • xUnit
  • STAF
  • Fitnesse
  • NTAF
  • Selenium
  • watir
  • Foxbase 는 프로그래밍 언어
  1. 클린 코드 작성 원칙
  • 중복성 최소화 : 공통된 코드 사용
  • 가독성 : 누구나 쉽게 읽을 수 있도록 작성
  • 단순성 : 한번에 한 가지를 처리하도록
  • 의존성 배제 : 코드가 다른 모듈에 미치는 영향 최소화
  1. 소프트웨어 패키징

    모듈별로 생성한 실행 파일들을 하나로 합쳐서 설치 파일을 만드는 것

    사용자 중심으로 패키징

    고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 함

    범용 환경에서 사용 가능하도록 일반적인 배포 형태로 패키징 진행

  2. well engineered software

    • 유지보수 용이
    • 신뢰성
    • 충분한 테스팅
    • end user 수준에 맞게 인터페이스 제공
  3. 테스트는 오류를 찾는 작업, 디버깅은 오류를 수정하는 작업

  4. 스택을 이용한 연산

    • 재귀호출
    • 후위표현의 연산
    • 깊이우선탐색
    • 선택정렬은 큐를 이용

0개의 댓글