정보처리기사 (필기)/2. 소프트웨어 개발
[정보처리기사] 2-4. 형상관리 / 버전 관리 도구 / 빌드 자동화 도구
원혜강
2022. 4. 21. 22:39
1. 소프트웨어 패키징의 형상관리 (SCM : Software Configuration Management)
- 형상관리는 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위함
- 소프트웨어 개발의 전 단계에 적용되는 활동임
2. 형상관리의 중요성
- 소프트웨어의 변경 사항을 체계적으로 추적하고 통제 가능
- 제품 소프트웨어에 대한 무절제한 변경 방지
- 진행정도 확인하기 위한 기준으로 사용 가능
3. 형상관리 기능
- 형상 식별 : 관리 대상에 이름, 관리번호를 부여하고 계층구조로 구분하여 수정 및 추적 용이하도록 하게하는 작업
- 형상 통제 (변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재 기준선이 잘 반영될 수 있도록 조정하는 작업
- 형상 감사 : 기준선의 무결성 평가
- 형상 기록 : 작업의 결과를 기록, 관리하고 보고서 작성
- 식통감기
- 버전제어 : 소프트웨어 업그레이드나 유지보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고 이를 위해 특정 절차와 도구를 결합시키는 작업
4. 소프트웨어 버전 관리 도구
4-1) 공유 폴더 방식
- 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
- 약속된 공유 폴더에 매일 복사함
- SCCS, RCS, PVCS, QVCS
4-2) 클라이언트/서버 방식
- 중앙 시스템에 저장되어 관리되는 방식
- 모든 버전 관리는 서버에서 수행되고 서버에 문제생기면 작업 중단됨
- CVS, SVN (Sebversion)
4-3) 분산 저장소 방식
- 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식
- 로컬 저장소에 commit, push
- 처리속도 빠름
- Git, Bitkeeper
4-4) Subversion (서브버전, SVN)
- CVS를 개선한 것 (클라이언트/서버 방식) / 아파치에서 발표함
- 서버는 주로 UNIX 사용
- 파일이나 디렉터리 이름 변경, 이동 가능
4-5) Git (깃)
- 여러 사람들이 협업을 위해 버전을 공동관리하는 곳
- 분산 저장소 방식
- 브랜치를 이용하면 다양한 형태의 테스팅 가능
- 버전의 흐름 파악 가능
5. 빌드 자동화 도구
- 지속적인 통합 개발환경에 유용
- Jenkins : 자바 기반의 오픈소스 형탸, 가장 많이 사용, SVN, Git과 연동 가능, Web GUI 제공, 분산 가능
- Gradle : Groovy를 기반으로 오픈소스 형태 자동화, 안드로이드 앱 개발환경, JAVA, C/C++, Python, DSL 사용, 빌드속도 빠름