본문 바로가기
정보처리기사

[소프트웨어 개발] 6. SW버전관리

by reve5 2022. 3. 12.

35. 빌드 자동화 도구에 대한 설명으로 틀린 것은?
① Gradle은 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행한다.
② 빌드 자동화 도구는 지속적인 통합개발환경 에 서 유용하게 활용된다.
③ 빌드 자동화 도구에는 A nt, Gradle, Jenkins등이 있다.
④ Jenkins는 Groovy기 반으로 한 오픈소스로 안드로이드 앱 개발 환경에서 사용된다.


>> 정답 4번

4번은 gradle의 설명이다


27. 소프트웨어 형상 관리에 대한 설명으로 거리가 먼 것은?
① 소프트웨어에 가해지는 변경을 제어하고 관리한다.
② 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다.
③ 대표적인 형상관리 도구로 Ant, Maven, Gradle 등이 있다.
④ 유지보수 단계뿐만 아니라 개발 단계에도 적용할 수 있다.


>> 정답 3번

3번의 ant, maven, gradle는 빌드 자동화 도구이다.


29. 다음 설명의 소프트웨어 버전 관리도구 방식은?

- 버전관리 자료가 원격저장소와 로컬 저장소에 함께 저장되어 관리된다.
- 로컬 저장소에서 버전관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있다.
- 대표적인 버전 관리 도구로 Git이 있다.

① 단일 저장소 방식 ② 분산 저장소 방식
③ 공유폴더 방식 ④ 클라이언트·서버 방식


>> 정답 2번

 




24. 버전 관리 항목 중 저장소에 새로운 버전의 파일로 갱신하는 것을 의미하는 용어는?
① 형상 감사(Configuration Audit)
② 롤백(Rollback)
③ 단위 테스트(Unit Test)
④ 체크인(Check-In)


>> 정답 4번


39. 형상 관리의 개념과 절차에 대한 설명으로 틀린 것은?
① 형상 식별은 형상 관리 계획을 근거로 형상관리의 대상이 무엇인지 식별하는 과정이다.
② 형상 관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
③ 형상 통제 과정에서는 형상 목록의 변경 요구를 즉시 수용 및 반영해야 한다.
④ 형상 감사는 형상 관리 계획대로 형상관리가 진행되고 있는지, 형상 항목의 변경이 요구 사항에 맞도록 제대로 이뤄졌는지 등을 살펴보는 활동이다.

>> 정답 3번



28. 형상 관리 도구의 주요 기능으로 거리가 먼 것은?
① 정규화(Normalization)
② 체크인(Check-in)
③ 체크아웃(Check-out)
④ 커밋(commit)


>> 정답 1번
1번은 데이터 베이스와 관련된 설명이다


32. 제품 소프트웨어의 형상 관리 역할로 틀린 것은?
① 형상 관리를 통해 이전 리버전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용
② 불필요한 사용자의 소스 수정 제한
③ 프로젝트 개발비용을 효율적으로 관리
④ 동일한 프로젝트에 대해 여러 개발자 동시 개발 가능


>> 정답 3번


36. 소프트웨어 형상관리(Configyration management)에 관한 설명으로 틀린 것은?
① 소프트웨어에서 일어나는 수정이나 변경을 알아내고 제어하는 것을 의미한다.
② 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
③ 형상관리를 위하여 구성된 팀을 “chief programmer team”이라고 한다.
④ 형상관리의 기능 중 하나는 버전 제어 기술이다.

>> 정답 3번


https://www.youtube.com/watch?v=dWiKgGxkN40&list=PLKpxllD6C8Cli4UZqnDG4_77OU6XeF6e_&index=6 


소프트웨어 버전 관리

성능 개선되고 기능이 추가되면 > 버전이 상승 > 각 버전 별 소프트웨어나 관련 문서들이 형상(내용)이 달라진다.

각 버전마다 달라지는 형상을 정확하게 파악해야 관리가 가능하다.

개발의 모든 단계에서 진행된다.
(유지보수단계에서도 진행됨)

형상관리의 특징
관리 추적 가능
개발의 진행 정도 확인 > 문제해결 
오류 및 변경 방지 > 품질 향상

형상 > 향상

각 형상을 식별하고 버전별로 제어하고 베이스라인이 적용될 수 있게 요구사항을 검토하고 무결성을 테스트하고 결과를 기록한다.
>> 베이스 라인을 훼손시키지 않도록 관리한다.

>> 식별, 버전제어, 관리(통계), 감사, 기록
>>base line 베이스 라인은 미리 설정한 소프트웨어 품질의 기준

버전 관리 방법

1. 공유 폴더 방식
개발자가 공유폴더를 생성하고 개발된 파일을 저장하면 다른 개발자들이 자신의PC로 파일을 복사해서 테스트한다. 
문제가 발생하면 해당 개발자에게 수정을 의뢰하는 형태

한명의 개발자만 버전관리의 책임을 맡는다.

2. 서버 클라이언트 방식(SVN)
공유 폴더 방식에서 더 발전된 형태

* checkout
서버의 파일과 버전 정보를 클라이언트에 가져온다.

* branches(추가적인 작업)
기존의 개발작업 외에 추가적인 작업이 필요한 경우 별도의 디렉토리에서 작업을 진행한다.

* merge(병합)
추가적인 작업(branches)를 주 디렉토리(trunk)와 병합(merge)하는 방식으로 진행한다.

* add(등록) > update(동기화) > commit(반영)
새롭게 생성된 파일들은 별도로 서버에 미리 등록해야 한다. > 그래야 서버에 반영할 수 있다.  / 반영전에는 서버와 데이터를 항상 동기화 진행해야 한다.

공유폴더와 다르게 여러개의 클라이언트에서 개발 및 테스트가 가능하다.

서버가 모든 버전을 관리 담당한다.
서버에 문제가 생기면 더 이상 관리 및 개발이 불가능해진다.

3. 분산저장소방식(git)
클라이언트, 서버 방식의 하나의 서버 문제를 보완한 방식

 버전 관리를 원격 저장소와 로컬 저장소에서 동시에 진행한다.
한쪽에 문제가 생기거나 네트워크문제가 생겨도 작업가능

로컬 : 실제 개발과 버전관리
원격 : 해당 내용 반영함

* 생성 init
로컬에 저장소 생성

* 연결 remote add
서버(원격저장소)와 로컬 저장소를 연결

* clone
첫 연결시 서버에서 전체 내용을 가져온다

* fetch
첫 연결 이후 서버에서 변경된 내용만 가여존다

* fork
필요에 따라 다른 서버의 내용을 가져오는 행위

* branch
개발 시 추가적인 작업이 필요할 경우 별도의 영역을 생성 

* checkout
별도의 영역으로 이동

* merge
별도의 영역에서 작업한 내용을 병합

* add
개발이 완료되면 완료된 파일을 스테이징 영역에 추가

* commit
내용이 안전하게 추가되었다면 로컬저장소에 반영

로컬 버전관리를 할 수 있기 때문에 반영 위치가 서버에 반영하지 않는다.


빌드 자동화도구
> 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
모듈단위로 개발하기 때문에 코드들을 지속적으로 빌드하고 통합해야 하기 때문이다.
 

jenkins
자바 기반, 오픈소스, 서버기반, 형상관리 도구와 연동가능
web gui 제공 분산 빌드(테스트) 기능

gradle
groovy 기반, 오픈소스, 안드로이드 개발환경, DSL을 스크립트 언어로 사용, 명령을 모아 테스크 단위로 실행, 캐시 기능 지원(테스크 재사용 및 공유)으로 속도 향상

댓글