품질 (프로젝트 성공률 1% 높이기)

품질!

품질은 제품의 가치를 나타내는 척도로 제품/서비스가 그 목적을 만족시키는가의 여부를 결정하기 위한 평가의 대상이 되는 고유한 특성을 말한다. 이에 대한 정의들이 꽤 많은 편인데 IEEE에서는 주어진 요구사항을 만족시킬 수 있는 SW의 기능과 특성을, ISO/IEC 9126에서는 명시적이나 묵시적인 필요를 만족시키는 능력과 관련된 소프트웨어 특성 및 특징을 말한다. 
 
그래서 품질 또한 관리의 대상으로 정책을 가동하고 있으며 측정과 더불어 명확한 목표를 가지고 제시된다. 이러한 품질목표는 제품과 프로세스에 대한 의미가 모두 내포되어 있다. 제품 측면에서는 고객의 제품 품질 요구사항을 식별하고 프로세스 측면에서는 프로젝트에 적합한 수행 공정을 정의한다. 
 
 
🚩소프트웨어 품질
 :  소프트웨어 프로젝트에서는 수명주기에 따라 개발 초기 프로젝트의 특성과 품질 요구사항을 철저히 파악하여 품질목표를 설정하고, 개발단계에서는 이 충족 여부를 그리고 운영단계에서는 사용 중 품질을 점검하게 된다. 이는 개발 완료 상태에서의 평가만으로는 소프트웨어의 신뢰성과 안정성을 보장할 수 없고 개발이 완료된 상태에서의 개선은 개발에 투입된 것 이상의 시간과 비용이 발생하기 때문이다.
 
소프트웨어는 수명주기와 맞물려 품질을 다룬다. 구현단계에서는 디버깅을 통한 증명을, 상세설계/시험 단계에선 테스트를 통한 검증(Verification)을, 기본설계/통합테스트 단계에서는 품질관리를 통한 확인(Validation)을, 요구분석/인수테스트 단계에서는 품질보증을 통한 인증(Certification)을 한다.
 
이러한 활동에는 비용이 발생하기 마련이다. 이 품질비용은 사용자 요구사항 수준을 고려하여 적정 비용 선을 설정하며 크게 예방비용, 평가비용, 실패비용으로 분류하고 관리한다. 이를 통해 총 품질비용과 최적의 품질수준을 찾아낸다.
 
🚩프로세스 품질
:  제품에만 집중되어 있던 품질은 프로세스 관점에서 높은 품질 수준을 유지하기 위한 중요성을 인식하면서 관심이 높다. 제대로 된 프로세스는 높은 품질의 제품생산 확률이 증가한다는 것은 알기 때문이다. 이에 대한 연구는 CMM/i, SPICE, Bootstrap 기법 등 여러 가지며 프로세스 품질에서 중요한 개발 방법, 도구 적정 여부, 표준 적용 및 관리과정의 적정성을 상세히 다루고 있다.
 
♾️ ISO9000 시리즈: ISO9000-1(품질경영/품질보증 표준), ISO9001(설계/개발/생산/서비스 품질보증), ISO9002(생산/설치 품질보증), ISO9003(최종 검사/시험 품질보증)
 
♾️ ISO/IEC 12207: 소프트웨어 생명주기 내 품질 활동을 5가지 기본 프로세스와 8가지 지원프로세스, 4가지 조직 프로세스로 구성
♾️ CMM/i: 소프트웨어 프로세스 실행 수준을 성숙시키기 위한 능력 심사와 결과에 따른 프로세스 개선 도구로 활용하며 초기 – 관리 – 정의 – 정량적 관리 – 최적화 5단계로 성숙도를 관리
♾️ ISO/ICE 15504(SPICE): ISO9000에서 프로세스 개선 활동과 성숙도 기반의 평가지침을 보완하기 위해 개발
 
🚩프로덕트 품질
: 구현된 제품의 품질로 소프트웨어 제품의 품질이 기술되고 평가될 때 적용되는 속성과 품질을 나타내는 변수들을 품질특성이라고 한다. 이를 다루기 위한 표준은 ISO/IEC 9126, ISO/IEC 14598에서 자세히 다룬다.
 
 

품질관리 프로세스

품질관리 프로세스는 품질계획 프로세스, 품질보증(QA) 프로세스, 품질통제(QC) 프로세스로 구성되며 품질시스템에서 이러한 프로세스를 거쳐 품질정책, 목표, 책임 그리고 그것의 구현을 결정을 총괄하는 관리기능 활동이다.
 
🚩품질 계획
 : 품질 표준이 프로젝트에 적절한지 식별하고 그것을 어떻게 만족시켜야 하는지를 결정한다. 이는 프로젝트 계획에서 매우 중요한 단계이며 프로젝트 계획의 다른 활동들과 병행되어 정기적으로 진행한다. 
 
🚩품질보증
: 프로젝트의 프로세스 및 산출물에 대해 검증, 확인, 검토, 감리 및 품질보증 활동을 개선하여 프로젝트 요구사항을 충족하도록 관리한다. 이는 프로젝트 품질 표준을 충족한다는 확신을 고객에게 제공하기 위해 품질시스템에서 정의된 체계적인 품질보증 활동을 하기 위함이다. 
 
🚩품질통제
:  프로젝트 작업 결과가 품질 표준에 부합하기 위해 작업 결과물이 품질 표준에 적합한지를 감시하고 불만족스러운 결과에 대해서는 원인을 제거하는 방법을 제시한다. 이때 쓰이는 도구나 기술은 보통 inspection, Pareto diagram, 표본추출검사, 원인 결과분석 등이 있다.
 
 

CMMI(Capability Maturity Model Integration)

CMMI는 2000년 미국 국방성의 지원으로 산업계와 정부, 카네기멜론대학의 소프트웨어공학 연구소(SEI)가 공동으로 개발한 CMM의 후속 모델이다. 이는 CMM의 종류가 너무 많이 생긴 문제점을 개선하기 위해 개발되었는데 여러 입장에서 각각의 모델별로 별개 적용하는 것이 아닌 전체 관점에서 적용하기 위한 툴로 보면 된다. 즉, 기존 CMM이 소프트웨어 개발모델에 한정된 것과 달리 시스템과 소프트웨어 영역을 통합하여 기업의 프로세스 개선 활동을 광범위하게 지원하는 것이 주된 특징이다. 
 
CMMI는 모델이다. 이것은 과정이 아니며 소프트웨어 개발 및 시스템 엔지니어링에서 사용 중인 것으로 입증된 일련의 조직 동작을 제공한다. 이런 방법에 모델을 사용하는 이유는 프로세스 개선 작업에는 조직 작동 방식, 필요한 기능 및 해당 기능이 상호 작용하는 방식이 필요하며 모델은 이를 충족하고 지원할 수 있기 때문이다. 이러한 모델을 사용할 때 이점이라면 의사소통에 도움이 되는 공통 프레임워크 및 언어를 제공하는 것이 가장 크다 할 수 있고 합의된 표준 제공으로 여러 불일치를 해결하는 데 도움을 줄 수 있기 때문이다.
 
 
 
 
※ 품질 책임!
얼마 전 복지시스템을 신규시스템인 차세대 사회보장 정보시스템 “행복e음”으로 교체하면서 발생한 오류로 여러 유관기관의 업무가 마비된 사건이 있었다. 그 실상이 낱낱이 밝혀지며 특정 누구 한 사람의 잘못이 아닌 이 프로젝트 참여한, 정부를 비롯한 모든 이해당사자의 안일함과 무책임함에, 한마디로 총체적 난국인 상황에 모두가 말을 잃었다. 과연 이러한 저품질 산출물은 어떻게 만들어졌고 왜 오픈을 강행했던 것인가? 정말 아무도 이 품질 상태를 보지 못한 것이었을까?