2015년 9월 30일 수요일

고신뢰 융합SW를 위한 필수 SW공학기술 연구용역 보고서 소개

안녕하세요.
SW공학센터의 조지만입니다.

 고신뢰 융합SW를 위한 필수 SW공학기술 연구용역 보고서를 소개하기 위하여 블로그에 글을 씁니다.

 이 보고서는 2012년도 경기대학교 권기현 교수님과 작업한 것으로 고신뢰 융합SW를 개발하기 위하여 필요한 SW공학기술이 무엇인지에 대하여 연구한 보고서입니다. 이 보고서는 고신뢰 융합 SW 개발을 위한 필수 SW공학기술을 조사하여 산업현장에서 쉽게 참조할 수 있는 가이드 개발을 목적으로 진행하였습니다.

이에 기능 안전성에 관련된
  • IEC 61508(일반 산업 분야 국제 표준)
  • ISO 26262(자동차 산업 분야 국제 표준)
  • DO-178B(항공 분야 국제 표준)
  • IEC 60880-2(원자력 분야 국제 표준) 
등에 표준의 내용을 간략하게 확인 할 수 있습니다. 그리고 고신뢰 융합SW를 위한 국내외 접근 전략 및 주요 도구를 보실 수 있습니다.

 특히 이 보고서는 각각 영역별 기능 안전성에 특화된 SW공학기술을 기술하는 것보다는 고신뢰 융합SW이면 가져야 할 SW공학기술이 무엇인지를 파악하는데 중점을 두고 있습니다. 아래의 그림을 보면 각각 영역별 프로세스 입장의 기능안전에 관련된 표준들과 이를 공통으로 정리한 "공통 개발 프로세스"를 확인하실 수 있습니다.


 또한 "공통 개발 프로세스"를 기준하여 필요한 SW공학기술을 정리하였습니다. (아쉽게도 기술에 대한 자세한 정리는 부족합니다. 그래도 고신뢰 융합SW를 개발하는데 있어 어떤 기술이 있는지를 한 눈에 알 수 있는 자료입니다.)



 마지막으로 이렇게 정리된 SW공학기술 중에 중요한 기술에 대해서는 간략하게 설명을 정리하고 있습니다. 정리된 공학 기술은 다음과 같습니다.

  • 결함 트리 분석 (Fault Tree Analysis)
  • 분할 아키텍처 (Partitioning Architecture)
  • 다중 버전 프로그래밍 (N-Version Programming)
  • 방어적 프로그램밍 (Defensive Programming)
  • 구조적 테스팅 (Structural Testing)
  • 정적 분석 (Static Analysis)
  • 모델 검증 (Model Checking)
(사실 이 부분에 더 많이 정리 되었으면 좋았을 것이라고 생각하고 있습니다. 그러나 늦은 밤까지 열심히 정리해 주신 연구원님들께는 다시 한번 더 감사합니다.)

 이 보고서가 2012년 보고서라 현재 고신뢰 융합 SW를 위한 SW공학 기술에 대한 최신 버전은 안입니다. 그러나 영역별 기능 안전성 표준에 대하여 간단히 파악할 수 있으면 이에 따른 공통된 SW공학기술을 이해하는데 있어 커다란 도움을 줄 수 있는 주요한 가이드임은 틀림 없습니다. 이 보고서가 SW 기능 안전성 관련 개발하시는 개발자 분들에게 많은 도움이 되길 기원합니다.

보고서 받기->



아...그리고 추가로 관련 자료를 공부하셨으면, 실제 사례를 보고 싶지 않으신가요?
저희 SW공학센터에서는 고신뢰 융합SW에 관련된 컨퍼런스 (SW 안전성 컨퍼런스)를 10월 21일에 합니다. 관심있으신 분들의 많은 참여 부탁 드립니다.

SW안전성 컨퍼런스 안내 보기 ->


[Poll] 소프트웨어 개발 강자는 누구인가?


2015년 9월 26일 토요일

데이터에 생명을 불어넣는 10가지 데이터 시각화 툴

단순한 차트에서부터 복잡한 맵과 정보그래픽(infographic)에 이르기까지   데이터를 시각화를 위해서는 유용한 툴들에 대한 이해가 필요합니다. 여기 소개된 대부분의 툴들은 무료로 이용할 수 있으며, 이미 많은 사람들이 사용하고 있음. 정보의 시각화를 통한 이해도, 유용성 제고를 위해 개인정보에서부터 기업과 정부의 빅데이터에 이르기까지 현재 널리 쓰이고 있는 10가지 데이터 시각화 툴을 소개합니다.

온라인 시각화(Online visualisations)
  • 구글 차트 API(Google Chart API)
  • 라파엘(Raphaël)
  •  D3

쌍방향 GUI 컨트롤
  • 크로스필터(Crossfilter)

맵핑(Mapping)
  • 카르토그래프(Kartograph)
  • 카르토 DB(Carto DB)
프로세싱(Processing)
  • R
  • 웨카(Weka)
  • 게피(Gephi)

SW 프로젝트 위기발생에 따른 기회비용 최소화 관리방안

프로젝트 개발 시 위기관리는 매우 중요한 요소임에 따라, 위기상황발생 시 기회비용을 최소화하는 측면에서 위기사항을 극복할 수 있을 것이라는 희망 하에 적극적으로 대응할 것인가, 그저 그 위기사항이 지나가기를 기다릴 것인지, 아니면 최선의 결과를 생각하며 기회비용을 고려하여 비용대비 효과를 최대화할 수 있는 방안은 무엇인지를 파악하고 행동할 것인지에 대한 대략적인 기준을 제시합니다.

  • 기회비용이란?
  • 모든 것을 중단해야할 순간이 찾아옴
  • 완료되지 않은 일을 살펴봄
  • 비용 절감을 위해 조정하기

공공분야에서의 빅데이터 활용을 위한 지식자산(Knowledge Base) 구축

데이터는 데이터 그 자체로서가 아니라 데이터로부터 의미 있는 지식을 발견하고 이를 활용할 수 있을 때 그 가치가 입증되며, 그 가치는 개인보다는 다수, 그리고 공공의 이익을 도모할 수 있을 때 빛을 발합니다. 그렇기 때문에 지금이 공공의 자원으로서의 빅데이터의 역할을 다시 한번 주목하고, 그 활용방안에 대해 고민할 시기입니다.

2015년 9월 25일 금요일

자바스크립트(Javascript) UI Part 2 - 재사용 패턴

코드 재사용
코드 재사용은 대부분의 언어에서 필요한 기능입니다 . 비슷한 요구사항에 맞춰서 동일한 기능을 반복적으로 개발하는 것은 중복코드를 증가시켜 결국 낭비로 이어집니다 . UI 개발과정에서도 이런 문제는 존재하며 다른 언어와 마찬가지로 그 해법도 크게 다르지 않습니다 .
UI 개발의 경우는 재사용을 위해서 자바스크립트 코드를 재사용할 수 있고 , CSS Framework(less 나 Sass 등 ) 을 통한 CSS 코드를 재사용하는 방법들도 존재합니다 .
자바스크립트의 경우 객체 지향적으로 모듈화를 통해 개발 할 수 있음에도 불구하고 , Java 와 같이 ‘extend’ 와 같은 명시적인 상속을 위한 기능이 존재하지 않습니다 . 다행히 이런 부분이 최근 ECMAScript 6 에 반영되고 있는 중입니다 .
물론 지금 상속을 구현하기 위해서 아무것도 할 수 없는 것은 아닙니다 . 이미 대부분의 자바스크립트 라이브러리와 이를 기반으로 제작된 많은 UI 콤포넌트들은 ‘prototype’ 이라는 속성을 통해 상속을 구현하고 있으며 , 결과적으로 이것을 활용해 코드 재사용이라는 목적을 달성할 수 있습니다 .
본 문서에서는 자바스크립트의 대표적인 재사용패턴을 설명하며 , 그에 앞서 prototype 이 문서에의 prototype 은 prototype 이라는 자바스크립트 코어에 해당하는 핵심 개념을 설명합니다 .
  • 왜 Prototype 인가 ?
  • Prototype 을 통한 상속
  • Object.create() 를 활용한 Prototypal inheritance
데이터는 데이터 그 자체로서가 아니라 데이터로부터 의미 있는 지식을 발견하고 이를 활용할 수 있을 때 그 가치가 입증되며, 그 가치는 개인보다는 다수, 그리고 공공의 이익을 도모할 수 있을 때 빛을 발합니다. 그렇기 때문에 지금이 공공의 자원으로서의 빅데이터의 역할을 다시 한번 주목하고, 그 활용방안에 대해 고민할 시기입니다.

  • 공공분야에서의 빅데이터 중요성
  • 공공 빅데이터 활용을 위한 지식자산 구축
  • 공공 빅데이터를 활용한 대국민 서비스 사례

iOS 애플리케이션의 GUI 테스트 자동화 방법

2007 년 아이폰 출시 이후 , 안드로이드 , 윈도우폰 7, 바다 등 다양한 플랫폼에서 동작하는 스마트폰이 등장 하였고 , 애플 앱 스토어 , 안드로이드 마켓 등이 등장 하면서 많은 개발자들이 스마트폰 애플리케이션 개발에 뛰어들고 있습니다 . 이러한 현상은 각각의 플랫폼 제공 회사에서 애플리케이션 개발을 위한 강력한 소프트웨어 개발 킷 (SDK) 를 제공하여 개발자들이 자유롭게 애플리케이션을 개발할 수 있도록 하고 , 사용자가 직접 애플리케이션을 설치 할 수 있는 환경을 제공하고 있기 때문입니다 . 스마트폰은 터치스크린을 내장하고 있으며 , 스마트폰 애플리케이션은 사용자의 터치에 의해 동작한다 . 따라서 스마트폰 애플리케이션 개발 프레임워크 ( 라이브러리 ) 에는 시각적으로 쉽게 이해하고 사용할 수 있는 그래픽 유저 인터페이스 (GUI) 를 사용자 인터페이스로 사용하며 , 터치에 의해 동작 가능하도록 하는 기능들이 포함되어 있습니다 . 즉 , 스마트폰 애플리케이션에서 GUI 는 높은 비중을 차지하고 있으며 , 스마트폰 애플리케이션의 품질을 확보하기 위해서는 GUI 테스트가 반드시 필요하다는 것을 알 수 있습니다
현재 iOS 애플리케이션 테스트 관련 연구는 거의 없으며 , 테스트를 위한 프레임워크 및 도구들만 제공되고 있습니다 . 그 예로 애플에서 제공하는 단위 테스트 프레임워크인 OCUnit 과 UI 테스트 도구인 UIAutomation 이 있습니다 . 하지만 이러한 프레임워크 및 도구를 이용하여 테스트를 수행하기 위해서는 테스트 케이스를 설계하고 테스트 코드를 작성해야 하며 , 이런 작업에 많은 시간과 노력을 필요로 합니다 . 그리고 테스트의 성공여부는 테스트 케이스 설계에 따라 결정 되며 , 이것은 테스트 케이스를 설계하는 테스터의 능력에 따라 좌우됩니다 . 따라서 테스트에 소모되는 비용을 줄이고 테스트 케이스의 품질을 확보하여 테스트를 성공적으로 수행하기 위해 테스트 케이스를 자동으로 생성하는 방법이 필요합니다 .
본 논문에서는 iOS 애플리케이션의 특징을 설명하고 테스트 대상을 파악합니다 . 그리고 GUI 구성 정보를 저장하는 파일에서 GUI 정보를 추출하여 iOS 애플리케이션 GUI 테스트를 위한 테스트 케이스 자동 생성 방법을 제안하고 이를 구현합니다 .
  • iOS 애플리케이션
  • iOS 애플리케이션 GUI 테스트 케이스

2015년 9월 24일 목요일

성공적인 요구사항 관리를 위한 SW개발팀 간 4가지 협업전략

요구사항이라는 것은 애자일이건 아니건 상관없이 모든 소프트웨어 팀이 직면하게 되는 이슈입니다. 요구사항의 세목을 만드는 것은 많은 시간을 요구하기 때문에, 부적절한 결과를 초래할 수 있습니다. 즉 적절한 시기에 “적절한” 요구사항을 얻기 어렵기 때문에, 각 팀은 요구사항 프로세스를 향상시키기 위한 방법을 발견하기 위해 노력해야 합니다.  

요구사항 관리는 프로젝트의 방향을 결정짓는 매우 중요한 프로세스이나 요구사항 수집을 위한 왕도가 없음에 따라 개발팀 간 이해공유, 우선순위설정, 표준문서화 등을 통해 충분한 협업을 수행하는 방안 등이 중요합니다.

Ⅰ. 이해공유(Shared understanding)
Ⅱ. 우선순위설정(Prioritizing)
Ⅲ. 테스트를 포함한 코딩(Driving coding with tests)
Ⅳ. 요구사항 표준문서화(Documenting requirements)

자바스크립트(Javascript) UI Part 1 - 모듈 패턴

자바스크립트 유효범위의 문제
HTML5 나 웹앱 등 웹 기술로 만들어진 어플리케이션이 속속 등장하고 있습니다 . 이런 웹 어플리케이션을 구현하는 핵심기술은 자바스크립트이나 , 실제로 많은 개발자들은 자바스크립트의 특성을 잘 이해하지 못하여 생기는 문제가 많이 발생하고 있습니다 .
자바스크립트의 특성 중 아쉬운 점은 유효범위가 다소 혼란스러운 점입니다 . 특히 자바나 C 언어를 다루는 개발자가 자바스크립트를 접하게 되면 더욱 그렇게 느껴질 수 있습니다 . 예를 들어 자바스크립트는 블록 유효범위가 없으며 함수 유효범위가 있을 뿐입니다 . 이런 차이를 잘 이해하지 못해서 생기는 문제는 실제로 매우 많습니다 .
이런 특징은 결국 중요 함수나 변수가 공개된 영역 ( 자바스크립트에서는 이를 scope 이라고 표현 ) 으로 노출 된다는 점입니다 . 자바스크립트는 public 이나 private 과 같은 함수나 변수의 노출 범위를 명시적으로 표현 할 수 있는 키워드가 존재하지 않습니다 . 하지만 자바스크립트의 다양한 표현방법을 활용하여 이를 모듈화하면 어느 정도 보호 할 수가 있습니다 .
이러한 방법을 설명할 것이며 , 여기에 나와 있는 방식은 대부분의 실제 웹서비스나 자바스크립트 라이브러리 등에서 많이 사용되고 있는 방법들입니다 .
‘ 어떤 문제가 실제 발생하는 것인지 ?’, ‘ 어떻게 해결 할 수 있는지 ?’ 를 알아보겠습니다.

접근 제어를 위한 모듈화
실제 자바스크립트로 어떻게 구현되는지를 알기 위해서, 실제 코드를 살펴봅니다. 예제 코드에서는 ‘현재 사과의 개수를 확인하는 것’ 과 ‘현재 사과의 개수를 하나 증가’ 하는 함수를 간단히 구현합니다.

예제 1

예제 2

모듈의 재활용
모듈화 패턴은 재활용될 수가 있습니다. 예를 들어 위에서 나온 즉시실행함수에서 어떤 결과를 반환할 수도 있을 것입니다. 그 반환 값에 공개된 함수를 포함하면 되는 것입니다. 코드를 살펴보겠습니다.

예제 5

애자일 적용과 프로젝트를 실패하게 만드는 5가지 공통요인

신속하고 민첩한 개발을 위해 도입한 애자일 개발방법론이 오히려 프로젝트를 실패하게 만드는 경우가 있습니다. 애자일 방법론에 대한 반감은 변화에 대한 단순한 반응은 아닌 애자일을 형편없이 실행하는 조직에 대한 반응일 경우가 대부분임. 애자일 프로젝트는 알지 못하는 사이에 CEO, PM, 계획·교육관련 실수를 하는 사람들, 애자일과 관계없는 개발측면의 문제들로 인해 큰 어려움을 겪고 있습니다.    
이에 따라 애자일 전문가들이 지적하는 애자일의 도입과 실행에서 불거지는 공통적인 실패요인들에 대해 다음과 같이 살펴 도록 합니다.

Ⅰ. 명확한 이유 없이 애자일을 도입하는 경우
Ⅱ. 사업부와 개발부를 별도로 관리하는 경우
Ⅲ. 팀원에게 문화적 변화에 적응할 충분한 시간이 주어지지 않을 경우
Ⅳ. 전체적으로 불충분한 교육을 받게 되는 경우
Ⅴ. 애자일과 상관없는 실패를 애자일 탓으로 돌리는 경우

2015년 9월 23일 수요일

성공적인 프로젝트팀 구성을 위한 5가지 Tip

성공적인 SW프로젝트 수행을 위해서는 조직구성이 가장 중요한 요소임에 따라 효율적/효과적인 팀 운영을 위한 조직원의 규모, 전문성, 고용형태 등에 대한 유용한 의견을 제시합니다.

우선 제너럴리스트 ( Generalist) 를 배치하고 나중에 필요하면 스페셜리스트로 보충하기

제너럴리스트는 프로젝트 전반에 걸쳐 긍정적인 영향을 미침
  • 제너럴리스트는 프로젝트 전반에 도움을 주기 때문에 프로젝트 일정관리가 매우 용이함
  • 그러나 ! 팀원 전체를 제너럴리스트로 구성할 경우에는 프로젝트가 최상경로 (Critical Path) 에서 벗어나서 일정이 길어질 수 있을 수도 있기 때문에 주의를 해야 함

가능하면 스페셜리스트는 필요한 부분에만 활용하기
  • 스페셜리스트들은 전체적인 팀웍을 완성하기 보다는 본인 영역의 일만을 하고 그 외의 다른 일을 하기를 꺼려하는 경향이 일부 ! 있음
  • 스페셜리스트의 전문분야에 적합한 일이 주어지지 않은 경우에는 낭비되는 자원이 되기도 하는 등 전체 프로젝트 차원에서 예산낭비가 되기도 함
  • 이러한 상황 하에서는 리스크의 증가로 프로젝트가 실패할 수도 있고 전체 스케줄 관리가 힘들어지는 원인이 될 수 있음
Ⅰ. 제너럴리스트의 우선 배치
Ⅱ. 파트타임보다는 풀타임 팀원을 우선 고려
Ⅲ. 사공이 많으면 배가 산으로 간다
Ⅳ. 작은 교실이 더욱 좋다
Ⅴ. 허수아비 팀원을 과감히 제외 한다

모바일 보안 위협과 소프트웨어 관점의 보안 가이드

CT 기술이 발전되면서 사용자들이 요구하는 기능들은 점점 복잡해지고 구체화되고 있습니다. 또한 PC 기반의 기술에서 스마트폰 기반의 서비스가 많아지면서 사용자들의 ICT 의존도는 기하급수적으로 높아지고 있습니다. 또한 ICT 기술이 거의 모든 산업에 적용되면서 소프트웨어의 수요도 점차 늘어나고 있습니다.
소프트웨어의 수요가 많아질수록 그에 따른 보안 문제도 함께 많아지게 되는데, 최근에 사용률이 증가하고 있는 모바일의 경우는 보안 문제의 심각성이 더 크게 나타나고 있습니다. 최근 1년 동안 모바일 디바이스를 대상으로 한 보안 관련 조사에서 전체 모바일 기기의 68%가 악성 코드와 보안 위협에 노출되고 있는 것으로 나타났습니다. 특히 핀테크로 대변되는 모바일 결제 서비스의 위험이 가장 두드러지게 발생되고 있습니다.
모바일 디바이스는 PC보다 훨씬 더 많은 개인 정보를 가지고 있어 스마트폰 대중화 이후, 모바일 환경 속에서의 안전한 연결, 컨텐츠 보안, 모바일 디바이스 간의 보안이 확보된 호환 등에 많은 연구 개발이 이루어지고 있으며, 모바일 디바이스를 활용한 서비스 들에 대한 보안 연구도 활발히 진행되고 있습니다.
이번 회에서는 모바일에 대한 최근 보안 위협 트렌드와 소프트웨어 관점의 보안 가이드, 그리고 모바일 보안 구축 방법과 사례에 대해 살펴보기로 합니다.

보안 위협 트렌드

  • 디바이스 보안
  • 네트워크 보안
  • 플랫폼 보안

소프트웨어 관점의 모바일 보안 가이드

  • 소프트웨어 보안 취약점의 유형
  • 소프트웨어 보안 취약점의 점검

모바일 시스템의 보안 구축 방법과 사례

자세히 보기 →

2015년 9월 22일 화요일

SW 품질과 생산성 향상을 위한 개발 절차와 인증

우리가 매일 일상적으로 먹는 ‘밥’. 이 밥도 잘 지어 먹으려면 절차와 요건이 있습니다.
쌀을 사서(혹은 농사를 짓고, 수확한 후 찧어서), 여러 번 씻고, 물을 적당히 맞추고, 가열해서, 뜸을 잘 들여야ㅡ 비로소 맛있는 밥 한 그릇을 먹을 수 있는 것입니다.

이렇게 밥 한 그릇을 짓는 데에도 적절한 순서와 필수 요소들이 많음에도 불구하고,정작 훨씬 더 복잡하고 예민하게 진행되어야 할 소프트웨어 개발 현장에서 이러한 과정과 요건들이 제대로 갖춰지지 않은 경우가 많습니다. 그래서 등장하게 된 것이 바로 'SP품질인증제도'입니다. 소프트웨어 공학센터 SW품질인증팀의 정도균 수석을 만나 SP품질인증제도의 모든 것을 알아보았습니다.



SP품질 인증 체계도

















[SW공학 동영상6화] Engineering Process of Automotive SPICE

Introduction to Automotive SPICE / ISO 26262
  • Automotive SPICE v2.5
  • Automotive SPICE v3.0
  • ISO 26262 Overview
  • ISO 26262 Safety Lifecycle




(공공 부문) SW사업 대가산정 가이드 (2015년 개정판) 재공표

한국소프트웨어산업협회(www.sw.or.kr)에서 재공표한 SW사업 대가산정 가이드 (2015년 개정판)을 소개합니다.


올해 5월 4일 공표되었던 'SW사업 대가산정 가이드(2015년 개정판)'에서 일부 명칭을 개정하여 재공표합니다. 그 동안 ’노임 단가‘라는 용어의 부정적인 뉘앙스를 개선하고자 하는 의견이 수렴되어 ‘14년 명칭 공모 후 ‘소프트웨어 기술자 평균 임금’이란 용어로 변경하였습니다. 향후 법 개정을 통하여 해당 명칭을 반영하고자 하오니 참고하시기 바랍니다.



2015년 9월 19일 토요일

요약기반 대규모 소스 코드 유사성 평가

소프트웨어의 개발이 활발해짐에 따라 소스코드 복제 , 도용이 증가하고 있으며 , 이로 인한 분쟁도 증가하고 있습니다 . 따라서 소스코드 복제에 대한 유사도 검사 또한 매우 중요시되고 있습니다 . 개발 시간 단축 , 성능 향상을 위해 소스코드 복제가 일어나고 다른 기업 , 개인 간의 분쟁을 유도하게 됩니다 . 분쟁을 결정짓거나 사전에 방지하기 위해 소프트웨어 유사도 검사가 필요합니다 .
유사성을 측정하는 기존의 도구는 대부분 텍스트 / 토큰 비교 [1, 2, 3, 4] 방법을 사용합니다 . 텍스트 / 토큰 비교는 소스코드의 텍스트나 토큰을 나열하여 비교하는 방법으로 다른 비교 방법에 비해 수행속도가 빠르다는 장점이 있습니다 . 하지만 기존의 툴들은 불필요한 소스 코드에 대해서 잘못된 유사성을 감정하는 한계가 있습니다 . 예를 들어 프로그램 개발 툴에 의해 자동으로 삽입된 소스코드 , 주석 , 변수 선언문의 위치 등은 유사도 측정에 있어 방해요소가 될 수 있습니다 . 대규모 소프트웨어의 소스코드를 그대로 비교하면 수행시간의 증가로 인해 기존 툴에 직접 사용하기에는 어려움이 있습니다 . 또한 소스코드를 도용 시 소스코드를 의도적으로 변형을 하게 되면 복제한 소스코드이지만 검출도구에서는 유사하지 않다고 판단 할 수 있습니다 .


  1. 대규모 소프트웨어의 유사도 검사 방법
  2. 소스코드 요약 기법과 유사도 비교 방법
  3. 대규모 소프트웨어의 유사성 비교

사용자 경험 (UX) 과 품질 관리 (QA) 에 따른 사용성 확보

- Key Message -
SW 사용성 (usability) 은 SW 사용자 입장에서 원하는 기능과 서비스를 손쉽게 찾아서 활용할 수 있도록 기능을 제공하는지를 의미합니다 . 최근 들어 SW 사용성은 SW 가치의 중심축 역할을 함에 따라 애자일 개발에서는 전체 개발팀이 제품의 사용성을 함께 고려하는 것이 중요합니다 . 따라서 여기서는 사용자 경험 (UX) 와 품질 관리 (QA) 측면에서 사용성 확보를 위한 기획 - 개발 - 테스팅 - 배포 등의 단계별 고려사항을 제시합니다 .

애자일 개발의 네 가지 단계별 고려사항
 1. 기획 (Research)
 2. 개발 (Development)
 3. 테스팅 (Testing)
 4. 배포 (Release)

자세히 보기 →

최적의 클라우드 테스팅 툴을 찾아내는 4가지 Tip

- Key Message -
최근 SW 개발에 있어 클라우드 기반의 테스팅 툴은 이동성 , 확장성 , 유연한 가격정책에 의해 점차 부각되고 있습니다 . 이에 따라 클라우드 테스팅 툴에 대한 투자 이전에 고려해야 할 네 가지 팁을 제공하여 , 각 프로젝트 환경에 적합한 최적의 테스팅 툴을 확보할 수 있도록 도움을 주고자 합니다 .

클라우드 기반의 테스팅 툴은 이동성 , 확장성 , 유연한 가격 모델과 같은 이점을 제공하면서 소프트웨어 개발 산업을 이끌어 왔습니다.
테스트 전문조직들 또한 이러한 흐름에 편승하고 있으나 , 클라우드 테스팅 툴에 투자하기 전에 고려해야 할 네 가지 팁을 살펴보는 것이 유익합니다.

클라우드 테스팅 툴을 찾아내는 4가지 Tip
 1. 위험요소와 문제점 인식하기
 2. 최적의 서비스 선택하기
 3. 퍼블릭 클라우드 또는 프라이빗 클라우드 서비스 선택하기
 4. SLA 이해하기

클라우드 테스팅 툴 7선






























자세히 보기 →

2015년 9월 18일 금요일

빅데이터를 적극 활용하게 만드는 7가지 툴

거대하고 다양한 정보가 축적되는 빅데이터는 비즈니스 인텔리전스분야에서 그 중요성이 더욱더 크게 부각되고 있음. 오픈소스 하둡이나 NoSQL기술을 기반으로 한 제품을 공급하는 업체들의 기술은 빅데이터를 수집하고 관리하는데 용이하게 하며, 유저가 원하는 정보를 보다 쉽게 생성할 수 있도록 해줍니다.
  
특히, 하둡은 빅데이터 활용에 있어 안정적이고 확장이 용이한 분산컴퓨팅 환경으로 현재 널리 사용되고 있습니다. 기업의 정보를 최대한 활용하여 비즈니스를 향상 시킬 수 있는 빅데이터 리포팅, 분석, 시각화, 통합 등을 구현하는 하둡을 적극적으로 활용할 수 있게 만드는 7가지 툴을 소개합니다.

재스퍼소프트 BI 스위트(Jaspersoft BI Suite) 

  • 재스퍼소프트 패키지는 데이터베이스로부터 리포팅(Reporting)을 생성하기 위한 오픈소스 비즈니스 인텔리전스 분석 툴 중 하나임

펜타호 비즈니스 애널리틱스(Pentaho Business Analytics)

  • 재스퍼소프트처럼 펜타호는 리포팅 생성 엔진으로 시작한 오픈소스 비즈니스 인텔리전스 툴임

카르마스피어 스튜디오와 애널리스트(Karmasphere Studio and Analyst)

  • 카르마스피어 스튜디오는 이클립스(Eclipse) 상위 레이어에 구축된 플러그인으로, 하둡 작업 수행에 특화된 솔루션임

탈렌드 오픈 스튜디오(Talend Open Studio)

  • 탈렌드는 하둡의 데이터 처리 작업을 위한 이클립스(Eclipse) 기반의 그래픽 유저 환경을 제공하며, 탈렌드의 툴들은 데이터 통합, 데이터 품질 관리들을 원활하게 처리하기 위해 설계됨

스카이트리 서버(Skytree Server)

  • 스카이트리 서버는 더욱 정교한 기계학습(machine-learning) 알고리즘을 수행하는 번들을 제공함

타블로 데스크톱과 서버(Tableau Desktop and Server)

  • 타블로 데스크톱은 유저가 새로운 방식으로 데이터를 처리할 수 있게 하는 시각화 툴로 이 툴은 유저가 자신의 데이터와 다른 데이터를 합쳐 또 다른 관점에서 기존의 데이터를 검토해 볼 수 있는 장점을 지니고 있음

스플렁크(Splunk)

  • 스플렁크는 엄밀하게 말하자면 리포팅 생성 툴이 아니라 데이터를 분석, 인덱싱하는 솔루션으로 방식은 텍스트 검색 프로세스에 더 가까움

다중 SW개발 프로젝트 관리를 위해 갖추어야 할 9가지 테크닉

SW개발 PM들은 보통 2가지 이상의 프로젝트를 책임지고 있습니다. 여러 SW개발 프로젝트를 효과적으로 관리하는데 도움이 될 관리기술로 4가지 비공식적인 기법과 5가지 공식적인 기법을 살펴보도록 하겠습니다. 이러한 기법들은 기존에 모두 존재해 왔고 관리자 대부분이 잘 알고 있으나, 이의 실제 활용을 통해 크고 복잡한 프로젝트를 리드할 경험을 지니는 데 조금이나마 도움이 되고자 합니다.

비공식적인 기법
  1. 신뢰할 수 있는 정보원을 가질 것
  2. 고객에게 우선권이 있다는 것을 명심할 것
  3. 상호 의존하는 것을 배울 것
  4. 시간 관리를 철저히 할 것

공식적인 기법
  1. 표준화된 공용 보고서를 사용할 것
  2. 비용관련 수치들을 주시할 것
  3. 프로젝트 주요 진행사항은 문서화 할 것
  4. 지속적으로 의사소통할 것
  5. 결정은 신속하게 할 것

동시에 다중 프로젝트를 관리하는 것을 통해 향후 크고 복잡한 프로그램 프로젝트를 이끄는데 필요한 경험과 지혜를 발전시킬 수 있다는 긍정적인 측면에서 접근하는 자세가 매우 중요함에 따라 상기 제시된 여러 가지 방법을 활용하여 프로젝트를 성공적으로 이끌 것으로 기대합니다.

12명의 Architect에게 물어 본 “아키텍트의 길” part 1

요구사항분석 , 프로세스와 팀 빌딩 , 설계 시 고려사항

요구사항
모든 요구 사항을 수렴하는 소프트웨어는 존재하지 않는다 . - Mark Richards
전 프로젝트를 시작할 때 항상 꺼내는 이야기가 있습니다 . 소프트웨어 아키텍트 들이라면 알아야 하고 , 이해해야 하며 , 그리고 고객 , 동료와 함께 꼭 프로젝트 시작 전 나눠야 하는 이야기가 있습니다 .

1620 년대에 스웨덴과 폴란드의 전쟁에서 나온 ‘Vasa 호 ’ 라는 배 이야기입니다 . 스웨덴 국왕은 전쟁을 빨리 끝내기 위해 Vasa 호라는 특별한 배를 만들라고 주문했습니다 . 이 배가 갖춰야 했던 조건 ( 요구사항 ) 들은 그 당시의 어떤 배와도 비교할 수 없었습니다 . 선체가 200 피트 정도 더 길고 , 2 개의 갑판에 64 개의 총을 적재할 수 있고 , 300 명의 군사를 안전하게 태워 폴란드로 가는 바다를 가로지를 수 있는 수송 능력을 가져야 했습니다 . 배를 건조하는 데드라인 ( 시간 ) 을 엄수해야 했으며 , 재정 ( 자금 ) 적으로도 여유롭지 않았습니다 . 또한 배 설계자 ( 아키텍트 ) 는 이렇게 생긴 배를 이전까지는 설계한 적이 없었습니다 . 크기가 작고 총을 실을 수 있는 갑판이 한 개만 있는 배를 만드는 것이 그가 주로 한 일이었습니다 . 그럼에도 불구하고 , 설계자는 그의 예전 경험을 기반으로 추정하고 Vasa 를 설계하고 건조하기 시작했습니다 . 그 배는 결국 설계대로 건조되었고 마침내 배를 출항하는 날이 왔습니다 . 어떻게 되었을까요 ? Vasa 호는 위풍당당하게 항구를 출항했지만 예포를 쏘고 난 뒤 바로 바다 저 밑으로 가라앉고 말았습니다 .

Vasa 호의 문제는 명확합니다 . 그 어느 누구도 1600~1700 년에 큰 전투함에서 갑판을 본적이 없었고 이러한 배의 갑판은 특히 전쟁 중에 붐비고 안전하지 않다는 것을 알았습니다 . 전투함과 운송선 2 개의 역할을 다하는 하나의 배를 건조하는 것은 큰 실수였죠 .
국왕의 모든 소원을 충족하려고 한 배 설계자는 균형이 맞지 않고 , 불완전한 배를 만들 수밖에 없었던 것입니다 . 저희 소프트웨어 설계자들은 Vasa 호로부터 많은 것을 배울 수 있습니다 . 이와 같은 불행한 사건을 소프트웨어 아키텍처의 설계에 적용할 수도 있겠죠 . 하지만 Vasa 호와 같이 모든 요구사항을 충족시키려는 시도는 궁극적으로 아무것도 수행할 수 없는 불완전한 아키텍처를 만들게 됩니다 .

프로세스와 팀 빌딩
가장 큰 문제는 기술이 아니라 기회를 잡을 수 있느냐 이다. - Mark Ramm4)
대부분의 프로젝트들은 사람에 의해 만들어지며, 사람들은 성공과 실패에 대한 기반이 됩니다. 따라서, 사람들을 성공할 수 있게 만드는데 도움이 되는 것에 대해 생각해 볼 필요가 있습니다. 한편으로는, “단지 일을 올바로 하지 않고” 프로젝트를 어렵게 하는 누군가가 있다는 가망성에 대해 충분히 생각해 볼 수 있습니다. 이러한 경우들에서 문제를 해결하는데 필요한 기술은 매우 오래되었지만 정말 잘 입증되었습니다. 사실 이 기술은 인류의 역사에서 가장 중요한 기술 혁신일 것입니다. 여러분에게 필요한 것은 대화입니다. 기교로써 대화에 단지 익숙해지는 것만으로 충분하지 않습니다. 존경심을 가지고 사람을 대하는 것을 배우고, 사람에 대한 성급한 판단을 버리는 것을 배우는 것이 영리한 아키텍트가 유능한 아키텍트로 변하는 핵심 기술 중에 하나입니다.

설계
불확실성을 설계의 지표로 사용해라! - Kevlin Henny7)
여러분이 설계 시 둘 중 하나를 선택해야 한다면 대부분은 중요한 것을 선택합니다. 하지만 설계(소프트웨어 또는 다른 것들) 시에는 그렇게 해선 안 됩니다. 두 가지 선택사항이 존재한다는 것은 설계 시 불확실성을 고려할 필요가 있다는 것은 알려주는 지표(indicator)입니다. A와 B 두 가지 중 하나를 결정하려고 시도하는 것보다는 A와 B 사이의 결정을 덜 중요하게 만들기 위해 어떻게 설계해야 할지를 고민해야 합니다. 흥미로운 것은 A와 B 사이의 (적절한) 선택이 존재한다는 것입니다. 설계 시 변경되는 결정을 쉽게 수용할 수 있는 분할(separation) 또는 캡슐화 기법을 고민할 필요가 있습니다.

2015년 9월 17일 목요일

모바일 소프트웨어 개발을 위한 모바일 프레임워크

프레임워크는 다양한 형태로 해석됩니다. 구조적으로 고정된 자산을 재활용할 수 있도록 하는 것을 나타내기도 하고, 애플리케이션의 특정 기능을 모아 추가적인 사용자 코드를 통해 소프트웨어를 완성하는 플랫폼을 말하기도 합니다. 역할로 살펴본다면, 프레임워크는 필수적이고 표준적인 부분을 설계하고 구현하도록 도움을 주는 반제품 소프트웨어라고 할 수 있습니다.

프레임워크를 사용하는 장점은, 공통적으로 사용되는 구조를 그대로 재사용하면서 애플리케이션 부분만 추가해서 사용하기 때문에 빠르고 효율적인 개발이 이루어 질 수 있고, 이미 검증된 프레임워크이기 때문에 애플리케이션의 코딩과 테스트가 용이합니다. 하지만, 프레임워크의 기능이 업그레이드 되면서 점점 볼륨이 커지는 현상도 종종 나타납니다. 이 경우, 사용하지 않는 기능이 프레임워크에 적용되면서 불필요한 자리만 차지하기도 합니다.
 
최근에는 웹과 모바일을 구분하지 않고 사용하는 디바이스에 따라 UI 형태만 다르게 서비스하는 형태가 많아지고 있어 기존에 사용 중이던 웹 기반 프레임워크를 재사용하여 모바일 서비스를 구축하는 경우도 많아지는 추세입니다. 이번 회에서는 모바일 프레임워크의 구성과 활용에 대해 사례를 들어 알아보겠습니다.

모바일 프레임워크의 선택과 구성
프레임워크 없이 애플리케이션을 개발한다는 것이 점점 힘들어 지고 있습니다. 하루가 다르게 늘어가는 프레임워크들에서 효과적으로 모바일 프레임워크를 선택하는 방법에 대해 알아봅니다. 구축하고자 하는 소프트웨어에 따라 조금씩 다를 수는 있겠지만 “The Curious Coder's Java Web Frameworks Comparison!”에서 가이드 한 것을 6가지 정도로 정리하여 <표1>과 같이 나타냈습니다.
<표 1> 프레임워크의 선택 요소

글로벌 IT 기업의 新 랭귀지 개발 동향

주머니 속에서 실수로 휴대전화 통화버튼을 누른 경우를 의미하는, '포켓 다이얼', 지하철 의자에서 다리를 심하게 벌리는 남자를 뜻하는 ‘쩍벌남’, 배가 고파서 신경이 날카로워진 상태를 합친를 말하는 '행그리'(헝그리 + 앵그리) 등의 단어가 옥스퍼드 영어사전에 새롭게  등재되었습니다. 시나브로 사라지는 말이 있는가 하면 새롭게 창조되어 떠오르는 말이 있습니다. 컴퓨터 프로그래밍에서도 기술 발전과 시대의 변화, 즉 사용자 요구 변화에 따라 그에 부응하는 새로운 언어를 탄생시키고 있습니다(그림1). 

<그림1>  프로그래밍 언어의 변천사


지금까지 탄생한 프로그래밍 언어는 공통적으로 구문, 이름, 타입, 의미라는 4가지 구성 요소를 포함합니다. 세상에 없던 새로운 프로그래밍 언어를 개발한다면 당분간 이 구성요소를 고려해야할 것입니다. 
  1. 구문(Syntax): 식의 구조, 언어의 구조를 지배하는 규칙들. 즉, 문법(grammar)이다.
  2. 이름(Names): 변수, 함수, 클래스 등의 이름
  3. 타입(Types): 정수, 실수, 문자, 불린 등   여러 종류의 데이터를 식별하는 분류. 또한, 가능한 값, 수행 가능한 명령, 데이터 의미, 값의 저장 방식을 결정
  4. 의미(Semantics): 코드를 통해 표현하려는(의도하는) 것. 구문(문법)은 맞지만 의미의 오류로 의도와 다른 결과를 얻을 수 있다.
최근 소프트웨어 개발에서 가장 많이 사용되고 있는 언어들의 순위를 보면 2015년 9월 기준으로 Java가 1위를 차지했습니다. 이 순위는 단순히 사용 빈도가 높다는 것을 뜻할 뿐, 해당 언어가 가장 우수하다는 것을 말하지는 않습니다. 개발 목표, 서비스 목표, 유지보수 목표 등에 따라 선별해서 개발 언어를 채택해야 합니다. 

사물인터넷(IoT) 보안의 주요 기술

불과 5년 전만 해도 IT 기술이 우리에게 주는 생활의 편리함은 이루어 말할 수 없을 만큼 새로운 패러다임이었습니다. 그러나 그 신선했던  IT 기술은 일상이 되어 버렸고, 보편화가   되면서 사람들은 지금, 더 편리한 서비스와 기술들을 요구합니다. 가령, 컴퓨터로만 인터넷을 검색했던 사람들이 이제는 스마트폰으로  쉽게 정보를 찾을 수가 있습니다. 하지만 이제는 역설적으로 정보가 차고 넘쳐 나기 때문에 정보를 찾는 것도 또 하나의 일이며 귀찮은 것으로 여겨질 때가 많습니다. 그렇기 때문에 예전에는 사람들이 직접 정보를 찾았다면, ‘사물인터넷 시대’에는 정보가 먼저 사람을 찾게 됩니다. 내가 즐겨 찾는 매장이나 자주 가는 여행지가 있다면, 이러한 이력 및 data들을 알아서  모아주고 패턴 분석을 하고 그 결과,  나에게 맞는 맞춤형 서비스로 제공되는 것입니다. 사물인터넷이 이러한 것들을 가능하게 하는 핵심 요소로 ‘무선 통신’이 있습니다.
 하지만 그런 무선통신을 이용한다는 특성 때문에 ‘정보보안’이라는 불안요소가 항상 따라다니게 됩니다. 사물인터넷 보안에 대해 장성균 개발자에게 그 주요기술에 대한 자세한 설명을 요청했습니다.

 1. 사물인턴넷 정보보안의 특징
 2. 보안 기술요소 - 암호화 알고리즘, 시큐어코딩(Secure Coding)
 3. 더 나은 솔루션에 대한 tip

2015년 9월 16일 수요일

새로운 기능을 성공적으로 개발 및 출시하게 도와주는 6가지 팁

클라우딩 컴퓨팅의 세계에서 새로운 기능에 대해 고객에게 CD로 제공하는 대단위 출시는 더 이상 없습니다. 현재, 새로운 기능들이 유저들을 위해 클라우드 기반에서 제공되며, 또한 최종 유저가 새로운 기능을 완전하게 활용하는 것은 그 어느 때보다 중요한 사항입니다.
  
최종 유저가 더 이상 서비스를 이용하지 않으면 돈을 지불하지 않아도 되는 기존의 영구 라이선스 모델이 없어진 시점에서 새로운 기능을 성공적으로 개발하고 출시하기 위해 도와줄 수 있는 6가지 팁을 제시합니다.
  1. 기능을 구축하기 전에 유저들에게 물을 것
  2. 실제 유저들과 함께 반복해서 적절한 기능을 만들 것
  3. 사용되는 기능과 사용되지 않는 기능을 파악할 것
  4. 자기 발견(Self Discovery)과 알림(Notification) 기능을 제공할 것
  5. 최고 유저(Top Users)들을 위한 프로그램을 만들 것
  6. 애플리케이션 내에서 유저들의 관심을 공유할 수 있도록 허용할 것

애자일 방법론에서 시소러스를 이용한 비기능 요구사항 추출 방법

전통적인 개발방법론은 단계별 상세계획수립을 위해 요구사항 정의 단계에서 모든 요구사항이 정의되어야 하며 단계별 상계계획에 따른 산출물을 요구하기 때문에 생산성 저하 및 요구사항 변경 및 추가 요구사항에 대한 변경 비용이 기하급수적으로 증가하는 반면 애자일 방법론은 기본적인 개념이 소프트웨어 개발은 고객 중심적이며 , 고객의 참여를 중요하게 생각합니다 . 애자일 방법론에서 사용자의 요구사항을 파악하기 위해 사용되는 사용자 스토리는 사용자가 이해하고 , 필요하다고 느끼는 것을 사용자의 언어로 사용자가 직접 작성합니다 . 이렇게 개발 초기에 상세한 문서를 요구하지 않는 사용자 스토리를 사용하여 아주 단순한 구조를 갖고 동작하는 소프트웨어를 사용자에게 제공함으로써 사용자로부터 지속적인 피드백을 받아 요구사항을 좀 더 구체화 하고 , 반복적인 개발을 통해 지속적으로 변경하는 요구사항들을 수용하고 , 지속적인 통합 , 테스팅 , 리팩토링을 수행함으로써 개발 기간 동안에 변경 비용이 거의 수평적인 상태에 가깝게 유지하면서 유연성과 품질을 유지할 수 있도록 해줍니다 . 하지만 이렇게 유연성을 제공하는 사용자 스토리를 사용하는 애자일 방법론에서 이슈가 되는 것은 아키텍처 고려와 관련된 부분입니다 . 애자일 방법론을 사용하는 조직으로부터 애자일 방법론에 대한 이점과 도전과제를 연구한 내용 중 사용자 스토리를 사용하는 반복요구공학을 사용하는 측면과 관련하여 특히 도전과제로 제시된 내용은 비기능 요구사항들에 대한 무관심으로 시스템 완성도에 있어서 주요 이슈들을 발생시킬 수 있다는 것이었습니다 . 또 다른 연구로는 애자일 개발 방법론을 채택해서 사용했던 평균 18 년 정도의 개발 경험이 있는 전문직들을 대상으로 애자일과 소프트웨어 아키텍처의 공존에 대한 연구를 진행했는데 애자일 개발에서 상당부분의 참가자들이 애자일 개발 과정 중에 Context 에서 소프트웨어 아키텍처를 고려했다는 것입니다 .
  • 비기능 요구사항 분류 방법
  • 비기능 요구사항 추출 프로세스
  • 사례 연구 및 검증


분산된 개발팀에 동기를 부여하는 5가지 Tip

SW개발에 있어 아웃소싱 및 전문성 강화에 따라 지리적으로 분리된 버추얼 팀(virtual team) 운영이 확대되고 있습니다. 이와 같이 버추얼 팀이 운영되는 경우 상호간 목표공유 및 의사소통이 미흡함에 따라 개발일정 및 품질에 부정적인 영향을 미칩니다. 이에 따라 버추얼 팀의 동기부여를 위한 5가지 방안을 제시합니다.

버추얼 팀에 동기 부여하는 5가지 팁
  1. 지리적 한계를 극복하고 팀원들 간 관계를 형성하기위한 시간을 투자하기
  2. 고유한 방법으로 성과를 인정하기
  3. 정기적인 코칭(Coaching Session)을 계획하기
  4. 팀 내 교류하는 방법 고안하기
  5. 정기적으로 대면하는 기회 만들기


2015 제4차 성남 산업융합전략 컨퍼런스 안내(09/17(목))


자세히 보기 →

2015년 9월 15일 화요일

모바일 애플리케이션 테스트 자동화 확장 방안

모바일 기기의 급속한 보급에 따라 기업의 모바일 서비스 도입여부가 기업경쟁력을 결정짓는 중요한 요소가 되었습니다. 모바일을 통한 즉시적 정보 획득 필요성이 증가하면서   모바일 애플리케이션의 품질과 성능이 중요한 요소로 대두되고 있습니다. 기능 및 성능 테스트 자동화를 확대함에 따라 모바일 앱의 품질과 개발 신속성을 확보할 수 있는 방안을 제시하도록 합니다.

기능 검증(Functional Validation)
  • 잠재적 오류들은 대부분 특정 모바일 애플리케이션의 기능 검증으로 해결할 수 있음

테스트에 실제로 핸드셋을 사용하기
  • 테스트에 실제로 핸드셋을 사용하는 것과 관련하여 실행계획상의 부하와 브라우저나 에뮬레이터에서 애플리케이션을 테스트하는 것에 대해 논쟁이 많음

성능 검증(Performance Validation)
  • 모바일 애플리케이션의 기대성능이 충족되는지 검증해야 함

자동화된 기능과 성능 테스트는 데스크탑 환경의 애플리케이션에서 수행-검증된 기록이 있어야 하며, 자동화 테스트는 기업이 높은 품질의 소프트웨어 애플리케이션을 배포하고 비즈니스 리스크를 줄이고, 문제를 빠르게 해결하는 데 도움이 됩니다.
궁극적으로 조직이 애플리케이션의 예기치 않은 중단과 에러로 발생되는 불필요한 지출을 줄여주고, 특히 모바일 애플리케이션을 통한 정보의 즉시성에 대한 필요성이 증가되면서 기업은 자동화된 테스트 전략과 그들의 모바일 애플리케이션의 니즈에 맞춰 설계된 솔루션을 도입하는 것이 중요해졌습니다.

빅데이터를 적극 활용하게 만드는 7가지 툴

거대하고 다양한 정보가 축적되는 빅데이터는 비즈니스 인텔리전스분야에서 그 중요성이 더욱더 크게 부각되고 있습니다. 오픈소스 하둡이나 NoSQL기술을 기반으로 한 제품을 공급하는 업체들의 기술은 빅데이터를 수집하고 관리하는데 용이하게 하며, 유저가 원하는 정보를 보다 쉽게 생성할 수 있도록 해줍니다.
 
특히, 하둡은 빅데이터 활용에 있어 안정적이고 확장이 용이한 분산컴퓨팅 환경으로 현재 널리 사용되고 있습니다. 기업의 정보를 최대한 활용하여 비즈니스를 향상 시킬 수 있는 빅데이터 리포팅, 분석, 시각화, 통합 등을 구현하는 하둡을 적극적으로 활용할 수 있게 만드는 7가지 툴을 소개합니다.

Ⅰ. 재스퍼소프트 BI 스위트(Jaspersoft BI Suite)
Ⅱ. 펜타호 비즈니스 애널리틱스(Pentaho Business Analytics)
Ⅲ. 카르마스피어 스튜디오와 애널리스트(Karmasphere Studio and Analyst)
Ⅳ. 탈렌드 오픈 스튜디오(Talend Open Studio)
Ⅴ. 스카이트리 서버(Skytree Server)
Ⅵ. 타블로 데스크톱과 서버(Tableau Desktop and Server)
Ⅶ. 스플렁크(Splunk)

다중 SW개발 프로젝트 관리를 위해 갖추어야 할 9가지 테크닉

SW개발 PM들은 보통 2가지 이상의 프로젝트를 책임지고 있습니다. 여러 SW개발 프로젝트를 효과적으로 관리하는데 도움이 될 관리기술로 4가지 비공식적인 기법과 5가지 공식적인 기법을 살펴보도록 하겠습니다. 이러한 기법들은 기존에 모두 존재해 왔고 관리자 대부분이 잘 알고 있으나, 이의 실제 활용을 통해 크고 복잡한 프로젝트를 리드할 경험을 지니는 데 조금이나마 도움이 되고자 합니다.

비공식적인 기법
  1. 신뢰할 수 있는 정보원을 가질 것
  2. 고객에게 우선권이 있다는 것을 명심할 것
  3. 상호 의존하는 것을 배울 것
  4. 시간 관리를 철저히 할 것

공식적인 기법
  1. 표준화된 공용 보고서를 사용할 것
  2. 비용관련 수치들을 주시할 것
  3. 프로젝트 주요 진행사항은 문서화 할 것
  4. 지속적으로 의사소통할 것
  5. 결정은 신속하게 할 것


동시에 다중 프로젝트를 관리하는 것을 통해 향후 크고 복잡한 프로그램 프로젝트를 이끄는데 필요한 경험과 지혜를 발전시킬 수 있다는 긍정적인 측면에서 접근하는 자세가 매우 중요함에 따라 상기 제시된 여러 가지 방법을 활용하여 프로젝트를 성공적으로 이끌 것으로 기대합니다.

2015년 9월 12일 토요일

빅데이터 시대: 효과적인 공공정보 개방을 위한 데이터 플랫폼 구축방향

빅데이터 활용 여부가 국가경쟁력 강화 및 정보혁신의 필수
*빅데이터 분석을 기반으로 과학적 국정운영 , 사회적 비용 절감 , 선제적 현안 대응 등 스마트 정부로의 진화 가능.
* 빅데이터의 분석 및 활용에 있어 가장 선행되어야 할 작업은 양질의 데이터 확보.
- 정보 및 공공기관에서 보유하고 있는 데이터는 가장 가치있는 대규모 데이터.
- 이러한 공공데이터를 기관간 정보 공유를 통해 전체 데이터의 양과 질을 풍족하게 하는 것이 최우선 과제.

미국 , 영국 등 선진국의 공공정보 개방 현황
*공공정보 개방은 공공부문 데이터 자체에 대한 개방과 데이터 개방을 위한 플랫폼 개발의 두가지 부문에서 추진.
-빅데이터에 대한 관심과 투자 , 데이터 활용의 중요성 인식에 따라 공공데이터에 대한 범정부 차원의 강력한 개방과 공유 추진.
*공공부문 데이터 개방을 효율적으로 추진하기 위한 플랫폼 개발 및 확산에도 초점.
- 공공데이터 개방을 위한 제도적 기반 마련 뿐만 아니라 공공데이터를 쉽게 개방하고 활용하기 위한 표준화된 데이터 관리 및 기술적 플랫폼을 개발 및 확산하고 있음.

핵심은 SW품질, 오류 추적은 더 이상 불필요한 요소일 수 있다는 의견이 대두

지금까지 버그 리포트나 결함 추적은 품질향상을 위한 필수요소라 여겨져 왔습니다. 몇몇 전문가들은 이러한 테스트활동들이 불필요하거나 SW생산성 등에 부정적인 영향을 미칠 수 있다는 의견들을 제시하고 있습니다. 이러한 의견들에 대해 살펴봄으로써 불필요한 테스트활동들을 점검해보고 효과적인 SW 품질향상방안을 모색해보도록 합니다.

중요한 건 소프트웨어 그 자체
  • 구글의 Engineer Director James Whittaker 는 소프트웨어 개발에서 중요한 산물은 단지 코드라고 언급함
  • 테스트기반의 개발에서 개발자들은 코드에 직접 단위테스트 자동화를 수행함
       - 문서 자체가 코드이고 , ‘ 문서화 ’ 가 최신 정보에 근거한 것을 보장
  • 지속적인 통합과 자동화에 따라 빌드와 배치를 점점 빠르게 함
      - 이에 따라 버그가 조기에 발견 됨 ( 테스터에 의해서가 아니라 코드 자체적으로 )
  • 과거와 같이 버그가 비용적인 관점에서 차지하는 비중이 줄어듦
     - 버그를 빠르게 보정할 수 있다면 , 과거 제품출시 이후 발견된 버그로 초래되었던 극심한
        비용 지출은 ( 적어도 특정산업에서는 ) 신경 쓰지 않아도 된다고 주장

SW사업 대가산정 가이드 (2015년 개정판) 재공표

한국소프트웨어산업협회(www.sw.or.kr)에서 재공표한 SW사업 대가산정 가이드 (2015년 개정판)을 소개합니다.


자세히 보기 →

2015년 9월 11일 금요일

제57회 SW공학 Technical 세미나 안내

SW공학센터 홈피지기 입니다^^

정기적으로 진행되는 제57회 SW공학 Technical 세미나 개최소식을 알려드리러 왔습니다

벌써 57회째 운영되고 있는 역사깊은(?) 세미나 인데요.
SW개발자분들 부터 기업의 CEO 이신분들까지 관심있으신 많은 분들이 매번 세미나에 참석하여 주시고 계십니다.

이번 SW공학 Technical 세미나에서는 다양한 분야에서의 전자문서 관리, 유통기술의 사례와 활용방안, Agile 개발 방법론의 활용 등에 대한 정보들을 알려드립니다.
많은 분들에게 도움이 되는 세미나가 되었으면 하는 바램입니다.

선착순 100분께는 맛있는 샌드위치까지 제공된다고 하니
많이~ 많이 찾아 주세요~^▽^

세미나 무료참가 신청은 SW공학센터 홈페이지에서 ☞


SW 프로세스 개선 Part 1 - 애자일의 핵심가치와 키 프랙티스

SW 프로세스 개선 통찰 : 애자일로부터 얻은 것 , 놓은 것 그리고 간직하는 것 Part 1

[애자일의 핵심가치와 키 프랙티스]

Ⅰ . 소프트웨어 개발 프로세스의 차이점과 공통점
세상에는 다양한 소프트웨어 개발 프로세스가 존재하고 차이점도 분명합니다 . 그러나 소프트웨어 개발 프로세스가 효율적이며 품질 좋은 소프트웨어의 개발이라는 공통적 목표를 갖고 있기 때문에 차이점뿐만 아니라 공통점도 있게 마련입니다 .
UP(Unified Process) 객체지향 프로세스와 UML(Unified Modeling Language) 모델링 표준 언어를 공동으로 창시한 이바 야콥슨 (Ivar Jacobson) 박사는 개발 프로세스들이 공통성을 부정함으로써 개별 프로세스만의 특징들을 부각시키지만 실제로 개발 프로세스들은 많은 공통성에 기반하고 있다고 지적하였습니다 (Jacobson, 2007).
어느 누구도 소프트웨어 개발의 모든 것을 다 알 수는 없고 한정된 부분에서의 전문가이기 때문에 소프트웨어 개발 프로세스에는 경험을 통하여 유용하다고 인정되는 공통된 프랙티스가 존재한다는 것입니다 . 애자일과 같은 가벼운 프로세스 (light process) 에 반하는 무거운 프로세스 (heavy process) 로 잘 알려져 있는 RUP (Rational Unified Process) 을 살펴보면 둘 다 반복적이고 점진적인 (Iterative and Incremental process) 개발을 핵심사항으로 담고 있습니다 . 이처럼 소프트웨어 개발 프로세스들을 대립적인 관점에서 이해하기보다는 개발 프로세스들이 담고 있는 차이점과 공통점을 이해하고 자신의 상황에 적합한 방법을 가려내고 포용하려는 실용적인 관점이 유용하고 적절합니다 .
프로세스 , 문서 , 계획 중심의 워터폴 지향적이던 무거운 프로세스에서 사람 , 작동하는 소프트웨어 , 반복적 개발을 지향하는 가벼운 프로세스로 진화하는 배경에는 기술적인 우위보다는 심플한 실용성의 승리라는 생각이 듭니다 . 마치 스펙 측면에서 보다 완벽한 SOAP(Simple Object Access Protocol, 단순 객체 접근 프로토콜 ) 보다 간편하고 심플한 REST(Representational State Transfer) 방식의 프로토콜을 개발자가 선호하는 것처럼 말입니다 .

Ⅱ . 애자일로부터 얻은 것 

자세히 보기 →

모바일 애플리케이션 개발을 위한 7가지 강력한 프로그래밍 툴

프로그래밍 툴이란 개발자들이 신속하고 빠르게 그리고 원하고자 하는 기능을 개발할 수 있게 하는 것으로 모바일 애플리케이션 시장이 빠르게 확장됨에 따라, 애플리케이션을 구축하는 개발자들을 돕기 위한 툴 시장도 빠르게 확대 되었습니다. 단일 플랫폼을 위한 것이든 크로스 플랫폼 애플리케이션을 코딩하기 위한 것이든, 이러한 툴들은 모바일 기기에 적합한 성능을 발휘하기 위해 필요한 애플리케이션 개발에 강력한 수단을 개발자들에게 제공합니다.

구글 안드로이드 개발 툴(ADT) 
구글 안드로이드 개발 툴(ADT: Android Development Tools)은 안드로이드 애플리케이션을 구현하기 위한 이클립스 IDE 플러그인임

모토롤라 RhoMobile Suite
모토롤라 RhoMobile Suite는 OS 애그노스틱(OS-agnostic)1) HTML5 애플리케이션을 개발하기 위한 HTML 크로스 플랫폼(cross-platform)임

appMobi, jqMobi와 jqUI
오픈 소스 jqMobi는 HTML5 모바일 애플리케이션과 하이브리드앱 개발을 위해 개발되었고 60개 이상의 API 호출(call)과 jQuery와의 호환가능 구문을 갖고 있는 모바일 기기를 위한 가벼운 쿼리섹터임

마멀레이드 SDK
마멀레이드(Marmalade) SDK는 개발자들이 HTML5, CSS3, 자바스크립트를 사용하는 하이브리드 애플리케이션들을 구축할 수 있게 하는 크로스 플랫폼 SDK임

마이크로소프트 윈도우 폰 SDK 툴
마이크로소프트의 윈도우 폰 SDK는 폰 컨트롤을 포함하는 툴박스, 폰 기반의 디자이너 스킨, 프로젝트 템플릿뿐만 아니라 윈도우 폰 개발 환경을 위한 비주얼 스튜디오 2010 익스프레스를 포함하고 있음

모바일프레임(MobileFrame)
모바일프레임은 프로그래밍 기술이 없는 기업 사용자가 업무 프로세스에 맞는 크로스 플랫폼 네이티브 또는 HTML5 모바일 애플리케이션을 구축할 수 있도록 하는 코드 프리 개발 환경임

태블릿 OS를 위한 모션 블랙베리 네이티브(Motion BlackBerry Native) SDK에 대한 연구
모션 블랙베리 네이티브 SDK는 컴파일러, 링커, 라이브러리, QNX 메모리스틱 IDE, 명령행 툴 등의 기능을 보유하고 있음.


소프트웨어 테스팅 관점에서 본 소프트웨어 기능안전성 표준 비교

현대사회는 시장에서 소비자의 권리가 강화되고 있으며 , 소비자의 권익을 증진하기 위한 소비자 기본법 및 제조물 책임법이 유럽에서는 1980 년대 후반부터 , 국내에서는 2002 년 시행에 들어갔습니다 . 이런 사회 · 경제적 움직임으로 인해 제품을 개발하고 양산하는 과정에서 제품의 결함을 없애려는 노력이 강제화 되는 상황에서 , 기존제품에 소프트웨어가 결합된 임베디드 제품이 시장에 전면 등장함에 따라 소프트웨어가 탑재된 제품에 대한 안전성확보가 시급하게 되었습니다 .
그러나 기존 제품의 안정성이 장애율 (Probability of failure) 로 계산되어 관리되는 반면 , 소프트웨어는 동일한 개념을 적용하는 것에 무리가 있어 안전등급에 따라 개발 단계별로 기법과 지표를 제시하는 방향으로 안전성을 확보하는 방향으로 진행되게 됩니다 .
본 연구에서는 이런 소프트웨어의 안전성을 확보하려는 노력의 일환인 기능안전성 표준을 대표적인 산업별로 살펴보고 , 이들의 소프트웨어 안전성 확보 방법을 비교하여 소프트웨어 테스팅 관점에서의 시사점을 도출하였습니다 .

  • 기능안전성 [Functional safety] 의 정의
  • 소프트웨어와 관련된 기능안전성 표준과 유사한 표준
  • 소프트웨어와 관련된 기능안전성 표준
  • 기능안전성 표준에서의 소프트웨어 테스팅

2015년 9월 10일 목요일

모바일 컴퓨팅을 위한 소프트웨어 아키텍처

스마트폰의 보급과 무선 네트워크 속도의 급격한 향상으로 사용자가 주로 사용하는 디바이스가 PC에서 모바일로 이동하는 큰 변화가 일어나고 있다. 이에 따라 소프트웨어 서비스도 PC에서 모바일로 이동하고 있는 추세이다. 이러한 변화는 모바일 디바이스에 더 다양한 서비스를 갖춘 소프트웨어를 요구하게 되고, 이를 뒷받침하는 효율적인 아키텍처의 필요성이 증가하고 있다.

 모바일 서비스는 대부분 PC 기반에서 운영하는 서비스에 모바일의 특성이 가미된 것이 많다. 이렇다 보니 PC 기반의 아키텍처를 재활용하여 모바일 아키텍처를 구성하는 경우가 있다. 이 경우, PC 기반의 요소가 모바일에 그대로 탑재되는 경우도 발생하여 제한적인 자원을 가지고 있는 모바일 디바이스의 부하가 높아질 수 있다. 따라서 모바일 아키텍처를 설계할 때, 이런 부분을 고려하여 모바일 디바이스의 요소를 최소한으로 줄일 필요가 있다.

 소프트웨어 아키텍처의 역할

소프트웨어 개발에서 사용자가 원하는 요구사항이 점점 많아지고 복잡해지면서 체계적으로 시스템 구성을 살펴볼 수 있게 하는 소프트웨어 아키텍처(Software Architecture)가 필요하다. 물론 소프트웨어 아키텍처는 세부적으로 더 다양한 아키텍처로 구분할 수 있다. 일반적으로 소프트웨어 아키텍처는 아래와 같은 역할을 한다.

 - 시스템의 전체 구성을 결정한다.
 - 프로젝트 초기 단계의 의사 결정 도구이다.
 - 프로젝트 업무 분장의 수단이다.
 - 시스템의 품질 요소를 결정한다.
 - 시스템 구성의 변경 사항을 관리한다.
 - 프로젝트 의사 소통의 수단이다.
 - 시스템의 완성 모습을 예측한다.

자세히 보기 →

애자일 스크럼 팀이 SW 품질과 테스팅에 주력하게 만드는 3가지 방안

SW품질과 테스팅은 애자일 방법론을 도입하는 된 핵심적인 이유입니다. 애자일을 도입한 개발팀이 산출물의 품질향상을 위해 필요한 의사소통라인 구축, 유연한 테스트 타이밍, 빠르고 효과적인 테스트 방법을 살펴봅니다.

1.강력한 의사소통 라인 구축하기
  • 개인 간 소통만이 아니라 팀의 비즈니스 의사소통도 혁신시킬 필요가 있음
  • 개발하면서 결함이 발견되기 전에, 요구사항단계부터 변화가 발생하면 테스트 팀과 소통을 하는 것이 좋음
  • 의사소통의 원활함을 위해서는 스크럼 팀 구성원을 편안하게 만드는 것이 중요함

2. 유연한 테스트 타이밍
  • 테스트 팀 매니저로서 회의를 계획하고 진행하는데 시간을 좀 더 투자하는 것이 중요
  • 엄격함보다는 유연성을 가지고 결정하기
  • 테스팅을 수행하는 인력을 관찰하는데 시간을 투자하기

3.빠르고 효과적인 테스트 방법 적용하기
빠르고 효과적인 테스트를 수행하는 테스터는 부지불식간에 수동적(자동화 반대 개념 측면에서의)이고 자기만의 기술을 활용하여 테스트를 수행하는 경향이 있음에 따라 그들이 일을 하는 것을 관찰하여 어떻게 테스트를 수행하는지를 배워야 함

소프트웨어 취약점 , 보증 및 보안 테스팅

소프트웨어 (SW) 를 위협하는 요소들에는 직접적인 취약점 공격 , SW 내에 탑재된 악성 코드 실행 , 개발 중인 SW 에 악의적 로직이나 의도적 취약점들 주입 등이 있습니다 . SW 취약점은 코드 내의 결함 (defect) 또는 실수 (flaw) 로 보안 공격에 악용될 수 있습니다 . SW 보증 (Software assurance, SwA) 은 SW 가 의도적이거나 우연한 취약점들로부터 자유롭다는 것과 SW 가 의도한대로 수행된다는 것을 확신 (confidence) 하는 레벨입니다 . SwA 은 SW 안전성과 보안 , 테스트와 평가 , SW 공학 , 정보 보증 , 정보시스템보안공학 , 프로젝트 관리 , 시스템 공학 등 여러 학제 간 협력 (multi-disciplinary collaboration) 을 필요로 하며 , 그 중심에 위치합니다 . SW 보안 테스팅은 보안 요구사항이 만족되었는지 그리고 안전한 설계와 코딩 가이드라인을 준수하였는지를 확인하는 과정으로 , SW 신뢰성 및 보증을 검증하기 위한 최고 실무지침 중의 하나입니다 .


2015년 9월 9일 수요일

소프트웨어 개발 생산성 향상을 위한 협업 Tools의 공학적 활용

성공적인 소프트웨어의 개발은 제대로 된 개발 환경을 기반으로 이루어진다. 예를 들어, 구글 드라이브나 Dropbox등의 원활한 활용을 관리해주는 소프트웨어 즉, 소스를 관리해주는 소프트웨어를 잘 활용하면 업무의 효율성은 증폭된다. 현대의 소프트웨어 개발은 예전처럼 한 사람의 개발자에 의해 개발이 진행되는 것과는 달리 그 규모가 상당히 크기 때문에, 여러 개발자의 협업으로 이루어지는 경우가 많다. 그에 따라 협업을 위한 여러 도구들을 사용하게 되는데, 어떤 도구를 어떤 식으로 사용하느냐에 따라 그 능률과 결과물이 눈에 띄게 달라질 수 있다. 

이와 같이 소프트웨어 개발 생산성을 높여주는 협업 도구에 대해 카이스트의 윤종민 연구원을 만나 사례와 함께 사용법에 대한 몇 가지 팁을 들어본다.

윤종민 연구원: (현) 한국과학기술원 정보보호대학원 리눅스커널 보안 연구원
(전) 윈드리버 KDC 수석, 리눅스-안드로이드 플랫폼 개발

Q.  ‘개발환경’이란 구체적으로 어떤 것을 뜻하는 건가요?
개발 환경이란, 프로그래머가 소프트웨어를 개발하는데 있어서 사용하는 모든 환경을 이야기 하는데요.  IDE(Integrated Develop Environment) 뿐만이 아니라, 버전 관리 도구, 협업용 커뮤니케이션 도구, 이슈 관리 도구, 라이선스 검증 도구 등 개발 과정을 도와주는 수 많은 도구가 존재합니다.

협업도구 활용 Tips
1. 의사결정규칙의 명문화
2. 형상관리시스템 활용
3. 소스코드 리뷰

성공적인 요구사항관리를 위해 피해야할 5가지 타입

대다수의 실패한 SW프로젝트는 모호한 요구사항관리에서 비롯됩니다. 모호함은 단일한 정의가 아니라 사람에 따라 여러 가지로 해석할 수 있게 만들어 개발시간을 낭비하고 비용을 소모하여 프로젝트를 실패로 이끄는 주범입니다. 이에 모호함을 만드는 5개 요소를 파악하고 이를 통해 요구사항을 성공적으로 관리하도록 시사점을 제시합니다.

1. 부정적인 표현의 요구사항(Negative requirements)
부정적이거나 전도된 표현의 요구사항은 시스템이 하지 말아야 할 것을 기술하게 됨
2. 경계 조건(Boundary Conditions)의 불명확성
숫자나 날짜 범위의 경계는 흔히 요구사항을 처리하기가 애매함
3. 동의어 등 특정되지 않은 용어 사용
모든 프로젝트 문서에 일관적으로 특정 용어를 사용해야 함
4. 대명사, 부사 등 혼동할 수 있는 표현의 사용
대명사: 선행사가 명확하지 않을 경우에 혼동을 가져올 수 있음
5. 'A/B'같은 다중적 표현
"feature/function"과 같은 A/B식의 표현을 피해야함. 예외) “input/output"

요구사항을 작성하는 목적은 분명하고 효과적인 의사소통이기 때문에 요구사항을 정확하게 기술하는 것은 매우 중요함.
말은 표현에 따라 다양하게 해석될 수 있기 때문에 표현에 주의해야 함.

주목해야 할 9가지 오픈소스 빅 데이터 기술

갈수록 많은 기업들이 더욱더 많은 데이터를 축적하며 경쟁력 향상을 위해 축적된 데이터의 레버리지 효과를 꾀합니다. 최근에 이런 빅 데이터 열풍의 중심에는 오픈소스 기술이 핵심요소로 자리 잡고 있음. 여기에서는 주목해야 할 아홉 개의 오픈소스 빅 데이터 기술을 소개합니다.

1. 아파치 하둡(Apache Hadoop)
데이터 집약적 분산형 애플리케이션(data-intensive distributed application)용 오픈소스 소프트웨어 프레임워크인 아파치 하둡1)은 더그 커팅(Doug Cutting)이 작업 중인 오픈소스 웹 검색 엔진인 넛치(Nutch)를 지원할 목적으로 개발한 것임
2. R
오픈소스 프로그래밍 언어이자 통계 계산과 가상화를 지원하는 소프트웨어 환경임
3. 캐스케이딩(Cascading)
하둡을 위한 오픈소스 소프트웨어 추상화 계층(abstraction layer)이며, 사용자들이 JVM 기반 언어를 사용하여 하둡 클러스터들에서 데이터 프로세싱 워크플로를 제작, 실행할 수 있도록 지원함
4. 스크라이브(Scribe)
스크라이브는 페이스북에서 개발한 서버로 2008년부터 릴리스 되어 사용됨
5. 엘라스틱서치(ElasticSearch)
셰이 바논(Shay Banon)이 아파치 루센(Apach Lucene)을 기반으로 개발한 엘라스틱서치는 분산형 레스트풀(RESTful) 오픈소스 검색 서버임
6. 아파치 H베이스(Apache HBase)
구글의 빅테이블을 모델로 하여 자바로 작성된 오픈소스 비 관계 열지향 분산형 데이터베이스(non-relational columnar distributed database)임
7. 아파치 카산드라(Apache Cassandra)
또 다른 NoSQL 데이터 스토어인 아파치 카산드라는 편지함 검색 기능을 강화할 목적으로 페이스북이 개발한 오픈소스 분산형 데이터베이스 관리 시스템임
8. 몽고DB(MongoDB)
더블클릭(DoubleClick)사의 설립자들이 개발한 몽고DB는 인기있는 또 다른 NoSQL 데이터 스토어로 몽고DB는 정형 데이터를 BSON(Binary JSON)이라고 하는 동적 스키마와JSON 같은 문서에 구조화된 데이터를 저장함
9. 아파치 카우치DB(Apache CouchDB)
아파치 카우치DB 또한 오픈소스 NoSQL 데이터 스토어 중 하나이므로 JSON을 이용해 데이터를 저장하고 있으며 자바스크립트를 질의 언어(query language)로, 맵리듀스와 HTTP를 API로 사용하고 있음

2015년 9월 8일 화요일

[SW공학 동영상 5화] 소프트웨어 아키텍처 개론

1. 아키텍처 필요성
  • 아키텍처 개념
  • SW아키텍트가 갖춰야 할 요건

2. 아키텍처 설계방법
  • SW아키텍처 결정요인 - 품질
  • 품질속성 - 종류, 시나리오
  • SW아키텍처 뷰


자세히 보기 →

안드로이드 애플리케이션 테스팅 Part 2

[앱 성능 테스트 : 엔드투엔드 방식과 테스트 ]

안드로이드 앱 성능 테스트에서 각 구성요소별 각기 다른 시나리오를 전부 테스트 하기 위해서는 엔드투엔드 앱 전송 모델이 필요합니다. 이를 통해 안드로이드 앱 개발자는 앱이 최종사용자들이 사용하는 기기에서 어떻게 작동하는지 제대로 이해할 수 있습니다.
이 글에서는 은행 앱을 예시로 활용하여 안드로이드 개발자들이 안드로이드 앱 성능 테스트하는 환경과 시나리오를 살펴보았습니다. 

안드로이드 앱 성능 테스트 구성요소
1. 안드로이드 애플케이션
2. 서버 구성요소
  • 운영체제: Windows Server 2000
  • JDK: 1.6
  • 웹 서버: Apache Tomcat
  • DB 서버: MySQL
3. 네트워크 에뮬레이터
4. Load Generator
5. 안드로이드 기기
6. 성능 모니터
7. 안드로이드 디버그 브릿지(adb: android debug bridge)
8. Dalvik 디버그 모니터 서버(DDMS: Dalvik Debug Monitor Server)

자세히 보기 →

SQL Azure 성능향상을 위한 아키텍쳐 관점에서 고려해야 할 3가지 요소

SQL Azure 애플리케이션이 최상의 성능을 발휘하는 방법을 아키텍쳐 관점에서 살펴봅니다. 샤딩(Sharding)으로 데이터를 작은 단위로 나누어 분산 관리하고, 인덱싱(Indexing)으로 데이터에 색인을 달아 검색 및 읽는 시간을 빠르게 하고, 네트워크 지연시간(Network Latency)을 최소화하기 위해 한번 접속으로 여러 DB 작업을 배치처리, 접속통계를 활용하여 빠른 데이터센터 접속 등의 방법을 제시합니다.

애플리케이션이 최상의 성능을 발휘하기 위해 SQL Azure 개발자가 아키텍쳐 관점에서 고려해야할 다음  사항에 대해 살펴봄.
  • 샤딩 (Sharding)
  • 인덱싱 (Indexing)
  • 지연시간 (Latency) 감소

데이터베이스가 SQL Azure 플랫폼에서 호스트 되면 관리 이슈가 줄고 유지비용도 절감됨.
  • 이용가능성 , 신뢰도 , 확장성이 높아짐
  • 인터넷을 이용하여 어디에서든지 접속할 수 있음
  • Pay-as-you-go( 사용한 만큼 지불 ) 와 bulk pricing( 대량구입가격 ) 이 모두 가능하여 가격 정책이 유연함

2015년 9월 5일 토요일

안드로이드 애플리케이션 테스팅 Part 1

[ SW 품질보증을 위한 테스팅 Overview ]


모바일 앱 개발에서 품질보증 (QA) 의 중요성

모바일 개발팀은 전통적인 소프트웨어 개발팀보다 규모가 훨씬 작아서 테스트를 세심하게 수행하기가 어렵거나 아예 테스팅 자체가 존재하지도 않을 수 있습니다 . 모바일 앱은 기존의 소프트웨어 패키지보다 매우 간단한 기능과 구조를 가지고 있다고 여겨지고 있습니다 . 전형적인 모바일 소프트웨어 개발자의 이미지는 골방에서 편안한 차림에 , 쉬는 시간에는 게임을 하고 있는 것입니다 . 물론 그런 사람들도 일부 있겠지만 요즘 대부분의 안드로이드 개발자는 다른 기술자와 같이 개발실에서 일을 합니다 .

아쉽게도 이러한 선입견 때문에 많은 회사나 개인들이 성공적이 애플리케이션을 시장에 런칭하기 위해 필요한 많은 리소스들을 과소평가하여 쉽게 앱 개발에 뛰어듭니다 . 스마트폰의 처리능력은 불과 몇 년 전의 데스크탑 컴퓨터과 비슷합니다 . 스마트폰 개발자가 ‘ 리소스 제한적인 ’ 환경에서 성공적인 앱을 개발하기 위해서는 리소스를 효율적으로 사용해야 합니다 . 앱은 보호해야할 많은 개인정보에 접근가능하고 네트워크화되어 있습니다 . 그리고 앱이 구동되는 스마트폰 화면은 작지만 터치패드 , 키보드 , 목소리 제어 등 다양한 정보 입력방식을 가지고 있습니다 . 스마트폰은 앱을 실행할 뿐 아니라 전화 , 문자메시지교환 등의 주목적으로도 사용되어서 앱의 실행은 자주 중단되기도 합니다 . 마지막으로 스마트폰의 화면이 작다고 해서 좋은 UI(User Interface) 를 디자인하기 쉽다고 말할 수는 없습니다 . 사실 멋지고 성능 좋은 UI 는 진짜 도전할 과제이며 쉽게 만들 수 있는 것이 아닙니다 .

안드로이드 애플리케이션 테스팅 개요
  • 안드로이드 앱 테스트 방식
  • 안드로이드 앱의 자동화 테스팅
  • 안드로이드 앱의 화이트박스 테스팅을 위한 기본적 셋업
  • 안드로이드 앱의 블랙박스 테스팅을 위한 기본적 셋업
  • 특정 안드로이드 목표기기에 접속할 수 없다면?
  • 알아야 할 기타 다른 테스팅 옵션들

SW프로슈머 평가 대상 3차 모집안내

창업 초기기업들의 SW개발 제품을 사전에 사용 및 평가하여 개선방향을 제시함으로써 제품의 완성도와 고객만족도를 높이고, 나아가 시장에서의 성공적인 연착륙을 지원합니다.


MS 윈도10 관련 SW개발자 유의사항

MS는 최신 윈도 버전인 ‘윈도10’을 출시하고 기존 윈도 사용자 대상으로 윈도10 무료 업그레이드를 7월 29일부터 1년간 실시 중입니다.

* SW동작 중 모든 시스템 메모리와 CPU 명령어에 접근이 허가되는 상태로 커널모드에서 동작 중인 SW에 문제가 생길 경우 시스템 전체가 다운됩니다.

윈도10 인증 관련 유의사항
모든 커널모드를 활용하는 SW들은 반드시 “Windows Hardware Developer Center Dashboard Portal”을 통해 인증을 받아야 사용 가능합니다.
- 윈도10이 출시된 7월 29일로부터 90일이 지난 10월 26일부터 인증을 받은 드라이버만 사용가능하도록 변경될 예정.





















2015년 9월 4일 금요일

제16차 SP인증을 중심으로 한 SW프로세스 교육

지역SW기업의 SW개발품질관리 선진화 및 역량강화 일환으로 마련된 제16차 SP인증을 중심으로 한 SW프로세스 교육에 여러분을 모십니다.

본 교육은 국내 중소SW기업과 개발 조직의 SW프로세스 품질 향상과 신뢰성 확보에 목적이 있습니다.
SW개발자, 품질 담당자, 테스트 담당자 등을 대상으로 SW프로세스 개념과 SP인증 기준 이해를 바탕으로 실제 업무에 필요한 SW 프로세스 교육을 진행합니다.


  • 교육대상: 중소SW기업 소속 엔지니어(관리자, SW개발자, 품질담당자, 테스트 담당자)
  • 교육일시: 2015. 9. 15(화)~2015. 9. 16(수), 09:00~17:50
  • 신청기한: 2015. 8. 31(월)~2015. 9. 09(수) 18:00
  • 교육장소: 전주정보문화산업진흥원
  • 교육비용: 무료






















5G 비젼포럼 "5G New Opportunity in a Connected World"

5G 시대, 언제 어디서나 LTE보다 1천배 빠른 속도로 서비스를 제공하는 초연결 사회(Hyper-Connected society)는 어떤 모습일까?
5G 통신혁명은 속도 그 이상의 변화를 예고하고 있으며, 이러한 변화는 새로운 비즈니스 기회로 다가올 것입니다.

이에 5G 통신에 대한 비전, 주요 핵심기술 소개를 통해 글로벌 경쟁력 강화 방안 및 대응전략을 제시하고자 5G New Opportunity in a Connected World 란 주제로 
9월 10일(목) 여의도 중소기업중앙회 그랜드홀에서 [5G 비전포럼 2015]을 개최합니다.
























효과적인 자동화 테스팅 설계를 위한 7가지 Tip

자동화 기능테스트(automated functional test) 또는 유저인터페이스 테스트(UI Test)는 흔히 버그를 찾을 만큼 성능이 우수하지 못하다고 여겨지고 있습니다. 그러나 이는 테스트 툴이나 프레임웍의 문제이기보다는 디자인이 제대로 설계되지 않았기 때문입니다. 우수한 자동화 기능테스트 및 UI 테스트를 설계하는데 도움이 되는 7가지 팁에 대해 살펴 봅니다.

1. 단순히 클릭만 하지 말고, 수행 후 피드백 여부를 체크하기
2. 멈추지 말고 기다리기
3. 인덱스가 아닌 별도의 탐지기(locator) 사용하기
4. 규칙적인 표현으로 분류 순서 점검하기
5. 스스로 반복하지 않기
6. 조건문 사용하지 않기
7. 재사용 가능한 무작위 데이터를 만드는 자바스크립트를 사용하기

효과적인 테스트를 위한 설계의 중요성
  • 자동화 기능테스트를 효과적이고 지속 가능하게 만드는 몇 가지 예를 살펴보았음.
  • 지금까지의 자동화 기능테스트의 가장 큰 단점은 유지하기 힘들고 버그를 찾아낼 만큼 강력하지 않다는 것임.
  • 잘 설계된 테스트는 유지하기 어렵지 않고 애플리케이션의 상태를 제대로 체크하고 사용자와 애플리케이션 차원에서 중요한 기능을 잘 테스트하며 버그도 잘 찾아낼 수 있을 것으로 기대됨

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에 데이터를 입력하여 에러가 발생하는 경우를 탐지함으로써 취약점을 검출할 수 있습니다. 그러나 무작위로 도출된 입력 값 기반의 퍼징은 특정 취약점에 대한 도출이 어렵고, 많은 시간을 소모하는 문제점이 있습니다.