JAVAIARY

12장 제품 소프트웨어 패키징 : 버전 관리, 빌드 자동화 도구 본문

정보처리기사

12장 제품 소프트웨어 패키징 : 버전 관리, 빌드 자동화 도구

shiherlis 2023. 7. 16. 15:39

6. 소프트웨어 버전 등록(형상관리)

1) 소프트웨어 패키징의 형상관리

  • 형상관리(SCM; Software Configuration Management)
    개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
  • 개발의 전 단계(All)에 적용되는 활동이며, 유지보수 단게에서도 수행됨
  • 개발 전체 비요을 줄이고, 개발과정의 여러 방해요인이 최소화 되도록 보증하는 것을 목적으로 함.

2) 형상 관리 기능

  • 형상 식별 : 브랜치의 ID, 이름 등으로 식별
  • 버전 제어
  • 형상 통제
  • 형상 감사 : 정상적으로 변경이 되었는지 확인
  • 형상 기록

3) 소프트웨어 버전 등록 관련 주요 기능

  • 저장소(Repository)
  • 가져오기(Import) : 저장소 기준임
  • 체크아웃(Check-out)
  • 체크인(Check-in)
  • 커밋(Commit)
  • 동기화(Update)

7. 소프트웨어 버전 관리 도구

1) 공유 폴더 방식

  • 버전 관리 자료가 지역 컴퓨터에 공유 폴더에 저장되어 관리되는 방식
  • 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록하여 관리한다.
  • 종류 : SCCS, RCS, PVCS, QVCS 등

2) 클라이언트 / 서버 방식

  • 버전 관리 자료가 서버에 저장되어 관리되는 방식
  • 서버에 문제가 생기면 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업은 중단됨
  • 종류 : CVS, SVN(Subversion), SVSNT, Clear Case, CMVC, Perforce 등

3) 분산 저장소 방식

  • 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식
  • 지역 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 지역 저장소의 잘를 이용하여 작업 가능
  • 종류 : Git, GNU arch, DCVS, Bazaar, Mecurial, TeamWare, Bitkeeper, Plastic SCM 등

4) SubVersion(서브버젼, SVN)

  • CVS를 개선한 것. 아파치 소프트웨어 재단에서 2000년에 발표
  • 클라이언트/서버 구조로 , 서버(저장소)에는 최신 버전의 파일&변경사항이 관리됨
  • 소스가 오픈되어 있어 무료로 사용 가능
  • CVS의 단점이었던 파일,디렉터리의 이름변경, 이동 등이 가능
  • 주요 명령어 : add, commit, update, checkout, lock/unlock, import, export, info, diff, merge

5) Git(깃)

  • 리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리도구로 개발
  • 분산 버전 관리 시스템으로 2개의 저장소(지역 저장소, 원격 저장소)가 존재
  • 버전 관리가 지역 저장소에서 진행되므로 버전 관리가 신속하게 처리되고, 
    원격 저장소나 네트워크에 문제가 있어도 작업이 가능하다.
  • 주요 명령어 : add, commit, branch, checkout, merge, init, remote add, push, fetch, clone, fork

8. 빌드 자동화 도구

 1) 빌드 자동화 도구

  • 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
  • 애자일(Agile)과 같은 지속적인 통합 개발 환경에서 유용하게 활용됨
  • Ant, Make, Maven, Gradle, Jenkins 등이 있음

2) Jenkins

  • JAVA 기반의 오픈소스로 가장 많이 사용됨
  • 서블릿 컨테이너에서 실행되는 서버 기반 도구
  • SVN, Git 등 대부분의 형상 관리 도구와 연동 가능
  • 친숙한 Web GUI 제공으로 사용이 쉽다.

3) Gradle

  • Groovy 기반 오픈소스 자동화도구
  • 안드로이드 앱 개발 환경에 최적화 되어 있음
  • 안드로이드 뿐만 아니라 플러그인 설정을 통해 JAVA, C/C++, Python 등의 언어 빌드 가능
  • Groovy를 사용해 만든 DSL(Domain Specific Language)을 스크립트 언어로 사용

 

'정보처리기사' 카테고리의 다른 글

기억장치  (1) 2023.07.18
운영체제(Operating System)  (0) 2023.07.16
12장 제품 소프트웨어 패키징  (0) 2023.07.15