2022. 10. 12. 13:03ㆍ프론트엔드/기타
개발 프로세스
워터폴과 애자일 프로세스는 IT, 스타트업 등에 관심이 있는 사람이라면 한번쯤 들어봤을 개발문화이다.
워터폴, 애자일 프로세스를 알아보기전에 먼저 소프트웨어 개발 프로세스 모델에 대해 알아볼 필요가있는데 이는 소프트웨어 개발 생명주기 (SDLC, Software Development Life Cycle)을 기반으로 만들어진 모델이다
요구분석 및 시스템 명세작성
문제분석 단계라고도 하며, 개발할 소프트웨어의 기능과 제약조건, 목표 등을 사용자와 함께 정확히 정의하는 단계이다. 개발하고자 하는 소프트웨어의 성격을 정확히 이해하여 이를 토대로 개발 방법과 필요한 자원 및 예산 예측 후 요구명세를 작성하면 된다.
설계
설계단계에서는 앞서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하게 된다. 크게 시스템, 프로그램, UI(User Interface) 설계로 나뉘며,
시스템 구조설계는 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조를 설계하고,
프로그램설계는 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘을 설계하는 과정이다
구현
설계 단계에서 논리적으로 결정한 문제 해결 방법을 프로그래밍언어를 사용하여 실제 프로그램을 작성하는 과정이다. 이때 프로그래밍 기법은 구조화 프로그래밍과 모듈러 프로그래밍 두 개로 나뉘는데
구조화 프로그래밍 조건문, 반복문을 사용하여 프로그램을 작성 순차/선택/반복 구조의 3가지 제어구조 정확성 검증, 테스트 및 유지보수가 용이 |
모듈러 프로그래밍 프로그램을 여러개의 작은 모듈로 나누어 계층관계로 구성 모듈별로 개발과 테스트 및 유지보수 가능 모듈의 재사용 가능 |
테스트
시스템이 요구사항을 만족하는지, 실행 결과가 예상한 결과와 정확하게 맞는지를 검사하고 평가하는 일련의 과정으로 예상치 못한 문제를 미리 발견 할 수 있기에 매우 중요한 과정이며 이를 위한 다양한 테스트 라이브러리가 존재한다
배포&유지보수
배포 및 유지보수는 배포 후에 일어나는 모든 활동을 지칭하는데, 커스터마이징, 구현, 테스트 등 모두 이 단계에 포함되므로 소프트웨어의 생명주기에서 가장 긴 기간을 차지한다. 유지보수의 유형에는 수정형, 적응형, 완전형, 예방형 유지보수가있는데 이는 각각 아래와같다.
- 수정형 유지보수 : 사용 중에 발견한 프로그램의 오류 수정 작업을 진행합니다.
- 적응형 유지보수 : 시스템과 관련한 환경적 변화에 적응하기 위한 재조정 작업을 합니다.
- 완전형 유지보수 : 시스템의 성능을 향상하기 위한 개선 작업을 합니다.
- 예방형 유지보수 : 앞으로 발생할지 모를 변경 사항을 수용하기 위한 대비 작업을 수행합니다.
전통적인 개발프로세스 (WaterFall)
전통적인 개발 프로세스는 워터폴 (WaterFall)방식이라고도 불리는데, 이름에서 알 수 있듯 폭포수처럼 출시기간을 정해놓고 순차적으로 프로세스를 진행시켜 완전한 어플리케이션이 완성되어야 배포를 진행한다. 때문에 실제 디자인 또는 개발된 화면을 시각적으로 확인할 수 있는 단계는 이미 많은 프로세스를 지나온 상태이고, 버그를 고치기위해선 폭포수를 거슬러 올라가듯 힘들게 이전단계로 돌아가야 한다.
이때문에 출시시점 소프트웨어의 신뢰성 및 안정성을 보장받기 힘들고 유지보수에 많은 시간을 쓰게된다.
때문에 소프트웨어 안정성 개선을 위해 테스트 단계에 많은 테스트를 진행하게된다
- 시스템 테스트 : 모든 모듈을 통합한 후 최종적으로 완성된 시스템이 요구사항을 만족하는지 확인합니다. 요구사항을 만족하지 않는다면 다시 요구분석 단계로 돌아가 새로 개발을 하기도 합니다.
- 알파 테스트 : 완전히 개발된 시스템을 개발 현장에서 비공개로 테스트하는 것으로, 주문형 제품의 경우 개발진과 클라이언트 사이에서 동의가 이루어질 때까지 수행됩니다. 대기업의 경우 이 업무를 주로 하는 전문 QA팀이 존재합니다.
- 베타 테스트 : 고객의 실제 사용 환경에서 수행되는 테스트로, 미리 선별된 유저들이 해당 제품을 사용해 봅니다. 이 과정에서 에러나 버그가 발견되면 수정하는 식으로 진행됩니다.
애자일 개발 프로세스 (Asile)
스프린트라고 불리는 짧은 주기의 개발 싸이클을 계속해서 반복하는 애자일 프로세스는 전통 개발 프로세스에서 벗어난 프로세스이다. 애자일 방식의 특징은 요구사항이 변하는것을 당연하게 생각한다는 것이다.
애자일 프로세스는 비즈니스적 관점에서도 굉장히 유용한데, 최소 기능만을 하는 프로덕트 (MVP)을 빠르게 만들어내서 시장에서의 가능성을 확인해 볼 수 있고, 시장의 반응을 바탕으로 계속해서 스프린트를 진행하며 서비스를 고도화해간다.
이렇게 스프린트를 반복하는 애자일 방식의 개발은 빠르게 결함을 수정할 수 있고, 하루에도 여러번 릴리즈를 할 수 있는 등 효율적으로 개발이 가능하다.
애자일 vs 워터폴
애자일, 워터폴 방식중 무조건 애자일 방식이 더 좋고 워터폴방식이 진부하고 도태된 방법은 아니다. 조직의 특성에 맞게 애자일과 워터폴 방법론을 적절히 사용해서 개발을 진행해 나가는 것이 좋다.
워터폴 | 애자일 | |
장점 | - 프로세스가 길고 순서가 잡혀 있으므로 팀의 규모에 상관 없이 따르기 쉬움 - 개발 주기가 정해져 있으므로 새로운 프로젝트를 안정적으로 시작 가능 - 요구 사항이 확정되어 있으므로 프로젝트를 실행하기 수월하며, 개발 목표를 자주 변경하지 않아도 됨 - 프로젝트의 전 과정에 필요한 예산 및 자원이 초기에 확정되어 예상 결과와 리스크를 통제하기 훨씬 쉬움 |
- 빠르면서 유연한 개발 과정 - 짧고 반복적인 스프린트로 구성되어 있어 품질에 초점을 맞출 수 있으므로 빠르게 결함을 인지하고 수정 가능 - 스프린트를 통한 짧은 반복 과정으로 개발 과정 중에 신속히 제품 변경 가능 |
단점 | - 개발이 순차적으로 진행되므로 앞 단계가 완성되지 않으면 다음 단계로 넘어갈 수 없어 개발 속도가 느리고 유연성이 떨어짐 - 테스팅 단계에 이르러서 이슈가 발견되는 경우가 왕왕 있음 - 개발 요구 사항이 초기에 확정되므로 범위 변경이 자유롭지 못함 |
- 스프린트에 대한 경험이 있으며 빠른 반복 작업에 익숙한 스크럼 마스터가 필요함 - 고객이 수많은 변경 사항을 검토해야만 하는 번거로움 발생 - 팀원이 잘 조직되어 있지 않거나 자립성이 떨어지는 경우 애자일론을 채택할 시 문제가 발생 |
워터폴 | 애자일 | |
적합한 상황 | - 높은 예측 가능성과, 순차적인 프로젝트 타임라인, 사전 확정 예산이 필요한 경우 - 프로젝트 팀의 경험이 적은 경우 - 요구사항이 간단하거나, 타임라인이 긴 프로젝트를 수행하는 경우 |
- 요구사항이 간단하거나, 타임라인이 긴 프로젝트를 수행하는 경우 - 프로젝트가 완벽히 수행될 때까지 결과물을 기다리는 것보다 결과물에 대해 빠른 피드백이 필요한 경우 |
적합한 조직 | - 개발상의 변경이나 리스크에 덜 민감한 기업 및 팀 - 제한적인 시간과 자원 탓에 협업이 자유롭지 못한 고객을 둔 기업 및 팀 |
- IBM, 시스코, AT&T, 마이크로소프트와 같이 크고 복잡한 회사들이 프로세스를 간소화해 변화에 더욱 신속하게 대응하고자 할 때 - 고객 및 외부 관계자와 정기적으로 긴밀한 협업을 수행하는 프로젝트 팀 |
'프론트엔드 > 기타' 카테고리의 다른 글
[정규표현식] 원하는 문자를 찾는 간단한 방법! (0) | 2022.10.17 |
---|---|
[개발 프로세스] Github Action을 이용한 CI/CD - 작성중 (0) | 2022.10.12 |
[Optimization] 웹사이트 최적화 기법 - 1 (0) | 2022.10.07 |
[Redux] 리덕스의 기본! (0) | 2022.09.01 |
[REST API] 잘 디자인된 API (0) | 2022.08.05 |