Home 소프트웨어 개발 방법론 2
Post
Cancel

소프트웨어 개발 방법론 2

신속한 소프트웨어 개발을 위한 방법론

애자일 기법과 폭포수 모델 비교

애자일 방법론은 2000년대 무렵 새롭게 대두된 단어로 기존의 방법론에서 탈피한 새롭지만 강력한 방법론 중 하나이다. 소프트웨어 공학이라는 학문에서는 계획, 요구사항 분석부터 설계, 구현, 테스트 등을 거치면 완벽한 소프트웨어가 될 것이라 생각했다. 하지만 사용자의 요구사항은 빈번하게 변경되고 완벽한 설계라 생각했던 것이 구현함을 통해 실제로 잘못된 길이었다는 것을 알게 되었고 이로 하여금 애자일 방법론이라는 기존의 정통적인 방법론과는 다른 절차가 대두되었다. 쉽게 말해 애자일이란 기존의 워터폴(폭포수) 모델은 자동차를 만드는데 있어 차의 프레임을 구축하고, 바퀴를 설계하고, 다음으로 차량 내부를 설계하고, 좌석을 개선하는 방식과 같이 절차적인 형식을 띄었다. 그러나 애자일에서는 차량이라는 목적을 만들기 위해 가장 먼저 스케이트 보드를 만들어보고, 이 보드를 개선시켜 퀵보드 형식을 만들어보고, 그러다가 자전거, 오토바이, 마지막으로 차량을 만들어내는 방식이다. 또한 애자일 선언문에는 이런 문구가 있다.

  1. 공정과 도구보다 개인과 상호작용을
  2. 포괄적인 문서보다 작동하는 소프트웨어를
  3. 계약 협상보다 고객과의 협력을
  4. 계획을 따르기보다 변화에 대응하기를

어찌보면 상당히 추상적인 문구일 수 도 있다. 다만 이 선언문이 의미하는 바는 소프트웨어를 개발하는 것을 단순한 거래 관계가 아닌 좀 더 인간적인 관점에서 바라보고자 하는 것이다. 고객의 요구는 당연히 수시로 변하는 것이 인지상정이므로 고객과 가까이 위치하며 서로소통하는 것, 그리고 소통에 따른 결과를 항상 공유하며 결과에 따라 변화하는 것, 이것이 애자일의 최우선의 가치로 둔 것이다. 이는 쉽게말해 “백개의 문서로 서로 의사소통하기보다는 한번 직접 만나서 토론하자”라는 의미로 보다 이상적인 방법론을 추구한다.

반면 워터폴 모델은 우리가 가장 흔히 쓰고 있는, 어쩌면 당연하다고 생각될 만큼 흔한 모델이다. 가장 쉬운 예로 우리가 초등학생 때 시간표를 작성하여 계획을 짜고 계획에 맞춰 숙제를 하는 것 자체 역시 일종의 워터폴 방식인 셈이다. 이는 애자일과 정 반대되는 순차적 방법론으로서 오랜 기간 사용된 기법이니만큼 적용 사례가 많고 단계별로 정형화된 접근방식을 사용하는 이유로 기술적 위험 요소가 적다는 장점을 가지고 있다. 정해진 순서대로 각 파트의 업무가 분장되고 관리되기 때문에 프로세스 상의 마일스톤을 정하는 것이 비교적 쉬운 편이라는 장점도 있다. 하지만 위에 말한대로 고객의 요구사항은 상시 변동이 가능하다는 전제로 볼 때 제품이 완성되고 소비자에게 전달할 때 소비자가 원하는 부분과 다른 부분이 존재한다면 워터폴 방식에서 이러한 문제를 해결하기 위해서는 처음으로 돌아가는 불상사가 발생한다. 또한 이는 실제 프로젝트 수행에서 빈번하게 발생되는 고객과의 커뮤니케이션이 부재된 요소이다.

소프트웨어에 초점을 맞춘 워터폴 방식, 그리고 고객과 소통에 중점을 둔 애자일 방법론. 두 방법론은 각각의 장단점이 존재하므로 어떤 것이 좋다 나쁘다는 이분법적인 사고로 판단할 수 없다. 따라서 고액의 리스크가 존재하는 사업과 같은 경우 보다 안정적인 방법인 워터폴 방식이 어울릴 것이고, 중소규모의 개발로서 익숙하면서도 고객의 요구사항이 명확하지 않을 경우 애자일 방법론이 어울릴 것이라 생각된다.


CD와 CBSD 프로세스의 차이점

컴포넌트 개발(CD)는 재사용 가능한 부품을 만드는 것을 의미한다. 컴포넌트란 소프트웨어 개발을 마치 레고와 같이 블록 쌓듯이 쉽게 할 수 있도록 하는 기술을 의미한다. 컴포넌트 기반 소프트웨어 개발(CBSD : Componet Based Software Develope)은 기존의 코딩 방식에서 벗어나 소프트웨어를 모듈 단위로 미리 만들어놓은 뒤 필요할 때 마다 각각의 모듈을 가져다 사용하는 방식이다.

컴포넌트 개발 프로세스는 최초 도메인 분석, 도메인 설계, 컴포넌트 추출, 컴포넌트 설계, 컴포넌트 구현, 마지막으로 인증 단계를 거친다. 다만 컴포넌트 개발 단계에서는 완전한 소프트웨어 시스템을 만드는 것이 아니라 해당 도메인에 대한 분석의 결과 재사용 가능한 부품을 만드는 것이다. 반면 컴포넌트 기반 소프트웨어 개발은 이미 개발된 컴포넌트를 조립하여 소프트웨어를 개발하는 과정으로 기존의 개발된 컴포넌트를 그대로 사용하거나 기능의 추가나 변경을 위해 커스터마이징 후 사용할 수 도 있다. CBSD는 만들고자하는 어플리케이션의 요구사항을 분석하고 CBD 설계, 컴포넌트 특화, 컴포넌트 조립, 그 결과 새로운 애플리케이션이 만들어 지는 과정을 거친다.

따라서 CD 단계를 통하여 컴포넌트, 즉 일종의 블록들을 만들어 컴포넌트 저장소에 두고 CBSD단계를 통하여 이 블록들을 조립하고 모양에 맞지 않은 블록들을 커스터마이징(컴포넌트 특화)하여 새로운 소프트웨어를 만들어내는 것, 이것이 컴포넌트 기반 개발(CBD)라고 할 수 있다.

This post is licensed under CC BY 4.0 by the author.

소프트웨어 개발 방법론 1

프로젝트 관리 및 계획