성공적인 프로젝트 수행을 위해서 형상 관리는 반드시 수행되어야 하는 매우 기본적인 프로세스입니다. 형상 관리 실무들은 Automotive SPICE®나 CMMI®에서 능력도(Capability)이던 성숙도(Maturity)이든 수준(Level) 2를 달성하려면 꼭 수행해야 하는 필수 실무로 자리하고 있습니다. 그러나 글로벌 표준이나 실무에 맞추어 오래 전부터 개발 프로세스를 구축하고 관리해온 조직에서조차 형상관리담당자에게 형상의 정의가 무엇이냐고 질문해보면 그 답을 쉽게 듣기 어렵습니다.
관리할 대상이 무엇인지 모르고 관리를 한다는 것은 우리가 경험한 많은 프로젝트와 조직에서 형상 관리를 어렵게 생각한다는 사실과 맞닿아 있습니다. 여기서는 형상 및 형상 관리의 개념을 최대한 쉽게 다루어 보겠습니다.
형상이란 무엇인가?
먼저, 형상(configuration)의 뜻부터 알고 가야 합니다. 특히, 소프트웨어나 전자 업계 같은 조직에서는 형상의 의미를 잘 모르는 경우가 있습니다. 거기에는 CMMI®나 SPICE 같은 프로세스 모델이 기여한 바가 크다고 생각됩니다. 프로세스 모델의 형상 관리 부분의 내용을 보면 정작 형상에 대한 정의를 찾아보기 어렵습니다. 또, 형상 항목(configuration item) 같은 용어 정의가 있습니다만, “형상 관리를 위해 지정된 작업 산출물이 형상 항목이다”라는 식으로 재귀적으로 기술되어 있어 아쉽습니다.
오래된 내용이지만 미국방성 표준(MIL-STD-973)에 따르면, 형상이란 제품이 갖는 또는 갖도록 계획된 물리적, 기능적 특성(functional and physical characteristics)이라고 정의합니다.
이 정의는 PMBOK®에서도 인용이 되며, Automotive SPICE®에서 참조하는 용어집인 ISO/IEC/EEE 24765에도 명시가 되어 있습니다.
이것을 아는 순간, 개발 경험이 있는 분은 누구나 형상 관리에 대한 통찰을 얻게 됩니다. 프로젝트에서 만들어 내는 제품은 물리적인 특성이나 기능적인 특성을 갖게 될 것이고 그것을 관리하는 것이 형상 관리인 것입니다.
고객은 A라는 특성을 원하는데 A’라는 특성을 갖는 제품을 만들어 납품하면 형상이 다른 불량이 되는 것입니다. 예를 들면, 설계는 두께가 5mm+/-1mm가 되는 판을 명시했는데 7mm 판으로 만들어지면 물리적 특성이 불일치 됩니다. 또, 응용소프트웨어가 데이터를 검색해서 보여 줄 때 검색결과가 내림차순 정렬이 되도록 고객이 요구하는데, 오름차순으로 정렬되면 기능적 특성이 요구사항을 충족하지 못하는 결과가 됩니다.
개발과 형상
개발 중 다루어야 할 형상은 개념적으로 세 가지의 유형이 있습니다. 요구된 형상, 설계된 형상 및 구현된 형상입니다.
요구된 형상은 고객이나 사용자가 요구하는 제품의 특성을 말합니다. 형상 요구사항(configuration requirement)이라고 합니다만 제품의 요구사항이라고 생각하면 됩니다. 형상 요구사항이 파악되면 이것을 충족할 수 있는 설계를 만들어 내게 됩니다. 요구사항을 충족할 수 있는 설계는 여러가지가 될 수 있는데 사업 상의 고려사항, 프로젝트의 성격 등을 감안하여 그 중 하나를 결정하게 됩니다. 결정된 설계를 보면 비로소 명확한 형상 정보를 알 수 있게 됩니다. 이 형상을 설계된 형상(as-designed configuration)이라고 합니다.
한편, 완성된 설계를 구현하면 제품이 되고 실재하는 제품은 형상을 갖게 되는데 이것을 구현된 형상(as-built configuration)이라 말합니다. 이 구현된 형상은 설계된 형상과 동일하다고 인정하는 것입니다. 동일한 것이 아니고 동일하다고 인정하는 것이지요. 이 세상에 정확히 같은 형상을 가진 복수의 제품은 없습니다. 아무리 잘 만들어진 물건이라도 분자, 원자 단위로 들어가 보면 결국 차이가 있게 됩니다. 실용적인 목적 상 형상이 일치한다고 보는 것입니다.
형상 요구사항(요구된 형상) – 설계된 형상 – 구현된 형상 이들 간의 관계가 있습니다.
그림. 형상 유형 간의 관계 (Relationships among configuration types)
이들 관계는 개발 중에 항상 유지되어야 하며 개발, 제조, 납품까지 무결하게 이 관계가 유지될 수 있도록 지원하는 활동이 형상 관리입니다.
형상 관리
형상 관리는 오래 전 1960년대부터 정립되어 수행되어 온 프로세스입니다. 그러면 그 전까지는 형상 관리라는 활동이 없었느냐? 아닙니다. 형상 관리라는 인식만 없었을 뿐이지 제품을 개발, 제조, 판매하려면 형상 관리는 당연히 수행해야 하는 업무입니다. 과거부터 현재도 물건 만들어 파는 기업이라면 대부분 이미 수행하고 있는 활동입니다.
CMMI® V2.0 용어사전(Glossary)을 참고하면 형상 관리에 대한 정의가 나오는데 “형상식별, 버전관리, 변경관리와 감사를 사용하여 작업산출물의 무결성을 관리하는 프로세스”라고 되어 있습니다. Automotive SPICE® V3.1에서 SUP.8 Configuration Management의 프로세스 수행 결과(process outcomes)를 보면 형상 항목 식별과 통제, 항목들의 상태 기록과 보고 및 베이스라인의 완전성과 일관성 보장 등을 제시하고 있어 유사합니다.
제품 개발 프로젝트에서 제품의 형상을 잘 관리하려면,
- 형상 식별(configuration identification),
- 형상 통제(configuration control),
- 형상 상태 파악(configuration status accounting),
- 형상 감사(configuration audit)
등의 활동을 수행할 필요가 있습니다. 상당히 큰 수준의 활동인데 표준에 따라 기능(function)이나 요소(element)로 표현하기도 합니다.
여기서는 “형상 식별” 정도만 간단히 언급해 봅니다. 형상 식별이라는 활동은 무엇을 하는 것입니까? 심사를 하다 보면 형상 식별 활동의 결과로서 형상 항목이라는 이름으로 프로젝트에서 생산하는 거의 모든 문서를 모두 나열해 놓은 목록을 제시합니다. CMMI®나 Automotive SPICE®를 도입하는 초기에 자주 볼 수 있었던 상황입니다. 이것이 가끔 사람들이 형상 관리를 문서 관리와 혼동하도록 만드는 부분이기도 합니다. 지금도 여전히 이렇게 하고 있는 조직들이 있습니다.
형상 식별은 상당히 큰 수준의 활동입니다. 개발 과정에서 수행하는 많은 업무들이 형상 식별과 관련됩니다. 예를 들어, 개발할 제품이 충족해야 할 형상(물리적/기능적 특성)이 무엇인지 정확하게 아는 것입니다. 즉, 특성 A를 갖는 제품과 특성 A’를 갖는 제품을 구분(식별)할 수 있어야 합니다.
제품이나 그것의 구성요소(특히, 제품의 형상에 영향을 주는)에 고유한 식별자와 버전을 붙이는 활동도 형상 식별과 관련 있습니다. 결국 제품과 구성요소(부품)들을 형상 항목으로 지정하고 관리해야 합니다.
실재하는 제품은 그것의 형상(기능적 또는 물리적 특성)을 갖습니다. 개발 중에는 제품이 아직 존재하지 않기 때문에 형상은 정보로서 존재하게 됩니다. 그렇다면 형상 정보는 어디에 담겨 있을까요? 개발 초기에는 고객 요구사항이나 기존 유사제품 등에 있을 것이고 곧 제품요구사항으로 정리될 것입니다. 이들 정보는 앞으로 만들게 될 제품 형상에 대한 요구사항(configuration requirements) 입니다. 전통적인 형상 관리 표준에서는 형상 정보를 갖는 문서들을 형상 문서로서 형상 항목과 구분하여 식별하고 관리했으나 소프트웨어 개발에 형상 관리를 적용하게 되면서 그 구분이 흐려 졌습니다.
형상 정보를 담고 있는 문서가 제품 개발 과정에서 사용되고 제품의 형상에 영향을 미친다면 그것은 반드시 관리 대상이 되어야 합니다. 마케팅 부서가 만들어내고 승인된 제품기획안도 형상 정보를 갖고 있습니다. 그러므로 그것도 관리되어야 합니다. 아마도, 제품기획안은 그 내용을 빠짐없이 반영한 제품 요구사항 명세가 정리되고 승인되면 프로젝트 차원에서는 더 이상 관리할 필요는 없을 것입니다.
자동차 업계에서는 고객과 업체 간에 Compliance Matrix 같은 문서를 주고받으면서 요구사항을 확정을 하는데 이것을 잘 들여다보면 개발해야 할 형상을 파악할 수 있습니다. 그러므로 이런 업무도 형상 식별 활동에 해당합니다. 또, 이 업무에는 어떤 릴리스에 어떤 피처를 넣을 것인지 결정하는 부분도 있을 텐데 이것은 형상 통제 활동에 해당하는 부분일 것입니다.
형상을 식별하는 일이 이루어지면 이제부터는 형상항목들의 상태를 파악하며 적절히 형상항목들의 변경을 통제하는 작업을 수행해야 하며 동시에 형상의 무결성을 보장하도록 감사 활동도 수행하게 됩니다. 이들 내용은 후속 기사에서 다룰 예정입니다
결론
형상은 제품이 가지고 있거나 갖도록 계획된 속성(attributes), 즉, 기능적/물리적 특성(characteristics)을 말합니다.
형상 관리는 전통적으로 기계 중심의 제품 개발 및 제조 업무에서 정립되었습니다.
형상 관리 실무들이 물리적 특성이 중요하지 않은 소프트웨어에서 채용되면서 형상에 대한 정의가 생략되고 문서 중심의 관리 활동으로 나타나게 되었습니다.
아이러니하게도 자동차 E/E 시스템 발달과 함께 소프트웨어 개발 프로세스가 역으로 시스템 수준으로 확대되었습니다.
하드웨어 개발에서 기존부터 수행하는 실제 형상 관리 필수 업무들과는 별개로 소프트웨어 관리 방식으로 형식적 형상 관리 활동을 수행하는 모습이 자주 목격됩니다.
요구사항(요구된 형상)을 적절히 충족할 수 있는 좋은 설계(설계된 형상)를 결정하고 구현된 제품(구현된 형상)을 납품하는 것을 지원하는 프로세스가 형상 관리의 요체입니다.
참고 자료
- MIL-STD-973 CONFIGURATION MANAGEMENT, the Department of Defense
- EIA-639™C Configuration Management Standard, SAE
- Automotive SPICE® Process Assessment/Reference Model Version 3.1
- CMMI® V2.0, ISACA
- ISO/IEC/IEEE 24765 Systems and software engineering — Vocabulary, International Organization for Standardization
- A guide to the Project Management Body of Knowledge PMBOK GUIDE, 6th Edition, PMI
- Automotive Core training series – Configuration Management material, Seon ENS Inc.