소프트웨어 개발 프로세스와 애자일

yg_hoon·2023년 3월 15일
0

소프트웨어 개발 프로세스는 소프트웨어 공학에서 배우는 세부 분야 중 하나이다.
따라서 소프트웨어 공학이 무엇인지 먼저 짚고 넘어가는 것이 필요하다.

소프트웨어 공학

말 그대로 공학을 소프트웨어에 적용하는 것으로 소프트웨어의 설계, 개발, 구현, 유지보수, 테스팅 등의 소프트웨어 생명주기의 전반적인 과정을 체계적으로 다루는 학문이다.

일반적으로 소프트웨어 개발은 혼자서 진행 하지 않는다.
즉, 팀 단위의 개발을 진행하기 때문에 좋은 소프트웨어를 만들기 위해선 어떤 프로세스가 필요하다.

최근 소프트웨어 공학의 트렌드는 고객의 요구사항에 맞는 소프트웨어를 빠르게 개발해내는 것이다.

소프트웨어 개발 프로세스

소프트웨어를 개발하기 위해 필요한 과정 또는 구조를 의미

위에서 말했던 좋은 소프트웨어를 만들기 위해 필요한 프로세스가 바로 이 소프트웨어 개발 프로세스이다.
소프트웨어 개발 프로세스에는 잘 알려진 몇 가지 대표적인 방법이 있는데, 그 중에서 폭포수 모델과 애자일 프로세스를 집중적으로 다뤄보자.

개발 방법론: 폭포수 모델

왜 이름이 폭포수 모델일까?

아래 그림은 폭포수 모델 사진인데, 마치 폭포수처럼 아래로 떨어지는 모습을 하고 있기 때문이다.

출처: 위키백과 폭포수 모델

폭포수 모델을 적용한다는 것은 각 단계를 완벽하게 수행하고 다음 단계로 넘어가는 것을 전제로 한다.
따라서 완벽하게 설계하고, 디자인하며 개발 일정까지 예측해서 정해두고 개발을 진행한다.

무슨 문제가 발생할 수 있을까?

일정을 다 정해두고 프로젝트를 진행하기 때문에 개발자는 어떻게든 개발 일정에 맞춰야 할 수 밖에 없다.
또 개발 기간 동안 고객의 요구사항이 변경되거나 추가 요구사항을 내면 그만큼 이전에 끝냈던 작업을 다시 해야하는 문제가 생긴다.
실제로 고객이 정해진 요구사항을 바꿔달라고 하는 경우는 빈번하다고 한다.
그런데 설계가 완료된 상태고 개발까지 끝낸 상태였다면..?
요구사항이 반영된 설계를 다시 하고 개발도 다시해야 하는 상황이 발생한다.
때문에 폭포수 모델은 완벽하게 실행하는 것이 불가능에 가깝다라는 비판을 많이 받았다.

개발 방법론: 애자일(Agile) 개발 프로세스

반복적인 개발 주기를 통해 끊임없이 프로토타입을 개발해나가는 방식

새로운 서비스가 출시되는 속도는 점점 빨라지고 고객은 새로운 요구사항을 끊임없이 제시한다.
이러한 변화에 딱 맞는 개발 방법론이 애자일이다.
애자일은 소규모 팀을 구성하여 기획자와 개발자, 디자이너가 함께 소속되도록 한다.
이렇게 구성하면 필요한 작업을 요청하고 처리할 때 용이하다는 장점이 있다.
또한 공동의 목표를 가지고 개발해나갈 수 있으며 고객의 요구사항 변화에 대응하기 유리하다.

애자일은 그 뜻처럼 변화에 대해 신속하고 효과적으로 대응하기 위한 방법론이다.
이와 관련해서 Agile 선언문이라는 것도 존재한다.

공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
https://agilemanifesto.org/iso/ko/manifesto.html

이 선언문만 봐도 Agile이 무엇을 중요시 하는지 파악이 가능하다.

애자일 방법론을 적용하는데 핵심적인 몇 가지 개념과 방법이 더 있다.
내용이 너무 방대해질 것 같아서 이와 관련된 내용은 향후 애자일 관련 포스팅을 별도로 구성해서 다뤄보겠다.

profile
차곡차곡 쌓아가는 개발 노트

0개의 댓글