[ 한글 ]
형상 관리 (소프트웨어 형상 관리)
버전 관리 (소프트웨어 버전 관리)
소스 관리 (소스 코드 관리)


[ 영어 ]
Version Control
Revision Control
Source Control
Source Code Management (SCM)
Software Version Management
Software Configuration Management (SCM)




Subversion, Git, ClearCase 등과 같은 도구를 통해서 (또는 도구가 없더라도)
소스 코드, 문서, 결과물 등을 번호(버전)를 사용하여
관리하는 것을 무엇이라고 지칭해야 할까?



소프트웨어 공학(Software Engineering)이라는 학문은
개인적으로 '공학계의 인문학'이라고 여겨진다.

바꿔말하면 무엇을 정의하는 것이 어려우며,
정답이 없는 경우가 대부분이라는 말이다.



최근 아이폰이나 안드로이드로 인하여
대중화 되어버린 "플랫폼(Platform)"이라는 것을 보아도
분야마다 사람마다 그 정의가 전부 다를 수밖에 없다.

시험 문제로 "플랫폼의 정의를 쓰시오"라고
나오면 정말 당황스러울 것 같다.



이번의 경우는 조금은 색다른 경우인데,
이것을 지칭하는 용어가 너무 많아서 문제가 된다.

같은 것을 지칭하면서
다들 다른 용어를 사용하고 있는 것이다.



일반적으로는
Subversion, Git 과 같은 것을 지칭할 때에는
"버전 관리 도구 (Version Control Tool)"
라고 한다.

그러한 버전 관리 도구를 사용하여 구축한 시스템은
"버전 관리 시스템 (Version Control System, VCS)"
이라고 부르곤 한다.



소프트웨어 공학을 공부하다 보면
상당 부분의 개념이 산업 공학 특히 생산 공학에
그 기반을 두고 있는 것을 알 수 있다.

그로 인하여, 버전 관리를 포괄하는 다른 용어가 나오는데
"형상 관리 (Configuration Management)"
가 그것이다.


그 중에서 소프트웨어 분야에 대해서는
"소프트웨어 형상 관리 (Software Configuration Management, SCM)"
라고 부르고 있다.



'소프트웨어 형상 관리'는
'버전 관리'를 포함하는 더 크게 포괄하는 의미다.

'소프트웨어 생명 주기 (Software Life Cycle)' 전반에 걸쳐서
개발 환경을 비롯한 전반적인 모든  형상물들에 대한
'변경 관리'를 위한 모든 활동을 의미한다.


형상 식별, 버전 제어, 변경 제어, 형상 감사, 형상 상태 보고 등
어려운 말로 소프트웨어 형상 관리에 대한 정의들이 있긴 하다.



어려운 이야기를 계속 하고자 하는 것은 아니다.

다만, '소프트웨어 형상 관리'라는 것이
곧 '소프트웨어 버전 관리'를 의미하는 것은 아니라는
말을 하고 싶은 것이다.

'소프트웨어 형상 관리'의 범주 안에
'소프트웨어 버전 관리'가 포함이 되어 있을 뿐이다.



문제는 이러한 것을 실무자들도 분명히 알고 있으면서도
아니, 최소한 어렴풋하게 알고 있으면서도
이 두 가지 용어를 그냥 동의어로 사용하고 있다.

또 사실 동의어로 사용해버린다고 하여
꼭 틀렸다고 할 수 없는 것도 사실이다.
( 우기면 뭐 그렇다고 할 수 밖에 없는 것이 현실! )


단순히 소스 코드에 대해서만 관리한다고 하면
"버전 관리"
소스 코드를 비롯하여 개발 환경, 빌드, 기타 등등까지라면
"형상 관리"
라고 지칭하기로 하자.


우리가 앞으로 계속 살펴볼 "Git"은
기본적으로 "버전 관리 도구"이다!


하지만, Git을 기반으로 하여 소프트웨어를 관리하는 시스템을 만든다면
그것은
"소프트웨어 형상 관리 시스템"
이라고 부르기로 하자.


[ 참고 ]
http://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
http://ko.wikipedia.org/wiki/%ED%98%95%EC%83%81_%EA%B4%80%EB%A6%AC
정보통신단체 표준, TTA.IE-828, 소프트웨어 형상 관리 계획 표준
반응형

+ Recent posts