[SW설계] 소프트웨어 개발 프로세스
개요
소프트웨어 개발 프로세스가 어떻게 되고 유지보수 및 SDLC(Software Development Life Cycle) Model이 무엇인지 알아보자.
SDLC Model 중 이번 시간에는 폭포수(waterfall) 모델에 대해 자세히 알아보고 iron triangle과 폭포수 모델 관계까지 알아보자.
소프트웨어 개발 프로세스
소프트웨어 개발 프로세스 단계로는 크게 요구사항 분석 - 설계 - 구현 - 테스팅으로 나눌 수 있다.
각 단계가 무엇인지는 다음과 같다.
- 요구사항 : 개발하고자 하는 소프트웨어에 대한 요구사항을 고객으로부터 수집, 분석, 명세 및 검증하는 단계.
- 설계 : 고객의 요구사항을 만족하기 위한 여러 해결책을 제시하고 이 중에서 가장 최적화된 해결책을 선정하는 단계.
- 구현 : 고객의 요구사항을 실제 서비스의 형태로 제공할 수 있도록 프로그래밍 언어를 사용하여 개발하는 단계.
- 테스트 : 개발된 프로그램이 고객의 요구대로 동작이 되는지를 시험하는 단계.
유지보수
소프트웨어 유지보수(software maintenance)는 product 출시되고 나서 고객의 요구사항 등을 충족하기 위해 소프트웨어를 변경, 수정하거나 업데이트하는 프로세스이다.
유지보수의 종류로 대표적으로 네 가지가 있는데 이는 다음과 같다.
- 수정 유지보수(corrective maintenance) : 소프트웨어의 오류가 발견되었을 때 이를 수정하는 작업. (보통 사용자가 오류를 발견해 이를 대응하여 오류를 수정)
- 적응 유지보수(adaptive maintenance) : 운영체제나 인프라 환경 등이 변화되었을 때 이 변화를 수용하도록 프로그램을 수정하는 작업.(개발자가 소프트웨어 환경에 맞춰 이를 수정)
- 완전 유지보수(perfective maintenance) : 기능이나 성능을 개선하거나 새로운 기능을 추가 혹은 기존 불필요한 기능을 제거하기 위하여 프로그램을 수정하는 작업.(사용자가 시스템 사용 시 기존 기능을 변경하거나 추가를 원할 때 수정)
- 예방 유지보수(preventive maintenance) : 수정 유지보수와 달리 소프트웨어 오류가 발생되기 전에 미연에 방지될 수 있도록 수행하는 작업.(latent error[잠재 오류] 예방)
유지보수 비율
SDLC(Software Development Life Cycle) Model
SDLC 모델 : 소프트웨어 요구사항부터 개발, 운영 폐기까지의 전 과정을 기술하는 프레임워크.
대표적인 SDLC Models
- 폭포수 모델(Waterfall Model)
- RAD(Rapid Application Development)
- 린 스타트업(Lean Startup)
- 애자일 프로세스(Agile Process)
- DevOps
이번 시간에는 폭포수 모델에 자세히 알아보겠다.
폭포수 모델(Waterfall Model)
폭포수 모델은 가장 전통적인 모델이며 다른 모델의 기반이 되는 모델이다. 한 단계가 완료되면 다음 단계로 넘어가는 프로세스라 이름 그대로 폭포수 같다 하여 폭포수 모델이다.
특징으론 순차적/계획 주도적이다. 이는 일정, 비용등이 프로젝트 초기에 결정된다는 것을 의미한다.
위에서 말했다시피 이전 단계가 완료된 후에 다음 단계가 수행된다.
문제가 잘 정의되어 있고 예측가능하며 큰 변화가 없는 시스템을 개발할 때 잘 적용된다.
그리고 단계별 산출물이 명확하다. (Ex.요구사항 - 요구사항 명세서, 프로젝트 계획서) 이는 문서지향적이라 할 수 있다.
폭포수 모델과 불확실성
- 불확실성(Uncertainty)
- 목적 불확실성(End Uncertainty) : 무엇을 만들 것인가?
- 수단 불확실성(Means Uncertainty) : 어떻게 만들 것인가?
폭포수 모델은 초기에 무엇을 만들지를 결정하고 나서 프로젝트 진행 중에 어떻게 만들지를 결정한다.
중간에 요구사항 변화가 심한 프로젝트같은 경우에는 폭포수 모델이 적합하지 않다.
폭포수 모델은 고객이 원하는 product인지를 개발 중간 단계가 아닌 product가 만들어지고 나서 판단이 가능하기에 리스트가 매우 크다.
Iron Triangle과 폭포수 모델
Iron Triangle이란?
세 가지 제약조건과 품질(Quality)과의 관계를 말한다.
Scope - 작동하는 제품을 제공하기 위해 수행해야 하는 작업(Ex. 기능 및 작동).
Resources - 제공 및 실행을 위해 노력하는 팀원과 예산, 비용.
Schedule - 릴리스 기간, 일정.
이들의 관계는 마치 '철'과 같이 단단한 관계를 유지한다. 세 가지 제약조건에 따라 제품의 Quality가 결정된다.
폭포수 모델에서의 Iron Triangle
고객의 Scope를 기반으로 cost와 time이 추정된다. 즉, 고객의 요구사항을 바탕으로 비용과 프로젝트 기간이 정해진다.
Scope가 고정 : 고객의 영역
추정된 Resources가 부족할 때 더 많은 자원 요구(비용 증가)
추정된 시간이 짧거나 프로젝트가 더디게 진행된다면 더 많은 프로젝트 시간 할당 요구(시간 증가)