2016년 12월 27일 화요일

Predicting Quality Assurance with Software Metrics and Security Methods


참석자
Will Hayes - Principal engineer in the SEI’s Software Solutions Division
(the Carnegie Mellon University Software Engineering Institute)
Carol Woody - Ph.D., Technical manager of CERT Cybersecurity Engineering Group
요약
오늘 우리가 이야기할 것은 소프트웨어 매트릭스와 보안 방법을 써서 품질 보증을 예측하는 것이다.
우리는 핵심 분야에 대해 개발 방법과 관행을 가지고 개발해 왔습니다. 보안 유지 요구 사항, 소프트웨어 위험 관리 및 공급망 위험 관리는 이러한 것의 세 가지 주요 영역이다. 많은 질적인 조치를 취하고 있지만 실제로 이 영역을 심각하게 관리하기 시작하는 정량적 메커니즘을 확립하는 것은 매우 어렵다.
보안 취약점과 품질 결함 사이의 연결을 알아낼 수 있었다. 주로 다양한 유형의 소프트웨어 전반에 걸쳐 결함 밀도를 추적하는 관점에서 “Capers Jones”가 많은 측정 기준을 가지고 있다.
결점의 1에서 5 %가 실제로 취약성이거나 취약성으로 간주되어야 한다. 매우 제한된 데이터 밖에 없는데 보안 데이터를 공유하려는 사람은 거의 없다. 이러한 데이터는 주로 운영 체제와 연결되어 있다. 이 데이터를 얻기 위해 실제로 상세한 자료를 가지고있는 약 100 개의 프로젝트 정도의 프로세스를 연구했다. 그 중에서 훌륭한 보안 및 안전 결과를 100 개 프로젝트 중 5 개 프로젝트를 식별 할 수 있었다.
중요한 보안 분석과 관행이 라이프 사이클 전반에 걸쳐 연계되어 있음을 확인했고, 초기에 취약점을 포착한 다음 시스템이 설치되기 훨씬 전에 오랫동안 해결하도록 했더니 매우 좋은 운영 결과를 얻을 수 있었다.
다소 적은 데이터 세트라도 최소한의 보안 분석 방법과 관행을 사용하여 높은 상관 관계를 증명할 수 있었고 라이프 사이클 전반에 걸친 취약성 해결이 가능했다.

핀테크 시장에 대한 소프트웨어 개발 업체의 대비 방향


미국에서는 20여년 전에 인터넷 전문은행이 생겼지만 우리나라는 금년말에 케이뱅크가 본인가를 받았고 한국카카오뱅크가 본인가를 신청한다. 은행권은 돈을 다루는 서비스이기 때문에 가장 보수적인 산업으로 잘 알려져 있어 다른 산업과 달리 ICT 기술을 접목시키는데 많은 시간과 어려움이 있었다. 최근에는 핀테크(Fintech; Finance Technology)라는 기술로 새로운 금융 서비스 시대를 열고 있는데, 이번 회에서는 핀테크 시장에 대비하여 소프트웨어 개발 업체는 어떤 준비를 해야 하는지 금융권 프로젝트 PM으로 있는 로만소프트 이영환 대표와 ㈜웹케시 박해윤 박사와 함께 얘기를 들어본다.

Q: 안녕하세요. 핀테크에 대해 많은 말들이 오가고 있지만 정작 핀테크에 대한 의미나 범위는 한가지로 정리되는 것은 아닌 것 같습니다. 핀테크에 대한 정의를 먼저 해주시죠.

저희도 다양한 자리에서 핀테크에 대한 얘기를 하다 보면, 서로 다른 생각을 가지고 얘기하는 경우가 종종 있습니다. 아마도 핀테크의 영역이 그만큼 넓기 때문이지 않을까 싶은데, 아마도 ICT 기술을 잘 모르는 금융권에 너무나 많은 기술들이 한꺼번에 접목되면서 생각할 수 있는 의미나 범위가 더 많은 것이 아닐까 싶네요.
그래도, 핀테크에 대해 한마디로 정리를 하자면, 기존에 있던 금융 서비스 방법을 ICT 기술로 바꾼다는 것이겠죠. 그림1에서 보는 것처럼, 금융권에서 서비스하는 지금/결제, 송금, 대출, 자산관리 등을 ICT를 통해 서비스 하는 것입니다. 최근에 많이 확산되고 있는 모바일 페이먼트의 경우도 신용카드 서비스를 ICT인 스마트폰으로 할 수 있는 것처럼 말이죠.

<그림1> 핀테크의 사업 영역
출처: IPnomics

Q: 인터넷 뱅킹이나 모바일 뱅킹 같은 서비스는 이전에도 많이 해왔던 것들인데 핀테크라는 이름으로 대신하는 것인가요?

그렇지 않습니다. 앞에서 말씀드린 것은 단순히 서비스 측면만 말씀드린 것입니다. 은행이나 신용카드 회사 등을 통해 받던 서비스를 ICT로 활용하는 방법이 바뀌는 것이고요. 서비스 방법을 바꾸기 위해서 필요한 많은 ICT 기술이 있는 것입니다.
그림2는 S사의 페이먼트 관련 아키텍처를 나타내고 있습니다. 페이먼트 서비스 하나를 추가하면 그림과 같이 수많은 ICT 기술이 들어가야 합니다. 페이먼트 서비스를 위해 SMS도 자동 발송되도록 해야 하고 페이먼트 정책은 어떻게 만들고 처리해야 하는지도 고민해서 관리해야 하고, 외부 업체와 연계는 어떻게 되어야 하는지도 생각해야 하죠. 기존 SI 시스템 구축하는 것과 별반 다르지 않습니다.

<그림2> S사의 역할 기반 Multi-Tenant Architecture


모바일 SW 개발 사례 연구 - 품질/테스트


최근 몇 년 사이에 스마트폰의 급격한 증가와 함께 다양한 모바일 소프트웨어가 늘어나고 있고, 상당수의 컴퓨팅 작업들도 스마트폰에서 실현되고 있다. 이러한 이유로 모바일 소프트웨어 사용자의 요구사항이 늘어나고 있으며 요구사항을 반영하기 위한 설계, 개발 기법이나 품질, 테스트 기법들의 필요성도 함께 요구되고 있다. 이번 회에서는 모바일 소프트웨어의 품질과 테스트 방법에 대해 살펴보도록 한다. 품질 확보를 위해 고려해야 하는 테스트 방법을 잘 이해하여 효율적인 모바일 소프트웨어 개발이 되기를 기대한다.

사례 연구 전 확인 사항

모바일 소프트웨어의 개발 환경과 품질 체크 포인트


매우 빠른 트렌드 변화를 보이는 모바일 소프트웨어가 성공하기 위해서는 기존의 소프트웨어 개발 방식이 아닌 모바일만의 개발 환경의 특징을 고려하는 것이 중요하다. 거의 유사한 OS와 해상도에서 구동되는 PC 기반 소프트웨어와는 달리 모바일 소프트웨어는 다양한 플랫폼과 해상도에 맞춰 개발해야 하기 때문에 개발자의 많은 노력과 시간이 요구된다.
모바일 소프트웨어는 마우스와 키보드 없이 사용자와 인터페이스를 해야 하기 때문에 UI/UX 관점의 검토도 필요하지만 모바일 소프트웨어에서 가장 주목해야 할 것은 비즈니스 환경이다. 하루에도 수많은 모바일 소프트웨어가 등록되기 때문에 짧은 시간 안에 개발해야 하고, 품질 측정과 테스트도 빠른 방법이어야 한다. 그림1은 앞에서 설명한 내용을 바탕으로 모바일 소프트웨어의 특징을 7가지로 나타내었다.


<그림1> 모바일 소프트웨어의 특징
출처: Design of Quality Evaluation Model for Mobile Application


모바일 소프트웨어의 개발 시간을 줄이기 위해서는 개발이 필요한 부분만 신경 쓸 수 있도록 개발 환경을 표준화 하는 것이 좋지만 대부분의 개발자들은 각자의 방식으로 개발 환경을 구축하여 소스 코드가 잘못 관리되거나 약간의 개발 환경 변화에도 이전에는 발생하지 않던 오류가 나타나기도 한다. 표준화 된 개발 환경은 개발 효율성을 높이기 위해 필요하다는 것을 잊으면 안된다.