Q. 개발에도 지켜야 할 프로세스가 있다?

2014.06.06

|

8080

그린 클라이언트 #4]

004.gc_blog


클라이언트 said,

개발에도 정해진 프로세스가 있나요? 아니면 개발자마다 개발 방식이 천차만별인가요? 개발 프로젝트를 파트너에게 맡기고 진행 상황을 알아보고 싶은데 진행률을 가늠하기가 너무 힘이 드네요. 워터폴이니 애자일이니 검색하면 순 모르는 것 투성이고! 쉽게 알려주실 수 없나요?


 

 

안녕하세요, 위시켓입니다.

어떤 일을 하든 그것을 처리하는 데는 과정이 필요하기 마련입니다. 요리를 할 때 레시피를 참고하고, 가구를 조립할 때 조립 매뉴얼을 보듯이 말입니다. 웹/앱의 좁은 의미에서 벗어나 소프트웨어 개발 측면에서 봤을때 어떤 개발자건 지킬 수 밖에 없는 기본 프로세스는 존재합니다. 

고등학교 때 배우는 연역적 탐구 방법은

    • 관찰 및 문제 인식
    • 가설 설정
    • 탐구 설계 및 수행
    • 결과 분석 및 해석
    • 결론 도출
    • 일반화

라는 일련의 단계로 구성되어 있습니다.
이러한 정형적인 프로세스는 연역적 탐구를 더 계획적이고 쉽게 이루어지도록 도와주는 중요한 역할을 하지요. 소프트웨어 개발에 있어서도 여러 가지 방법론이 존재합니다. 

개발 프로세스의 A to Z, 알파에서 오메가를 딱 두가지로 압축해 보자면
단연 워터폴 방식애자일 방식이 아닐까요? 워터폴에서 애자일까지 소프트웨어 개발 프로세스는 진화를 거듭했고 지금도 진화하고 있습니다. 

오늘은 개발자라면 누구나 알고있는 소프트웨어 개발 프로세스에 대해 알려드리겠습니다.

 


 ♦ 워터폴(폭포수, waterfall) 방식

소프트웨어 개발 초기단계인 1970년대, 소프트웨어 개발 프로세스의 대표주자는 윈스턴 W. 로이스가 제시한 워터폴 모델이었습니다. 워터폴 모델이란 그 개발 프로세스를 폭포수에 빗대어 표현한 것인데요, 폭포수가 위에서 아래로만 떨어지는 것처럼 하나의 단계가 완전히 끝난 후 다음 단계로 넘어가고 다음 단계에서 전 단계로 돌아갈 수 없는 프로세스를 말합니다. 

각 단계가 끝나면 그 전 단계의 결과물을 바탕으로 다음 단계를 실행하게 되지요. 하지만 이런 방법에는 문제점이 상당히 많습니다.

예를 들어, 클라이언트가 프로젝트에 “A”라는 요구사항을 옵션으로 추가해달라고 요청했다고 가정합시다. 파트너는 그 요구사항을 포함하여 기획을 분석한 후 계획을 세우고 설계, 즉 코딩을 진행하였겠지요. 그런데 중간에 갑자기 기획이 바뀌어 옵션 “A” 대신 옵션 “B”를 넣어달라고 하면 이 워터폴 방식으로는 쉽게 변경할 수 없습니다. 계획서 자체가 하나의 톱니바퀴처럼 엮여있기 때문에 옵션 일부분을 중간에 바꿀 수 없고 요구사항 분석 단계부터 다시 새롭게 개발을 진행해야 하는 치명적인 문제가 발생하지요.
아래 그림을 보시면 왜 폭포수에 빗대어 표현하는지 쉽게 아실 수 있어요.

waterfall_model

[그림 1] 워터폴 프로세스 (출처: http://databaser.net/moniwiki/wiki.php/소프트웨어개발프로세스)


여러 문제로 인해 나오게 된 새로운 개발 프로세스가 바로 “애자일 방식”입니다.


♦ 애자일(Agile) 방식

애자일(Agile)은 기민함, 좋은 것을 빠르고 낭비 없게 만드는 것을 뜻합니다. 애자일 프로세스는 전통적 개발 방식인 워터폴 방식의 많은 문제점을 해결하기 위해 등장했어요. 이 방식은 소프트웨어 개발의 고유한 특성을 이해하면서 이에 최적화된 솔루션을 찾는 과정에서 나온 것이지요. 

소프트웨어 개발은 유동적이고 개방적입니다. 또한 요구사항의 변경에 따른 작업량을 예측하기 쉽지 않습니다. 즉, 계획을 세운대로 한 단계씩 진행되기 힘든 구조입니다. 그래서 애자일 프로세스에서는 피드백 시스템을 만들었습니다. 앞서 말한 워터폴 방식에서처럼 한 단계의 모든 계획을 세우고 그 결과를 문서화한 후 다음 단계로 넘어가는 것이 아니라 컴퓨터 언어로 만든 코드를 바탕으로 코드를 수정해가면서 진행되는 것입니다. 

애자일 프로세스의 대표적인 예로는 익스트림 프로그래밍(Extreme programming, XP)이 있습니다. 이 방법은 애자일 프로세스의 보급에 큰 기여를 했다는 평가를 받기도 합니다. XP는 클라이언트와 함께 2주 정도의 반복 개발을 하고, 테스트와 우선 개발을 하는 특징을 가집니다. 명시적인 기술 및 방법론으로 소프트웨어 개발 프로세스의 혁신을 불러 일으킨 방식입니다.

002

[그림 2] 애자일 프로세스 (출처: http://www.yamestyle.com/243)


모든 진화는 더 나은 방향으로 이루어집니다.
소프트웨어 개발 프로세스 역시 더 나은 방향으로 진화해왔고 진화하고 있습니다.
개발 프로세스의 정점인 애자일 프로세스의 시대가 지나면, 또 어떤 방법론이 우리를 더 생산적으로 일하게 도와줄까요?

그린 클라이언트 다섯번째 이야기는 “웹 개발의 클라이언트와 서버, 알고 계시나요?” 입니다.

150120_wishket_blog_under

앱 개발 비용 궁금하세요?
위시켓이 바로 알려드릴게요!

waterfallwishketwishket.com개발 아웃소싱개발 외주개발 프로세스그린클라이언트아웃소싱애자일워터폴위시켓위시켓 그린클라이언트위시켓 글위시켓 블로그클라이언트프리랜서
다음 글

위시켓 블로그의 새로운 소식 받기