[전통적인 방법론] V-모델(Verification & Validation) - 2. V-모델의 단계별 학습 (2.1 요구사항 분석 단계)

2025. 3. 12. 18:10개발/개발 방법론

2.1 요구사항 분석 단계

요구사항 분석 단계는 소프트웨어 및 시스템 개발의 출발점으로, 프로젝트의 성공 여부를 결정짓는 가장 중요한 과정 중 하나입니다.
이 단계에서는 사용자의 기대를 명확하게 정의하고, 이를 충족할 수 있도록 시스템 요구사항을 도출합니다.
V-모델에서는 요구사항 분석이 끝나면, 이후의 개발 단계에서 요구사항이 올바르게 검증(Verification) 및 확인(Validation)될 수 있도록 요구사항 명세서를 기반으로 체계적인 테스트 전략을 수립합니다.


📌 학습 목표

시스템 요구사항과 사용자 요구사항을 정의하는 방법을 이해한다.
V-모델에서 요구사항이 어떻게 검증(Test)되는지 학습한다.
기능적 요구사항과 비기능적 요구사항의 차이를 명확히 구분한다.
요구사항 명세서를 작성하고, 요구사항 검증 기법을 적용하는 방법을 익힌다.


📖 학습 내용

1. 사용자 요구사항과 시스템 요구사항 정의

소프트웨어 및 시스템 개발에서 요구사항(Requirement)은 시스템이 수행해야 할 기능과 특성을 정의하는 문서입니다.
요구사항은 크게 사용자 요구사항(User Requirements)시스템 요구사항(System Requirements)으로 나뉩니다.

요구사항 유형  설명  예시
사용자 요구사항(User Requirements) 최종 사용자가 기대하는 기능 및 성능 "사용자는 앱에서 로그인 후 주문 내역을 확인할 수 있어야 한다."
시스템 요구사항(System Requirements) 사용자 요구사항을 충족하기 위해 시스템이 제공해야 하는 기능 및 제약 사항 "시스템은 1초 이내에 주문 데이터를 데이터베이스에서 조회해야 한다."

사용자 요구사항은 추상적이며, 비전문가(최종 사용자)도 이해할 수 있는 형태로 표현됩니다.
시스템 요구사항은 구체적인 기술적 설명을 포함하며, 개발자가 설계를 수행하는 데 필요한 세부 사항을 포함합니다.


2. 기능적 요구사항(Functional Requirements) vs 비기능적 요구사항(Non-Functional Requirements)

요구사항은 기능적 요구사항(Functional Requirements, FR)비기능적 요구사항(Non-Functional Requirements, NFR)으로 구분됩니다.

요구사항 유형 설명  예시
기능적 요구사항(FR, Functional Requirements) 시스템이 수행해야 할 기능과 동작을 정의 "사용자는 ID와 비밀번호를 입력하여 로그인할 수 있어야 한다."
비기능적 요구사항(NFR, Non-Functional Requirements) 성능, 보안, 확장성 등 품질 속성을 정의 "시스템은 1초 이내에 로그인 응답을 반환해야 한다."

기능적 요구사항은 ‘무엇을 할 것인가(What)?’를 정의합니다.
비기능적 요구사항은 ‘어떻게(How)?’를 정의합니다.

📌 비기능적 요구사항의 주요 항목

비기능적 요구사항 유형 설명  예시
성능(Performance) 시스템의 속도, 처리량, 응답 시간 "1초 이내에 주문 목록을 로드해야 한다."
보안(Security) 시스템이 악의적인 공격으로부터 보호되어야 함 "모든 비밀번호는 암호화되어 저장되어야 한다."
사용성(Usability) 사용자가 시스템을 쉽게 사용할 수 있어야 함 "사용자는 3단계 이하의 절차로 결제를 완료할 수 있어야 한다."
확장성(Scalability) 시스템이 증가하는 사용량을 처리할 수 있어야 함 "시스템은 10만 명의 동시 접속을 지원해야 한다."
신뢰성(Reliability) 시스템이 안정적으로 작동해야 함 "시스템 가용성은 99.9% 이상이어야 한다."

비기능적 요구사항은 소프트웨어의 품질을 결정하는 중요한 요소로, 성능 최적화 및 안정적인 운영을 보장합니다.


3. 요구사항 명세서 작성 및 검토

요구사항 분석이 완료되면 요구사항 명세서(Software Requirements Specification, SRS)를 작성합니다.
요구사항 명세서는 프로젝트의 공식 문서로, 개발자, 테스트 엔지니어, 프로젝트 관리자 등 모든 이해관계자가 참조하는 문서입니다.

📌 요구사항 명세서(SRS) 주요 구성 요소

  1. 개요(Introduction)
    • 프로젝트의 목적과 범위 설명
    • 이해관계자(Stakeholders) 목록
    • 시스템의 주요 기능 요약
  2. 기능 요구사항(Functional Requirements)
    • 각 기능에 대한 상세 설명
    • 데이터 흐름 및 처리 로직
  3. 비기능 요구사항(Non-Functional Requirements)
    • 성능, 보안, 확장성, 신뢰성 요구사항 정의
  4. 시스템 인터페이스(System Interfaces)
    • API, 데이터베이스, 외부 시스템과의 연동 방식 설명
  5. 요구사항 추적성 매트릭스(Traceability Matrix)
    • 각 요구사항이 개발 및 테스트 단계에서 어떻게 검증될지를 추적

요구사항 명세서가 명확하게 정의되지 않으면 프로젝트 진행 중 변경 요청이 증가하여 개발 비용과 일정이 증가할 수 있습니다.


4. 요구사항 분석 단계에서의 검증 기법(Verification Techniques)

요구사항 분석 단계에서는 요구사항의 일관성과 명확성을 보장하기 위해 검증(Verification) 기법을 활용합니다.

📌 주요 요구사항 검증 기법

검증 기법 설명  사용 사례
요구사항 검토(Requirement Review) 전문가들이 모여 요구사항이 명확하고 모순이 없는지 검토 프로젝트 초기 단계에서 문서 검토
프로토타이핑(Prototyping) 초기 요구사항을 시각적으로 표현하여 사용자 피드백을 받음 UI/UX 설계 및 인터페이스 확인
모델링(Modeling) UML 다이어그램 등을 활용하여 요구사항을 구조적으로 표현 복잡한 시스템 아키텍처 설계 시 활용
요구사항 추적성 분석(Traceability Analysis) 각 요구사항이 개발 및 테스트 과정에서 어떻게 반영될지를 분석 테스트 계획 수립 시 활용

요구사항 검증을 통해 명확하지 않은 요구사항을 사전에 정리하여 개발 중 발생할 수 있는 리스크를 최소화할 수 있습니다.


🛠 실습: 예제 프로젝트의 요구사항 정의 및 명세서 작성

📌 실습 목표

  • 프로젝트 요구사항을 정의하고, 이를 명확하게 문서화한다.
  • 기능적 요구사항과 비기능적 요구사항을 구분하여 작성한다.
  • 요구사항 검토 및 모델링 기법을 활용하여 검증한다.

📌 실습 과제

  1. 온라인 쇼핑몰 시스템 요구사항 정의하기
    • 사용자 요구사항과 시스템 요구사항 구분
    • 기능적 요구사항과 비기능적 요구사항 작성
    • 요구사항 명세서(SRS) 템플릿을 활용하여 문서화
  2. 요구사항 검토 미팅 진행
    • 팀원들과 요구사항 문서를 검토하고 피드백 반영
    • 요구사항 모델링(UML 다이어그램) 적용

이 실습을 통해 요구사항 분석의 중요성을 이해하고, 실제 프로젝트에서 요구사항을 정의하는 방법을 익힐 수 있습니다.


✅ 결론

요구사항 분석 단계는 소프트웨어 개발의 시작점이며, 프로젝트의 성공을 결정하는 핵심 요소입니다.
기능적/비기능적 요구사항을 정확히 정의하고 검증해야 개발 후반부에서의 오류를 줄일 수 있습니다.
체계적인 요구사항 명세서 작성을 통해 개발, 테스트, 유지보수 단계에서 일관된 기준을 유지할 수 있습니다. 🚀