2015년 9월 3일 목요일

모바일 html5를 통한 소프트웨어 개발 기술 변화

특별한 OS나 프로그램을 설치하지 않아도 브라우저만 있으면 동작하는 html 기반인 html5는 html에서 제공되는 기능에 다양한 그래픽과 멀티미디어 효과는 물론 액티브엑스(ActiveX)를 설치해야만 가능하던 기능까지 지원이 가능합니다. 이러한 이유로 html5를 활용한 웹 사이트와 어플리케이션들이 많이 만들어지고 있지만, html5의 파급 효과는 다른 곳에서 찾을 수 있습니다. 바로 모바일 플랫폼의 특성을 타지 않는다는 것입니다.

모바일 시장을 양분하고 있는 iOS와 안드로이드, 그리고 그 뒤를 쫓고 있는 MS는 상호 호환성이 제로이기 때문에 어플리케이션을 만들 때는 (PC 시장과 마찬가지로) 모바일 플랫폼을 선택해야 합니다. 하지만 (PC 시장과 마찬가지로) html을 활용하면 이러한 제약이 없어집니다. 브라우저를 통해 다양한 플랫폼에서 서비스를 제공할 수 있기 때문입니다. PC 시장에서 다양한 어플리케이션 개발 환경이 있었지만 웹 어플리케이션으로 통일되었던 것처럼 모바일 시장에서도 비슷한 과정을 따를 것으로 예상되고 있습니다. 이번 회에서는 PC 기반의 웹 환경에서 모바일 환경으로 변화하는 것에 따른 html5의 기술 구성과 모바일에서 높은 성능을 발휘하는 활용법에 대해 살펴보도록 합니다.

동적 임베디드 소프트웨어 테스트와 카 인포테인먼트 시스템 테스트 적용 성과

임베디드 소프트웨어는 ‘ 실시간 보증 , 자원 부족 , 런 - 타임 테스트 , 운용 환경 보존 ’ 과 같이 테스트 제약이 심한 환경에 배치되기 때문에 테스트가 쉽지 않습니다 . 본 논문에서는 운영체제가 프로세스 제어를 목적으로 관리하는 프로세스 제어 블록을 해킹함으로써 테스트 정보를 수집하는 동적 임베디드 소프트웨어 테스트 방안을 제안합니다 . 현재 ‘ 메모리 , 성능 , 프로세스 간 통신 ‘ 을 테스트하는 자동화 도구인 AMOS 를 개발하였고 , AMOS 는 자동차 산업의 카 인포테인먼트 시스템의 실차 테스트에 적용되어 품질 향상과 개발 비용 절감의 효과를 보이고 있습니다 .

소프트웨어 테스트는 개발 방법론이나 제품의 특성에 따라 개발 초기부터 개발 단계의 목적과 테스트 환경에 맞추어 차별화된 방법으로 이루어져야 합니다 . 테스트는 개발 산출물에 대한 리뷰 및 소스 코드 분석과 같은 정적 테스트 방법과 소스 코드를 실행하면서 하는 동적 테스트 방법으로 구분합니다 . 정적 테스트와 동적 테스트는 서로 보완적이어서 어느 하나가 다른 것을 대체할 수 없습니다 [Broekman et al., 2003]. 동적 테스트는 테스트 대상의 범위에 따라 단위 , 통합 , 시스템 테스트로 세분화되며 , 소스 커버리지가 95% 이상 되도록 단위 테스트를 면밀히 해도 통합 및 시스템 테스트를 피할 수는 없습니다 . 임베디드 소프트웨어의 경우 이뮬레이터 , 레퍼런스 보드 , 실제 타겟의 테스트 수행 환경에 따라서도 그 방법이 차이가 납니다 .

일반적으로 임베디드 시스템은 제한된 자원으로 최적의 성능을 위하여 제작되기 때문에 시스템을 구성하는 하드웨어와 소프트웨어들의 결합력이 매우 높습니다 . 높은 결합력 때문에 일부 소프트웨어만 독립적으로 테스트하기 힘들며 , 시스템 기능을 부분적으로 확인하기 위한 단위 , 통합 테스트가 쉽지 않습니다 . 특히 단위 , 통합 레벨의 동적 테스트는 테스트 드라이버나 상대 컴포넌트를 대신할 시뮬레이션 장비를 갖추어야 하는 경제적 어려움도 있습니다 . 따라서 많은 산업현장에선 소스코드 분석과 같은 정적 테스트 후 , 단위 및 통합 테스트를 생략하거나 비전문적으로 테스트를 수행한 후 , 실제 타겟에서 전체 시스템에 대한 동적 테스트에 집중합니다 [SEC, 2004].

문제는 최종 테스트 단계인 타겟에서의 동적 테스트에서 발견된 결함은 그 원인과 위치를 파악하는 데 수 많은 시간과 비용이 소모된다는 점입니다 . 본 논문에서는 시스템이 타겟에 배치되어 실제 운용되는 환경에서 탑재된 모든 소프트웨어 및 하드웨어 컴포넌트들이 시스템의 품질 요구사항에 맞춰 올바르게 동작하는 가에 대한 동적 테스트와 동시에 결함의 원인과 위치 파악을 자동화한 동적 임베디드 소프트웨어 테스트 방안과 이를 구현한 AMOS 도구를 제안하고 이를 산업체 적용한 결과 및 경제적 효과를 소개합니다 .

애자일 SW개발을 향상시키는 클라우드 컴퓨팅의 6가지 장점

클라우드 컴퓨팅과 가상화로 가상머신을 활용하여 프로젝트관리, 이슈관리, 자동화 테스트가 가능한 소프트웨어 빌드를 클라우드 기반의 서비스로 이용할 수 있습니다. 이를 활용하는 애자일 개발팀은 물리서버의 한계 극복, 업무의 병렬처리, 혁신활동 고취, 신속한 업무처리 등의 6가지 장점들로 프로젝트를 잘 수행할 수 있을 것으로 기대합니다.

1. 클라우드 컴퓨텅으로 테스팅, 스테이징 서버(staging server)를 무한히 제공 가능
2. 애자일 개발 업무를 병렬 처리할 수 있음
3. 혁신과 실험 정신이 장려됨
4. 지속적인 통합/인도(Delivery)가 강화됨
5. 많은 개발 플랫폼과 외부 서비스를 이용할 수 있음
6. 코드 분기와 병합이 쉬어짐

가상화와 클라우드 컴퓨팅으로 개발과 테스트에 사용되는 물리  서버의 한계에서 벗어날 수 있습니다.
가상화와 클라우드 컴퓨팅은 지속적인 통합/인도를 하려는 애자일팀에게는 필수입니다.
추가적인 서버 공급 때문에 발생되는 시간지연이 사라져 기존은 단계적인 업무진행방식이 좀 더 병렬적으로 바뀝니다.
결국 회사는 비즈니스 목적에 맞는 혁신적인 개발 프로젝트를 손쉽게 추진할 수 있습니다.

2015년 9월 2일 수요일

보안테스트 기법의 효율적 대안 'Hybrid Smart Fuzzing'

소프트웨어 기술의 발달로 일상생활에서부터 금융이나, 의료, 공공 기관 까지 사회 전반에 거쳐 많은 IT 솔루션들이 출시되고 있습니다. 그러나 이렇게 제공되는 서비스의 질과 양이 증가하고 다양해짐에 따라, 이를 위협하는 공격 또한 비례적으로 증가하고 있는 추세입니다. 실제로 2014년 4월에 보안 패치 이전의 보안취약점을 활용한 OpenSSL HeartBleed 제로데이 공격과, 2010년 7월의 이란 원자력 발전시설을 공격한 Stuxnet, 2011년 미국의 에너지 기업을 공격한 나이트 드래곤 등이 그 예입니다. 이와 같이 기업이나 공공 기관의 데이터를 탈취하기 위하여 지속으로 취약점을 공략하는 APT공격, 2010년 Paypal 사이버 공격과 같이 항상 외부에 노출되어 있어 공격의 대상이 되는 웹 사이트 공격 등 많은 서비스들이 SW 자체 보안 취약점으로 공격을 당하고 있습니다. 이에 대한 해결책은 어떤 것들이 있는지 엔키소프트의 이승한 개발 팀장 의견을 들어보았습니다.

Q. 현재 사이버 보안 취약 위험은 어떤 수준인가요? 

미국의 정보 기술 연구 및 자문 회사인 Gartner의 보고서에 따르면, SW 보안사고의 75%는 취약점을 가지고 있는 응용프로그램에서 발생한다고 합니다. 보안, 스토리지 솔루션회사인 Symantec의 보고서에 따르면 2012년 한해 동안 발견된 취약점이 5,291개에 이를 정도입니다.

Q. 제목에서 언급하신 Hybrid Smart Fuzzing도 그 중 하나인가요? 

 예. ‘퍼징’은 이러한 노력 중 취약점을 발굴하기 위한 방법으로 1989년에 Wisconsin-Madison 대학의 Barton Miller 교수 연구실에서 개발된 일종의 SW 보안 테스트 기법입니다. 무작위로 SW에 데이터를 입력하여 에러가 발생하는 경우를 탐지함으로써 취약점을 검출할 수 있습니다. 그러나 무작위로 도출된 입력 값 기반의 퍼징은 특정 취약점에 대한 도출이 어렵고, 많은 시간을 소모하는 문제점이 있습니다.

보안 소프트웨어 시장과 시큐어 코딩

보안 소프트웨어(security software)는 컴퓨터 시스템이나 컴퓨터 네트워크를 침해해서 승인 받지 않고 자원을 사용하는 것을 막아주는 컴퓨터 프로그램 혹은 라이브러리를 말한다. 이것은 컴퓨터 보안(computer security)과 네트워크 보안(network security)으로 구분할 수 있t습니다.

한국IDC의 예측에 따르면, 국내 보안 소프트웨어 시장은 향후 5년간 연평균 7% 성장이 전망됩니다. 2014년 대비 7.6%로 성장하여 3,386억원을 기록했는데, 2019년에는 4,940억원 규모에 이를 것으로 내다봤습니다. 현재는 지능화된 SIEM이나 ESM(Enterprise Security Management)등과 같은 보안과 취약점 관리(SVM: Security & Vulnerability Management)등과 같은 보안과 취약점 관리(SVM: Security & Vulnerability Management)분야에서 약 13%대로 가장 큰 폭의 성장을 나타냈습니다. 특히, SIEM솔루션이 주목을 받으면서 기업의 보안 투자가 늘어난 것으로 보입니다.


19th SW Quality Insight Conference



2015년 9월 1일 화요일

동시 테스팅을 이용한 애자일 방법론의 스크럼 기반 개발 프로세스

애자일 개발 프로세스에 대해 제품의 품질을 높이며 동시에 시간의 낭비를 줄이는 방법으로 동시 테스팅을 이용한 스크럼 기반 개발 프로세스를 제안합니다 . 개발 프로세스 중심의 스크럼 조직 내에 테스트 엔지니어의 역할을 정의하고 , 테스트 설계 , 테스트 코드 개발 , 테스트 수행 및 스크럼 팀 간의 통합 관점에서 커뮤니케이션 및 이슈 관리를 수행하도록 하였습니다 . 이를 통해 결함생명주기의 지연시간이 줄어들고 , 릴리스 이후 결함이 감소하여 품질이 향상되었음을 확인하였습니다 .

애자일 방법론은 XP(eXtreme Programming), 애자일 모델링과 같은 실천 방법 중심의 접근 방식과 스크럼과 같은 프로젝트 관리 중심의 접근 방식으로 나눌 수 있습니다 . 이는 두 가지 접근 방식이 상호 보완적이라는 것을 의미하며 , 스크럼을 채용한 프로젝트가 XP 에서 제시한 실천 방법을 사용할 수 있다는 의미입니다 . 이를 위해 애자일 프로젝트 수행 시에 적용 조직과 프로젝트 특성에 맞는 상황과 제약사항 등을 파악하여 적절한 실천방법들이 조합될 수 있으며 , 계획 중심의 방법론과 같은 전통적인 방법론과도 하이브리드 화되어 사용되고 있는 추세입니다 .

M. Poppendieck 은 제조업의 낭비 유형 7 가지에 견주어 소프트웨어 개발의 7 대 낭비 유형으로 미완성 작업 , 가외 프로세스 , 가외 기능 , 직무 전환 , 대기 , 이동 , 결함 등으로 정의하였습니다 . 스크럼 개발 방법을 기준으로 낭비 요소 측면에서 주요 이슈를 살펴보면 , 타임박스 안에서 수행이 완료되지 않거나 , 결함으로 인한 재 작업은 다음 개발 차수 ( 스프린트 ) 에 반영하여 재 계획하기 때문에 실질적으로 낭비 요소를 줄이거나 예방할 수 있는 방법은 아닙니다 . 이를 해결하기 위해 공통적인 설계 , 관리 기능을 모아 스크럼의 스크럼 (Scrum of scrum) 팀을 구성하는 경우도 있지만 , 스크럼 프로세스와 중복이 불가피하기 때문에 가외 프로세스로 인한 낭비 요소가 될 수 있습니다 . 특히 , 스프린트 이후 발생하는 결함은 변경의 영향의 범위가 넓고 , 궁극적으로 제품 출시일의 지연으로 연결될 가능성이 높아 위험합니다 .