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

뚜니·2024년 2월 27일
0

정보처리기사

목록 보기
6/12

소프트웨어 개발

🚖소프트웨어 프로젝트 관리

🔹 프로젝트 관리(Project Management) : 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동입니다.

🔹 프로젝트 관리(Project Management)
주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동이다.

🔹 관리 유형

  • 일정 관리 : 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
  • 비용 관리 : 비용 산정, 비용 예산 편성, 비용 통제
  • 인력 관리 : 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
  • 위험 관리 : 위험 식별, 위험 평가, 위험 대처, 위험 통계
  • 품질 관리 : 폼질 계획, 품질 보증 수행, 품질 통제 수행

🚗인수 테스트(Acceptance Test)

개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법

  • 단위 테스트(Unit Test) : 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 하는 테스트
  • 시스템 테스트(Sytem Test) : 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트
  • 통합 테스트(Integration Test) : 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트

🚘코드 인스펙션

  • 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
  • 코드 품질 향상 기법 중 하나이다.
  • 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.
  • 코드 인스펙션은 정적 테스트 시에만 활용하는 기법입니다.

🚙트리 중위 순회(Inorder)

중위 순회(Inorder)는 Left -> Root -> Right
= 1번 - A - 2번
= DB - A - ECF

🚚모듈(Module)

  • 다른 것들과 구별될 수 있는 독립적인 기능을 가진 단위(Unit)이다.
  • 독립적인 컴파일이 가능하다.
  • 유일한 이름을 가져야 한다.
  • 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용된다.
  • 모듈은 단독으로 컴파일이 가능하며, 재사용 할 수 있다.
  • 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로, 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어진다.
  • 독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 거의 영향을 미치지 않으며, 오류가 발생해도 쉽게 발견하고 해결할 수 있다.
  • 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 한다.

🚛체이닝(Chaining)

해시 함수가 서로 다른 키에 대해 같은 주소값을 반환해서 충돌이 발생하면 각 데이터를 해당 주소에 있는 링크드 리스트(Linked List)에 삽입하여 문제를 해결하는 기법

🚜Collision(충돌현상) 해결 방법

  • 체이닝(Chaining) : Collision이 발생하면 버킷에 할당된 연결 리스트(Linked List)에 데이터를 저장하는 방법
  • 개방 주소법(Open Addressing) : Collision이 발생하면 순차적으로 그 다음 빈 버킷을 찾아 데이터를 저장하는 방법
  • 재해싱(Rehashing) : Collision이 발생하면 새로운 해싱 함수로 새로운 홈 주소를 구하는 방법

🚲통합 개발 환경(IDE)

  • 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적인 개발환경을 말한다.
  • 통합 개발 환경 도구의 기능에는 코딩, 컴파일, 디버깅등이 있다.
  • C, JAVA 등의 다양한 프로그래밍 언어로 프로그램을 작성하는 기능을 지원한다.
  • Python과 같은 인터프리터 언어로 프로그램을 작성하는 기능도 지원한다.

🛴DRM(Digital Right Management, 디지털 저작권 관리)

디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미하는 것

  • DLP(Data Leakage/Loss Prevention, 데이터 유출 관리)
    내부 정보의 외부 유출을 방지하는 보안 솔루션
  • DOI(Digital Object Identifier, 디지털 콘텐츠 식별자)
    인터넷에 유통되는 모든 디지털 콘텐츠에 부여되는 고유 식별자
  • PKI(Public Key Infrastructure, 공개키 기반 구조)
    공개키 암호 시스템을 안전하게 사용하고 관리하기 위한 정보 보호 표준 방식

🛵소프트웨어 설치 매뉴얼의 기본 사항

🔹 소프트웨어 개요
-소프트웨어의 주요 기능 및 UI 설명
-UI 및 화면 상의 버튼, 플임 등을 그림으로 설명
🔹 설치 관련 파일
-소프트웨어 설치에 필요한 파일 설명
-exe, ini, log 등의 파일 설명
🔹 설치 아이콘(Installation)
-설치아이콘 설명
🔹 프로그램 삭제
-설치된 소프트웨어의 삭제 방법 설명
🔹관련 추가 정보
-소프트웨어 이외의 관련 설치 프로그램 정보
-소프트웨어 제작사 등의 추가 정보 기술

⛵빌드 자동화 도구

  • 빌드란 소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정이며, 이러한 빌드를 포함하여 테스트 및 배포를 자동화하는 도구를 빌드 자동화 도구라고 한다.
  • 애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합되는데, 이러한 지속적인 통합(Continuous Integration) 개발 환경에서 빌드 자동화 도구는 유용하게 활용된다.
  • 빌드 자동화 도구에는 Ant, Make, Maven, Grade, Jenkins 등이 있으며, 이 중 Jenkins와 Gradle이 가장 대표적이다.

🛶동치 분할 검사(Equivalence Partitioning Testing)

명세 기반 테스트 중 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여 해당 입력 자료에 맞는 결과가 출력되는지 확인 하는 테스트

🚤블랙박스 테스트의 종류

🔹 동치 분할 검사(Equivalence Partitioning Testing)
-입력 자료에 초점을 맞춰 테스트 케이스(동치클래스)를 만들고 검사하는 방법으로 동등 분할 기법이라고도 함
-프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되ㅗ는지 확인하는 기법

🔹 경계값 분석(Boundary Value Analysis)
-입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법
-입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선저하여 검사하는 기법

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

🔹 오류 예측 검사(Error Guessing)
-과거의 경험이나 확인자의 감각으로 테스트하는 기법
-다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법이며, 데이터 확인 검사라고도 함

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

🚢인터페이스 데이터 표준

인터페이스 기능, 데이터 인터페이스 ➡️ 내·외부 모듈 간 인터페이스 데이터 표준을 확인하는데 사용되는 정보

🛫퀵 정렬(Quick Sort)

  • 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법
  • 분할(Divide)과 정복(Conquer)을 통해 자료를 정렬
  • 피봇(pivot)을 사용하며, 최악의 경우 n(n-1)/2회의 비교를 수행해야 한다.

🛬정렬(Sort)

  • 삽입 정렬(Insertion Sort)
    가장 간단한 정렬 방식으로 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬함
  • 쉘 정렬(Shell Sort)
    삽입 정렬을 확장한 개념으로 입력 파일을 어떤 매개변수(h)의값으로 서브파일을 구성하고, 각 서브파일을 삽입 정렬 방식으로 순서 배열하는 과정을 반복하는 정렬 방식
  • 선택 정렬(Selection Sort)
    n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 (n-1)개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식
  • 버블 정렬(Bubble Sort)
    주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
  • 퀵 정렬(Quick Sort)
    레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 바법으로 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브파일로 분해시키는 방식으로 정렬
  • 힙 정렬(Heap Sort)
    전이진 트리(Complete Binary Tree)를 이용한 정렬 방식
  • 2-Way 합병 정렬(Merge Sort)
    이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬 방식
  • 기수 정렬(Radix Sort, Bucket Sort)
    Queue를 이용하여 자릿수(Digit)별로 정렬하는 방식으로, 레코드의 키 값을 분석하여 같은 수 또는 같은 문자끼리 그 순서에 맞는 버킷에 분배하였다가 버킷의 순선대로 레코드를 꺼내어 정렬함

🪂자료 구성 단위

비트(Bit)
-자료(정보) 표현의 최소 단위
-두 가지 상태(0과 1)를 표시하는 2진수 1자리임

니블(Nibble)
-4개의 비트(Bit)가 모여 1개의 니블(Nibble)을 구성함
-16진수 1자리를 표현하기에 적합함

바이트(Byte)
-문자를 표현하는 최소 단위
-8개의 비트(Bit)가 모여 1바이트(Byte)를 구성함

워드(Word)
-CPU가 한 번에 처리할 수 있는 명령 단위

필드(Field)
-파일 구성의 최소 단위
-의미 있는 정보를 표현하는 최소 단위

레코드(Record)
-하나 이상의 관련된 필드가 모여서 구성됨

블록(Block)
-하나 이상의 논리 레코드가 모여서 구성됨

파일(File)
-프로그램 구성의 기본 단위로, 여러 레코드가 모여서 구성됨

데이터베이스(Database)
-여러 개의 관련된 파일(File)의 집합

💺위험관리의 일반적인 절차

위험 관리의 일반적인 절차는 어떠한 위험이 있는지 먼저 식별하고, 그 위험을 분석한 후 이 위험을 어떻게 관리할 것인지 계획한 다음 위험에 대해 감시하고 조치를 취해야 합니다.

위험 식별 ➡️ 위험 분석 및 평가 ➡️ 위험 관리 계획 ➡️ 위험 감시 및 조치

🚁소프트웨어 재사용(Software Reuse)

  • 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것이다.
  • 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로, 기존에 개발된 소프트웨어와 겸험, 지식 등을 새로운 소프트웨어에 적용한다.

🚟재사용의 이점

  • 개발 시간과 비용을 단축시킨다
  • 소프트웨어 품질을 향상시킨다
  • 소프트웨어 개발의 생산성을 향상시킨다
  • 프로젝트 실패의 위험을 감소시킨다
  • 시스템 구축 방법에 대한 지식을 공유하게 된다
  • 시스템 명세, 설계, 코드 등 문서를 공유하게 된다

🚠JSON

웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성 · 값의 쌍 형태로 표현하는 형식으로, 자바 스크립트(JavaScript)를 토대로 개발되어진 형식

🚡Python

객체지향 기능을 지원하는 대화형 인터프리터 언어로, 플랫폼에 독립적이고 문법이 간단하여 배우기 쉬움

🚀XML(eXtensible Markup Language)

특수한 목적을 갖는 마크업 언어를 만드는데 사용되는 다 목적 마크업 언어

🛸웹 서버(Web Server)

클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공함

🚖단위 테스트를 통해 발견 할 수 있는 오류

  1. 알고리즘 오류에 다른 원치 않는 결과
  2. 탈출구가 없는 반복문의 사용
  3. 틀린 계산 수식에 의한 잘못된 결과

모듈 간의 비정상적 상호 작용으로 인한 원치 않는 결과 -> 통합 테스트

0개의 댓글