티스토리 뷰
2022년 정보처리기사 필기
(수제비 2021년 필기책 보고 공부하며 요약한 내용입니다.)
http://www.yes24.com/Product/Goods/96051171
2. 소프트웨어 개발
Cp2. 통합 구현
1. 단위 모듈 구현
: 기능을 단위 모듈별로 분할, 추상화하여 성능향상, 유지보수를 효과적으로 하기 위함
: 인터페이스 모듈, DB접근모듈 등 통합구현에 필요한 단위 컴포넌트를 구현
단위 모듈 구현의 원리 | 설명 |
정보 은닉 | 변경가능성 있는 모듈을 타 모듈로부터 은폐 |
분할과 정복 | 복잡문제 분해, 모듈단위로 문제 해결 |
데이터 추상화 | 각 모듈 자료구조를 액세스하고, 수정하는 함수내에 자료구조 표현내역을 은폐 |
모듈 독립성 | 낮은 결합도와 높은 응집도를 가짐 |
1-1. 단위모듈 구현 대상
: 화면모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트 등이 있음
1-2. 재사용 종류
: 단위 모듈의 재사용성의 개념이 확장된 재공학, 역공학, 재개발 기법이 존재함
1) 재공학: 기존sw를 버리지 않고 기능 개선, 새 sw로 재활용
2) 역공학: sw 디버깅, 디컴파일 등 분석 통해 기존 제품에 구현된 것들을 역으로 분석하여 재구성
3) 재개발: 기존 것을 참조해 완전히 새로운 시스템 개발. 기능 추가, 기능 변경 등
2. 단위모듈 테스트
: 모듈 단위가 예상대로 작동하는지 확인
: IDE 도구를 활용해 개별 단위 모듈에 대한 디버깅을 수행
단위모듈 테스트 종류 | 설명 |
블랙박스 테스트 (= 명세 기반 테스트) |
요구사항 명세를 보며 테스트 수행 sw 특징, 요구사항, 설계 명세서 등에 초점을 맞춰 테스트 수행 |
화이트박스 테스트 ( = 구조 기반 테스트) |
단위 모듈 테스트의 가장 기본적 방법. 모듈 내부의 소스를 보면서 수행하는 테스트 |
메서드 기반 테스트 | 외부 공개된 메서드 기반 테스트 메서드에 서로다른 파라미터값 호출하며 테스트 |
화면 기반 테스트 | 화면단위로 데이터 입력하며 테스트 수행 |
3. IDE 도구
: 코딩, 디버그, 컴파일, 배포 등 개발 관련 모든 작업을 한 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
IDE 도구 기능 | 설명 |
개발환경 지원 | 개발언어 통해 어플리케이션 개발환경 제공 |
컴파일 | 문법에 어긋나는지 확인하고 기계어로 변환하는 기능 제공 |
디버깅 | 오류 및 비정상적인 연산 제거 |
외부 연계 | 외부형상, 배포관리 기능과 연계되어 자동 배포등이 가능 |
DB 연동 | JDBC, ODBC 등을 통한 DB 연동 |
- 대표적인 개발도구로 이클립스, 비주얼 스튜디오, 엑스코드가 있음
비교 | 이클립스 | 비주얼스튜디오 | 엑스코드 |
개발사 | IBM, 이클립스 재단 | 마이크로소프트 | 애플 |
플랫폼 | 크로스 플랫폼 | 크로스 플랫폼 | 애플 플랫폼 |
OS | 대부분의 OS | 윈도즈 | 맥 OS |
언어 | 자바, PHP, JSP | visual basic, C++ | object C, Swift |
라이센스 | 이클립스 | 상용 | GCC |
특징 | 자바 개발 최적화 | C 계열 언어 중심 | iOS 기반 앱 개발 |
4. 협업도구
: 다른 개발자와 개발관련 소통(커뮤니케이션), 일정 및 이슈 공유, 집단지성 활용 등 수행하기 위한 도구
ex) 구글드라이브, 깃헙, 에버노트, 구글캘린더 등
5. 형상관리 도구
: 소프트웨어 생명주기 동안 변경사항을 체계적으로 관리하여 품질보증을 향상시키는 관리적 활동
: 관리항목으로는 요구분석서, 소스코드, 운영 및 설치 지침서가 있음.
ex) CVS, SVN, Git
기능1) 체크인: 수정사항을 형상관리 저장소로 업로드
기능2) 체크아웃: 형상관리 저장소로부터 최선버전을 다운로드 받음
기능3) 커밋: 형상관리저장소에 업로드 후 최종업데이트가 되었을 때 형상관리 서버에서 반영하도록 하는 기능
1) CVS
: 가장 오래된 형상관리 도구중 하나로, 중앙집중형 서버저장소를 두고 클라이언트가 접속해서 버전관리를 함
: 파일 단위 기반의 변경사항 관리 기능
: Diff를 통한 파일 내용의 비교
: 직관적이고 비교적 단순한 명령세트
: 텍스트 기반 소스코드 위주 지원(단점)
: 등록된 파일 및 디레곹리의 변동이 불편(단점)
: 커밋 실패 등에 대한 롤백 기능 미지원(단점)
2) SVN
: 중앙 집중형 클라이언트-서버 방식으로 CVS 단점 보완해 가장 널리 사용되는 형상 관리 도구
: CVS 대체하기 위하여 만든 도구로, 사용법이 유사하여 CVS 사용자가 어렵지않게 도입하여 사용 가능
: CVS에 비해 빠른 속도, Gzip으로 압축하여 저장공간 절약, 작업 모음 단위 기반으로 동작 개선됨
: 바이너리 문서 형상 관리 가능
: 커밋 실패 시 롤백 지원 가능
: 디렉토리 파일을 자유롭게 이동 가능
: 다양한 플러그인 API 제공
: Trunk, Branch, Tag가 모두 물리적 저장 위치 점유(단점)
: 잦은 커밋으로 인해 리비전 번호가 크게 증가(단점)
: 개별 개발자만의 개발 이력을 가질 수 없음(단점)
3) Git
: 리누스 토발즈가 리눅스커널의 개발을 위해 만든 형상관리 시스템
: 중앙집중형이 아닌 분산형 방식으로 각 PC 스스로 완전한 저장소가 구성되며, 필요에 따라 중앙 집중형 방식으로도 운영할 수 있음.
: SVN 저장소에 대한 이관(migration) 가능
: 저장소의 완전한 복사본을 로컬 저장, 로컬저장을 통해 오프라인 작업 가능
: 일시적인 작업에 대한 이력 관리가 쉬움
: 대용량 코드 관리에 부적절(단점)
: 한번에 diff 명령어를 통한 변경사항을 보기 어려움(단점)
: CVS, SVN과 개념이 상이하여 학습시간 요구(단점)