1. 폭포수
이름그대로 위에서부터 아래로 떨어지는 모델이다.
각 단계가 끝나면 다음 단계로 넘어가고, 단계 사이 상호작용이 없다는 특징을 가진다.
각 단계의 결과는 다음 단계를 수행하기 전 점검한다.
만약 이 모델을 채택한다면 단계의 구분이 명확하고 순서가 존재하기 때문에
직능 중심으로 프로젝트 인력을 나눌 수 있을 것이다.
요구사항이 많이 바뀌지 않고, 쉽게 바뀌지 않는 시스템에 적용해야한다.
이 모델은 실제 설계나 코딩, 테스트에 들어가기 까지의 과정이 길고 복잡하다.
프로토타입이 나오지 않는 다는 것도 문제점이라면 문제점이라고 할 수 있겠다.
2. 프로토타이핑
요구된 것을 시각적으로 보여주기 좋다.
사실 위에 설명한 폭포수 모델 같은 경우에는 초기 투자자(개발을 잘 모르는)들에게는 와닿지 않을 수 있다.
그래서 어떠한 결과물이 나온다는건지, 하면서 미지근해진다.
그러한 단점을 보완한것이 프로토타이핑 모델이다.
프로토타입을 만들어 사용자들에게 이러한 제품이 만들어 질것이라 빠르게 보여주는 것이다.
요구사항을 정확히 파악할 수 있고, 새로운 기술을 사용해볼 수 있다.
그렇지만, 이는 다른 이들이 보기에 개발이 거의 완료되어 있는 것 같아
개발 시간을 단축시켜 버릴 수도 있다.
개발자의 입장에서는 초기에 관심을 끌기에는 좋지만
진짜 개발에 착수할 때는 부담스러울 수 있다.
프로토타이핑은 실험적 프로토타이핑과 진화적 프로토타입이 있다.
실헙적 프로토타이핑은 만들어진 프로토타입은 그대로 버리고 새롭게 개발에 착수하는 것이다.
모델하우스라고 이해하면 편하다.
하나 만들어서 보여주고, 이제 진짜를 만드는 것이다.
진화적 프로토타입은 만들어진 프로토타입을 발전시켜서 완성을 시키는 것이다.
둘 다 직관적으로 이해가 된다.
최근에는 개발시간 단축을 위해 진화적 프로토타입을 선호한다고 한다.
기능별로 릴리즈할 수도 있고, 소프트웨어 전체를 조금씩 릴리즈할 수 도 있는데 이를 병행해가면서
처음부터 기능이 완벽한 소프트웨어가 아닌 부족하지만 빠른 사용자 요구 수용을 보여주는것이 트렌드이다.
빠르게 나오기만 한다면 시장을 먼저 형성하거나 차지할 수 있기 때문이다.
나는 여기까지 생각하지 못했는데, 이런 시각으로 볼 수도 있구나 조금 신기하다.
3. 나선형
위험을 최소화시키는 것이 나선형 모델의 가장 큰 특징이다.
폭포수와 프로토타이핑의 장점에 위험분석을 더했다.
위험분석이 계속해서 들어가기 때문에 지속적으로 변해야하는 대규모 프로젝트에 가장 적합하다.
비선형적이고, 계속해서 반복하는('돌아가는' 이라고 표현해도 될 것 같은) 개발덕분에
고객들의 요구사항을 잘 맞출 수 있다.
4. V 모델
사진을 보며 이해하면 편하다. (참고로 (가) 에는 시스템 테스트가 들어간다.)
구현까지는 폭포수 모델과 별다른 차이가 없지만,
구현 이후의 테스트 단계가 각 설계를 검증할 수 있도록 되어있다.
만약 단위테스트에서 문제가 발생하면, 상세 설계를 다시 살펴보면 된다.
이는 각 단계별 검증이 존재하는 것이므로 신뢰도가 높다고 할 수 있다.
5. 통합 프로세스
우리가 흔히 SW 개발 단계라고 생각하는 요구사항 분석, 설계, 구현, 테스트는 이 모델에서
각 단계를 구분지을 수 없다.
병렬적으로 행해지는 것이다.
통합 프로세스에서 단계는 도입, 구체화, 구축, 전이 이렇게 4단계이다.
이 단계에서 비즈니스 모델링, 요구사항 정의, 분석 및 설계, 구현, 테스트, 형상관리, 프로젝트 관리 .. 등등이
계속해서 반복되는 것이다.
반복주기가 끝났을 때는 실행 가능한 산출물이 나와 위험 요소를 판별한다.
이 모델은 객체지향 분석,설계 중심의 프로젝트에서 많이 사용된다.
그림도 보면 병렬적이다.
6. 애자일 프로세스
사실 애자일은 정보처리기사 공부하면서 정말 많이 들어서,
다른건 다 잊어도 애자일만큼은 기억하고 있었다...! 참 다행이다.
애자일 프로세스는 요구사항 변경에 많은 비용이 드는 폭포수의 단점을 해결한 모델으로,
짧은 개발 사이클과 소통하는 개발이 가능하다는 장점이 있다.
애자일 프로세스는 아래 4가지 가치를 중요시 한다.
- 프로세스와 도구 중심이 아닌 개개인과의 상호 소통이 중요하다.
- 문서 중심이 아닌, 실행 가능한 소프트웨어가 중요하다.
- 계약과 협상이 중심이 아닌, 고객과의 협력이 중요하다.
- 계획 중심이 아닌, 변화에 대한 민첩한 대응이 중요하다.
개발 공부를 시작한지 1년이 다 되어가는 것 같은데,
아무것도 모르는 느낌이다.
무엇이든 흡수할 수 있게 기본기를 잘 다져놓자!
'Archive > Develop' 카테고리의 다른 글
[ GitHub ] TIL(Today I Learned) 자동 업로드 프로젝트 구현하기 #1 (0) | 2021.12.03 |
---|---|
[ CI/CD ] Github Action | yml 파일 뜯어보기 (0) | 2021.12.03 |
[ Django ] Admin 페이지에 모델 등록하기 (0) | 2021.11.22 |
[ Algorithm ] 근사 알고리즘 (0) | 2021.11.17 |
[ Oracle ] count(*) VS count(특정컬럼명) (0) | 2021.11.16 |