소프트웨어 개발 프로세스 - 폭포수 모델, 애자일 모델

kkk·2025년 1월 23일

학습

목록 보기
3/4
post-thumbnail

1. 소프트웨어

[ 소프트웨어 VS 응용 소프트웨어 ]
소프트웨어는 운영체제 위에서 돌아가는 모든 종류의 프로그램이고, 응용 소프트웨어는 특정 작업을 수행하는 소프트웨어라고 한다. 소프트웨어가 넓은 개념이고, 응용 소프트웨어가 좁은 개념인 셈이다.

Q. 응용 소프트웨어가 아닌 소프트웨어는 어떤 게 있을까?
A. 디스크 정리 도구, 장치 드라이버, 펌웨어 등 시스템 소프트웨어가 있다.

2. 소프트웨어 개발 프로세스

소프트웨어를 개발하기 위한 요구사항 수집, 설계, 구현, 테스팅, 배포, 유지보수의 사이클을 의미한다. 개발이라는 것은 단순히 제품을 출시하기는 것에 그치는 것이 아니라, 추후 문제점을 발견하고 필요한 부분을 개선하는 것까지 포함한다.

소프트웨어 개발 프로세스는 좁은 의미로는 절차, 과정, 구조를 포함하지만, 넓은 의미로는 참여자, 도구도 포함한다. 프로세스의 3요소를 절차와 방법, 도구와 장비, 인적 자원으로 정의하기도 하며, 이러한 리소스를 배분하고 프로젝트를 효율적으로 관리하기 위한 방법론을 제시한다.

3. 소프트웨어 프로세스 모델

소프트웨어 프로세스 모델 중 대표적인 모델로는 선형 순차적 모델과 애자일 프로세스 모델이 있다. 선형 순차적 모델은 폭포수 모델 또는 워터폴 모델이라고도 한다.

3-1. 선형 순차적 모델(폭포수 모델)

폭포수 모델이라는 이름에서 구조를 짐작할 수 있다. 폭포수는 밑으로 떨어지기만 할 뿐 다시 올라가기는 쉽지 않다. 이처럼 폭포수 모델은 초기부터 체계적인 문서화가 이루어지는 전통적인 단계적 절차를 의미한다. 처음에 대부분 정의되기 때문에 이해하기 편하다는 장점이 있지만, 개발 과정에서 고객의 니즈가 바뀌었을 때 빠르게 대응하기 어려울 수 있다. 또한 개발이 다 끝나고 나서야 사용자 피드백을 들을 수 있기 때문에 유연성이 낮은 편으로, 처음부터 요구사항을 잘 이해할 필요가 있다.

3-2. 애자일 프로세스 모델

애자일 프로세스는 민첩하게 진행된다. GitHub의 마일스톤을 설정하고, 특정한 기간 안에 수행해야 할 이슈를 넣어 일정과 진척도를 관리하는 것과 유사하게, 애자일에서는 스프린트라는 개념이 존재한다. 일주일과 같이 짧은 기간을 정하고, 기간 내 작업량을 할당하고 수행하며, 일주일마다 회고하고 피드백을 받고 다시 목표를 세워 개발하는 것을 반복한다. 폭포수 모델과 다르게 고객이 즉각적으로 피드백을 할 수 있기 때문에 요구사항 대응이 빠르며, 주기적인 회고로 팀원 간 의사소통이 원활하다는 장점이 있다. 다만 빠르게 진행되는 만큼 수행하는 사람의 능력에 따라서 효율이 무너질 수도 있다. 따라서 프로젝트에 대한 이해도가 낮으면 참여가 어려우며, 짧은 목표를 세우다보니 장기적인 비용과 시간을 추정하기가 어렵다는 단점이 있다.

3-2-1. 스크럼

애자일 개발의 프레임워크를 스크럼이라고 한다. 스프린트 단위로 협력하는 방식을 의미한다. 스크럼 진행 시 초기 계획을 세우는 제품 책임자, 큰 틀과 함께 과정 내에서 지속적으로 지원을 해주는 스크럼 마스터, 실질적인 업무를 맡아 하는 스크럼 팀원으로 구성된다. 사장, 매니저, 알바의 개념으로 이해하면 될 것 같다.

! 애자일 프로세스도 초기에 기본적인 설계와 문서화는 진행한다.

4. 요구사항

개발을 하다보면 고객의 니즈, 프로젝트, 애널리스트, 프로그래머가 각각 이해하는 바가 다른 상황을 맞이할 수도 있다. 따라서 명확한 의사소통, 요구사항을 정확히 이해하는 것이 중요하다. 인터페이스, 보안, 성능 등 다양한 요구사항이 존재하는데, 이 중에서 개발자가 가장 집중해야 할 것은 구체적으로 무엇을 개발하는지 기능적 요구사항이다. 문서화 또한 개발자의 업무이기도 하다. 고객과의 인터뷰 등을 통해 니즈를 파악할 수 있으며, 이를 명세서 양식에 따라 정확하게 문서화할 수 있어야 한다.

명세서를 작성할 때는 특히 일관성명확성을 중요시해야 한다. 예를 들어 제품/상품, 등록/추가를 같은 의미로써 혼용하게 되면 읽는 사람이 혼란스러울 것이다. 모든 필수 요구사항을 누락 없이 포함해야 하는 건 당연하다.

0개의 댓글