정보처리기사 (필기)/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 사용, 빌드속도 빠름