형상 관리는 특정 항목의 변화에 대해 관리하면서 시스템의 통합과 일치를 보장하는 것이다.
소프트웨어 개발의 경우 사용자의 요구가 추가되는 등의 지속적인 변경이 생긴다.
따라서 변경되는 것들을 체계적으로 정리하여 관리하지 않으면 어떤 개발자는 변경 전의 모듈로 개발하는 경우도 발생해서 원하는 결과를 얻지 못하게 됨.
원래는 형상관리는 하드웨어에서 시작했지만 소프트웨어 개발에 사용하면서 용어도 소프트웨어 형상 관리
= SCM 으로 차별화했다.
소프트웨어에서의 형상 관리는
개발 중 발생하는 모든 산출물이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법임.
제품의 품질과 안정성을 높여줌
언제라도 특정 시간대에 가장 안정적인 버전
의 소프트웨어를 유지할 수 있도록, 소프트웨어 제품이 변경되어가는 상태에 대한 가시성을 확보해줌
📌 누가 변경했는지, 무엇을 변경했는지, 언제 변경됐는지, 왜 변경했는지와 같은 질문에 대답해줌
유지보수를 용이하게 해줌
📌 잦은 요구 사항 변경과 수정된 산출물의 이력이 정확하게 관리되지 않고 관련자들 모두에게 변경 내용이 제대로 전달되지 않는다면, 이중 작업이나 중복 작업이 발생할 수 있고 이는 혼란을 야기할 수 있음
결과적으로
적절한 변경 관리를 통해 무절제한 변경을 사전에 예방하고 변경에 따른 부작용을 최소화해줌. 그리고 프로젝트를 적절히 통제해서 효율적으로 관리할 수 있고 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
어떤 산출물을 형상 관리의 대상으로 할 것인가
프로젝트를 계획할 때 형상 관리 계획을 근거로 형상 관리의 대상이 무엇인지 식별하는 과정임
✔️ 형상 항목 : 개발 단계에서 생산되거나 사용되는 작업이나 산출물이다.
어떤 항목을 관리 대상으로 할 것인지를 정함.
어떤 프로젝트에서 사용되는 파일인지, 어떤 내용의 문서인지, 버전이 어떻게 되는지를 같은 작업을 하는 소속 팀원들끼리 한눈에 알아볼 수 있도록 이름을 명명하는 규칙
베이스라인 : 소프트웨어 개발 과정 중 특정 시점에 만들어진 산출물의 집합을 말한다.
🚀 베이스라인이 왜 필요한가
예시로, 한 회사에서 ver2015
출시를 목표로 하고 있고, ver2015
출시 당시 각 개발 팀에서 사용된 파일은 v1.3
, v1.2
, v1.4
, v1.3
이라는 4가지 버전이라고 하자
v1.3
, v1.2
, v1.4
, v1.3
근데 여기서 ver2015
가 출시되어 잘 사용되고 있는데 회사가 기능을 몇 가지 추가해서 ver2016
을 준비하고 있다고 가정할 때
ver2015
에 사용된 최종 버전인 v1.3
, v1.2
, v1.4
, v1.3
에 태그를 달아서 베이스라인으로 표시하면 쉽게 불러서 작업할 수가 있게 됨근데 여기서 ver2015
패치 버전이 필요해짐
이걸 해결하는 방법 = 브랜치
아래와 같이 패치 파일을 만들 때 새로운 버전 번호를 부여하면 ver2016
개발과는 별도로 패치작업 가능..이지만
ver2016
에는 오류를 해결한 패치 결과가 반영되지 않음.
그래서 ver2015
의 오류가 수정된 패치 결과를 ver2016
에 포함해야 함
이때 사용하는 방법 = 머지 (merge)
형상 항목 목록의 변경 요구를 검토 및 승인해서 현재의 소프트웨어 기준선에 반영될 수 있도록 통제하는 일련의 과정
개발 상태에 대한 가시성을 통해 형상을 효율적으로 관리하기 위해서 베이스라인으로 설정된 형상 항목의 구조와 변경 상태를 기록하고, 보고하는 것
형상 관리 안에 있는 개념
주로 버전 관리 기반의 소프트웨어 운영을 형상 관리라고 한다.
변경 사항을 버전으로 관리하는 것을 의미
아주 간단한 데이터베이스를 사용해서 로컬 컴퓨터에서 파일의 변경 정보 관리
ex) 파일의 이름을 언제나 리포트.xls라고 하고 파일의 내용이 바뀌는 변경 사항들은 컴퓨터로 관리를 하게 된다.
파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용
ex) SVN
(로컬 VCS에 비해)
✔️ 장점
✔️ 단점
단순히 파일의 마지막 스냅샷을 가져오는 것이 아님.
✔️ 특징 :
리모트 저장소가 존재한다.
출처 : https://terms.naver.com/entry.naver?docId=3533073&cid=58528&categoryId=58528
https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F