1. 폭포수 모델 (Waterfall)
- 한 컴포넌트 단계가 지나면 다시 돌아오지 않고 계속 폭포처럼 내려간다 (사이클 1번에 끝남)
- 1970년대에 도입되었고 각 단계가 다음단계의 시작전에 반드시 끝나야함 (각 단계 사이에 상호작용이 없음)
- 개선된 폭포수(위의 그림)은 바로 한 단계로 피드백 할 수 있지만 그 보다 더 뒤로는 못 돌아간다
- 각 단계가 끝나고 나오는 산출물이 굉장히 중요시 되며 산출물 정의가 굉장히 중요함
(1) 폭포수 모델의 장점
- 프로세스가 단순하여 초보자도 적용하기 쉬움
- 중간 산출물이 명확하여 관리하기 편함 (중간에 사람이 바뀌어도 관리 쉬움)
- 코드 생성 전에 충분한 연구와 분석을 거칠 수 있음
(2) 폭포수 모델의 단점
- 처음 단계를 지나치게 강조하면 코딩이나 테스트가 너무 지연됨
- 쓸모없는 문서가 너무 많이 만들어짐
- 변화가 잦은 프로젝트의 경우 비용 손실이 매우 커짐
(3) 폭포수 모델의 적용
- 이미 굉장히 잘 알고 있는 문제나 혹은 연구 작업 등에 적용 (현업 개발에는 솔직히 부적합)
- 변화가 매우 적은 프로젝트에만 적용할 수 있음, 요구변화가 많은 작업은 적용힘듬.
- (DBMS와 같은 소프트웨어 자주 업데이트 되어 바뀌거나, 신기술 적용이 중요한 곳에서는 부적합)
2. 프로토타이핑 모델 (Rapid Prototyping Model)
- 폭포수모델은 요구분석, 설계 등의 초반 산출물이 전부 문서로 이루어져있음.
- 그래서 의뢰인이 실제로 원하는 것과 완전히 일치하는 것인지 확인하기 어려움.
- 만약 프로토타입이 요구와 일치하면 구현하고, 그렇지 않으면 다시 요구분석 단계로 돌아감 (2사이클)
- 의뢰인의 요구를 더욱 정확히 추출할 수 있음 (유저인터페이스, 운영체제조화, 알고리즘 등)
- 실제로 구현하는 것이 아니라 비주얼 목업등으로 진행할 수도 있음
- 프로토 타입의 목적 : 개발자와 의뢰인 사이의 하나의 합의점이 됨.
- 사이클 횟수 : 프로토 타입 개발 → 정식 제품 개발 (사이클 2번에 끝남)
(1) 프로토타이핑 모델의 장점
- 의뢰인의 요구사항이 더욱 잘 반영됨
- 의뢰인이 더 관심을 가지게 되고 참여하며, 개발자는 더욱 정확한 요구사항 반영이 가능함
(2) 프로토타이핑 모델의 단점
- 괜한 기대심리를 유발할 수 있음 (UI만 보고 다 완성될준 알고 기대함)
- 문서로 된 산출물이 없기 때문에 관리가 힘듬
(3) 프로토타이핑 모델의 적용
- 개발에 착수해야하는데 요구사항이 명확하지 않은 경우 적용 가능
- 실험적으로 이 프로젝트의 실현 가능성을 확인해보고 싶을 때
- 혁신적인 기술을 미리 사용해보고 싶을 때
3. V모델 (Verification)
- V 모델이라고 해서 다시 전 단계로 돌아가는 것은 아니고, 폭포수랑 비슷한데 테스팅을 강조한 것
- 설계를 두번 나눠서 진행함. 원래, 요구분석, 설계, 구현인데 설계를 시스템설계, 상세 설계로 나눔
- V = Verification 모델인만큼 폭포수 모델에 비해서 테스팅 분야가 강조됨 (단위/통합/테스팅)
- 요구분석, 시스템설계, 상세설계가 단위테스팅, 통합테스팅, 시스템테스팅과 1대1 매칭 (설계사항 테스트)
- 단위 테스팅 : 한 모듈 안에 들어가는 상세설계를 테스팅함
- 통합 테스팅 : 시스템의 설계를 테스팅함
- 시스템 테스팅 : 인터페이스와 전체 시스템의 기능을 테스팅함
(1) V모델의 장점
- 세세한 테스팅으로 오류를 줄일 수 있음
(2) V모델의 단점
- 반복이 없기 때문에 변경사항을 다루기 어려움
(3) V모델의 적용
- 높은 신뢰성을 요구하는 (생명이 달린 자동차 소프트웨어 등) 프로젝트에 적용
- 매우 세밀하게 테스팅을 진행하기 때문에 소프트웨어 신뢰도가 높음
4. Reference
소프트웨어공학 개론
소프트웨어를 개발하고 유지보수하는 데 적용되는 체계적이며 원리적인 접근 방법을 소개한다. 소프트웨어를 개발하는 프로젝트를 계획하는 기법, 사용자의 요구를 분석하는 기법, 소프트웨어 구조를 설계하는 기법, 모듈과 사용자 인터페이스를 설계하는 기법, 코딩 스타일, 테스팅 기법, 유지보수 기법, 소프트웨어 품질 보증 활동을 다룬다.
www.kocw.net
'소프트웨어공학' 카테고리의 다른 글
프로세스 (7) - 애자일 프로세스 모델 (2) - 스크럼 (Scrum) (0) | 2020.05.13 |
---|---|
프로세스 (6) - 애자일 프로세스 모델 (1) - 선언문(Manifesto) (0) | 2020.05.13 |
프로세스 (5) - 점진적 프로세스 모델 (2) - UP / RUP (0) | 2020.05.13 |
프로세스 (4) - 점진적 프로세스 모델 (1) - 증분 / 진화 / 나선형 (0) | 2020.05.13 |
프로세스 (2) - 프로세스의 각 단계 (0) | 2020.04.14 |
프로세스 (1) - 프로세스란 무엇인가? (0) | 2020.04.14 |
소프트웨어 공학이란? (0) | 2020.04.14 |