2017년 1월 13일 금요일

IBM의 Watson

출처: IBM Watson Group
빅데이터 기반의 의료 서비스하면 IBM의 왓슨이 떠오른다. 최근 IBM을 비롯하여 마이크로소프트, 애플, 구글, 페이스북 등 글로벌 IT 기업들은 인공지능의 딥러닝 기술에 열을 올리고 있다.
IBM은 코그너티브 비즈니스(Cognitive Business) 전략 아래에서 인공지능 플랫폼 왓슨을 다양한 비지니스에 접목시키고자 하고 있다. 코그너티브 비즈니스는 인지 기술 기반 사업으로 비즈니스에 필요한 앱, 디바이스, 프로세스, 시스템 등에 사고 인지 컴퓨팅을 적용시키는 것이고, 인지 컴퓨팅은 인공지능과 머신러닝이 결합되어 컴퓨터가 인간의 언어로 상호작용하는 기술이다. IBM에서는 2020년이 되면 매일 인당 143GB를 생성하며 그 중 85%가 비정형 데이터일 것으로 예측했다(그림8).


<그림8> 개인의 빅데이터 생성 비율


왓슨은 기존 검색이나 답의 한계를 초월한 의사결정을 지원하는데 그림9에서 보는 것처럼 데이터베이스에 저장된 데이터를 조회하는 수준이 아니라 데이터를 이해하고 연관 있는 것들을 추론, 분석하는 것은 물론 신뢰도까지 계산해서 함께 전달하는 것이 특징이다(그림10).


<그림9> 왓슨의 기존 검색엔진과의 차이점


<그림10> 왓슨의 질문에 대한 답의 추론 예


왓슨은 인지 컴퓨팅을 위해 다양한 종류의 빅데이터를 수집하여 분석, 통합하고(Ingest), 과학적 실체와 관계에 대해 학습하고 이해한다(Learn). 이에 대한 결과를 바탕으로 전문가 집단과 교육을 통해 학습을 하고(Test), 학습 결과를 통해 판단하면서(Experience) 성장하고 있다.


<그림11> 왓슨의 데이터 수집 및 분석(Ingest)


그림11에서 보는 것처럼, 왓슨은 수분 안에 수백 가지 이상의 데이터 소스를 연결하고 분석하여 통찰력을 발견하도록 되어 있다. 이렇게 수집하고 분석, 통합한 데이터를 바탕으로 심도 깊은 자연어 이해 기술로 데이터 간의 연관 관계를 찾아 이해한다(그림12).


<그림12> 왓슨의 학습과 이해(Learn)

SW 공학기술 적용 - 사업 수행 내용 중심으로


현황분석


 가이드작성


역량강화교육



GoLang과 다른 언어의 성능차이 추적

Hello 10만개 출력하기-Go와 Java Thread 성능차이



그럼 위 언어 쓰는건 OK? 성능 추적은?
   •Java야–이미 언어차원에서 여러 성능 지표 수집기능을 지원
   •하지만 다른 언어는 미비..(node.js, golang, ..등) 해결책은 Dtrace


Dtrace는 Kernel및 Application을 추적하는 언어



Dtrace의  지원언어 및 추적영역





2017년 1월 12일 목요일

A Requirement Specification Language for AADL



참석자
Suzanne Miller - principal researcher at the SEI (the Carnegie Mellon University Software Engineering Institute)
Peter Feiler - The researcher at the SEI
요약
AADL의 핵심은 자동차와 같은 필수 안전 소프트웨어 시스템에 있다. 우리가 다루고 있는 것은 임베디드 소프트웨어 시스템, 특히 필수 안전에 초점을 두고 있다. 상황이 잘못되어도 이 시스템이 작동할 때까지는 감지하기 어렵다.
90년대 연구가 시작되었고, 이를 모델링 아키텍처에 대한 업계 표준으로 바꾸고, 강력한 의미 체계를 사용하여 시스템 작동 방식을 분석적으로 평가할 수 있었다. 이를 가상 시스템 통합이라는 용어를 사용했다. 이 표준은 2004년에 처음 출판되고, 항공 산업 및 다른 산업 분야에서도 이를 채택했다.
임베디드 시스템을 다룰 때 AADL의 초점은 소프트웨어, 하드웨어 및 다루는 물리적 시스템 특성을 파악하여 상호 작용을 이해하는 데 집중할 수 있도록 하는 것이다. 발견 한 문제 중 80%가 단위 테스트를 끝낼 때까지 발생하지 않기 때문이다.
시스템 품질을 개선할 때 개발 품질은 잘 개선하지만 요구사항에 반하는 품질이 문제였다. 요구사항을 정의하는 방식을 개선해야 하고 최종 테스트뿐만 아니라 개발 프로세스 전반에 걸친 품질 활동을 수집해야 한다. ALISA라는 점진 보증(incremental assurance)을 다루는 프로젝트가 시작되었다.
전통적인 개발에서 요구사항으로 모든 것을 모델링하고 시스템으로 만들어져야 하는데 모호한 요구사항이 있다. 요구사항을 정의하는 방법은 텍스트 표기를 처리하고 이러한 부분을 시스템으로 추출하는 것이다. 그런 다음 누락되었는지 확인한다.
관건은 그 연구와 범위를 보완하는 것인데 발생한 문제의 80% 정도는 공식적인 부분이 아니라 단순히 놓치는 것이 많다는 것이다. 여기에 접근하는 방식이 있다. 아키텍처 주도형 요구 사양이라고 부른다.
우리는 건물을 다시 짓는 방식으로 요구 사양, ReqSpec 표기법을 사용했고 이를 기반으로 AADL 모델과 관련된 요구 사양에 대한 메타 모델이 나왔다. 이러한 메타 모델에서 수행하고자하는 작업은 요구 사항을 지정하는 기능에 초점을 맞추거나 목표를 수립한다. 요구 공학이란 목표 지향적이며 시스템에 대한 요구 사항이기 때문이다.
하지만, 두 가지 요구 사항을 명확하게 구분하려는 경우 가끔 서로 충돌 할 수 있지만 해결하지 않는다. 따라서 모든 것을 표현할 수 있는 공간을 제공해야하고, 모든 사람들이 모든 요구 사항과 가정에 대해 이야기하고 있는지 확인해야 한다.
그런 다음 시스템 요구 사항을 정의한 후 검증 할 필요가 있다. 경우에 따라 아키텍처 언어를 사용하여 내부 아키텍처를 설명하지 않고 시스템을 운영 컨텍스트로 설명한다.
첫번째는 수행 시나리오로 설명할 수 있다. 이 곳에서 모델을 발견한다. 여기에 시스템이 있고 모든 엔티티가 있다. 그리고 단순한 것의 각각을 덮어서 다양한 각도에서 덮어 씌웠을 것이다. 기본적으로 요구 사항 정의는 목표를 모델링하는 것뿐만 아니라 목표를 모델링하는 환경도 모델링하는 것이다.
수집된 요구사항 문서가 있는 경우 이를 바탕으로 시스템 요구 사항을 정의 할 수 있고, 아직 수집된 요구 사항이 없다면 그 시점에 아키텍처 맥락에서 정의하고 싶을 것이다. 기본적으로 요구 사항 적용에 대해 두 가지 형식을 가지고 있다. 하나는 문서 구조를 따르고 다른 하나는 아키텍처 요소를 따른다. 상호 연결하여 개별 이해 관계자에게 완전한 추적성을 제공할 수 있습니다.
두번째는 아키텍처를 발전시키는데 시스템 전체가 필요하다. 세부적인 아키텍처가 필요하지만 일반적으로 하지 않는 경향이 있다. 하지만 우리 표기법을 사용하면 매우 자연스럽다. 그것은 당신이 OK라고 말하는 것처럼 쉽고, 다음 단계 설계를 할 것이다.
이 모든 과정이 요구 사항을 정리하는 점진적 프로세스가 되는 것과 동시에 다음 단계 설계에 사용되고 다음 단계 설계를 마친 즉시 상위 레벨 요구 사항은 이 레벨에서 충족되기 때문에 점진 보증 활동을 받게 된다.
우리는 실제로 Joint Multi Role이라는 육군 기술 프로그램에 적용했다. 프로젝트를 수행하고 계약자의 요구 사항을 가져와서 이 표기법으로 정리했다. 초기에 몇 가지 구멍과 몇 가지 잠재적인 문제를 파악할 수 있는지 알아 보면서 검증하였다.


SW 공학기술 적용 및 SW 현장적용


추진배경 및 필요성




사업수행 및 목표






Golang와 Go의목적


Go의목적



Go의디자인철학


  • performant
  • multiple-cores
  • concurrency
  • compiled
  • network





Go 언어의목적은? -> Concurrency!!


Go의핵심컴포넌트





2017년 1월 11일 수요일

Node.js와 Benchmark 사례

Node.js Production 레벨에서는 CPU 갯수+@ 만큼 Single Thread를 뛰워요!




가장많은 모듈을 가진 언어!



Benchmark : 간단한http 요청




Benchmark: HTTP & CPU Task