'XP; Scrum; 스크럼'에 해당되는 글 1건

  1. 2009.02.19 1. 소프트웨어 생명 주기

소프트웨어 생명 주기를 이야기 하면, 항상 교과서처럼 나오는 것이 Waterfall, Iterative, Agile 이다.

사실 소프트웨어를 만드는 단계를 아주 간단히 하면무엇을 만들지 결정하고, 만드는 두 가지 일이 있다. 분명 이 두 가지 일 가운데, 정말 다양한 일을 하게 될 거다.


폭포수 모델 이제는 이름만으로도 진부한 느낌이 든다. 반대로 애자일 적용만 해도 내 개발 실력이 확 느는 듯한 느낌을 주는 것 같다.

학교 다닐 때부터 책에서 소프트웨어의 위기부터 소프트웨어공학 그리고 방법론과 개발 프로세스 등 보기는 많이 본 것 같다. 문제는 보고 배워서 익히면 먼가 실력이 늘어야 하는데참 막막한 분야 이기도 하다.(90년대 중 후반은 객체지향과 UML 참 인기가 좋았고, 그 후는 디자인 패턴과 애자일로 인기가 많이 넘어간 것 같고, 최근에는 개발 프레임워크 인 것 같다.)

지금 여기에서는 ISO/IEC 12207 소프트웨어 생명주기 프로세스 모델 표준을 이야기 하려고 하는 것이 아니다. 그리고 제가 마이크로소프트에 있으니 당연히 ALM(Application Lifecycle Management) 솔루션으로 VSTS TFS 툴 소개를 하려는 것도 아니다.

CMMI와 같은 공정 또한 대형 프로젝트에서는 아주 중요하다. 저는 전체 공정 관리적인 측면 보다 이 글의 대상인 신입 개발자를 위한 관점에서 풀어 나가도록 하겠다.


마이크로소프트에서 제품을 만드는 모델을 PLC(Product Life Cycle)이라고 한다. 이름만으로는 먼가 와~ 하는 느낌이 안 오고 너무 평이한 것 같은데, 실제 이걸 적용하자는 것이 아니라 내가 소프트웨어 개발자로서 소프트웨어를 만들면서 놓치는 것이 무엇인지, 정말 큰 소프트웨어를 만드는 사람들은 어떤 방식이나 방법으로 만드는지 함께 공부하고, 실제 자신의 일에 적용해 보면 좋을 것 같다.

 

소프트웨어 프로세스 모델

 

앞에서 소프트웨어를 만드는 가장 간단한 단계로 무엇을 만들지 결정하고, 만드는 두 가지 역할로 구분을 했다. 여기에서 하나 더 포함되어야 하는 것이 왜 만들어야 하느냐는 질문이 들어가야 할 것 같다.

이걸 좀 있어 보이게  표현하면

“What? – Why? – How?”

사실 국내에서는 개발자들이 Why?는 잘 생각하지 않는다. 이유는 대부분의 개발자들이 SI업무에 종사하는 현실에서 왜 만들어야 하는지는 개발자 자신이 결정할 문제가 아니기 때문이다.

그래도왜 이걸 만들어 달라고 하지. 이유가 멀까? 아니면 진짜 필요한 게 머지?”라는 질문을 한번 해 보고 어떻게 만들지를 결정하는 것도 좋은 습관이 될 것 같다.

결국 이건 몇 가지 중에서 하나를 선택해 정답을 찾는 것이 아니라 현재 상황에서 가장 적합하고 효율적인 방법을 선택하는 문제이지, “이게 진리다!”는 아닌 것 같다.

그럼, 폭포수 방식은 전통적인 방법으로 요구사항 분석(R, Requirements Analysis)에서 시작해서 소프트웨어를 디자인(D, Design)하고 그 산출물을 기반으로 코드를 작성(C, Code)하고 단위 테스팅 등을 수행한 뒤 마지막으로 시스템 테스팅(S, System Testing)을 통해 통합하는 과정을 거치게 된다.

문서 기반의 모델로 요구 분석부터, 통합까지 말 그대로 한큐에 끝내는 프로세스로 간결한 모델이지만, 각 단계를 너무 명확히 구분하고 있고, 결과를 마지막에 가서야 알 수 있다는 위험 관리적인 측면에서 문제가 있다.

위키백과에서는 아래와 같이 정의 하고 있다.
폭포수모델




이러한 문제를 해결하기 위해 나온 것이 반복 모델로 위의 RDCT 과정을 한번에 끝내는 폭포수 모델과 달리 위험 요소를 중간에 검증해 볼 수 있다는 장점이 있다.

이러한 모델은 90년대 후반까지 사용이 되어왔지만, 전통적인 방식은 여러 문제점을 가지고 있었지만 가장 큰 문제가 사람 중심이 아니라 계획에 근거를 둔 방법이라 참여하는 사람에게 너무 많은 고통을 주게 되었고, 보다 빠르고, 기민한 방법이 필요하게 되었다.

이러한 노력으로 익스트림 프로그래밍(Extreem Programing, XP)과 스크럼 같은 모델들이 나오게 되었다.

애자일 개발 프로세스 또한 위키백과에 잘 정의 되어 있다.

애자일 개발 프로세스


자 그럼, 이제 마이크로소프트에서 소프트웨어를 개발할 때 사용한다는 PLC(Product Life Cycle)에 대해 다음 글에서 알아 보도록 하자.

 

Posted by SF공장장