2016년 9월 23일 금요일

모델 기반 개발의 장점과 방법


모델 기반 개발의 장점
-의사소통 원활
  •모델을 사용하므로 모호함이 줄어들고, 일관성이 좋아짐
-복잡성 관리 원활
  •모델링을 통해 복잡한 시스템을 추상화하고 분해하여 관리 가능
-설계 품질 향상
  •시스템에 대한 효율적이고 효과적인 탐구 가능
-재사용성 향상
  •통합된 모델 라이브러리를 구축하게 되어 재사용성 향상

모델 기반 개발 프로세스 적용의 효과
-모델링 가이드라인 / 코딩 가이드라인이 존재
-동일한 도구 및 기술을 적용하여 동일한 절차로 소프트웨어를 개발
-동일 개발 프로세스로 만들어진 산출물
  •누구나 해석/이해 가능, 재사용 가능
-개발 생산성 증대
  •재사용, 자동화에 의해 개발 시간 단축


더보기    

2016년 9월 22일 목요일

구글의 개발팀 구성



구글에는 수많은 소프트웨어 개발자가 있고 자유로운 개발 환경을 제공하고 있어 전세계 개발자의 부러움을 받고 있는 것이 사실이지만 구글에서 개발되는 모든 솔루션을 자체적으로 개발하지는 않는다. 구글에서 솔루션을 확보하는 방법은 크게 두가지로 인수합병과 오픈소스 프로그래밍이다. 트렌드를 앞서가는 신기술을 가진 회사를 가져오지만 인수합병 후에도 회사의 독립성을 지켜주며 개발 의지를 이어 나가도록 해주고, 널리 확산하고자 하는 신기술에 대해서는 오픈소스 프로그래밍으로 공개하여 전세계 개발자들이 참여하도록 유도한다.


<참고: 오픈소스 프로그래밍>

오픈소스 프로젝트는 일반적으로 급여를 받지 않고 미팅이나 정해진 매니저도 없다. 명세서, 혹은 설계서 마저 없다는 것도 전통적인 소프트웨어 개발 프로젝트와는 다른 특징 중의 하나 이다. 오픈소스 프로젝트에 참여하는 팀원은 개발의 순수한 즐거움과 경험치를 올리는 가치 상승을 목표로 하기 때문에 팀원의 흥미만 유발된다면 매우 만족스러운 결과를 얻을 수 있다는 장점이 있다. 오픈소스 프로젝트는 모든 것이 자율적으로 이루어지지만 높은 가치를 가지는 프로젝트는 기술 리딩이 가능한 몇 명의 팀원이 주도적으로 이끌어 가기도 한다. 이러한 리더들을 핵심 그룹(Core group)이라고 불리며, 핵심 그룹은 팀원들이 프로젝트에 공헌하고 있다고 느끼도록 확실한 동기를 지속적으로 부여해야 성공 확률이 높아진다. 최근 프로젝트는 오픈소스를 활용하는 경우가 많다. 일반적인 기업에서도 오픈소스 프로젝트를 통해 검증된 소프트웨어를 만들 수 있는 장점이 있지만 강제성이 없어 실패 확률이 높다는 단점도 있다.


구글은 인수합병이나 자유로운 분위기에서 창의적인 생각을 통해 솔루션 개발의 기획을 만들고, 필요한 경우 이 것을 더 발전시키기 위해 오픈소스 프로그래밍을 주도한다. 오픈소스 프로그래밍은 자신들의 아이디어나 기술이 외부에 오픈 되는 단점이 있지만 단기간에 많은 개발자가 참여할 수 있고 회사 밖의 시각을 반영하여 완성된 솔루션의 실패률을 낮출 수 있다.
구글은 제한된 기능을 제공하는 솔루션뿐만 아니라 앵귤러JS와 같은 웹 어플리케이션 프레임워크(그림9)를 제공하면서 사용자 수준이 아니라 개발자 수준까지 구글의 솔루션을 사용하도록 유도하고 있다. 이러한 유도는 개발자의 개발 환경까지 구글의 범주에 넣어둠으로써 구글 환경에 적합한 솔루션 개발이 자연스럽게 이루어지게 한다.

<그림9> 앵귤러JS 개발자 가이드


출처: https://angular.io/docs/ts/latest/guide/




구글의 솔루션 개발 과정 변화




초기의 구글은 웹 기반 솔루션 위주로 개발이 이루어졌다. 검색 사이트인 google.com이 시작이었으며, 이후 메일과 캘린더 서비스를 제공하며 개인 비서 솔루션을 제공하였고, 웹 드라이브, 유투브를 통해 멀티미디어 서비스, 사진과 버즈, 구글플러스 등을 통해 SNS 서비스를 출시하였다. 이러한 서비스는 당시에 마이크로소프트의 오피스처럼 반드시 구입해서 설치해야 하는 솔루션을 네트워크를 통해 제공하려는 전략을 앞세웠다. 이 외에 윈도우즈에 대항하기 위해 크롬 프로젝트를 통해 별다른 운영체제 없이 크롬 브라우저를 통해 위 서비스가 가능하도록 하는 오픈소스 프로젝트를 주도하기도 했다.


<그림6> 구글의 웹 기반 솔루션


모바일이 보급되면서 구글은 웹 기반으로 동작하던 모든 서비스를 모바일에서도 동작할 수 있게 전략을 수립한다. 모바일 용으로 별도 개발을 하는 것이 아니라 웹과 모바일 구분 없이 동작하게 함으로써 사용자 편의성을 추구한다. 구글의 이러한 노력은 안드로이드 사용자 확산으로 인해 더 체계적으로 구축할 수 있었다.



10년간 구글이 성사한 인수합병

구글은 웹 기반으로 서비스를 하던 것에서 안드로이드 적용으로 인해 모바일로 서비스가 점점 옮겨가는 것을 볼 수 있고, 더 나아가서는 웹과 모바일에서 동시에 사용이 가능한 형태로 솔루션과 서비스를 구성하게 된다. 애플은 독자적인 하드웨어에서 구동 되던 것에서 점차 다양한 디바이스에서 구동 되도록 공통 구성의 폭을 점차 늘려 나간 것을 볼 수 있다.
일반적인 관점으로, 구글의 사업 전략은 인수합병을 통해 사업 범위를 늘려가는 것으로 알려져 있다. 그림3은 구글의 10년 간 인수합병 결과를 나타내고 있고, 최근에는 그 빈도나 규모를 점점 더 늘려 나가고 있다. 이러한 전략은 빠르게 사업을 확장하고 중요 기술에 대한 확보가 편리하다.


<그림3> 10년간 구글이 성사한 인수합병


출처: 신한금융투자


보통의 ICT 인수합병의 경우, 특허나 사업의 합병을 통한 시장의 독점과 시너지 효과를 노리는 경우가 많다. 그런데, 그림4에서 보는 것처럼 구글은 현재의 사업과는 조금 다른, 특이한 인수합병을 하는 경우가 많고, 하드웨어보다는 소프트웨어 위주로 이루어졌다는 것을 확인할 수 있다.


<그림4> 구글 인수합병의 예


출처: 신한금융투자

더보기

2016년 9월 21일 수요일

Process Automation

»개발 프로세스가 존재한다는 것

모델링 가이드라인 / 코딩 가이드라인이 존재한다는 것
동일한 도구로 동일한 기술을 적용하여 동일한 절차로 소프트웨어를 개발한다는 것
동일 개발 프로세스로 만들어진 산출물은
  •누구나 해석/이해 가능
  •누구나 재사용 가능
(자동화 프로그램에 의해) 개발 시간을 단축
협업이 가능

»Systems & Software Process Engineering

Process 언어
 •Machine / Tool Readable Process (SPEM)
Process Engineering 도구
 •프로세스 정의 / 문서화 (Author)
 •프로젝트 특성에 따른 프로세스 조정 (Tailor)
 •Tailored 프로세스 공유 (Publish)
 •개발 진척상황, 산출물 상태, 위험/이슈 보고 (Report)
 •Tailored 프로세스 적용 (Deploy)
 •Tailored 프로세스 수행 측정 (Measure)
 •Tailored 프로세스를 기반으로 한 도구 연동 (Enact)
 •프로세스 수행 측정 결과를 기반으로 한 프로세스 개선 (Improve)



자세히 보기         


소프트웨어 테스트의 투입공수 산정을 위한 준비

불과 얼마 전까지도 소프트웨어 테스트는 개발자의 몫이었다. 소스 코드를 코딩하고 제대로 코딩 되었는지 확인하다 보니 가장 적합한 사람이 개발자였기 때문이다. 소프트웨어 테스트는 SI에서 산출물 테스트도 포함하기 시작하면서 범위가 점점 커져 갔지만 전통적이 테스트에 대한 체계적인 요구사항은 지속적으로 증가했다. 이러한 이유로 테스트 전문화에 대한 관심도가 늘어나고 있다. 이번 회에서는 소프트웨어 테스트의 적정한 투입공수 산정을 위해 필요한 사항이 무엇인지 국제대학교 김성철 교수를 만나 들어보기로 한다.


Q: 본격적인 이야기 전에 소프트웨어 테스트에 대한 간략한 설명을 부탁 드립니다.
소프트웨어 테스트는 전문가가 아니더라도 누구나 알고 있는 소프트웨어 개발의 한 분야입니다. 보통의 소프트웨어 테스트는 그림1과 같이 만들어 놓은 소프트웨어가 오류가 없는지는 확인하는 것입니다. 하지만, 최근의 소프트웨어 테스트는 소프트웨어가 정상적으로 동작하는 것은 당연한 것이고 해당 소프트웨어가 요구사항을 모두 만족 시키는지 확인하는 것입니다(그림1).


<그림1> 소프트웨어 품질 관점의 변화
출처: IBM - 요구사항에 기반한 테스팅


자세히 보기       

솔루션 개발 사례 연구 - Google

구글(Google)은 애플(Apple)과 함께 스마트폰의 발달로 가파르게 성장한 회사이다. 안드로이드 개발 후 애플을 제외한 전세계 스마트폰 제조 회사와 협력 관계를 유지할 정도로 이제 없어서는 안될 규모까지 성장해 있다. 구글이 수많은 글로벌 회사들이 손을 잡으려 하는 회사로 성장한 가장 큰 이유는 검색 서비스로 시작했지만 새로운 ICT 트렌드를 정확히 파악하고 선도해 왔기 때문이다. 이번 회에서는 구글의 솔루션 개발에 대한 관점과 방법에 대해 살펴보기로 한다. 획기적인 기술과 기획력으로도 어려움을 겪는 다른 솔루션 개발 회사와 비교해보며 솔루션 개발에 필요한 인사이트를 찾기를 기대한다.

구글의 사업 분야 변화

그림1은 모바일의 발전으로 인한 ICT 산업의 변화를 나타내고 있다. PC나 전화 등과 같이 한 곳에 비치된 상태로 사용되는 형태가 점점 줄어들고 핸드폰과 같이 들고 다니는 형태가 늘어나고 있다. 이러한 변화를 가능하게 한 것이 바로 디바이스와 네트워크의 변화다. PC나 전화는 네트워크를 이용하기 위해 벽에 있는 유선 네트워크를 사용해야 했고 원하는 기능을 위해서는 디바이스의 크기가 어느 정도 이상이 되어야 했다. 하지만, 무선 네트워크가 나오면서 이동성이 자유로워졌고 이동성을 위해 디바이스 크기는 점점 작게 변화되어 갔다. 네트워크 속도도 유선에 의존하지 않고 무선으로도 감당할 수 있게 되면서 집이나 사무실에서만 가능하던 것들이 모바일로도 가능하게 되었다. 이러한 현상은 모바일 사용자 증가를 이끌었고 그림1에서 보는 것처럼 2014년을 기준으로 웹을 사용하는 데스크탑을 추월하기 시작했다.


<그림1> 모바일 사용자 수치의 변화
출처: Comscore

자세히 보기