본문 바로가기

IT Programmer/Certification (정보처리기사)

[정보처리기사 필기 대비] 2과목 소프트웨어 개발


자료 구조의 분류

 

[ 선형구조 ]

배열
( array )
- 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고있는 집합
- 정적인 자료구조 ( 반복적인 데이터 처리 작업에 적합 )
선형 리스트
( Linear List )
- 일정한 순서에 의해 나열된 자료 구조
- 연속리스트 : 연속되는 기억장소에 저장되는 자료구조
- 연결리스트 : 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용해 연결.
스택
( Stack )
- 리스트의 한 쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조.
- 후입선출( LIFO )

( Queue )
- 리스트의 한 쪽에서는 삽입이 한 쪽에서는 삭제 작업이 이루어지는 자료 구조.
- 선입선출 ( FIFO )

 

[ 비선형구조 ]

트리
( Tree )
노드*와 브랜치를 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
노드 : 하나의 기억 공간 / 링크 : 노드와 노드를 연결하는 선
차수( degree ) : 각 노드에서 뻗어 나온 가지의 수
단말 노드 ( terminal node ) : 자식이 하나도 없는 노드, 디그리가 0인 노드
트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수

트랜잭션 ( Transaction )

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

또는 한꺼번에 모두 수행되어야 할 일련의 연산.

- COMMIT : 트랜잭션 처리가 정상 종료되어 수행한 변경 내용을 데이터베이스에 반영하는 명령어

- ROLLBACK : 변경 작업을 취소하고 이전 상태로 되돌리는 연산

- SAVEPOINT : ROLLBACK 할 위치인 저장점을 저장하는 명령어로 여러 개 지정 가능.


절자형 SQL

종류)

- 프로시저 (procedure)

: 특정 기능을 수행하는 일종의 트랜잭션 언어. 호출을 통해 실행되어 미리 저장해놓은 SQL 작업을 수행

- 트리거 (Trigger)

: 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행됨.

- 사용자 정의 함수 

: 종료 시 예약어 Return을 사용하여 처리 결과를 단일 값으로 반환.


협업 도구

프로젝트 및 일정 관리 구글캘린더, 분더리스트, 트렐로, 지라, 플로우 등
정보 공유 및 커뮤니케이션 슬랙, 잔디, 태스크월드 등
아이디어 공유 에버노트
기타 Git의 웹호스팅 서비스인 깃허브

릴리즈 노트

: 개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서

- 릴리즈 노트에서는 소프트웨어에 포함된 기능이나 사용 환경에 대한 내용 확인 가능

- 개선된 작업이 있을 때마다 관련 내용을 릴리즈 노트에 담아 제공.


디지털 저작권 관리 (DRM)

클리어링 하우스 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 수행
패키저 콘텐츠를 메타 데이터*와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램
DRM 컨트롤러 컨텐츠의 이용 권한을 통제하는 프로그램
보안 컨테이너 컨텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

 


형상 관리

: 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동

- 소프트웨어 개발의 전 단계에 적용되는 활동 ( 유지보수 단계에서도 수행 )

기능) 형상 식별 / 버전 제어 / 형상 통제(변경관리) / 형상 감사 / 형상기록(상태 보고)


소프트웨어 버전 관리 도구

공유 폴더 방식 클라이언트/서버 방식 Subversion Git
- 약속된 공유 폴더에 매일 복사
- 담당자 : 자기 PC로 복사한 후 컴파일 하여 이상 유무를 확인
- SCCS, RCS, PVCS, QVCS 등
- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
- 모든 버전 관리는 서버에서 수행
- CVS, SVN, CVSNT 등
- CVS를 개선한 것.
- 클라이언트-서버 구조
- 커밋 시, 리비전이 1씩 증가
- 서버는 유닉스 사용
- 지역(로컬) 저장소와 원격 저장소가 존재.
- 파일의 변화를 스냅샷으로 저장.

애플리케이션 테스트

파레토 법칙 애플리케이션의 20%에 해당하는 코드에서 전체 80%의 결함이 발견된다.
살충제 패러독스 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는다.
오류-부재의 궤변 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 할 수 없다.
화이트박스 테스트 모듈의 원시코드 오픈 - 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스 설계
모듈 안의 작동을 직접 관찰
문장을 한 번 이상 실행함으로써 수행.
조건 검사 / 루프 검사 / 데이터 흐름 검사
블랙박스 테스트 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트
인터페이스에서 실시되는 테스트
동치분할 검사 / 경계값 분석 / 원인-효과 그래프 검사 / 오류 예측 검사 / 비교 검사
단위 테스트
( unit Test )
- 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
- 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행
- 주로 구조 기반 테스트를 시행
통합 테스트
( Integration Test )
단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트
- 비점진적 통합 방식 : 빅뱅 통합 테스트
- 점진적 통합 방식 : stub(하향식) / cluster(상향식)
시스템 테스트
( system Test )
해당 컴퓨터 시스템에서 완벽하게 수행되는가 점검하는 테스트
기능적 요구사항 : 블랙박스 테스트 / 비기능적 요구사항 : 화이트 박스 테스트
인수 테스트 개발한 소프트웨어를 사용자가 직접 테스트
- 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
- 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법

테스트 케이스 ( Test Case )

: 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된

입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

테스트 시나리오 ( Test Scenario )

: 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합

- 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서.

- 여러 개의 시나리오로 분리하여 작성해야 함.

- 사용자의 요구사항과 설계 문서 등을 토대로 작성해야 함.


결함 추적 순서

  1. 결함 등록 : 발견돼 결함이 등록된 상태
  2. 결함 검토 : 담당자 / 개발자에 의해 검토된 상태
  3. 결함 할당 : 문제 해결 담당자에게 결함이 할당된 상태
  4. 결함 수정 : 결함 수정을 완료한 상태
  5. 결함 조치 보류 : 수정이 불가능해 연기된 상태, 재오픈을 준비 중인 상태
  6. 결함 종료 : 담당자가 종료를 승인한 상태
  7. 결함 해제 : 종료 승인한 결함을 검토하여 결함이 아니라고 판명한 상태

모듈 연계 - EAI

- 애플리케이션 및 플랫폼 간의 정보 전달 / 연계 / 통합 등 상호연동이 가능하게 해주는 솔루션

1) Point-to-Point : 애플리케이션을 1:1로 연결, 변경 및 재사용이 어렵다

2) Hub&Spoke : 확장 및 유지보수가 용이 / 허브 장애 발생 시 시스템 전체에 영향을 미침.

3) Message Bus : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식 / 확장성이 좋아 대용량 처리 가능