2015년 8월 14일 금요일

ALM의 성공을 위한 8가지 SW품질척도

소프트웨어 품질 척도(Software Quality Metric)는 요구 사항(Requirement), 설계(Design), 개발(Development), 테스트(Testing), 릴리즈 관리(Release management), 애플리케이션 유지 보수(Application maintenance)에 이르는 ALM(application life cycle management, 애플리케이션 생명주기관리)의 모든 단계에 유용하게 쓰입니다. CIO 및 고위 관리자들은 적합한 소프트웨어 품질 척도 툴을 선택해 소프트웨어 개발 단계를 효율적으로 운영하는 것이 필요합니다.

  • CIO 및 고위 관리자들은 각 단계마다 다양한 품질 척도를 적용하고 있음 . 그러나 너무 많은 척도들을 수집 , 분석 , 실행하는 것은 시간낭비이자 실행 불가능한 일
  • 요구사항 및 설계 (Requirements and design) 단계의 품질 척도
  • 개발 (Development) 단계의 품질 척도
  • 테스팅 및 릴리즈 관리 (Testing and release management) 단계의 품질 척도
  • 유지보수 (Maintenance) 단계의 품질 척도

안전필수시스템 ( 무인비행체 OFP) SW 품질개선 사례

무인비행체 (UAV: Unmanned Aerial Vehicle) 는 최근 다양한 분야에서의 활용이 기대되는 실시간 임베디드 시스템입니다 . 이미 군사적 목적으로는 다양한 UAV 가 실전배치 되어 있으며 , 방송 중계 및 실시간 방재 용으로도 다양하게 개발되고 있습니다 . 정보통신부 ITRC (IT Research Center) 인 UAV & SW Fusion Research Center ( 과제책임자 : 건국대 김두현 교수 ) 는 “ 무인헬기를 이용한 IT 기반 실시간 방재 및 IT 서비스 실현 “ 을 목표로 2012.02 성공적으로 종료되었습니다 . 본 투고에서는 무인헬기의 제어 SW (OFP: Operational Flight Program) 의 품질을 향상 및 보장하기 위하여 적용한 다양한 SW 공학 및 V&V (Verification & Validation) 기법들을 소개합니다 .

Ⅰ . 무인비행체 OFP 개요
OFP 는 무인비행체의 실시간 임베디드 제어 소프트웨어로서 무인비행체에 내장된 하드웨어 / 센서 및 지상 제어기와의 통신을 제어하는 중요한 소프트웨어입니다 . 다음의 <그림 1> 은 OFP 의 구성 및 주된 데이터 흐름을 보여줍니다 .
<그림 1>


Ⅱ . OFP V&V 계획

  • 정형 모델링 및 검증
  • 역공학
  • SW 테스팅


Ⅲ . OFP V&V 수행 결과

  • 정형 모델링 및 검증
  • 역공학
  • SW 테스팅


오픈소스 소프트웨어 활용을 통한 소프트웨어 개발 프로세스 변화

소스코드를 무료로 공개, 배포하는 오픈소스 소프트웨어(OSS; Open Source Software)는 단순히 미리 만들어진 소프트웨어를 사용한다는 개념으로 해석할 수 있지만 최근에는 OSS로 인해 소프트웨어를 개발하는 모습 자체가 변하고 있습니다. 옵션으로 생각되던 OSS가 반드시 살펴봐야 하는 필수요소로 자리잡고 있습니다. 

 OSS는 무조건 공짜라고 알고 있는 사람들도 많습니다. 하지만 OSS는 무료 소프트웨어인 프리웨어(Freeware)와는 다릅니다. 사용자가 소스에 접근하고 사용, 수정, 재배포가 자유스럽다는 것이 OSS의 특징입니다. 최근에는 기술지원을 포함하는 상업용 OSS도 늘어나고 있어, 커뮤니티 등을 활용하여 특정 OSS를 유지 관리하는 사용자와 개발자 그룹이 존재하기도 합니다.

 프로젝트 초기 단계의 개발 트랜드 변화

 지금도 소프트웨어를 개발할 때 가장 중요한 요소를 꼽으라고 한다면 대부분은 우수한 역량의 개발자를 꼽을 것입니다. 완벽한 소프트웨어를 만들기 위해서는 개발자의 역량이 무엇보다 중요하기 때문입니다. <그림1>에서 절차 ①을 보면, 개발자는 요구사항을 접수해서 소프트웨어를 설계하고 개발합니다. 이 프로세스가 소프트웨어를 개발하는 일반적인 프로세스입니다. 이러한 프로세스는 소프트웨어가 완성될 때까지 개발자에게 대부분의 권한을 위임합니다.

 개발자들은 개발 초기에 불명확한 요구사항 때문에 매우 많은 시간을 소비하고, 소프트웨어의 틀을 잡기 위해서 초기 코딩 시간도 매우 긴 편입니다. 프로젝트의 모든 것을 살피고 개발도 잘하는 슈퍼맨이 필요하다는 것도 이 때문이라고 할 수 있습니다. ②를 살펴보면, 개발하기 전에 OSS를 검토하는 것으로 되어있습니다. 소프트웨어는 항상 새로운 것을 개발해야 할 것 같지만, 매우 특이한 기능도 미리 개발된 경우가 많습니다. 왜냐하면 많은 사람들이 동일한 방법으로 쉽게 사용하도록 만든 것이 바로 소프트웨어이기 때문입니다. 따라서 원하는 기능을 OSS에서 찾는 경우가 많다고 OSS 경험자들은 얘기하고 있습니다.

<그림1> 오픈소스 활용 시점











이제 OSS는 피해갈 수 없을 만큼 양도 많아지고 사용 횟수가 많아지면서 질도 갈수록 높아지고 있습니다. 현재는 개발 후에 OSS에 문제가 없는지 검증만 해보고 있지만, 개발 전에 OSS를 검토하고 개발에 활용한다면 개발자의 초기 부담이 현저히 줄어들 것입니다. 또한 검증된 OSS를 활용함으로써 오류가 줄어들어 소프트웨어의 신뢰도는 매우 높아질 것입니다. 소프트웨어 개발자에게 OSS 활용 역량을 강조해야 하는 이유입니다.

<그림2> 독점 소프트웨어와 OSS 개발방법론