이전 포스팅에서는 SDLC, 즉, 소프트웨어 개발 생명주기와 그 종류인 폭포수 모델, 프로토타입 모델, 나선형 모델에 대해 알아보았다. 이번 포스팅에서는 역시나 포스트웨어 개발 생명주기의 한 종류인 V-모델에 대해 알아볼 것이다.
소프트웨어 개발 생명주기
우리는 어떤 일을 실천하기 전에 항상 계획이란 걸 세운다. 공부를 할 때도, 여행을 갈 때도 마찬가지이다. 소프트웨어 개발도 마찬가지로 계획을 세우고 계획된 프로세스를 통해 개발을 진행한
joungdev.tistory.com
V모델을 알아보기에 앞서 소프트웨어 개발 생명주기의 내용을 잘 모르는 분들은 이전 포스팅을 보고 오면 좋을 것 같다.
V-모델이란
V모델은 소프트웨어 개발에서 검증(Verification)과 확인(Validation)을 강조하며, 설계 단계와 테스트 단계를 병행하여 오류를 조기에 발견하고 품질을 보장하는 개발 모델이다. V모델은 그림과 같이 설계 단계와 이에 상응하는 테스트 단계가 1:1로 매칭되며, 각 설계 단계에서 테스트를 미리 계획하고 테스트 방법과 범위를 정리한다. 그리고 테스트 단계에서 설계 단계에서 설계한 정의대로 구현된 시스템이 실제도 동작하는지를 검증한다. 만약 테스트 과정에서 문제가 발생하면 설계 단계로 돌아가 다시 설계를 수정하는 방식으로 진행된다.
검증과 확인
해당 모델을 이해하고 또 다른 다양한 개념을 이해하기 위해선 검증과 확인이 무엇인지 알고 넘어가는 것이 좋다. 일반적으로 계획 단계를 검증 단계라고 하고, 확인 단계를 테스트 단계로 이해하면 될 것이다.
검증(Verification) : "우리가 올바른 제품을 개발하고 있는가?"
검증은 소프트웨어 개발의 각 단계에서 산출물이 요구사항과 명세서에 부합하는지 확인하는 단계이다. 설계 단계에서 오류를 예방하고 문제를 조기에 발견하기 위해 이루어진다.
확인(Validation) : "우리가 개발한 제품이 올바르게 동작하는가?"
확인은 최종 제품이 사용자 요구사항을 충족하고 기대한 대로 작동하는지를 확인하는 프로세스이다. 주로 테스트 실행과 사용자 피드백을 통해 이루어진다.
각 단계 이해하기
1. 요구사항 분석 -> 인수 테스트
- 요구사항 분석
- 고객, 사용자, 또는 이해관계자로부터 시스템이 충족해야 할 요구사항을 수집하고 분석하는 단계이다.
- 인수 테스트
- 고객의 요구사항을 충족했는지 확인하는 테스트 단계이다. 테스트는 실제 사용자 또는 고객이 수행하며, 소프트웨어의 최종 승인 여부를 결정한다.
2. 시스템 설계 -> 시스템 테스트
- 시스템 설계
- 요구사항 명세서를 기반으로 시스템의 전체 구조와 동작 방식을 정의하는 단계이다.
- 시스템 테스트
- 시스템이 설계된 대로 동작하는지 확인하는 테스트 단계이다. 모든 구성 요소를 통합한 상태에서 전체 시스템을 테스트하며, 요구사항 명세서와 비교하여 시스템의 품질을 검증한다.
3. 아키텍처 설계 -> 통합 테스트
- 아키텍처 설계
- 시스템을 구성하는 주요 모듈과 각 모듈 간의 상호작용을 설계하는 단계이다.
- 통합 테스트
- 여러 모듈을 조합하여 상호작용을 테스트하는 단계이다. 모듈 간 데이터 교환, 통합 후의 동작 등을 확인하여 모듈 간 연결 오류를 식별한다.
4. 모듈 설계 -> 단위 테스트
- 모듈 설계
- 개별 모듈의 세부 설계를 수행하는 단계이다.
- 단위 테스트
- 개별 모듈이 올바르게 동작하는지 확인하는 단계이다. 개발자가 직접 작성한 코드에 대해 테스트하며, 주로 기능적 요구사항을 검증한다.
이러한 구조로 인해 V모델은 개발 초기부터 체계적인 품질 관리를 가능하게 하며, 오류를 초기에 발견하여 수정 비용을 절감할 수 있는 장점을 제공한다. 다만, 프로세스 자체가 복잡하게 구성되어 있어, 프로젝트 규모가 크고 복잡도가 높은 경우에는 적용하기 어렵다는 한계점이 있다.
V-모델을 이해하기 위해서는 각 단계에서 어떤 작업을 어떻게 실행하는지 잘 알고 있어야 한다. 이 포스팅에서는 이해를 돕기 위해 간단하게 각 단계에 대한 설명을 이어갔지만 실제로는 각 단계마다 중요한 개념들이 정말 많다. 따라서, 이에 관한 내용을 공부를 하는 것이 V-모델을 이해하는 데에 중요하다. 이후에 설계와 테스트에 관한 내용들도 포스팅을 할 예정이다.
'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글
구조적 분석 도구 (DFD, DD, Minispec, STD, ERD) (1) | 2025.02.03 |
---|---|
IT 서비스 관리 (SLA, SLM, ITSM, ITIL) (1) | 2025.01.29 |
SDLC - 애자일 방법론 (XP, Scrum) (0) | 2025.01.23 |
소프트웨어 개발 생명주기 (2) | 2025.01.21 |
소프트웨어 공학의 3R: 역공학, 재공학, 재사용 (1) | 2025.01.20 |