형상관리에 대하여

갱두·2022년 3월 7일
0

📓 개발 도구

목록 보기
1/2

형상 관리는 특정 항목의 변화에 대해 관리하면서 시스템의 통합과 일치를 보장하는 것이다.

소프트웨어 개발의 경우 사용자의 요구가 추가되는 등의 지속적인 변경이 생긴다.
따라서 변경되는 것들을 체계적으로 정리하여 관리하지 않으면 어떤 개발자는 변경 전의 모듈로 개발하는 경우도 발생해서 원하는 결과를 얻지 못하게 됨.

원래는 형상관리는 하드웨어에서 시작했지만 소프트웨어 개발에 사용하면서 용어도 소프트웨어 형상 관리 = SCM 으로 차별화했다.

형상 관리

소프트웨어에서의 형상 관리는
개발 중 발생하는 모든 산출물이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법임.

  • 소프트웨어 개발 생명주기 전반에 걸쳐 생성되는 모든 산출물의 종합 및 변경 과정을 체계적으로 관리하고 유지하는 일련의 개발 관리 활동

✅ 특징

  • 제품의 품질과 안정성을 높여줌

  • 언제라도 특정 시간대에 가장 안정적인 버전의 소프트웨어를 유지할 수 있도록, 소프트웨어 제품이 변경되어가는 상태에 대한 가시성을 확보해줌
    📌 누가 변경했는지, 무엇을 변경했는지, 언제 변경됐는지, 왜 변경했는지와 같은 질문에 대답해줌

  • 유지보수를 용이하게 해줌
    📌 잦은 요구 사항 변경과 수정된 산출물의 이력이 정확하게 관리되지 않고 관련자들 모두에게 변경 내용이 제대로 전달되지 않는다면, 이중 작업이나 중복 작업이 발생할 수 있고 이는 혼란을 야기할 수 있음

결과적으로
적절한 변경 관리를 통해 무절제한 변경을 사전에 예방하고 변경에 따른 부작용을 최소화해줌. 그리고 프로젝트를 적절히 통제해서 효율적으로 관리할 수 있고 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.

1. 형상 식별

어떤 산출물을 형상 관리의 대상으로 할 것인가

프로젝트를 계획할 때 형상 관리 계획을 근거로 형상 관리의 대상이 무엇인지 식별하는 과정임

✔️ 형상 항목 : 개발 단계에서 생산되거나 사용되는 작업이나 산출물이다.

  • 실행 파일, 문서 형식의 산출물, 원시 코드, 개발 이력, 개발 도구 등

1) 형상 항목 선정

어떤 항목을 관리 대상으로 할 것인지를 정함.

2) 형상 식별자 규칙 선정

어떤 프로젝트에서 사용되는 파일인지, 어떤 내용의 문서인지, 버전이 어떻게 되는지를 같은 작업을 하는 소속 팀원들끼리 한눈에 알아볼 수 있도록 이름을 명명하는 규칙

3) 베이스라인 기준 선정

베이스라인 : 소프트웨어 개발 과정 중 특정 시점에 만들어진 산출물의 집합을 말한다.

🚀 베이스라인이 왜 필요한가
예시로, 한 회사에서 ver2015 출시를 목표로 하고 있고, ver2015 출시 당시 각 개발 팀에서 사용된 파일은 v1.3, v1.2, v1.4, v1.3이라는 4가지 버전이라고 하자

  • 특정 시점 : ver2015 출시하는 시점
  • 베이스라인 : 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)

2. 형상 통제

형상 항목 목록의 변경 요구를 검토 및 승인해서 현재의 소프트웨어 기준선에 반영될 수 있도록 통제하는 일련의 과정

  • 변경에 대한 요구를 무조건적으로 다 수용 X
  • 변경하고자 하는 요구를 정해진 양식에 맞추어 작성하고, 이 요청을 수용할 것인지 거절할 것인지 결정

3. 형상 상태 보고

개발 상태에 대한 가시성을 통해 형상을 효율적으로 관리하기 위해서 베이스라인으로 설정된 형상 항목의 구조와 변경 상태를 기록하고, 보고하는 것

  • 프로젝트에서의 변경 횟수
  • 베이스라인의 상태
  • 최근 소프트웨어 항목의 버전, 릴리스 식별자, 릴리스 횟수, 등등

버전 관리

형상 관리 안에 있는 개념
주로 버전 관리 기반의 소프트웨어 운영을 형상 관리라고 한다.

변경 사항을 버전으로 관리하는 것을 의미

  • 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
  • 소프트웨어 소스 코드 뿐 아니라 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.

1. 로컬 버전 관리

아주 간단한 데이터베이스를 사용해서 로컬 컴퓨터에서 파일의 변경 정보 관리

  • 기본적으로 파일에서 변경이 되는 사항만 관리
  • 간단하지만 실수하기 쉽다.

ex) 파일의 이름을 언제나 리포트.xls라고 하고 파일의 내용이 바뀌는 변경 사항들은 컴퓨터로 관리를 하게 된다.

2. 중앙집중식 버전 관리 (CVCS)

파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용


ex) SVN

(로컬 VCS에 비해)
✔️ 장점

  • 모두 누가 무엇을 하고 있는지 알 수 있게 됨
  • 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다.

✔️ 단점

  • 만약 중앙 서버가 문제가 발생하면 ?
    • 서버가 다운된 동안에는 협업 및 백업 불가능
    • 중앙 서버에 있는 하드디스크가 문제가 생기면 프로젝트들의 히스토리를 잃게 됨 ( = 로컬 VCS도 이런 문제가 있음 )

3. 분산 버전 관리 시스템 (DVCS)

단순히 파일의 마지막 스냅샷을 가져오는 것이 아님.

  • 그냥 저장소를 히스토리와 더불어 전부 복제한다. = clone
  • 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다.
    클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.

✔️ 특징 :
리모트 저장소가 존재한다.

출처 : 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

profile
👩🏻‍💻🔥

0개의 댓글