[SE]소프트웨어 형상관리
■ 소프트웨어 형상과 형상항목
□ 소프트웨어 형상관리
▷ 소프트웨어 형상관리(Software Configuration Management)의 정의
▷ 소프트웨어 형상관리(Software Configuration Management)의 목적
소프트웨어는 본질적으로 비가시성, 복잡성, 변경성, 순은성, 무형성, 장수성 등과 같은 특징을 가지고 있고, 형상관리와 관련해서는 변경성을 이해하는 것이 필요합니다.
소프트웨어 변경성은 필요에 따라 항상 수정이 가능하다는 성질이며, 사용자의 요구, 환경 변화에 적절히 변형 가능한 호환성과 요구 및 환경 변화에 적응하는 유연성 즉, 순응성을 가지고 있기도 합니다. 복잡하게 보일수도 있으나, 소프트웨어는 정형적 구조가 없기 때문에, 소프트웨어 자체는 매우 비규칙적이고 비정규적인 복잡성이 있습니다. 거기에다 요구 및 환경 변화에 따라 유연하게 변화하기 때문에, 소프트웨어의 변경을 통제하지 못하면, 소프트웨어의 품질은 점전 더 저하될 수 밖에 없습니다.
□ 형상
형상은 소프트웨어가 동작하게되는 그 자체를 말합니다. 소프트웨어 그 자체가 환경의 변화, 요구사항의 변화에 따라 변경이 되게 되면 소프트웨어의 형상이 변경 되었다고 할 수 있습니다.
겉으로 보이는 소프트웨어의 형태는 하나의 제품, 서비스로 추상적으로 보일 수 있지만, 실제로 그 형상을 구성하는 요소들을 살펴보면, 소프트웨어를 실행할 때 필요로 하는 바이너리 뿐이 아닙니다. 바이너리를 생성하기 위한 소스코드, 소프트웨어의 형태, 기능을 설명하는 설계서, 요구사항 정의서, 제품 설명서 등의 문서들도 소프트웨어의 형상을 구성하는 요소이며, 이렇게 소프트웨어 형상을 구성하는 단위를 '형상 항목' 이라고 합니다.
■ 형상 관리란?
소프트웨어 요구사항, 분석, 설계, 구현, 개발, 운영, 유지보수, 폐기 까지에 이르는 생명주기의 각 단계별로 소프트웨어의 형상은 지속적으로 변하는 설정이 있기에, 각 단계별로 변경의 이정표가 되는 베이스라인을 설정하고, 주요 단계별로 변경의 이력을 관리하여 추적하고 통제 가능하도록 하는 것입니다. 이를 통해 소프트웨어의 형상이 되는 작업 산출물의 무결성이 보장되고, 유지됩니다. 결과적으로 작업 산출물의 무결성을 통해 소프트웨어 자체의 무결성이 확보되는 것입니다.
□ 형상은 소프트웨어 생명주기 어느 단계에서나 변경된다.
소프트웨어 형상은 사용자, 소프트웨어의 환경에 따라 소프트웨어 생명주기 어는 단계에서나, 변경이 발생합니다. 새로운 요구사항이 발생되면, 요구사항 관련 형상 항목 뿐 아니라, 관련된 설계 형상 항목, 구현, 테스트 형상 항목 및 최종 소프트웨어 제품의 형상 역시 변하게 됩니다. 이러한 변경 요인은 제품이 개발된 이후, 개발 중 할 것 없이 어디서든 변경이 될 수 있기 때문에, 어떤 이유로 변경이 발생했는지, 그 결과로 어떤 형상 항목이 변경되거나, 새로 생성되었는지 관리하는 것이 "형상 관리" 입니다.
□ 소프트웨어 변경 주요 원인
- 제품 요구사항이나 비즈니스의 변화에 따른 새로운 비즈니스 및 시장 창출에 의한 변경 요청
- SW에 대한 이해당사자들의 변경 요청
- SW 품질 관련 팀의 요구에 의한 변경 요청
- 예산이나 일정의 변경
□ 형상관리가 없는 경우 문제점
소프트웨어 형상의 변경 이력을 파악하기 힘듭니다. 소프트웨어의 형상은 환경, 요구사항 변경 등의 여러가지 이유로 변경되기 마련이나, 소프트웨어의 형상이 어떤 이류로, 언제, 누가 바꾸었는지 알 수가 없으면, 과거 작업했던 내역을 알 수 없고, 했던 작업을 또 다시 하거나, 되돌려야 하는 재작업이 많이 발생합니다.
고객에게 릴리즈 한 제품에서 문제가 발생했을 경우, 문제가 발생한 소프트웨어의 형상을 정확히 알지 못하여, 사름들에게 일일이 물어보면서 대응을 해야 하는 경우도 자주 발생합니다. 이런 일든은 모두 프로젝트 납기 지연, 품질 저하로 자연스럽게 이어지게 됩니다.
□ 형상관리의 이점
형상관리 시스템은 프로젝트 차원의 'Undo' 기능으로, 프로젝트 수행 도중 변경한 여러 형상 항목에 결함이 발견될 경우, 언제든지 형상 항목을 변경 이전의 상태로 되돌릴 수 있습니다. 여기서 변경 이전의 상태라 함은 형상관리를 통해 변경 이력을 잘 저장하고, 뒤에서 설명할 베이스라인을 잘 설정 하였다는 것이 전제 조건이 됩니다.
하나의 형상을 여러 명이 동시에 작업을 해야 할 때도, 형상관리 시스템을 이용하면 사전에 작업 순서를 조정하거나, 병행해서 작업한 후 발생하는 충돌을 간단하게 해결할 수 있습니다. 또한, 과거 특정 시점의 작업 내역을 조회할 수도 있습니다.
형상관리는 형상 식별, 형상 통제, 버전관리, 배포관리 등 다양한 활동을 포함합니다.
다양한 형상관리 활둥 중에서도 버전관리, 배포관리(빌드 자동화), 변경관리는 SW 개발을 위한 기초적인 활동입니다.
버전관리에서는 형상항목의 변경 이력 관리, 동시에 다양한 버전의 형상항목 관리, 형상 항목 충돌 방지 등을 할 수 있습니다.
배포관리에서는 배포된 형상 항목 추적성을 관리하고, 버전관리 시스템에 등록된 소스 파일을 연계하여 배포 자동화를 수행 합니다.
변경관리에서는 형상항목 변경요인 등록, 변경요인에대한 변경된 형상항목 추적관리, 형상 이력의 분석을 통한 SW 상태 모니터링을 하게 됩니다.
□ 형상관리 활동
SW 변경 주요 원인을 SW 생명 주기 동안 효과적으로 관리하는 활동
일반적으로 형상 식별, 변경 관리 및 통제, 버전 및 배포관리, 감사 및 보고 활동으로 이루어져 있음
- 형상 식별 : 형상 관리를 할 항목을 식별하는 것
- 형상 제어 : 형상에 대한 변경 요청이 있을 경우, 변경 여부와 변경 활동을 통제하는 것
- 형상 상태 보고 : 형상 변경에 대한 내용을 기록하고 보고 하는 것
- 형상 감사 : 형상 항목이 요구사항에 맞도록 잘 변경 되었는지 확인 하는 것
▷ SW 형상 식별
형상항목을 식별하고, 버전에 대한 식별 스키마를 수립하며, 항목을 획득하고 관리하기 위한 도구 및 기법을 정의
형상항목 식별은 SW에 대한 변화를 제어하기 위한 첫 단계로, 이는 시스템 형상에서 SW 형상을 파악한후, SW 형상 항목을 식별하여 SW 형상 항목에 대한 라벨링 전략을 개발하고, 항목들 사이의 관계를 정의
※ 참고 및 인용