정보처리기사 소프트웨어 개발1

뚜니·2024년 2월 26일
0

정보처리기사

목록 보기
5/12

소프트웨어 개발

🚂소스 코드 인스펙션

  • 소스 코드 인스펙션
    프로그램의 소스나 코드에서 결함을 찾아내고 이를 확인하려는 작업을 소스 코드 인스펙션

재공학, 역공학, 재사용

  • 재공학(Reengineering)
    새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
  • 역공학(Reverse Engineering)
    기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동
  • 소프트웨어 재사용(Software Reuse)
    이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것

🚃코드 검사

  • 데이터 오류(DA; Data Error)
    데이터 유형 정의, 변수 선언, 매개 변수 등에서 나타나는 오류이다

  • 기능 오류(FN; Function Error)
    서브루틴이나 블록이 잘못된 것(What)을 수행하는 오류이다

  • 논리 오류(LO; Logic Error)
    서브루틴이나 블록이 수행하는 방법(How)이 잘못되어 있는 오류이다

  • 성능 오류(PF; Performance Error)
    프로그램을 수행하며 요구되는 성능을 만족시키지 못하는 오류이다

  • 문서 오류(DC; Documentation Error)
    프로그램 구성 요소인 선언 부분, 잘못되거나 불필요한 주석 등을 의미한다

🚄이진 트리의 특성

트리(Tree)

정점(Node, 노드)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프(Graph)의 특수한 형태이다

  • 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것
  • 근 노드(Root Node) : 트리의 맨 위에 있는 노드
  • 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수
  • 단말 노드(Terminal Node) : 자식이 하나도 없는 노드, 즉디그리가 0인 노드
  • 트리의 디그리(트리의 차수) : 노드들의 디그리 중에서 가장 많은 수

문제)
n0 단말 노드 수
n1 : 차수 1인 노드 수
n2 : 차수 2인 노드 수
n : 노드 총 수
e : 간선 총수

1) n0 = n2 + 2
2) e = n1 + 2n2
3) n = e + 1
4) n = n0 + n1 + n2

🚅화이트박스 테스트(White Box Test)

  • 제품의 내부 요소들이 명세서에 따라 수행되고 충분히 실행되는가를 보장하기 위한 검사이다.
  • 모듈 안의 작동을 직접 관찰한다.
  • 프로그램 원시 코드의 논리적인 구조를 커버하도록 테스트 케이스를 설계한다.
  • 화이트박스 테스트 기법에는 기초 경로 검사, 제어 구조 검사 등이 있습니다.

화이트박스 테스트의 특징

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

화이트박스 테스트의 종류

🔹 기초 경로 검사(Base Path Testing)
테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법

🔹 제어 구조 검사(Control Structure Testing)
-조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트 하는 테스트 케이스 설계 기법
-루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
-데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

🚆정형 기술 검토(FTR; Formal Technical Review)

  • 가장 일반적인 검토 방법으로 소프트웨어 기술자들에 의해 수행되는 소프트웨어 품질 보증 활동이다.
  • 정형 기술 검토 유형에는 검토 회의(Walkthrough), 검열(Inspections) 등이 있으며 이는 모두 회의 형태로 수행된다.

✧⁺⸜(・ ᗜ ・ )⸝⁺✧ 정형 기술 검토의 지침 사항 ✧⁺⸜(・ ᗜ ・ )⸝⁺✧

-제품의 검토에만 집중하라
-의제를 제한하여 진행하라
-논쟁과 반박을 제한하라
-문제 영역을 명확히 표현하라
-해결책이나 개선책에 대해서는 논하지 말아라
-참가자의 수를 제한하고 사전 준비를 강요하라
-검토될 확률이 있는 각 제품에 대한 체크 리스트를 개발하라

🚇Reverse Engineering (역공학)

기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동이다.

  • Analysis(분석) : 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 재공학할 대상을 선정하는 활동
  • Restructuring(재구성) : 기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 활동으로, 소프트웨어의 기능과 외적인 동작은 바뀌지 않음
  • Migration(이식) : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동

🚈ISO/IEC 25010의 소프트웨어 품질 특성

  • 기능 적합성 : 기능 완전성, 기능 정확성, 기능 적절성

  • 성능 효율성 : 시간 효율성, 자원 효율성, 사양

  • 호환성 : 공존성, 상호운영성

  • 사용성(Usability) : 적절 인지정도, 학습성, 조작성, 사용자 오류 방지, UI 미학, 접근성

  • 신뢰성 : 성숙성, 사용가능성, 결함 허용성, 복구성

  • 보안성 : 기밀성, 무결성, 부인방지, 책임추적성, 인증성

  • 유지 보수성 : 모듈성, 재사용성, 분석성, 변경성, 시험성

  • 이식성(Portability) : 적응성, 설치성, 대체성

🚉 인터페이스 구현 검증 도구

🔹 xUnit
Java(Junit), C++(Cppunit), .Net(Nunit), Http(HttpUnit) 등 다양한 언어를 지원하는 단위 테스트 프레임 워크

🔹 STAF
서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크

🔹 FitNesse
웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크

🔹 NTAF
FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크

🔹 Selenium
다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크

🔹 watir
Ruby를 사용하는 애플리케이션 테스트 프레임워크

🚊소스 코드 품질 분석 도구 (정적 분석 도구)

🔹 소스 코드 품질 분석

  • 정적 분석 도구
    pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등

  • 동적 분석 도구
    Avalanche, Valgrind 등

🚝데크(Deque) / 자료구조

  • 삽입과 삭제가 리스트의 양쪽 끝에서 발생할 수 있는 형태이다.

  • 입력이 한쪽에서만 발생하고 출력은 양쫄에서 일어날 수 있는 입력 제한과, 입력은 양쪽에서 일어나고 출력은 한 곳에서만 이루어지는 출력 제한이 있다.

  • 스택(Stack) :리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조

  • 큐(Queue) : 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조

🚞알파검사 / 검증 검사 기법

  • 알파검사 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 기법이며, 일반적으로 통제된 환경에서 사용자와 개발자가 함께 확인하면서 수행되는 검사

  • 베타 테스트
    -선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법으로, 필드 테스팅(Field Testing)이라고도 불린다.
    -실업무를 가지고 사용자가 직접 테스트하는 것으로, 개발자에 의해 제어되지 않은 상태에서 테스트가 행해지며, 발견된 오류와 사용상의 문제점을 기록하고 개발자에게 주기적으로 보고한다.

🚋알고리즘 시간 복잡도 0(1)

빅오 표기법(Big-O Notation)의 시간 복잡도를 표기하는 방법의 하나로, 입력 데이터 수에 관계없이 문제 해결에 하나의 단계만을 거친다는 것을 의미합니다.

빅오 표기법(Big-O Notation)

알고리즘의 실행시간이 최악일 때를 표기하는 방법으로, 신뢰성이 떨어지는 오메가 표기법이나 평가하기 까다로운 세타 표기법에 비해 성능을 예측하기 용이하여 주로 사용되는 표기법이다.

🚌디지털 저작권 관리(DRM)

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

  • 암호화(Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
  • 키 관리(Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
  • 암호화 파일 생성(Packager) : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
  • 식별 기술(Identification) : 콘텐츠에 대한 식별 체계 표현 기술
  • 저작권 표현(Right Expression) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
  • 크랙 방지(Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
  • 인증(Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

🚍화이트 박스 테스트의 종류

🔹 기초 경로 검사

  • 대표적인 화이트 박스 테스트 기법이다.
  • 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법으로, 테스트 측정 결과는 실행 결로의 기초를 정의하는 데 지침으로 사용된다.

🔹 제어 구조 검사

  • 조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트 하는 테스트 케이스 설계 기법
  • 루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
  • 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

🚎블랙박스 테스트의 종류

🔹 동치 분할 검사(Equivalence Partitioning Testing) : 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 함

🔹 경계값 분석(Boundary Value Analysis) : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법

🔹 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 및치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법

🔹 오류 예측 검사(Error Guessing) : 과거의 경험이나 확인자의 감각으로 테스트하는 기법

🔹 비교 검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

  • 전체 파일을 두 개의 서브파일로 분리해 가면서 Key 레코드를 검색하는 방식이다.
  • 이분 검색은 반드시 순서화된 파일이어야 검색할 수 있다.
  • 찾고자 하는 Key 값을 파일의 중간 레코드 Key 값과 비교하면서 검색한다.
  • 비교 횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어듦으로 탐색 효율이 좋고 탐색 시간이 적게 소요된다.
  • 중간 레코드 번호 M=(F + L)/2 (단, F : 첫 번째 레코드 번호, L : 마지막 레코드 번호)

🚑IDE(Integrated Development Environment)도구의 각 기능에 대한 설명으로 틀린 것은?

  • Coding(코딩) : 프로그래밍 언어를 가지고 컴퓨터 프로그램을 작성할 수 있는 환경을 제공
  • Compile(컴파일) : 개발자가 작성한 고급언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램으로 번역하여 컴퓨터에서 실행 가능한 형태로 변환하는 기능
  • Debugging(디버깅) : 프로그램에서 발견되는 버그를 찾아 수정할 수 있는 기능
  • Deployment(배포) : 소프트웨어를 최종 사용자에게 전달하기 위한 기능

🚒형상관리(SCM; Software Configuration Management)

  • 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동이다.
  • 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보한다.
  • 형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행된다.
  • 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
  • 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
  • 관리 항목에는 소스 코드뿐만 아니라 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 등이 포함된다.
  • 형상 관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
  • 대표적인 형상 관리 도구에는 Git, CVS, Subversion 등이 있다.

🚓형상 관리 기능

  • 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree)구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
  • 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool)를 결합시키는 작업
  • 형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
  • 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  • 형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록·관리하고 보고서를 작성하는 작업

🚔합병 정렬

정렬된 N개의 데이터를 처리하는데 O(Nlog2N)의 시간이 소요되는 정렬 알고리즘

  • 버블 정렬, 선택 정렬, 삽입 정렬의 시간 복잡도는 O(n^2)

🚕자료 구조의 분류

🔹 선형 구조(Linear Structure)

  • 배열(Array)
  • 선형리스트(Linear List)
  • 스택(Stack)
  • 큐(Queue)
  • 데크(Deque)

🔹 비선형 구조(Non-Linear Structure)

  • 트리(Tree)
  • 그래프(Graph)

0개의 댓글