정보처리기사

11. 개발 환경 구축(2)

nayeonee__ 2023. 3. 31. 09:09

https://www.njobler.net/product/lecture/show/prod/10810

 

1억뷰 N잡

[연장 미포함] 흥나게 합격달성! 정보처리기사 실기

www.njobler.net

본 강의를 듣고 내용을 정리하며 적은 게시글 입니다. 

 

 

 

 

  • 형상 관리 도구
    • 형상관리 도구 개념
      • 소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리방법
      • 소프트웨어 변경사항을 체계적으로 관리하는 것
    • 필요성
      • 개발 도중 소스코드를 이전 상태로 되돌릴 필요가 있을 경우
      • 각 변경점에 대한 이력확인
      • 등등
    • 변경관리, 버전관리, 형상 관리
      • 변경 관리
        • 소스의 변경 상황을 관리
        • 문서의 변경이력과 복원 등의 기능이 제공
      • 버전 관리
        • 변경을 관리하기 위한 효과적인 방법
        • 체크인, 체크아웃, 릴리즈, 퍼블리싱의 과정을 버전으로 관리 할 수 있다.
      • 형상 관리
        • 변경 관리와 버전관리가 포함되고, 프로젝트 진행 상황, 빌드와 릴리즈까지 모두 관리할 수 있는 통합 시스템
    • 형상 관리 대상
      • 프로젝트 수행계획서, 요구사항 관리대장, 소프트웨어 기능 구조도
      • 비용은 포함되지 않는다.
    • 형상 관리 절차
      • 형상 식별
        • 형상 관리의 시작으로 시스템을 구성하는 요소들 중 형상 관리의 대상들을 구분하고 관리 목록의 번호를 정의하여 부여한다.
        • 형상 항목은 단순히 소스파일 뿐만 아니라 산출물, 개발 이력, 개발 과정에서 작성되는 문서까지 포함
      • 형상 통제
        • 소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스 라인에 반영될 수 있도록 통제
        • 형상 통제가 이루어지기 위해서는 형상 통제 위원회(CCB)의 승인을 통한 변경 통제가 이루어져야 한다.
      • 형상 감사
        • 형상 항목의 변경이 계획에 따라 제대로 이루어 졌는지 검토하고 승인
      • 형상 기록
  • 버전 관리 도구
    • 소프트웨어 버전관리 도구 개념
      • 동일한 소스코드에 대한 여러 버전을 관리하는 것
    • 버전관리 도구 유형
      • 공유 폴더 방식
        • 매일 개발 완료 파일은 약속된 위치에 공유 폴더에 복사
      • 클라이언트/서버 방식
        • 중앙에 버전 관리 시스템이 항시 동작
      • 분산 저장소 방식
        • 로컬 저장소와 원격 저장소 구조
    • 버전 관리 도구별 특징
      • CVS
        • 오랜 기간 사용된 형상 관리도구로, 다양한 운영체제를 지원
        • 중앙에 위치한 레포지토리에 파일을 저장하고, 인가된 모든 사용자가 파일에 접근할 수 있다.
        • 커밋중 오류가 발생하면 롤백되지 않는다
        • 상대적으로 속도가 느리다
        • 다른 개발자가 작업 중인 파일에 덮어쓰기가 방지된다.
      • SVN
        • CVS 의 단점을 보완하기 위해 만들어졌다.
        • 최초 1회 한해 파일 원본을 저장하고, 그 이후에는 실제 파일이 아닌 원본과 차이점을 저장하는 방식
        • 커밋 실패시 롤백 가능
      • GIT
        • 리누스 토발즈가 리눅스 커널의 개발을 위해 만들었다.
        • 로컬 우선 작업을 통해 성능이 위에 도구들보다 우수하다.
        • 원격 레포지토리에 장애가 있어도 버전관리가 가능하다.
      • Clear Case
        • IBM 에서 개발된 유료버전의 형상 관리 툴
        • 서버가 부족할 때 서버를 하나씩 늘려 확장할 수 있다.
      • BitKeeper
        • SVN 과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전관리 도구
      • RCS
        • 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠금 처리하는 방식으로 버전 컨트롤을 수행
    • 주요 용어들
      • Repository
      • Checkout
      • Commit
      • Update
      • Add
      • Trunk - Root 프로젝트
      • Branch - Root 프로젝트에서 파생된 프로젝트
      • Merge
      • Diff - 파일의 비교
    • 버전관리 소프트웨어 사용방식 - 책 참고
    • 유의점
      • 불필요한 사용자가 소스를 수정할 수 없도록 해야한다.
      • 등등
  • 빌드 도구
    • 빌드의 개념
      • 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정
      • 빌드의 단계 중 컴파일이 포함이 되어 있는데 컴파일은 빌드의 부분집합
      • 빌드과정을 도와주는 도구를 빌트 툴이라고 한다.
      • 빌드 자동화 도구는 지속적인 통합(Continuous Integration)을 수행할 수 있도록 도와준다.
    • 빌드 자동화 도구 특징
      • 빌드, 테스트, 배포를 자동으로 수행하는 도구
      • 계속해서 늘어나는 라이브러리 자동 추가 및 관ㄹ리
      • 소스코드를 컴파일, 테스트, 정적 분석 등을 실시하여 실행 가능한 애플리케이션으로 자동으로 생성
    • 빌드 자동화 프로세스 - 책 참고
      • 빌드
      • 테스트
      • 배포
    • 빌드 자동화 도구 종류
      • Make
        • 유닉스 계열 운영체제에서 주로 사용되는 프로그램 빌드 도구
      • Ant
        • 자바 기반의 빌드 도구로 다른 빌드 도구보다 역사가 오래되었다.
        • 개발자가 원하는 형태로 개발할 수 있다는 유연성에 장점이있다.
        • XML 기반의 빌드 스크립트로 개발한다.
        • 등등
      • Maven
        • 프로젝트에 필요한 모든 의존성을 리스트 형태로 Maven 에게 알려 관리할 수 있도록 돕는 방식
      • Jenkins
        • 자바 기반의 오픈소스로, 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴
        • 서블릿 컨테이너에서 실행되는 서버 기반 도구
      • Gradle
        • Groovy를 기반으로 한 오픈소스 형태의 자동화 도구로 안드로이드 앱 개발 환경에서 사용