제목 날짜 내용 발행일 23.04.03
해당 포스트는
개발 프로세스
를 학습한 것을 정리한 내용입니다.
개발 프로세스, 즉 소프트웨어 개발 프로세스 모델은 소프트웨어 개발 생명주기(SDLC, Software Develpment Life Cycle)을 기반으로 만들어졌다.
시스템 구조설계
프로그램설계
UI(User Interface) 설계
- 사용자 인터페이스 설계
- 사용자가 시스템을 사용하기 위해 보이는 부분을 설계
구조화 프로그래밍
모듈러 프로그래밍
수정형 유지보수
적응형 유지보수
완전형 유지보수
예방형 유지보수
개발 프로세스는 다양한 모델이 있는데 어느 정도 규모의 앱을 개발하는 지, 혹은 어떤 종류의 앱을 개발하는 지를 고려하여 모델을 선택해 사용한다.
기존에 존재하고 있던 개발 프로세스는 워터폴(Waterfall) 방식이 있다.
직관적인 느낌 그대로, 폭포와 같이 한 방향으로만 프로세스가 진행되는 개발 과정(한국어로도 “폭포수 개발 방식” )
전통적인 소프트웨어 개발 프로세스에서는 소프트웨어의 안정성 개선을 위해 테스트 단계에 다양한 테스트들을 도입한다.
이 외에도 다양한 테스트가 존재
이런 전통적인 개발 프로세스에서 벗어나기 위해 만들어진 프로세스 중 하나가 애자일(Agile) 방식
이 애자일 방식은 ‘스프린트(sprint)' 라고 불리는 짧은 주기의 개발 사이클을 계속해서 반복
이 방식은 요구사항이 변하는 것을 당연한 전제로 두고 있다.
전통적인 개발 프로세스보다는 훨씬 효율적으로 개발할 수 있습니다.
애자일 개발 프로세스를 적절히 사용하면 빠르게 문제를 해결해 하루에도 여러 번의 배포가 가능
SaaS(Software as a Service, 서비스형 소프트웨어)를 개발하는 데에 적합
해당 그림은 구글의 Gmail 업데이트 로그
전통적인 개발 프로세스는 모던 개발 프로세스에 비해 현저히 떨어지는 프로세스일까?
모던한 개발 프로세스를 따른다 해도 “제대로" 따르지 않는다면 하느니만 못하다.
전통적인 개발 프로세스인 워터폴과 모던 개발 프로세스인 애자일의 장점 및 단점을 정리한 표
워터폴 애자일 장점 프로세스가 길고 순서가 잡혀 있음
팀의 규모에 상관 없이 따르기 쉬움
개발 주기가 정해져 있음
새로운 프로젝트를 안정적으로 시작 가능
요구 사항이 확정되어 있음
프로젝트를 실행하기 수월
개발 목표를 자주 변경하지 않아도 됨
프로젝트의 전 과정에 필요한 예산 및 자원이 초기에 확정
예상 결과와 리스크를 통제하기 훨씬 쉬움빠르면서 유연한 개발 과정
짧고 반복적인 스프린트로 구성
품질에 초점을 맞출 수 있음
빠르게 결함을 인지하고 수정 가능
개발 과정 중에 신속히 제품 변경 가능단점 앞 단계가 완성되지 않으면 다음 단계로 넘어갈 수 없음
개발 속도가 느리고 유연성이 떨어짐
테스팅 단계에 이르러서 이슈가 발견되는 경우가 있음
개발 요구 사항이 초기에 확정되므로 범위 변경이 자유롭지 못함스프린트에 대한 경험이 있는 익숙한 스크럼 마스터가 필요
고객이 수많은 변경 사항을 검토해야만 하는 번거로움 발생
팀원이 잘 조직되어 있지 않거나 자립성이 떨어지는 경우
애자일론을 채택할 시 문제가 발생
오히려 어떤 상황에서는 체계적인 계획과 문서를 만들고 시작하는 전통적인 개발 프로세스가 더 적합할 수도 있다
프로세스가 적합한 조직을 나열한 표입니다.
워터폴 애자일 적합한 상황 높은 예측 가능성
순차적인 프로젝트 타임라인
사전 확정 예산이 필요한 경우
프로젝트 팀의 경험이 적은 경우
요구사항이 간단
타임라인이 긴 프로젝트를 수행하는 경우고성능 소프트웨어 개발을 할 경우
고품질의 결과물과 지속적인 개선에 초점을 맞출 경우
결과물에 대해 빠른 피드백이 필요한 경우적합한 기업 및 팀 개발상의 변경이나 리스크에 덜 민감한 곳
제한적인 시간과 자원 탓에 협업이 자유롭지 못한 고객을 둔 곳크고 복잡한 회사들이 프로세스를 간소화해 변화에 더욱 신속하게 대응하고자 할 때
고객 및 외부 관계자와 정기적으로 긴밀한 협업을 수행할 때