Computer/project

형상관리란 무엇인가? 소프트웨어형상관리(SCM)란 무엇인가

박현철 2012. 5. 2. 11:22

출처 : http://talkit.tv/view.asp?IDX=146

 

형상관리만큼 한국에서 잘못 이해되는 개념도 없으며, 외국에서도 형상관리의 정의는 다양하고 복잡한 개념으로 알려지고 있다. 그리고 개념적으로 간단한 것인데 우리에게 아주 어렵게 소개되는 개념이기도 하다.

 

항상 정의는 어렵고, 이것을 소화하려면 정말 많은 노력과 지식과 경험이 필요하다. 이제 좀 더 우리의 일상에서 형상관리를 생각해 보려고 한다. 일반적인 형상관리의 정의는 시스템 형상 요소의 기능적 특성이나 물리적 특성을 문서화하고 그들 특성의 변경을 관리하며, 변경의 과정이나 실현 상황을 기록·보고하여 지정된 요건이 충족되었다는 사실을 검증하는 기능이나 과정이다.

 

체계공학(systems Engineering)에서 보면 형상관리는 사양(Specification), ICD (Interface Control Document), 도면, 설계변경 같은 변경관리, 그리고 납품 후 형상관리 등을 통한 제품과 프로세스의 식별하는 기능이다.

 

초기는 단순하였지만 점점 진화하면서 개념이 너무 다양해지고 있지만 처음시작은 1960대 방위산업 관련 사업관리의 한 방법으로 시작하였다. 초기의 형상관리는 처음 시 제작으로 만든 무기체계(Weapon System)가 두 번째 만들 때와 다르기 때문에 이것을 극복하기 위해서 사용하는 통합관리방법론이었다.

 

예를 들어서 첫 번째 시스템을 수 년 정도 개발을 하여서 완성하여서 두 번째 시스템을 만들려고 하니 처음에 시작하였던 계약자, 사업관리자, 엔지니어, 관리자, 고객 등 이해당사자(Stakeholder)들 모두 다른 일을 하거나, 은퇴하거나, 기억이 나지 않는 것이다. 그래서 두 번째 작품(시스템)이 보관하고 있는 도면, 문서 등 기록물을 가지고 만들 수 가 없었다. 그래서 형상관리라는 통합관리방법론이 탄생되었다.

 

누구인지는 모르지만 동양인 아마 일본인이 형상관리로 해석을 하였다. 그러나 오역인지 절묘한 해석인지는 모르지만 Configuration이라는 말을 형상(形狀)이라는 말로 번역을 하였다.

 

형상관리에서 형상의 의미는 물건(物件)의 생김새나 상태(狀態)라고 할 수 있다. 이것을 현대적으로 표현한다면 제품(Product)이나 시스템(System)의 물리적 실체에 대한 특성이나 구성 상태를 관리하며 그것들이 변경되었을 때 누가, 언제, 왜 변경되었는가를 수명주기 동안 기록하고 관리하고 추적하고 감리하는 것이다.

 

그러나 영어의 의미에서 Configuration이라는 의미는 arrangement of a group of thing이라고 말할 수 있다. Arrangement의 의미는 정돈, 정리, 배합, 조정, 합의 등의 의미를 가진다.

 

형상관리를 간단하게 말하면 조율을 통한 통합관리방법론이다. 대상은 시스템일 수 도 있고 제품이나 프로젝트라고 말할 수 도 제품과 소프트웨어의 결합일 수 도 있다. 다시 말해서 시스템 통합관리방법론이며 다양한 제품의 하드웨어, 소프트웨어 등 모든 제품을 통합적으로 관리하는 방법론이다.

 

조금 철학적으로 말한다면 제품을 개발하거나 사업을 할 때 추상적인 관리대상을 형상화하여서 관리하는 것을 형상관리라고 할 수 있다. 그러면 어떤 것이 추상적이라고 말할 수 있냐 하면 기능, 성능, 제약조건, 제품의 사양 등은 추상적이다. 여기에서 추상적이라는 것은 글로 표현할 수 있는 것이지 실제적으로 보이는 것이 아니라는 것이다. 이것들은 물리적으로 실체인 제품의 특징을 나타내는 추상적인 항목이며, 이것을 형상으로 표현하는 것이 문서(Document)라고 할 수 있다. 여기서도 문서는 우리가 일차적으로 생각하는 종이문서(Paper)가 아닌 기록물이라는 추상적 지식물 또는 콘텐트를 의미한다.

 

예를 들어서 인생의 활동은 추상적인 활동들의 연속이다. 이것을 형상화 한 것이 출생신고 그리고 혼인 신고, 사망신고 등으로 우리들의 호적에서 변경 내용이 문서화 또는 기록화 되는 것과 유사하다.

 

하드웨어 시스템을 개발할 때 구체적인 예로써 원자력발전소를 건설하는 사업(Program)에서 다양한 이해당사자(Stakeholder)와 소통을 하면서 통합적으로 관리하기 위해서는 설계요건, 물리적 실체(발전소), 시설 등의 정보를 문서화하여서 일관성을 수립하여서 관리하여야 한다. 또한 이러한 일관성을 전 수명기간 동안 유지해야 한다. 요구사항과 물리적 실체 그리고 시설 형상정보가 일치하여야 한다.

 

일치에 대한 요소 또는 관리 대상을 형상요소(Configuration Item)이라고 한다. 말이 어렵지 관리항목을 말한다. 모두 관리할 수 는 없기 때문에 가장 중요한 대상이나 항목을 말한다. 발전소에서는 발전소 구조물, 계통, 기기, 사업자 요건, 규제요건, 설계요건, 기능특성, 운전변수, 문서, 도면, 소프트웨어 등 일 수 있다.

 

또한 형상관리에서 가장 중요한 개념 중에 하나는 베이스라인 또는 기준선이라는 것이다. 원자력발전소는 물론 대부분의 공장의 생선시설 등의 각 단계의 베이스라인이 있다.

 

예를 들어서 제품의 수명주기에서 보면 개념설계, 기본설계, 상세설계, 생산 또는 건설, 운용/유지/보수 그리고 폐기를 단계를 가지는데, 각 단계별 베이스라인 또는 기준선을 가진다. 개념설계 다음은 기능기준선(functional baseline) 기본설계다음에는 할당기준선(allocation baseline), 그리고 상세설계 다음에는 제품기준선(product baseline)그리고 완성한 다음에는 운전 또는 운용기준선(operational baseline)이라고 한다.

 

 

형상관리는 보통 제품(일반 응용 소프트웨어 제품과도 동일)의 전 수명주기를 통해서만 발생하고 긴 수명을 가진 제품은 납품 후에도 형상관리에 대한 추적을 해야 한다.

 

형상관리는 개발 형상관리과 생산 형상관리, 또한 비용 예측을 위한 관리적인 성격을 지니는 작은 의미로 쓰이기도 하지만 큰 범주로 생각을 해보면 제품의 수명주기간에 모든 단계별로 형상관리가 사용될 수 있다.

 

제조업에서의 형상관리는 제품이 변경되었다는 과정과 상황을 기록, 보고하여 어느 정도 목적에 도달했을 때 충족되었다는 사실을 검증하는 일련의 프로세스를 말한다. 프로세스 중간중간 주요한 이정표(Milestone)이 되는 시점에서는 산출 되는 각종정보 (기술문서, 도면, 제품구조, 자재/부품 마스터, 공정 및 작업정보)에 대한 이력을 관리함으로써 장기간 진행되는 업무정보를 체계적이고 효율적으로 관리할 수 있다.

 

형상관리와 혼동하여서 사용하는 개념에서는 버전관리, 변경관리 등이 있다. 형상관리 프로세스에는 이러한 리비전, 버전 그리고 설계변경을 포함하고 있다. 리비전이나 버전(Version)은 개정관리라고 할 수 있다. 버전은 문서나 도면, 소스코드 등 정보개체(Item)가 한번 check-out을 하면 PLM에서는 자동적으로 1, 2, 3 등으로 변경된다. 그리고 리비전(Revision)은 이러한 아이템이 베이스라인이나 동결된 후 다시 사용할 때 A, B, C 등으로 증가 된다. 산업에 따라서 Version을 Issue로 사용하는 데도 있지만 개념은 동일하다.

 

왓트(Watts)가 쓴 개발 문서관리 핸드북 (Engineering Documentation Control Handbook) 에서는 형상관리는 설계 엔지니어와 나머지세계를 연결하는 다리라고 정의하였다. 그리고 기업의 형상관리 성숙도를 5단계로 나누어서 제일 아래 단계를 E (Incapable/No process), D (Acceptable), C (Efficient), B (Best in Class), 그리고 최고의 단계를 A (World Class)라고 정의 하였다.

 

요즈음은 형상관리가 소프트웨어 분야에서 많이 사용되고 있다. 소프트웨어 형상관리(SCM: Software Configuration Management)라고 불리며, 소프트웨어 분야에서의 PDM이라고 할 수 있다. 소프트웨어 개발 프로젝트를 진행할 때 디지털 파일로 작성된 모든 작업의 결과와 변경사항을 추적하며, 지역적으로 떨어져 있는 여러 개발자들의 협업이 가능하게 하는 시스템이다.

 

소프트웨어 형상관리(SCM)는 SW개발 및 유지보수 과정에서 발생하는 소스코드, 문서, 인터페이스 등 각종 결과물에 대한 계획, 개발, 운용 등을 종합하여 시스템의 형상을 만들고, 이들 형상에 대한 변경을 체계적으로 관리, 제어하기 위한 활동이다.

 

또한 소프트웨어 시스템 개발할 때부터 유지보수에 대비하여 만들어져야 한다. 계발 당시에 이러한 점을 소홀히 하게 되는데 추후에 비용증가의 요인이 된다. 소프트웨어가 계속 사용되고 발전하기 위해서는 이러한 개념과 문서화가 필요하다. 소프트웨어 형상관리에서는 관리대상은 대략적으로 다음과 같다.

 

-  개발되는 소스코드

-  지원 소프트웨어

-  CASE 형상요소

-  개발 관련 문서 (분석서, 설계서, 사용지침서)

-  소프트웨어 개발 폴더, 라이브러리

-  프로젝트 계획

-  시험계획/절차/자료

-  형상관리 계획/절차

-  문제점/개선보고서

-  형상관리보고서

 

그러면 누가 형상관리가 필요하며, 왜 필요한 것인가를 생각하여 보자. 과거에는 특별한 환경에서 형상관리가 적용되었다. 제품의 구조가 복잡하고 제품수명주기가 길고 다양한 분야에 엔지니어가 협업을 할 때에 반드시 형상관리가 적용되어야 실패의 확률을 줄일 수 있었다. 그러한 과정에서 유지보수, 사용기간에 예측하지 못한 항목에 대응하고 필요한 정보문서를 검색하여 완전과 관리에 대응할 수 있을 수 있었으나 현재에는 다양한 환경에서 형상관리를 적용하고 있다.

 

고사양의 제품이 요구되는 환경 (항공전자)

제품의 수명주기가 길고 고가인 경우 (항공기개발)

제품의 운용에서 극도의 안전을 요구하는 환경 (원자력발전소 시설)

제품을 개발하는 과정에 복잡한 계약관계와 이해당사자가 개입되어있는 환경 (항공방산)

제품이나 시스템의 개발 과정에 서로 다른 복합기술이 사용되는 환경 (철도시스템)

다품종 소량생산의 환경에 소프트웨어와 하드웨어의 결합이 필요한 환경 (메카트로닉스)

다수의 사람들이 한 제품을 동시에 작업하는 경우 (소프트웨어 개발)

제품의 사용 중 개선이나 개량이 지속적으로 일어나는 경우 (인프라, 무기체계)

혁신적인 신제품의 개발환경 (제품혁신)

 

현 재에는 고객이나 개발당사자가 현단계의 산출물과 바로 이전이나 이후의 단계의 산출물의 일치성을 확인 및 인가(Validation)하고 사용자가 요구하는 제품을 개발하였는지 검증(Verification)를 하는 형상관리는 절대적인 역할을 한다.

 

나의 경험에 의하면 대부분의 개발자들이 형상관리 프로세스를 싫어한다. 심지어는 개발도 힘들어 죽겠는데, 이러한 일까지 해야 하냐고 항의도 한다. 그러나 형상관리는 개발자의 가장 중요한 업무 중에 하나이다. 그리고 형상관리 담당자들은 형상관리 개념과 지식이 약해서 현업사람들을 이끌어가지 못한다. 형상관리 담당자들은 적극적으로 의사결정에 개입을 하여야 한다.

 

형상관리에서 관리의 의미는 Management이다. 우리말에 관리로 사용하는 영어단어에는 Management, Administrative, Control라는 말이다. 관리의 가장 단순한 단계는 Control이다. 이것은 깊은 지식이 없이 주어진 조건에서 반응만 하면 되는 것이다. 그리고 Administrative는 약간의 업무지식과 결정된 관리능력이 필요하다. 그러나 Management는 깊은 업무지식과 패러다임을 알고 더 좋은 결정을 할 수 있는 창조적인 능력이 요구된다. 그러므로 형상관리자는 이러한 능력이 필요하며, 기업에서는 이러한 인재를 양성해야 성공할 수 있다.

 

그러나 형상관리 자료야 말로 그냥 형식적으로 하는 것이 아니라 시스템의 수명주기 동안 미래에 무슨 문제가 발생하더라도 해결할 수 있는 유일한 자산(Asset)이라고 할 수 있다.