소프트웨어 개발 - 제품 소프트웨어 버전 관리
#제품 소프트웨어 버전 관리 도구
형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 사항을 관리하는 도구
소프트웨어 개발과 관련하여 코드와 라이브러리, 관련 문서 등 시간 변화에 따른 변경을 관리하는 전체 활동을 의미
제품 소프트웨어 버전 관리 도구 유형
■ 공유 폴더 방식
개발 완료 파일을 약속된 위치의 공유 폴더에 복사하는 방식
◆ RCS (Revision Control System)
- 파일의 수정을 한 사람만 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구
■ 클라이언트 서버 방식
버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리하는 방식
◆ CVS (Concurrent Versions System)
- 가장 오래된 형상 관리 도구 중 하나
◆ SVN (Subversion)
- CVS 단점을 보완한 도구
■ 분산 저장소 방식
로컬 저장소와 원격 저장소로 분리되어 관리하는 방식
◆ Git
- PC 스스로 완전한 저장소가 구성되며 필요에 따라 중앙 집중형 방식으로도 운영
제품 소프트웨어 버전 관리 사용시 유의사항
- 버전에 대한 쉬운 정보 접근성
- 불필요한 사용자에 대한 접근 제어
- 동일 프로젝트에 대한 동시 사용성
- 빠른 오류 복구
※ 형상/버전 관리를 통해서 프로젝트 비용을 관리하지는 않음
빌드 자동화 도구
제품 소프트웨어 실행 파일 생성을 자동화하기 위해서 저장소에 있는 소스를 자동으로 읽어서 빌드한 후 테스트/검사하여 실행파일을 만드는 도구
※ 빌드: 소프트웨어를 생성/ 테스트/ 검사하여 배포하기 위해 수행하는 행위의 집합
빌드 자동화 프로세스
컴파일 → 패키징 → 단위테스트 → 정적분석 → 리포팅 → 배포 → 최종 빌드
빌드 자동화 구성요소
■ CI (Continuos Integration)
빌드 프로세스 관리하는 서버
■ SCM (Source Code Management)
소스 코드 형상 관리 시스템
■ 빌드 도구 (Build Tool)
컴파일, 테스트, 정적 분석 등을 동작 가능한 소프트웨어 생성
■ 테스트 도구 (Test Tool)
작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구
■ 테스트 커버리지 도구 (Test Coverage Tool)
테스트 코드가 대상 소스 코드에 대해 어느 정도 커버하는지 분석하는 도구
■ 인스펙션 도구 (Inspection Tool)
프로그램을 실행하지 않고, 소스 코드 자체로 품질을 판단할 수 있는 정적 분석 도구
빌드 자동화 도구 - 젠킨스 (Jenkins)
자바 기반의 오픈소스로 가장 많이 활용되는 빌드 자동화 도구
지속적 통합관리를 가능하게 함
빌드 자동화 도구 - 그래들 (Gradle)
안드로이드 앱을 만드는 데 필요한 안드로이드 스튜디오의 공식 빌드 자동화 시스템