2015년 10월 7일 수요일

제18차 SP인증을 중심으로 한 SW프로세스 교육안내


국내 중소 SW기업과 개발 조직의 SW품질 향상과 신뢰성 확보에 목적이 있습니다.
SW개발자, 품질 담당자, 테스트 담당자 등을 대상으로 SW프로세스 개념과 SP인증 기준 이해를 바탕으로 실제 업무에 필요한 SW 프로세스 교육을 진행합니다.

2015년 10월 6일 화요일

SW 품질향상을 위한 SW 테스트 관리방식의 변화

가상화(Virtualization), 예방 테스트 축소, 비정형 결함 수정(ad hoc defect fixing), 단편적 개발 (piecemeal deployment)등의 트렌드는 테스트 매니저의 역할을 변화시키고 있습니다. 여기에서는 산업연구와 테스트 컨설팅 작업에서 볼 수 있는 일반적인 개발 경향들을 소개하고 테스트와 QA 관리자를 위한 조언들을 소개합니다.

테스트 관리 트렌드
  • 제품통합 개발팀들(Integrated Product Teams) 
  • 단편적 개발, “테스트 단계”의 종료를 불러옴 
  • 가상화(virtualization) 
  • 이러한 경향들을 살펴본다면, 전통적인 테스트 관리를 위해 사용했던 툴들이 불필요해 지거나, 적어도 가치가 감소된 것을 알 수 있음 


QA 관리자가 고려해야 할 사항들
  • 제품 책임자가 될 것
  • 높은 수준에서 수행하는 사업 관리자가 되어야 함 
  • 팀에서 팀으로 이동하는 컨설턴트가 되어야 함 

애자일 개발 프로세스에서 스크럼 마스터(Scrum Master)의 역할

대표적인 애자일 개발 방법론 중에 하나인 스크럼(scrum)은 상호적이고 점진적으로 소프트웨어를 개발하는 방법으로, 반복을 통해 개발주기를 단축하여 팀의 생산성을 높입니다. 반복 개발을 통해 프로젝트를 진행시키는 방식인 스크럼은 일반적인 관리를 수행하는 프로젝트 관리자 역할과는 다른 스크럼 마스터 고유의 역할을 요구합니다.
 
스크럼 마스터는 팀원을 이끌어 가면서, 프로젝트의 문제들을 해결해 나갑니다. 이와 같은 방식으로 스크럼은 고객의 비즈니스 요구사항을 만족시키는 소프트웨어를 개발할 수 있도록 합니다. 여기서는 애자일 개발 프로세스에서 요구되는 스크럼 마스터의 역할을 소개합니다.

스크럼 마스터의 역할
  • 스크럼 팀에 의해 확인된 문제들을 해결하기 위해 스크럼 마스터는 섬기는 리더(servant leader)로서 수행함
  • 스크럼 마스터는 일일 회의, 계획 회의, 회고작업, 개발 팀원들과 소비자 팀원들 사이의 대화를 더욱 용이하게 함
  • 팀은 지속적으로 소프트웨어의 품질과 프로세스 개선을 위해 노력해야 되며, 스크럼 마스터는 팀의 당면 과제를 개선시키기 위해 도움이 되어야 함
  • 다른 도급업자들과 함께 개발해야 하는 대규모 팀의 경우, 내부 팀들과 고객들 그리고 외부 팀들을 상호 조율할 수 있는 프로젝트 관리자가 있었음
  • 요구목록에서 해야 할 일을 선별하고 자기 자신에 대한 업무량을 관리하는 자주적인 팀의 원칙을 익스트림 프로그래밍(Extreme Programming)과 같은 애자일 방법뿐만 아니라 칸반(Kanban)과 같은 다른 애자일 프로젝트 관리 프레임워크에도 적용해야 함
  • 애자일의 모든 ‘플래버스(flavors)’에는 고객과 개발팀의 책임들이 정의되어 있으며, 이런 정의들은 비즈니스 전문가들과 기술 전문가들 사이의 성공적인 소프트웨어 개발을 위한 협업에 도움을 줌

프로그래머가 알아야 할 10가지 빅데이터 툴

프로그래머들이 빅데이터 앱을 구축하거나 데이터들로부터 중요한 정보를 만들어 내기 위해서는 데이터 분석 툴이 그 어느 때보다 중요해지고 있으며, 많은 회사들이 개발자들의 니즈와 기술을 기반으로 설계된 툴들을 구축하는 것이 필요합니다. 따라서 데이터 전문가가 아닌 코딩을 수행하는 프로그래머 관점에서 유용한 10가지 빅데이터 툴(알파벳 순서)을 소개합니다.

Ⅰ. 비트델리(BitDeli)
Ⅱ. 컨티뉴이티(Continuuity)
Ⅲ. 플러리(Flurry)
Ⅳ. 구글 프리딕션 API(Google Prediction API)
Ⅴ. 인포침스(Infochimps)
Ⅵ. 킨 IO(Keen IO)
Ⅶ. 콘테이전트(Kontagent)
Ⅷ. 모르타르 데이터(Mortar Data)
Ⅸ. 플레이스드 분석(Placed Analytics)
Ⅹ. 프리코그(Precog)

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