2019년 2학기 고려대학교 차성덕 교수님 소프트웨어 공학
요구 사항
“형상 관리의 정의란”
“형상 관리를 잘하지 못했을때 생길 수 있는 어려움”
“형상 관리 도구 종류와 이는 형상 관리의 task 중 어떤 부분을 어떻게 도와주는가”
형상관리의 정의 (1)
소프트웨어 개발을 하다보면 필연적으로 듣프로젝트를 하다보면 형상 관리라는 단어와 그 중요성을 듣게된다. 하지만 지금까지 “형상관리==git. 특정 시점에 대해 상태를 기록해놓으면 이후라도 언제든지 그 환경으로 돌아갈 수 있게 도와주는 것” 정도로 생각하고 제대로된 정의는 찾아보지 않았다. 그럼 이제 위키피디아에서 정의하는 형상관리를 살펴보자.
소프트웨어 구성 관리( Software Configuration Management) 또는 형상 관리는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다.
소프트웨어 구성 관리란 소프트웨어 소스 코드 뿐 아니라 개발 환경, 빌드 구조 등 전반적인 환경 전반적인 내역에 대한 관리 체계를 정의하고 있다.
변경 관리 / 버전 관리 / 형상 관리
오호, 형상 관리랑 버전 관리랑 비슷한건지 알았는데 형상관리가 더 포괄적인 거였다. 그런데 이 둘의 차이가 뭘까하고 찾아보는 과정에서 변경관리라는 개념까지 나왔다. 이 세가지 개념을 간단하게 아래와 같이 정리 가능할 수 있다.
변경 관리 — 소스코드 변경 사항에 대한 관리
버전 관리 — 변경사항을 ‘버전’이란 개념을 통해 관리.
형상 관리 — 위의 개념을 포함해 프로젝트와 관련된 모든 변경사항을 관리.
형상관리의 정의 (2)
조금 더 깊게 들어가서 형상 관리의 다른 정의들도 살펴보자.
형상 항목을 식별하여 그 기능적 물리적 특성을 문서화하고, 그러한 특성에 대한 변경을 제어하고, 변경 처리 상태를 기록 및 보고하고, 명시된 요구사항에 부합하는지 확인하는 일련의 사항에 대해 기술적인 행정적인 지침과 사후 관리를 적용하는 원칙
- IEEE Standard Glossary of Software Engineering Terminology(1991)
전체 소프트웨어 공학 과정에 적용되는 ‘보호(Umbrella)’ 활동이다.
변경은 언제나 일어날 수 있기 때문에, SCM(Software Configuration Management) 활동은 변경을 알아내고, 제어하고, 적절히 수행되고 있는것을 확인하기 위해, 변경에 관심을 가지고 있는 사람들에게 이것을 통보하는 것
- Roger’s S Pressman, “Software Engineering : A Practitioner’s Approach , 3rd Edition”(1995)
형상관리 구조
위와 같은 대부분의 정의에서 형상 관리의 구조는 크게 네가지로 나뉜다.
- 형상 식별 (Configuration Identification) — 형상 관리의 대상이 무엇인지 식별하는 것. 식별 대상을 형상 항목(configuration item) 이라고 한다.
- 형상 제어(Configuration Control) — 형상 항목의 버전(version control)과 변경에 대한 판단을 내리는 것.
- 형상 감사 — (Configuration Audit) — 요구대로 형상 항목의 변경이 제대로 이뤄졌는지 살펴보는 것.
- 형상 상태 보고 — (Configuration Status Accounting) — 변경된 형상 항목을 관계된 사람들에게 알리는 것.
형상관리의 정의 (3)
여러글을 읽고 정리해본 결과 나름대로 형상 관리를 이렇게 정의할 수 있을 것 같다.
기능, 성능, 제약 조건 등의 추상적인 관리 대상을 형상화하여 정하고 변경 사항에 대해서 통제 및 확인하며 이를 관련된 사람들에게 보고하는 것
형상관리를 잘못했을때 생길 수 있는 어려움
우선 형상 관리의 목적은 변경을 추적하고 이를 처리하는 메커니즘(형상 관리 대상 파악, 베이스라인 지정, 버전 관리, 접근 제어 등)을 제공하는데 있다.
특히 대규모 프로젝트에서는 발생 가능한 위험이나 혼란을 줄이고 프로젝트를 체계적으로 관리하기 위해 형상관리가 반드시 필요하다.
형상관리가 제대로 수행되지 않는다면 위와 같은 형상관리의 장점들이 사라질 것이다.
형상 관리를 위한 도구와 특징
- CVS (Concurrent Version System) — 90년에 출시된 무료 서버-클라이언트 형상관리 시스템. 파일 전체를 저장하는 것이 아니라 변경사항만을 저장함으로 용량을 적게 차지하지만 속도가 상대적으로 느리다.
- SVN (Subversion) — 형상관리/소스관리 툴의 일종. 중앙관리만을 지원. 다른 사용자의 커밋과 엉키지 않으며, 커밋 실패 시 롤백 기능을 지원. 안정성에 있어 CVS보다 상대적으로 좋지 않다.
- Git — 분산형 버전관리 시스템 . Repository의 완전한 복사본을 로컬에 저장할 수 있다. 처리속도가 빠르지만 대용량 코드 관리에 부적절하다.
- Perforce(P4D) — 빠른 속도, 빠른 Merge가 가능하며 큰 리소스 관리에 좋다. 하지만 유료이고 파일명이 바뀌면 히스토리 추적이 곤란하다.
모두 version control 지원.