본문 바로가기
memo 세미나

애자일 방법론과 SKPE-Agile

by [김경민]™ ┌(  ̄∇ ̄)┘™ 2013. 4. 27.
728x90

애자일 방법론과 SKPE-Agile
2010년 11월 12일 (금) 17:44:47 SK C&C 기술혁신센터 생산성혁신팀 kyd444@skcc.com
  <script type="text/javascript">< /script> <script language="javascript"> </script>

1. 애자일 방법론의 이해

소프트웨어 개발 방법론으로 전통적인 폭포수 개발 방식과 상대적인 개념으로 애자일 방법론이 있다. 애자일 방법론은 90년대 중반부터 활성화되어 현재 다양한 소프트웨어 개발 사업에 적용 확산되고 있다.

현재 애자일이라는 용어는 고객에게 즉각적인 피드백을 주고 비즈니스 변화에 빠르게 대응하는 인식때문에 여러 비즈니스에서 마케팅 용어로도 사용되고 있다. 그만큼 우리 사회 전반에 보편적으로 통용되는 키워드로 자리 잡아 가는 느낌이다.

애자일 방법론은 폭포수 개발 방식의 대안으로 탄생되었기 때문인지 몰라도 자주 폭포수 개발방법론과 비교된다. 두 방법론은 계획된 프로세스와 경험적 프로세스로 구분된다.

계획된 프로세스는 요구사항이 조기에 정확히 도출되고 변경이 없다는 가정 하에서는 상당히 이상적인 개발방식이 될 수 있지만, 소프트웨어의 비가시성(Invisibility)과 변경용이성(Changeability) 및 요구사항의 불확실성(Uncertainty) 등의 특성으로 인해 현실에서 고객의 눈높이에 맞는 만족스러운 소프트웨어 개발이 어려운 것이 사실이다.

이에 반해 애자일 방식의 경험적 프로세스는 잦은 출시(Release)와 반복개발(Iteration)을 적용하고 매번 반복개발에 대한 경험을 다음 번 반복에 곧바로 적용함으로써 소프트웨어 품질 향상과 소프트웨어를 적시에 출시하는 데 유리하다.

   
▲ <표 1> 폭포수 개발방법론과 애자일과의 차이

애자일 방법론은 현재 국내에서 게임업체, 포털업체 등을 중심으로 폭넓게 사용되고 있으며 가트너에 따르면 2012년에는 전체 소프트웨어 개발의 80%까지 애자일 방법론이 사용될 것으로 예측된다.

또한 최근 애자일 방법론 관련 설문 결과를 보면 초창기 적용 여부를 묻거나 적용 효과를 묻는 질문에서 벗어나 애자일 방법론에서의 효과적인 실천 활동(Practice)을 묻거나, 적용 시 장애사항 및 실패 원인을 묻는 등 애자일 적용 여부는 더 이상 이슈가 아닌 듯하다.

애자일 테스팅, 애자일 PMP 및 애자일 CMMI 등의 기존 소프트웨어 공학과의 접목에 대한 다양한 연구와 실험도 활발하게 진행되고 있다.

   
▲ <그림 1> 애자일 기법의 적용 현황(출처: 2009년 State of Agile Survey, VersionOne)

2. SK씨앤씨의 애자일 방법론(SKPE-Agile)

SK씨앤씨는 2009년 10월 사내 표준 개발방법론의 하나로 애자일 개발 방법론(SKPE-Agile)을 정식으로 출시한 상태이다. SKPE-Agile은 기본적으로 Scrum 프로세스 구조와 XP(eXtreme Programming)의 주요한 실천활동(Practice) 및 기존 표준개발방법론(SKPE-UM)의 특성을 혼합 적용하여 구성하였다.

프로세스 측면에서는 애자일 방법론의 주요 특징인 두 단계 계획을 적용하였다. 두 단계 계획이란 <그림 2>에서 보는 바와 같이 릴리즈 계획 및 이터레이션 계획으로 나눠 상위 수준의 계획과 좀 더 상세한 이터레이션 계획 수립을 빈번하게 반복한다는 개념이다. 예를 들면 1년짜리 프로젝트에서 4개월 단위의 릴리즈와 1개월 단위의 이터레이션으로 구성한다고 정의할 때, 4개월 마다 상위 수준의 계획 수립을 하게 되고, 한 릴리즈 내에서 1개월 단위로 좀 더 상세하고 구체적인 계획 수립을 할 수 있다.

하나의 개발 주기 단위인 이터레이션은 ‘이터레이션 계획회의’ 활동 내에서 구현할 대상을 전체 요구사항 목록(제품 백로그)에서 가져와 실제 물리적인 소스코드와 산출물을 생성할 수 있는 수준으로 계획을 수립하게 된다. 설계, 구현 및 테스트가 병행 수행되며 이터레이션 말미에 구현된 기능을 ‘이터레이션 검토’라는 데모 수행을 통해 전체가 공유하게 된다.

이 시기에 실제적으로 많은 커뮤니케이션이 발생되고 잠재된 위험이 나타나며, 잘못 이해한 요구사항이 새롭게 정의되기도 한다. 또한, 프로젝트 초반의 경우 모듈 간 연계가 필요한 인터페이스 요구사항 도출과 화면 표준, 메시지 표준, 메뉴 구조 등의 UI/UX 표준이 도출되는 장점을 갖는다.

   
▲ <그림 2> SKPE-Agile 방법론 프레임워크

애자일 방법론에서의 역할도 기존 폭포수 방법론과 차이가 존재한다. 기능적 역할 분담을 강조하는 폭포수 개발 방식과는 다르게 애자일에서 역할은 전체 팀(Whole Team)의 협업을 강조한다.

즉, 기획자/분석가, 설계자, 개발자, 아키텍트, QA/테스터 등의 명확한 역할 구분과 그에 따른 책임을 정하고 프로젝트를 수행해도 관리자가 업무 분장하기에 모호한 일들이 많이 발생하며, 각 역할자들은 자신들에게 유리한 일만을 고집하는 기능적 이기주의 때문에 프로젝트를 곤란하게 만드는 경우도 자주 목격할 수 있다.

그래서 애자일팀은 팀을 위한 희생(Sacrifice)을 강조하고 개발자가 때로는 테스터가 되기도 하고 QA가 테스트 케이스를 작성하는 것도 전체 팀을 위한 것으로 보고 있다.

   
▲ <그림 3> 이터레이션 내 주요 활동

팀원 간 협업과 커뮤니케이션을 강조하는 애자일의 팀 구성은 보통 7인 이하의 소수로 구성되는 것을 바람직하다고 보고 있다. 이는 즉각적인 의사결정과 긴밀한 커뮤니케이션을 위함이다.

<그림 3>에서 볼 수 있듯이 SKPE-Agile의 역할은 고객(제품소유자), 프로젝트 리더, 팀원으로 구성되어 있고 팀원 역할은 개발자, 설계자, 테스터 등을 포함한다. 아무래도 문서보다 동작하는 실제 코드를 강조하기 때문에 테스터와 개발자, 개발자와 설계자 간의 구두로 진행하는 설계 기법을 많이 사용하게 되며, 꼭 문서화할 대상은 프로젝트 초기에 정의하여 요구사항이 충분히 구현되고 안정화되는 시점에 공식적인 문서산출물을 만드는 것이 재작업을 피할 수 있는 방법이다.

3. SK씨앤씨 애자일 방법론(SKPE-Agile) 적용 현황

현재 SKPE-Agile의 적용 프로젝트는 공식 릴리즈 후 2~3곳의 프로젝트에서 적용 완료 및 진행 중이며, 프로젝트의 특성에 맞게 수행 태스크를 테일러링하여 적용하고 있다.

예컨대 일반 대외 시스템통합(SI) 프로젝트의 경우, SI 특성 상 단발성 프로젝트이기 때문에 릴리즈 단계를 생략하고 이터레이션 단위로 수행을 한다거나, 애자일의 요구사항 변경을 허용하는 특성도 적합하지 않기 때문에 CI(Continuous Integration), TDD(Test-driven development), 일일 스크럼 회의, 데모 등의 기법만 선별하여 적용하는 식이다.

4. 맺음말

SK씨앤씨는 지난해 SKPE-Agile을 공식 발표한 후 전사 프로젝트에 애자일 방법론 확산을 위해 노력 중이다. 올해 확산의 경험과 노하우를 축적하여 다양한 프로젝트에 생산성을 향상시킬 수 있도록 프로세스 개선과 기법을 개발할 예정이다.

 

SK C&C 기술혁신센터 생산성혁신팀 kyd444@skcc.com

728x90

댓글