2016년 12월 23일 금요일

소프트웨어의 테스트 자동화에 대한 장단점 분석


한동안 소프트웨어의 품질을 높이기 위해 QA(Quality Assurance) 활동이 주류를 이루었다. QA 하나로 가장 주목받는 분야가 테스트라는 것은 누구도 부인하기 어려울 것이다그만큼 소프트웨어의 완성도를 확인하기 위해 중요한 활동이 테스트이고아직까지 충분한 만족도를 내지 못하는 분야이기도 하다최근에 테스트 자동화를 통해 이러한 한계를 해결하고자 노력하고 있지만끊임없는 테스트자동화 도구가 나오는 이유는 아직도 요구를 충분히 만족시키지 못하기 때문일 것이다이번 회에서는 테스트 자동화에 대해 국제대학교 김성철 교수를 만나 자세한 얘기를 들어본다.


Q: 안녕하세요소프트웨어 테스트에 대한 말들이 요새  많이 나오기 시작하는  같습니다테스트 자동화에 대해 말씀해 주시죠.

테스트는 소프트웨어 개발에 있어 없어서는 안되는 중요한 활동 중의 하나입니다소프트웨어라는 것이 처음 나왔을 때부터 지금까지쉼없이 발전하는 분야 중의 하나이기도 합니다하지만소프트웨어 테스트의 발전은 더디기만 했습니다가장  이유는 소프트웨어테스트가 항상 수작업으로 이루어질  밖에 없었기 때문입니다사람이   있는 것에는 한계가 있는데 아무리 노력해도 모든 테스트 케이스를 커버하기도 어렵고일정한 테스트 수준을 유지하기도 어려웠습니다이러한 것을 보완하고자 TDD(Test Driven Development) 테스트 자동화 같은 분야들이 나오기 시작한 것이죠.

Q: TDD 대해서는 지난번 185 인사이드 이슈에서 말씀하셨는데요테스트 케이스를 개발하기 전에 만들어 개발한 코드가 정상적으로 동작하는지 미리 확인하자는 것으로 기억하고 있습니다그렇다면테스트 자동화가 소프트웨어 개발에서 필요한 이유는 무엇인가요?

소프트웨어 테스트는 소프트웨어가 정상적으로 동작하는지를 살펴보기 위해 테스트 데이터를 샘플로 만들어서 개발자가 직접 테스트를 했습니다이러한 수작업은 모든 테스트 케이스를 만들  없었고 일관된 테스트도 하기 어렵습니다그리고테스트 계획을 수립할때도 효과적인 테스트 케이스를 만들기 어렵습니다(그림1).

<그림1> 테스트의 효율성과 유효성
출처: http://www.tssg.org/

가장 좋은 테스트는 모든 테스트 케이스를 포함하고 빠르게 테스트가 가능해야 합니다그림1에서 보는 것처럼 유효한 테스트가 효율적으로 이루어져야 좋은 테스트가 되고좋은 테스트를 통해 안전한 소프트웨어를 완성할  있습니다1 테스트 자동화를 통해 얻을  있는 효과를 나타냅니다.

<1> 테스트 자동화의 효과


Analytic Database 사례



Analytic Database와 DWDB의차이점













SW 특징 - 4차 산업혁명, 품질의 중요도


Real World – 실시간 제어
교통 의료 에너지 전쟁 …
Cost of poor quality (COPQ)

• 도요타의 프리우스 16만대 리콜 2005
• 대량의 방사선 누출 사망 - Therac-25 엑스레이 1985-1987
• 소련 가스 파이프라인 사고 – 역사상 가장 큰 폭발 1982
• 화성탐사선 마리너 1호 - 4분만에 대서양 추락
• 아리안 5 로켓 40초만에 폭발 1996년
• 패트리엇 미사일 -28명의 미국 병사 사망 – 1991
• 심장박동기 오동작 – 미국 메디트로닉스사 - 1994








2016년 12월 22일 목요일

스마트 비서에 대한 동향 분석

아주 오래전 소개된 영화에서도 사람과 대화하는 컴퓨터는 많이 소개되었고이에 대한 연구도 지속적으로 이루어져 왔지만 좋은 연구결과가 나타나지는 못했다하지만최근 스마트폰뿐만 아니고 독자적인 디바이스로 스마트 비서 기능이 많이 소개되고 있다사람 목소리를 알아듣고 실시간으로 분석하여 사람이 원하는 결과를 제공해주는 스마트 비서는 IT 서비스 중에서도 가장 주목받는 분야로 주목받고 있다이번 회에서는 다양한 스마트 비서에 대해 알아보기로 한다.
스마트 기기 산업 현황
인공지능이 발달하며 기계와 인간 간에 음성으로 대화하는 시대가 현실이 됐다현대인의 필수 디바이스인 스마트폰은 음성 비서 기능탑재가 기본이 되었고스마트홈지능형 차량이나 사물인터넷에서도 음성 인식을 통한 기계와 인간의 자연어 대화 기능이 추가되고 있다.
인공지능이나 음성 인식은 70년대부터 많은 연구가 이뤄졌지만기술적 한계 때문에 불과 얼마 전까지만 해도 상상의 영역이었다컴퓨터가 인간의 음성을 인식하는 것만도 엄청난 연산 작업이 필요한 상황에서 인간의 말을 완전히 이해하여 답을 주는 것은 더욱 어려운일이었다이러한 어려움은 머신러닝(Machine Learning) 딥러닝(Deep Learning) 기술이 발달하면서 조금씩 해소되고 있다머신러닝과 딥러닝을 통해 기계가 사람의 대화 패턴목소리 높낮이자주 쓰는 단어 등을 스스로 학습하여 익힐  있게 되면서 음성 인식의정확도가 눈에 띄게 높아졌기 때문이다.

<그림1> 인공지능의 역사
 
시장 조사 기관인 스트래티지 애널리틱스(SA) AI 비서가 탑재된 정보기술(IT) 기기의 세계 판매량이 올해 180만대에서 2018 520만대, 2020년에는 1510만대까지 치솟을 것으로 예측하고 있고, KB금융지주경영연구소에서는 AI 비서 시장을 2019년에는  20억불 이상, 2024년에는 80억불 이상으로 예측하고 있다(그림2).

<그림2> AI 비서 시장 전망
출처: KB금융지주경영연구소

더보기

데이터시범 사업과 공공 데이터 기본계획


 


빅데이터 분석시스템 고려사항


빅데이터 분석시스템 패러다임변화





4차 산업혁명과 SE 중요성

초연결 사회 - 상호 호환

상호 호환 ->Open Standard

• 중립적, 비영리기구가 결정
• 의사결정 방식 – Open(누구나 투명) 민주적
• 지적재산권 - royalty-free
• 사용에 대한 제약이 없음








2016년 12월 21일 수요일

모바일 SW 개발 사례 연구 - 개발 기법

최근의 소프트웨어는 모바일을 기본으로 하고 있을 정도로 PC 기반 소프트웨어에서 모바일 기반 소프트웨어로 변화하고 있는 추세다.모바일 소프트웨어도 스마트폰의 발달로 인해 다양한 형태로 개발되고 있는데소프트웨어 개발 프로젝트에서는 어떠한 형태로 개발해야 하는지를 예산개발 기간사용자 분석 등을 통해 결정한  개발해야 한다이번 회에서는 모바일 소프트웨어의 종류와 개발 방법에 대해 살펴보도록 한다개발 방법을  이해하여 효율적인 모바일 소프트웨어 개발이 되기를 기대한다.
사례 연구 전 확인 사항

모바일 소프트웨어의 종류

모바일 소프트웨어의 종류는 네이티브 (Native app), 모바일 (Mobile web), 하이브리드 (Hybrid app)  3가지가 있다네이티브 앱은 모바일 운영체제에 따라 프레임워크가 선택되고 그에 맞춰 소프트웨어 개발이 이루어지기 때문에 디바이스에 최적화된 소프트웨어를 만들  있지만 해당 모바일 운영체제 외에서는 구동되지 않는다모바일 웹은 모바일 디바이스 안에 있는 브라우저를 통해 구동되기 때문에 모바일 운영체제와 상관없이 구동 되지만 브라우저가 지원하지 않는 기능은 구현되지 못한다하이브리드 앱은  두가지를 모두 지원하는 방식이다(그림1). 단순히 생각하면무조건 하이브리드 형태로 하는 것이 나을  싶지만 만들고자 하는 모바일 소프트웨어의 특성을 고려해 정하는 것이 좋다.

<그림1> 네이티브 앱과 하이브리드 앱의 개발 방식
출처: http://www.codejs.co.kr/mobile-web/

 외에도 기술적으로는  앱이지만, UI/UX 네이티브 앱으로 구현하여 겉으로 보이기에는 네이티브 앱으로 보이도록  모바일 (Mobile web app) 있다.
모바일 소프트웨어의 장단점
 모바일 소프트웨어는 개발 방식에 따라 장단점을 가지고 있다그림2 디바이스의 기능 액세스속도개발 비용스토어 활용개발 프로세스 별로 구분하여 나타내고 있다종합적인 부분을 살펴본다면 하이브리드 앱이 효율이 높은 것으로 나타나고 있다.

<그림2> 모바일 소프트웨어의 부문별 효과
출처: http://www.scribd.com