2015년 10월 1일 목요일

개발자들에게 유용한 10가지 오픈소스 온라인 코딩툴

페어 프로그래밍, 소셜 코딩, 협업개발 등을 위해 브라우저를 통한 공유, 개발, 코드 디버깅이 가능한 툴들이 급격히 확산되고 있습니다. 이에 따라 개발자들에게 유용한 온라인 디버깅 툴, 통합개발환경 등을 소개할 필요가 있습니다.
 
오픈소스 운동은 협력, 공유, 아이디어의 무료 공유에 주목하며, 이런 모든 것들을 위한 활발한 공개토론회가 필요합니다. 새로운 온라인 코드 공유 사이트들, 디버깅 도구들, 성숙된 IDE들이 매일 생겨나고 있으나, 최근까지도 웹프로그램을 정교하게 개발하는 것은 어려운 일입니다. 여기에서는 효과적이고 경쟁력 있는 오픈소스 온라인 코딩 툴을 소개합니다.

Koding(공개 시험판)
소셜 코딩에서의 새로움은 실제로 그렇게 새로운 것이 아니며, Kodingen으로 알려진 Koding은 완전한 기능을 갖춘 브라우저 기반의 IDE로 여전히 베타 버전으로 남아있으나, 이미 좋은 평가를 받고 있음

Cloud9
Cloud9은 백-엔드 상에서 Node.JS와 함께 설계되고 클라이언트 상에서 자바스크립트/HTML5와 함께 설계된 오픈 소스 IDE임

CodePen
알렉스 바즈케즈(Alex Vazquez) 등이 개발한 CodePen은 프론트엔드 기능에 재미를 느끼게 하는 것에 집중하고 있으며, 특히 CSS3 그리고 캔버스 애니메이션은 특별한 관심을 얻고 있음

Dabblet
Dabblet는 자바스크립트를 해석하는 JsFiddle과는 다르게 CSS/HTML에 최적화된 웹테스트 환경을 지님

Pastebin.me 
Pastebin.me는 온라인 코드 공유 방식으로, 코딩을 자동 완성시키는 스니펫트는 이메일을 통해 공유할 수 있는 독특한 URL을 Pastebin.me에서 설정할 수 있음

CSSDesk
CSSDesk가 단독 디자이너/개발자인 조쉬 파이레스(Josh Pyles)의 작업이라는 사실은 오늘날 가장 작은 규모의 개발 팀이 얼마나 많은 것을 할 수 있는지를 보여줌

JSFiddle
JSFiddle은 자바스크립드/HTML/CSS/SCSS를 웹에서 바로 작성해서 디버깅과 테스트를 해 보고 소스를 공유할 수 있는 최고의 서비스 중 하나임

jsdo.it
L5, CSS, JavaScript, JQuery 소스를 작성한 후 결과를 확인하고 공유할 수 있는 사이트임 

Tinker.io
Chiel Kunkel의 Tinker는 능력을 드러내지 않는 것과 시각적으로 단순하게 디자인하는 것을 선호하기 때문에, 결과적으로 다른 사람들의 코드나 과시하는 것에 집중하는 것이 아니라, 스스로 작업하고 있는 코드에 집중하게 함

Tinkerbin
2011 필리핀 웹 디자인 컨퍼런스를 위해 제작된 Tinkerbin은 이제는 잘 이해할 수 있는 포맷 즉 HTML/Haml/JS/CoffeeScript/CSS/Sass/LESS를 지원함

안드로이드 스마트폰을 위한 USB 기반 통합 디버깅 방법

스마트폰 사용자의 증가와 더불어 스마트폰 개발에 대한 관심이 증가하고 있습니다 . 특히 안드로이드 운영체제를 사용하는 스마트폰에 대한 관심이 더욱 증가하고 있는 상황입니다 . 이러한 안드로이드 스마트폰은 소스가 공개되어 있는 특징을 가지고 있으며 , 이 공개 소스를 활용한 스마트폰 개발과 연구가 증가하고 있는 추세입니다 . 안드로이드를 활용한 소프트웨어 개발은 제조사가 개발하는 안드로이드 스마트폰 플랫폼 개발과 마켓에서 수익을 얻는 응용프로그램 개발로 나뉘고 있습니다 . 이 중 스마트폰 제조사의 안드로이드 커널과 프레임워크에 대한 개발 환경은 크게 부족한 상황이며 , 또한 안드로이드 스마트폰 사용자가 GPL 라이선스로 되어 있는 안드로이드 커널을 수정하여 재 배포 하는 일은 개발 환경 부족으로 쉽지 않습니다 . 특히 안드로이드 커널 디버깅 작업은 매우 힘든 상황입니다 .

안드로이드 스마트폰 개발에서 안드로이드 커널 디버깅 작업은 초기 보드 이식 작업부터 시작하여 각종 디바이스 드라이버 작업을 수행할 때 주로 필요합니다 . 또한 , 사업자 요구 사항과 제조사 요구 사항에 따른 추가적인 기능 개발이 필요하며 , 최종 제품이 납품될 때까지 개발 기간 전체적으로 커널 디버깅 작업이 요구됩니다 . 납품된 이후에도 버전 업그레이드와 버그 수정 등의 이유로 안드로이드 커널 디버깅 작업은 계속 이루어집니다 . 이러한 이유로 커널 디버깅 작업은 지속적인 버그 수정과 커널 패치 등 스마트폰 개발 프로세스의 상당 부분을 차지하고 있습니다 . 이처럼 안드로이드 커널 디버깅에 걸리는 시간을 줄이는 것은 개발 기간을 단축시켜 제품 출시 일을 앞당길 수 있습니다.

안드로이드 디버깅 방법


USB기반 통합 디버깅 개발환경 구조



USB기반 통합 디버깅 개발환경 구현




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) 구축

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