Post

소프트웨어 개발 - 제품 소프트웨어 버전 관리

#제품 소프트웨어 버전 관리 도구

형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 사항을 관리하는 도구

소프트웨어 개발과 관련하여 코드와 라이브러리, 관련 문서 등 시간 변화에 따른 변경을 관리하는 전체 활동을 의미

제품 소프트웨어 버전 관리 도구 유형

■ 공유 폴더 방식

개발 완료 파일을 약속된 위치의 공유 폴더에 복사하는 방식

◆ 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)

안드로이드 앱을 만드는 데 필요한 안드로이드 스튜디오의 공식 빌드 자동화 시스템

This post is licensed under CC BY 4.0 by the author.