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 개발 방법론에서의 품질 검증