2. 소프트웨어 개발

 2.3 제품소프트웨어 패키징

 2.3.4 제품소프트웨어 버전관리


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

 

1. 소프트웨어 버전관리 도구 개요

 

1. 소프트웨어 버전관리 도구란?

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

버전관리 도구를 활용하여 시장에 출시되는 제품 소프트웨어의 버전과 변경, 개선 내역을 히스토리로 관리한다.

 

2. 소프트웨어 버전관리 도구 유형

초기의 소프트웨어 버전관리 도구는 공유 폴더 방식이었다.

최근에는 클라이언트/서버 방식과 분산 저장소 방식이 많이 사용된다.

 

공유 폴더 방식 (RCS, SCCS)

매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사

담당자 한명이 ㅐ일  공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상동작여부 확인

 

클라이언트/서버 방식 (CVS, SVN)

중앙에 버전 관리 시스템이 항시 동작

개발자들의 현재 작업 내용과 이전 작업내용 축적이 용이

서로 다른 개발자가 같은 파일을 작업했을 때 경고출력

 

분산 저장소 방식(Git, Bitkeeper)

로컬 저장소와 원격저장소 구성됨

중앙의 저장소에 로컬에 복사한 순간 개발자 자신만의 로컬저장소에 생성

개발 완료한 파일 수정 이후 로컬 저장소에 커밋한 이후 다시 원격저장소에 반영하는 방식

 

3. 소프트웨어 버전관리 도구별 특징

현재 개별 프로젝트에서 가장 많이 사용하는 소프트웨어 버전관리 도구는  SVN이다.

세계적으로 오픈 소스 기반의 소프트웨어 버전 관리도구는 Git이 가장 많이 사용된다.

 

1.2 소프트웨어 버전관리 도구 사용시 유의점

 

1. 형상관리 지침에 의거 버전에 대한 정보를 언제든지 접근할 수 있어야 함

프로젝트 단위 접근 혹인 파일 단위 접근이던 간에 개발자가 원하는 때에 언제든 소프트웨어 소스에 접근이 가능해야 한다.

 

2. 개발자 배포자 이외에 불필요한 사용자가 소스 접근할 수 없도록 해야함

중요한 파일 혹은 폴더에 대한 접근은 개발자, 배포자만 접근해야 한다.

만일 신입 사원이 접근하여 허가 없이 수정한다면 그 동안 개발된 소스 버전이 수정될 위험이 존재한다.

 

3. 동일한 프로젝트 파일에 대해서 여러 개발자가 동시 개발 할 수 있어야함

여러 개발자가 동일한 파일, 폴더에 접근 시 동시에 파일 수정이 일어나더라도 개발자의 수정 내역이 통합 될 수 있어야 한다.

 

4. 에러 발생 시 최대한 빠른 시간 내에 복구 필요

소프트웨어 버전에 오류 발생 시 개발자가 신속하게 알고 최대한 빠르게 복구할 수 있어야한다.

과거 버전의 소스를 가지고 신속하게 원복 할 수 있어야한다.

 

1.3 제품소프트웨어에 소프트웨어 버전관리 도구 활용방안

 

1. 공동 개발 및 작업 관리

동일 버전의 소스 코드를 두 명 이상의 개발자가 수정할 수 있도록 한다.

분산환경에서 두명 이상의 개발자가 동일한 버전의 소스를 수정할 경우 향후 소스 누락없이 통합을 할 수 있어야 한다.

 

2. 버전 백업 및 복구

이전 버전으로의 복구 필요 시 혹인 이전 버전의 기능을 재활용 시 버전 관리 도구를 활용한다.

 

3, 여러 버전 솔루션 작업

하나의 솔루션을 기반으로 여러 버전의 제품을 동시 개발할 경우 활용

 

2. 빌드 자동화 도구

 

2.1 소프트웨어 빌드 자동화 도구 개요

 

1. 소프트웨어 빌드 자동화 도구란?

제품 소프트웨어 실행파일 생성을 자동화하기 위해서 저장소에 있는 소스를 자동으로 읽어서 빌드를 하여 실행 파일을 만드는 도구이다.

빌드 자동화 도구는 지속적인 통합과도 일맥상통한다.

수없이 반복해서 최종 결과물을 만들어내야 하는 소프트웨어 개발업무에서 빌드자동화 도구는 반드시 갖추어야 한다.

 

2. 온란인 빌드 자동화 도구, 젠킨스

젠킨스는 빌드 자동화 도구로서 가장 많이 활용되는 도구이다.

Java 기반의 오픈소스로 지속적 통합관리를 가능하게 한다.

Apache-tomcat과 같은 서블릿 컨테이너 서버 기반으로 구동되는 시스템이며, CVS, SVN,Git 등 다양한 버전관리 도구를 지원한다.

Ant, Maven 기반의 프로젝트 뿐 아니라 임의의 쉘 스크립트와 윈도우 배치 명령까지 실행시킬 수 있다.

 

3. 안드로이드 환경에 적합한 도구 그래들

C나 C++언어는 보통 Makefile, Java는 Ant,Maven, Scala는 sbt를 빌드 자동화 도구를 주로 사용하는데 오픈소스인 그래들은 여러가지 언어의 빌드 환경을 구성할 수 있다.

그래들은 주로 안드로이드 개발환경에서 빌드 자동화 도구로 사용되고, C++,Swift,Object C, Haskell, Scala 등의 언어도 플러그인 설정하면 빌드가 가능하다.

그래들 스크립트는 groovy를 사용해서 만든 DSL이다. 모든 그래들 스크립트는 두가지 개념을 구성되어 있는데 Project와 tasks 이다.

모든 그래들 빌드는 하나 이상의 project로 구성된다. 각 project는 하나 이상의 task들로 구성되어 있다. 이 task는 어떤 클래스를 컴파일하거나 JAR을 생성하거나 javadoc을 만드는 작업을 의미한다.

 

'자격증 > 정보처리기사' 카테고리의 다른 글

정보처리기사 21일차  (0) 2021.02.02
정보처리기사 20일차  (0) 2021.01.30
정보처리기사 18일차  (0) 2021.01.28
정보처리기사 17일차  (0) 2021.01.28
정보처리기사 16일차  (0) 2021.01.27

+ Recent posts