2015년 8월 28일 금요일

성공적인 요구사항관리를 위한 3가지 커뮤니케이션(협업) 유형

협업은 요구사항을 관리하는데 매우 중요한 요소입니다. 협업은 SW 개발자와 최종 사용자간의 협업, 고객 그룹들 사이의 협업, 회사 내부적인 협업의 3가지 형태가 있습니다. 이 3가지 형태의 협업을 잘 활용하여 요구사항을 효과적으로 관리하는 것은 경쟁력 있는 SW를 개발하는 데 도움이 됩니다.

◆ 세 가지 형태의 협업유형
  • 첫 번째 형태는 SW 개발자와 최종 사용자간의 대화임.
  • 두 번째 형태는 고객 그룹 사이에 활발하게 나타나는 의사소통임.
  • 세 번째 형태는 회사 내부적으로 발생하는 의사소통임.

2015년 8월 27일 목요일

소프트웨어 모델링

모델 존재의 이유
<문제와 답 사이의 디딤돌>
  • 문제와 연결성
  • 답과의 연결성
  • 모델 자체의 완전성 및 정확성



자세히 보기 →

사물인터넷(IOT) 주요 요소 기술

한 통신사가 ‘IoT’라는 용어를 TV광고전면에 내세우면서, 이제는 일반인에게도 ‘뭔지 잘 몰라도, 한번쯤은 들어 본’ IT전문 용어가 되었습니다. 사물인터넷-IoT는 ‘Internet of Things’의 약자로, 생활 속 사물들을 유무선 네트워크로 연결해 정보를 공유하는 환경을 말합니다. 쉽게 말하자면, 냉장고의 센서가 음식의 바코드를 읽어 유통기한을 알려주고, 집안의 보일러나 조명의 On-off 기능을 집밖에서도 스마트폰으로 컨트롤 할 수 있는 기술입니다. 쇼핑몰에 들어서는 순간 쇼핑정보가 제시되고, 관심 있는 상품 앞에 서면 상품의 상세 정보가 보이는 것도 가능합니다. 미국 벤처기업 코벤티스가 개발한 심장박동 모니터링 기계, 구글의 구글 글라스 등도 이 기술을 기반으로 만들어졌는데, 전자기기뿐만 아니라 헬스케어, 원격검침, 스마트홈, 스마트카 등 다양한 분야에서 사용됩니다. 현재, IT 변화의 주역은 IoT라고 해도 과언이 아닐 정도로 특히 가전업계에서 ‘미래 먹거리’로 주목 받고 있습니다. 스마트가전 시장이 올해부터 향후 5년간 연평균 134%의 높은 성장률을 기록할 것이라는 시장조사기관 IHS의 발표가 이를 뒷받침하고 있습니다. 임베디드 시스템 프로그래머로 활동하고 있는 장성균 개발자로부터 IoT 기술에 대해 깊은 이야기를 들을 수 있었습니다.

핀테크 서비스를 위한 소프트웨어 품질관리 포인트

정보기술(IT)을 금융에 접목한 핀테크(FinTech; Financial Technique)는 모바일 송금/결제, 온라인 간편결제, 전자화폐, 인터넷은행, 크라우드 펀딩 등과 같은 금융서비스를 말하고 있으며 최근에는 그 중에서도 모바일 결제에 관심이 높아지고 있습니다. 미국의 페이팔과 애플페이, 중국의 알리페이 등이 선두주자로 앞서나가고 있으며, 우리나라에서는 3개 통신사의 스마트월렛, 모카월렛과 카카오페이 등이 서비스 중이며, 삼성페이가 출시를 앞두고 있습니다. 핀테크는 여러 가지의 금융서비스를 미리 등록한 핀테크 서비스로 통합하여 사용하는 것을 기본으로 하고 있습니다. 이러한 이유로 핀테크는 다양한 금융서비스를 연결하는 정보기술과 이에 따른 높은 품질의 아키텍처, 보안 등도 함께 요구하고 있습니다. 이러한 기술들 중에 이번 회에서는 핀테크 시장에서 요구하는 품질을 확보하기 위해 아키텍처와 보안 관점의 품질확보 방안에는 어떠한 것이 있는지 살펴보기로 합니다.

FinTech Architecture

먼저 비즈니스 아키텍처 관점에서 살펴보겠다. 핀테크는 새롭게 만들어진 서비스가 아니라 기존의 금융서비스에 정보기술을 접목한 금융서비스의 변형된 형태라고 할 수 있다. 따라서 비즈니스 아키텍처를 수립할 때, 기존 금융서비스에 대한 이해가 절대적으로 필요하다. <그림1>은 인터넷 전문은행의 비즈니스 아키텍처를 수립하기 전에 기존 서비스가 어떠한 형태로 변화가 생길지 살펴본 것이다.

자료: SK C&C의 인터넷 전문은행 설명회



2015년 8월 26일 수요일

소프트웨어 품질과 소프트웨어의 경제적 가치

SW 품질향상에 따른 소프트웨어의 총 소유비용 (TCO, total cost of ownership) 절감

대규모 소프트웨어 프로젝트는 위험요소가 많은 사업입니다 . 10,000 개 이상의 기능요소 (function point, 대략 1,000,000 line 정도의 코드 ) 을 포함하는 소프트웨어 프로젝트의 절반가량은 중단되거나 예정보다 1 년 이상 지연되기도 합니다 . 문제점들이 있은 소프트웨어 프로젝트를 살펴보면 , 프로젝트의 중단이나 연기는 주로 심각한 결함들 때문에 발생합니다 . 역설적으로 성공적인 대규모 소프트웨어 프로젝트의 특징은 우수한 결함 예방과 결함 제거라 할 수 있습니다 . 최상의 소프트웨어 품질관리는 소프트웨어 프로세스 개선에 가장 중요한 목표입니다 .

대규모 소프트웨어 시스템 개발은 IT 시대에 가장 위험천만한 비즈니스 활동 중의 하나로 오랫동안 인식되어 왔습니다 . 수많은 대규모 소프트웨어 프로젝트들은 중단되거나 예정보다 1 년 이상 지연되고 예산을 100% 나 초과해 진행되기도 했습니다 . 
Software Productivity Research 의 저자와 그 동료들은 1983 년부터 2009 년에 진행된 약 13,000 개의 소프트웨어 프로젝트를 조사하였습니다 . 표 1> 에서는 프로젝트 규모 순으로 6 개로 나누어 조기 , 적기 , 연기 , 중단의 비율을 정리하였습니다 . 

Twitter, Google, Facebook 등에서 활용되는 Top5 오픈소스 웹

웹 애플리케이션 일을 하는 모든 사람들은 호스팅사이트의 레이아웃을 개발하기 위해 많은 시간을 할애하고 있습니다. 새로운 애플리케이션을 호스팅하기 위해 초기부터 사이트를 구축해야 하는 어려움이 있습니다. 이런 점을 해소하기 위해 Twitter, Google, Facebook등에서 활용하고 있는 Top5 오픈소스 기반의 웹 프론트엔드 개발도구를 소개합니다.

Twitter 의 Bootstrap
  • 웹 애플리케이션 개발에 가장 많은 시간이 걸리는 부분은 코딩이 아니라 HTML 와 CSS 그리고 웹 앱이라고 불리는 호스팅할 사이트의 실제 프레젠테이션 레이아웃을 개발하는 것임
  • Twitter 는 이러한 문제를 해결하기 위해 Bootstrap 부트스트랩 (= 홈페이지 제작을 도와주는 오픈소스 기반의 프레임워크 ) 즉 많은 보일러플레이트 (= 재사용 가능한 템플릿 ) 웹 코드를 가진 무료 웹디자인 프레임워크를 구축함

Facebook 의 Codemod
  • Codemod 는 Facebook 이 개발하고 릴리스 하고 있는 오픈 소스 프로젝트들 중 하나로 Facebook 이 수행하는 대부분의 프로젝트들과 마찬가지로 대규모 데이터 유지보수 측면의 생산성을 지원하는 측면에서 데이터와 웹콘텐츠 등을 매우 높은 수준의 레벨로 스케일링하는 것들과 관련이 깊음 이와 같은 이유로 Facebook 이 OS 가 아닌 하드웨어 측면에서의 처리속도를 올리기 위해 PHP 를 C 로 컴파일러하는 HipHop 을 개발하기도 했음
  • Codemod 는 툴이자 라이브러리로서 최대 장점은 리팩토링스 (refactoring=SW 기능을 유지 보수하여 생산성을 향상시키는 기능 / 기법 ) 라고 말할 수 있음
Google 의 ZXing
  • 일명 흑백줄무늬 횡단보도 (=Zebra Crossing) 로 알려져 있는 ZXing(= 안드로이드 바코드 스캐너 ) 은 오픈소스이자 자바로 코딩된 멀티 포맷 1D 와 2D 바코드 이미지 프로세싱 라이브러리임
  • Google 과 ZXing 의 컨트리뷰터들은 프로젝트 C#, C++, Ruby 그리고 아이폰 클라이언트와 객체 -C 라이브러리에 대한 지원을 요구함에 따라 , 여러 언어들을 수용할 수 있는 포트들이 개발됨

Yelp 의 KegMate
  • Yelp 의 엔지니어들은 기호식품으로 맥주를 선택하여 맥주와 아이패드를 결합하는 방법을 찾아내 Yelp KegMate 를 개발하였고 , 이는 일종의 하드웨어와 하드웨어를 제어하는 프로그래밍 기술 그리고 애플리케이션이 결합된 실험적 프로젝트임
  • 이는 하드웨어 , 아두이노 (Arduino, 프로그래밍 가능한 오픈소스 회로기판 ), 플로우 모니터 , 아이패드 또는 안드로이드 타블렛 등을 활용한 새로운 애플리케이션을 개발할 수 있는 단초를 제공함 좀 더 많은 정보를 얻기 원한다면 www.kegbot.org 사이트를 방문

FaceBook 의 Three20
  • CodeMod 를 통해 이미 FaceBook 의 오픈소스 툴을 언급했지만 Three20 라이브러리는 상용화된 아이폰 애플리케이션 개발을 매우 손쉽게 해주는 라이브러리로 앱 개발자들에게 매우 필요하고 볼 수 있음
  •  Three20 은 Facebook, Posterous, Pulse, Meetup.com, SCVNGR 케쥬얼 게임 등을 포함한 앱스토에서 유명한 애플리케이션에서 활용하는 오픈소스 객체지향 프로그래밍 언어인 Objective-C 의 라이브러리임


임베디드 SW 개발 방법론 part 2 : 품질확보를 위한 임베디드 SW 개발 방법

임베디드 Software 개발 방법론 각 Phase 별 상세 Activity 를 살펴보고 , 기존의 Software 개발 프로세스와 비교 분석을 합니다 . 
마지막으로는 품질 확보 측면에서 임베디드 Software 개발 방법론을 분석해 보도록 하겠습니다 .

▣ 임베디드 Software 개발 방법론 Activities

그림 1 은 임베디드 Software 개발 방법론의 프로세스입니다 . 크게 3 개 Phase 로 구분되어 되어 있습니다 . Requirement Analysis, Architecture/Design Phase 는 요구사항 분석 , 아키텍처를 중심으로 하는 Inception Phase 이고 , 코드 구현이 중심이 되는Implementation Phase, 마지막으로 Hardware 와 통합된 후 코드를 최적화하는 Optimization Phase 입니다 . 각 Phase 별로 Activity 들을 살펴보도록 하겠습니다.












▣ Plan-driven 방법론 , Agile 방법론과 임베디드 Software 개발 방법론과의 비교
▣ 임베디드 Software 개발 방법론에서의 품질 검증