본문 바로가기

정보처리기사/II. 소프트웨어 개발

II. 소프트웨어 개발 - 통합 구현 (1)

(1) 단위 모듈 구현

 1. 단위 모듈 구현의 개념

  - 기능을 분할하고 추상화하여 성능을 향상시키는 구현 기법

 

 2. 단위 모듈 구현의 원리

  -  정보 은닉, 분할과 정복, 데이터 추상화, 모듈 독립성

 

(2) 단위 모듈 테스트

 1. 단위 모듈 테스트 개념

  - IDE도구를 사용하여 디버깅을 수행하며 *화이트박스 기법을 사용한다

  * 화이트박스 기법 : 프로그램의 로직을 이해하고 내부 구조화 동작을 검사하는 테스트 방식

 

 2. 단위 모듈 테스트 종류

  - 화이트박스 테스트, 메소드 기반 테스트, 화면 기반 테스트, 테스트 드라이버, 테스트 스텁

 

  - 메소드 기반 테스트 : 메소드에 서로 다른 파라미터 값을 호출하면서 테스트

  - 화변 기반 테스트 : 화면 단위로 단위 모듈을 개발 후에 직접 데이터 입력하여 테스트

  - 테스트 드라이버 : 하위 모듈은 있지만 상위 모듈은 없는 경우 사용 (상향식)

  - 테스트 스텁 : 상위 모듈은 있지만 하위 모듈은 없는 경우 (하향식)

 

  3. 단위 모듈 테스트 커버리지

   1) 테스트 커버리지 개념

    수행 정도를 나타내는 값, 완벽성을 측정하는 도구

 

  2) 테스트 커버리지 유형

   구문 커버리지, 결정 커버리지, 조건 커버리지로 구분

   

  - 구문, 결정, 조건, 조건/결정, 변경 조건/ 결정, 다중 조건

 

(1) IDE 도구

 1. IDE (Integrated Development Environment) 개념

  - 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램안에서 처리하는 환경

 

 2. IDE 도구의 기능

  JDBC (Java Database Connectivity) : Java에서 데이터베이스에 접속할 수 있도록 하는 API

  ODBC (Open Database Connectivity) : 마이크로소프트가 만든 데이터베이스에 접속하기 위한 소프트웨어 표준 규격

 

3. IDE도구간 비교

  - 이클립스, 비쥬얼스튜디오, 엑스 코드

 

(2) 형상 관리 도구

 1. 형상 관리 도구의 개념

  - 소프트웨어 변경 사항을 기록하기위해 식별, 통제, 감사, 기록을 하는 도구

  - 대표 제품으로 CVS, SVN, Git이 있다

 

 2. 형상 관리 도구의 기능

 - 체크인, 체크아웃, 커밋

 - 체크인 : 개발자가 수정한 소스를 저장소로 업로드

 - 체크 아웃 : 저장소로부터 최신 버전을 다운받는 기능

 - 커밋 : 소스를 형상 관리 저장소에 업로드 후 최종적으로 업데이트가 되었을 대 서버에 반영하도록 하는 기능

 

 3. 형상 관리 도구 사례

  - CVS (Concurrent Versions Systems)

  - 주요기능 : 체크아웃/ 체크인 등 클라이언트-서버 변경사항 동기화, Diff를 통한 파일 내용의 비교

  - 장점 : 직관적이고 비교적 단순한 명령 세트

  - 단점 : 텍스트기반 소스코드 지원, 등록된 파일 및 디렉토리 변동 불편, 커밋 실패 등에 대한 롤백 기능 미지원

 

 - SVN (Subversion)

 - CVS처럼 클라이언트-서버 방식이나, CVS의 단점을 보완해 가장 널리 사용되고 있는 형상 관리 도구

 - 주요 기능 : 커밋 실패시 롤백 기능 지원

 - 장점 : 파일 이동 가능, CVS에 비해 빨라진 속도, Gzip으로 압축하여 공간 절약

 - 단점 : 잦은 커밋으로 리비전 번호가 크게 증가, 개별 개발자만의 이력을 가질 수 없음

 

 - Git

 - 리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템

 - Git은 분산형 방식으로 각 PC스스로 완전한 저장소가 구성되며 필요에 따라 중앙 집중형 방식으로 운영할 수 있다

 - 주요기능 : 로컬 환경에서 형상 관리 기능, push,fetch,pull 등 원격 환경에서 변경 전송 가능, SVN저장소에 이관 가능

 - 장점 : 저장소의 완전한 복사본을 로컬 저장가능, 오프라인 작업 가능

 - 단점 : 대용량 코드 관리 부적절, 한번에 diff보기 어려움, CVS,SVN 과 개념이 상이하여 학습 시간이 요구됨