2과목 소프트웨어 개발 정리
2과목 소프트웨어 개발
1. 선형 구조 및 비선형 구조
선형 구조 : 리스트, 스택, 큐, 데크
비선형 구조 : 트리, 그래프
2. 선형 구조의 종류 특징
데크 : 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료 구조
스택 : 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조
큐 : 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
3. 스택 응용 분야
함수 호출(재귀 호출 포함) : 함수를 호출 시 현재 진행중인 명령어 주소를 스택에 저장
후위표현 연산:Postfix를 계산할 때 사용
깊이 우선 탐색 (DFS; Depth-First Search) : 깊이 내려갈 때마다 스택에 값을 push 하고, 더 이상 깊이 갈 곳이 없을 경우 스택에서 POP 한 노드와 인접한 노드를 찾음
인터럽트의 처리 : 현재 진행 중인 명령어 위치를 스택에 PUSH 하고, 인터럽트 발생 상황을 처리한 후에 인터럽트 전에 진행 중이던 명령어 위치를 스택해서 POP을 통해 받아옴
4. 이진 나무 순회
전위 순회(preorder traverse) : root – left – right
중위 순회(inorder traverse) : letf – root – right
후위 순회(postorder traverse) : left – right – root
트리의 차수 : 노드에 파생된 차수가 가장 많은 차수의 개수
단말노드 : 차수가 없는 노드
5. n개의 노드로 구성된 무방향 그래프의 최대 간선 수
n(n-1)/2
6. 다음 그림의 트리의 차수
대충 많은 차수 개수 구하면 됨
7. 모듈의 특징
소프트웨어 구조를 이루며, 다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위
하나 또는 몇 개의 논리적인 기능을 수행하기 위한 명령어들의 집합
서로 모여 하나의 완전한 프로그램으로 만들어질 수 있음
8. 소프트웨어 재공학의 주요 활동
활동
|
설명
|
분석(Analysis)
|
기존 소프트웨어 명세서를 확인하여 소프트웨어 동작을 이해하고, 재공학 대상을 선정하는 작업
|
재구조(Restructing)
|
상대적으로 같은 추상적 수준에서 하나의 표현을 다른 형태로 바꾸는 작업
|
역공학(Reverse Engineering)
|
기존 소프트웨어를 분석하여 설계도를 추출하거나 다시 만들어내는 작업
|
이식(Migration)
|
소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
|
9. 컴포넌트(Component)
명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분으로 넓은 의미에서 재사용되는 모든 단위 및 인터페이스를 통해서만 접근할 수 있음
10. 형상 통제 과정
형상 식별 : 형상관리 계획을 근거로 형상 관리의 대상이 무엇인지 식별하는 활동
형상 통제 : 형상 항목의 변경사항에 대하여 형상통제위원회가 승인/기각/보류를 결정하고, 승인된 변경 사항의 이행을 체계적으로 통제하는 활동
형상 감사 : 형상 관리 계획대로 형상 관리가 진행되고 있는지, 형상 항목의 변경이 요구사항에 맞도록 제대로 이뤄졌는지 등을 살펴보는 활동
형상 기록:소프트웨어 형상 및 변경 관리에 대한 각종 수행결과를 기록하는 활동
11. 형상 관리 도구의 주요 기능
체크인 : 개발자가 수정한 소스를 형상 관리 저장소로 업로드 하는 기능
체크아웃 : 형상 관리 저장소로부터 최신 버전을 개발자 pc 로 다운로드 받는 기능
커밋 : 개발자가 소스를 형상관리 저장소에 업로드
12. 소스코드 품질 분석 도구 중 정적 분석 도구
PMD, Cppcheck, CheckStyle
13. 저작권 관리 구성 요소
보기
|
설명
|
컨텐츠 제공자
|
콘텐츠를 제공하는 저작권자
|
패키저
|
콘텐츠를 메타 데이터와 함께 배포 가능한 단위를 묶는 도구
|
클리어링 하우스
|
저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 관리등을 수행하는 곳, 콘텐츠 권한 정책, 라이선스 관리를 수행
|
DRM 컨트롤러
|
배포된 디지털 콘텐츠의 이용권한 통제
|
14. 소프트웨어 품질 목표
보기
|
설명
|
이식성(Portability)
|
하나 이상의 하드웨어 환경에서 운용되기 쉽게 수정될 수 있는 시스템 능력
|
효율성(Efficiency)
|
명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력
|
사용성(Usability)
|
명시된 조건에서 사용될 경우, 사용자에 의해 이해되고, 학습되고, 사용되고, 선호될 수 있는 소프트웨어 제품의 능력
|
신뢰성(Reliability)
|
옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도
|
15. Brooks 의 법칙
S/W Project 일정이 지연된다고 해서 Project 말기에 새로운 인원을 추가 투입하면 Project 는 더욱 지연되게 된다는 내용관 관련되는 법칙
16. Pareto 의 법칙
소프트웨어 테스트에서 오류의 80% 는 전체 모듈의 20% 내에서 발견된다는 법칙
17. 소프트웨어 버전 관리 도구 유형
유형
|
설명
|
도구
|
공유 폴더 방식
|
매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사하는 방식
|
RCS
|
클라이언트/서버 방식
|
버전 관리 자료가 중앙시스템(서버)에 저장되어 관리되는 방식
|
CVS SVN
|
분산 저장소 방식
|
로컬 저장소와 원격 저장소로 분리되어 관리 하는 방식
|
GIT
|
18. 테스트의 종류
종류
|
설명
|
단위 테스트
|
사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트 하는 단계
|
통합 테스트
|
단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트 하는 단계
|
시스템 테스트
|
개발 프로젝트 차원에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트 하는 단계
|
인수 테스트
|
계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
|
19. 블랙박스 테스트 유형
동등분할, 경곗값 분석, 결정 테이블, 상태전이, 유스케이스, 분류 트리, 페어와이즈, 원인-결과 그래프, 비교 테스트, 오류 추정
20. 화이트박스 테스트 유형
구문 커버리지, 결정 커버리지, 조건 커버리지, 조건-결정 커버리지, 변경조건-결정 커버리지, 다중조건 커버리지, 기본 경로 커버리지, 제어 프름 테스트, 데이터 흐름 테스트,. 루프 테스트
21. 테스트 장치 구성 요소
구성 요소
|
설명
|
테스트 스텁
|
하향식 통합시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈
|
테스트 드라이버
|
상향식 통합시험을 위해 모듈 테스트 수행 후의 결과를 도출하는 시험용 모듈
|
프로시저
|
특정한 로직을 처리하기만 하고 결괏값을 반환하지 않는 서브 프로그램
|
함수
|
하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합
|
22. 시간복잡도에 따른 알고리즘 분류
O(nlog2n) : 퀵 정렬, 병합 정렬(합병 정렬), 힙 정렬
O(n2) : 버블 정렬, 삽입 정렬, 선택 정렬
23. 해싱함수
함수
|
설명
|
제산법(division)
|
나머지 연산자(%)를 사용하여 테이블 주소를 계산하는 방식
|
제곱법(Mid square)
|
레코드 킷값을 제곱한 후에 결괏값의 중간 부분에 있는 몇 비트를 선택하여 해시 테이블의 홈 주소로 사용하는 방식
|
숫자 분석법
(Digit Analysis)
|
레코드 키를 구성하는 수들이 모든 키들 내에서 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택하여, 레코드의 홈 주소로 사용하는 방법
|
폴딩법
(Folding)
|
레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR 한 값을 홈 주소로 사용하는 방식
|
기수 변환법
(Radix Conversion)
|
어떤 진법으로 표현된 주어진 레코드 키를 다른 진법으로 간주하고 키를 변환하여 홈 주소를 얻는 방식
|
무작위 방법
(Random)
|
난수를 발생시켜 각 레코드 키의 홈 주소를 결정하는 방식
|
24. 알고리즘 설계 기법
분할과 정복(Divide and Conquer), 동적 계획법(Dynamic Programming), 탐욕법(Greedy), 백트래킹(Backtracking)
25. EAI 구축 유형
point-to-point, Hub & Spoke, Message Bus, Hybrid
26. 인터페이스 구현 검증 도구
xUnit, STAF, FitNess, NTAF, Selenium, watir