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) 주요 구성 요소
- 개요(Introduction)
- 프로젝트의 목적과 범위 설명
- 이해관계자(Stakeholders) 목록
- 시스템의 주요 기능 요약
- 기능 요구사항(Functional Requirements)
- 각 기능에 대한 상세 설명
- 데이터 흐름 및 처리 로직
- 비기능 요구사항(Non-Functional Requirements)
- 성능, 보안, 확장성, 신뢰성 요구사항 정의
- 시스템 인터페이스(System Interfaces)
- API, 데이터베이스, 외부 시스템과의 연동 방식 설명
- 요구사항 추적성 매트릭스(Traceability Matrix)
- 각 요구사항이 개발 및 테스트 단계에서 어떻게 검증될지를 추적
✔ 요구사항 명세서가 명확하게 정의되지 않으면 프로젝트 진행 중 변경 요청이 증가하여 개발 비용과 일정이 증가할 수 있습니다.
4. 요구사항 분석 단계에서의 검증 기법(Verification Techniques)
요구사항 분석 단계에서는 요구사항의 일관성과 명확성을 보장하기 위해 검증(Verification) 기법을 활용합니다.
📌 주요 요구사항 검증 기법
검증 기법 | 설명 | 사용 사례 |
요구사항 검토(Requirement Review) | 전문가들이 모여 요구사항이 명확하고 모순이 없는지 검토 | 프로젝트 초기 단계에서 문서 검토 |
프로토타이핑(Prototyping) | 초기 요구사항을 시각적으로 표현하여 사용자 피드백을 받음 | UI/UX 설계 및 인터페이스 확인 |
모델링(Modeling) | UML 다이어그램 등을 활용하여 요구사항을 구조적으로 표현 | 복잡한 시스템 아키텍처 설계 시 활용 |
요구사항 추적성 분석(Traceability Analysis) | 각 요구사항이 개발 및 테스트 과정에서 어떻게 반영될지를 분석 | 테스트 계획 수립 시 활용 |
✔ 요구사항 검증을 통해 명확하지 않은 요구사항을 사전에 정리하여 개발 중 발생할 수 있는 리스크를 최소화할 수 있습니다.
🛠 실습: 예제 프로젝트의 요구사항 정의 및 명세서 작성
📌 실습 목표
- 프로젝트 요구사항을 정의하고, 이를 명확하게 문서화한다.
- 기능적 요구사항과 비기능적 요구사항을 구분하여 작성한다.
- 요구사항 검토 및 모델링 기법을 활용하여 검증한다.
📌 실습 과제
- 온라인 쇼핑몰 시스템 요구사항 정의하기
- 사용자 요구사항과 시스템 요구사항 구분
- 기능적 요구사항과 비기능적 요구사항 작성
- 요구사항 명세서(SRS) 템플릿을 활용하여 문서화
- 요구사항 검토 미팅 진행
- 팀원들과 요구사항 문서를 검토하고 피드백 반영
- 요구사항 모델링(UML 다이어그램) 적용
✔ 이 실습을 통해 요구사항 분석의 중요성을 이해하고, 실제 프로젝트에서 요구사항을 정의하는 방법을 익힐 수 있습니다.
✅ 결론
✔ 요구사항 분석 단계는 소프트웨어 개발의 시작점이며, 프로젝트의 성공을 결정하는 핵심 요소입니다.
✔ 기능적/비기능적 요구사항을 정확히 정의하고 검증해야 개발 후반부에서의 오류를 줄일 수 있습니다.
✔ 체계적인 요구사항 명세서 작성을 통해 개발, 테스트, 유지보수 단계에서 일관된 기준을 유지할 수 있습니다. 🚀