2015년 10월 3일 토요일

IT 프로젝트를 성공으로 이끄는 요인들

Critical success factors for software projects: A comparative study

IT 프로젝트 성공률
IT 프로젝트의 성공률이 더디지만 조금씩 향상되고 있다. 미국의 유명한 리서치 기관인 스탠디쉬 그룹(The Standish Group)이 발행하는 Choas report에 따르면, 1994년 16%에 불과했던 프로젝트 성공률은 2008년에 32%로 증가하였다. 아울러 프로젝트 실패율은 같은 기간 동안 31%에서 24%로 줄어들었다는 것을 확인할 수 있다.

개발방법에 따른 프로젝트 성공률과 생산성 차이
대부분 IT 프로젝트는 여러 사람이 함께 작업하는 공동 개발 형태이다.
프로젝트에서 선택한 개발방법에 따라 프로젝트 수행절차, 관리체계 그리고 의사소통과 같은 협업방식에 차이가 생기게 마련이다. 가령, 폭포수(Waterfall) 개발방법에서는 이전 단계가 끝나야만 다음 단계를 시작할 수 있기 때문에 전체적인 설계 과정이 완벽하게 이루어져야만 개발을 수행할 수 있다. 반면 애자일(Agile) 개발방법에서는 짧은 주기를 반복하며 시스템을 점증적으로 개발하기 때문에 전체시스템을 쪼개서 설계, 설계, 테스트, 통합이 이루어지는 과정을 반복한다. 

IT 프로젝트 성공요인
위에서 프로젝트 성공률과 생산성에 개발방법이 중요한 역할을 한다는 점을 파악하였다. 그렇다면 특정 개발방법론만 적용하면 프로젝트가 성공할 수 있을까?

물론 그렇지 않다. 그 어떤 개발방법도 모든 문제를 해결하는 마법 탄환(magic bullet)은 아니다. 개발방법론은 IT 프로젝트의 성공요인을 얼마나 잘 다루고 효과적으로 향상시키는가라는 관점에서 이해하는 것이 타당할 것이다. Nasir와 Sahibuddin 교수는 Academic Journals에 "Critical success factors for software projects: comparative study"이라는 논문을 발표하였다. 


하이브리드 솔루션, 애자일 방법론과 폭포수 방법론의 결합

많은 조직들은 수십 년 동안 소프트웨어 개발의 폭포수 모델, 소프트웨어 개발 라이프사이클(SDLC) 등과 같은 전통적인 소프트웨어 방법론을 사용해 왔습니다. 이러한 전통적 개발 방법론에서 애자일 개발로 개발부서들을 바꾸는 것은 말처럼 쉬운 일은 아닙니다. 이와 같이 수많은 개발조직에서 여전히 폭포수 방법론을 활용하고 있으나, 애자일 방법론이 급속히 확산되고 있는 추세입니다.
 
애자일 방법론은 많은 장점을 가지고 있지만, 전통적인 소프트웨어 개발 방법론의 몇몇 특성들이 부족하기 때문에 애자일 방법론만을 고집하기 보다는 하이브리드 솔루션이 오히려 조직을 위해 적합한 솔루션이 될 수 있습니다.  
 
즉 애자일 방식의 수많은 장점에도 불구하고 때로는 완전한 해결방법이 될 수 없으며, 이러한 경우 애자일 방법론과 폭포수 방법론을 결합한 하이브리드 솔루션이 적절한 해결책이 될 수 있습니다. 여기에서는 애자일 방법론이 일부 조직에는 적합하지 않는 이유들과 하이브리드 솔루션이 적절한 솔루션이 될 수 있는 몇 가지 이유를 소개합니다.

Ⅰ. 애자일 방법론에 적합하지 않은 프로젝트와 문제
Ⅱ. 개발 조직에 관한 빠른 문화적 변화의 어려움
Ⅲ. 다른 이해 관계자에 관한 변화의 어려움
Ⅳ. 계약 의무
Ⅴ. 분산 개발 그룹
Ⅵ. 결론

멀티코어 기반의 어플리케이션 소프트웨어 아키텍처 대안 간의 성능 비교 방안

휴대용 전자 제품 ( 스마트 폰 , 고성능 카메라 , 휴대용 멀티미디어 기기 ) 에 대한 이미지 처리 소프트웨어를 포함하는 멀티미디어 소프트웨어와 3D 게임과 같은 소프트웨어의 성능 개선 요구가 증대되고 있습니다 . 스마트 폰의 경우 , 디스플레이 및 저장 장치의 대형화와 카메라의 발달로 인해 , 사용자는 고품질의 콘텐츠를 생산하고 , 이를 소비할 수 있게 되어 있습니다 . 하지만 이러한 고품질 , 대용량의 콘텐츠를 처리하는 소프트웨어들은 사용자의 요구에 미치지 못하는 성능을 보여주고 있습니다 . 현재까지는 하드웨어의 성능이 발전함에 따라 , 시스템의 성능이 개선되어 왔습니다 . 하지만 휴대용 전자 제품에 들어가는 프로세서의 발전이 과거에는 코어의 클럭을 향상시키는 방향에서 현재는 코어의 개수를 늘리는 방향으로 전환되었습니다 . 즉 , 데이터를 처리하는 프로세서가 싱글코어에서 멀티코어로 변경되었지만 , 싱글 쓰레드로 구성된 기존의 소프트웨어는 하나의 코어만을 사용함으로 인해 하드웨어 발전의 덕을 보지 못하게 되었습니다 . 따라서 제품의 성능 개선을 위해서는 기존의 소프트웨어를 멀티코어를 지원하도록 수정해야 합니다 .
본 연구에서는 멀티코어 기반의 소프트웨어개발 비용을 줄이기 위해 소프트웨어 아키텍처 작성 단계 ( 소프트웨어를 쓰레드로 나누어 설계하고 , 이들 간의 통신을 정의한 시점 ) 에서 , 각 구성에 대한 상대적 우위의 성능을 보여줄 수 있는 구성을 선택하는 기법을 제안합니다 . 제안하는 기법에는 성능 측정을 위한 성능 모형을 제안하며 성능 모형을 작성하기 위한 정보와 성능 모형의 시뮬레이션 기법에 대해 설명합니다 .