수달이네 기술 블로그

2. 소프트웨어 개발(제품 소프트웨어 버전관리) 본문

공부/정보처리기사

2. 소프트웨어 개발(제품 소프트웨어 버전관리)

슬픈 수달이 2026. 5. 12. 16:01

제품 소프트웨어 버전 관리

소프트웨어 버전관리 도구

소프트웨어의 신규 개발, 변경, 개선과 관련된 수정사항을 관리하는 도구

  • 코드, 라이브러리, 관련문서
    공유 폴더 방식 개발 완료된 파일을 약속된 위치의 폴더에 복사
    • 담당자가 자기 PC로 복사, 컴파일해 에러 관리, 정상 동작 여부 확인한다.
    • 정상 동작 시 각 개발자들이 다시 확인
    RCS
    • 파일을 한사람만 수정
    클라이언트/서버 방식 버전 관리 자료가 서버에 저장되어 관리
    • 작업 내용 축적에 용이
    • 같은 파일 작업시 경고 메세지 출력
    CVS(중앙서버에서 클라이언트 접속 수정)
    SVN(CVS의 단점을 보완)
    분산 저장소 방식 로컬 저장소와 원격저장소로 분리 됨
    • 중앙 저장소의 파일을 로컬에 복사하여 개발
    • 개발 완료시 커밋하고, 다시 원격저장소에 push
    Git
    • 각 PC에 완전한 저장소
    • 커밋, 푸시 기능

버전 관리 도구의 유의사항

  • 버전에 대한 쉬운 정보 접근성
  • 불필요한 사용자에 대한 접근 제어
  • 동일 프로젝트에 대한 동시 사용성(동시에 개발되도 통합되야함)
  • 빠른 오류 복구 해야함(원복)

빌드 자동화 도구

소프트웨어를 생성, 테스트, 검사해 배포하기 위해 수행하는 행위의 집합

  • 저장소의 소스를 자동으로 읽어 빌드, 테스트, 검사해 실행 파일을 만든다.
  • 지속적 통합: 지속해서 품질 제어를 적용하는 프로세스를 실행하는 기법

빌드 자동화 프로세스

  • 컴파일→패키징→단위테스트→정적 분석→리포팅→배포→최종 빌드

구성요소

  • CI(Continuous Integration)서버: 빌드 프로세스를 관리하는 서버 / Jenkins, Hudson
  • SCN(Source Code Management): 소스코드 형상 관리 시스템 / SVN, Git
  • 빌드 도구: 동작하는 소프트웨어 생성 / Ant, Maven
  • 테스트 도구: 작성된 테스트코드로 자동으로 테스트 수행하게 해주는 도구/JUnit, Selenium
  • 테스트 커버리지 도구: 테스트 코드가 대상 소스코드를 얼마나 커버하는지 확인 / Emma
  • 인스펙션도구: 프로그램 실행 없이 소스코드만으로 품질 확인 / CheckStyle, Cppcheck, PMD

빌드 자동화 도구의 기능

  • 컴파일, 패키징, 파일 조작(디렉토리), 개발 테스트 실행, 버전관리 도구 통합, 문서생성, 배포 기능, 코드 품질 분석

Jenkins

  • CI를 가능하게 하는 도구
  • 서블릿 컨테이너 서버 기반으로 구동되는 시스템 CVS, SVN, Git등 버전관리도구 지원
  • 쉬운설치, 웹기반 GUI, 저장소 부하 감소, 최근 빌드 제공, 실시간 피드백, 서드파티 플로그인 확장

Gradle

  • 안드로이드 앱을 만드는데 필요한 안드로이드 스튜디오 자동화 시스템
  • 명령을 모아 태스크로 만들고 태스크 단위로 실행
  • 자바 C/C++ 파이썬 등 지원