[전통적인 방법론] 폭포수(Waterfall) 모델 - 2. 1단계 – 요구사항 분석 (Requirement Analysis) (1. 요구사항 분석 개요)

2025. 3. 12. 15:39개발/개발 방법론

📌 요구사항 분석 개요

요구사항 분석(Requirement Analysis)은 소프트웨어 개발의 첫 번째 단계이자 가장 중요한 과정 중 하나입니다.
이 단계에서 프로젝트의 목표와 기능을 명확히 정의하고, 고객 및 이해관계자의 기대를 반영하여 개발 방향을 결정합니다.

이 문서에서는 요구사항 분석의 중요성, 고객 및 이해관계자와의 커뮤니케이션 방법, 기능적 요구사항과 비기능적 요구사항의 차이점을 상세히 정리하겠습니다.


1️⃣ 요구사항 분석 개요 및 중요성

🔹 요구사항 분석이란?

요구사항 분석은 소프트웨어가 어떤 기능을 수행해야 하는지 정의하는 과정입니다.
이 단계에서 프로젝트의 목표를 설정하고, 사용자의 요구를 수집하여 문서화합니다.

📌 주요 목표
✅ 프로젝트의 기능과 성능 목표를 명확하게 정의
✅ 고객 및 이해관계자의 기대를 반영
✅ 개발 중 발생할 수 있는 요구사항 변경을 최소화
✅ 개발자, 디자이너, 테스터 등 모든 팀원에게 명확한 기준 제공


🔹 요구사항 분석의 중요성

요구사항 분석이 제대로 이루어지지 않으면 프로젝트 진행 중 추가적인 변경 요청이 많아지고, 개발 비용과 일정이 증가할 수 있습니다.

📌 요구사항 분석이 중요한 이유
프로젝트 실패 방지: 잘못된 요구사항으로 인한 개발 오류 및 일정 지연 방지
비용 절감: 요구사항이 명확하면 개발 중 재작업(Redoing)이 줄어들어 비용 절감 가능
품질 향상: 명확한 요구사항을 기반으로 하면 최종 제품의 품질이 향상됨
고객 만족도 증가: 고객이 원하는 기능과 성능을 정확히 반영할 수 있음

💡 예제
A 기업에서 전자상거래 웹사이트를 개발한다고 가정하자.
고객이 원한 것은 "빠른 결제 시스템"이었지만, 개발팀이 이를 명확히 정의하지 않고 개발을 진행했다.
결과적으로 결제 속도가 느려지고, 사용자가 불편을 겪게 되며, 후반부에 개선하려고 할 때 추가 비용이 발생했다.
→ 초기에 요구사항을 명확히 분석했다면 이런 문제를 예방할 수 있음.


2️⃣ 고객 및 이해관계자와의 커뮤니케이션 방법

🔹 이해관계자(Stakeholders)란?

이해관계자는 프로젝트의 결과에 영향을 받거나, 프로젝트에 영향을 미치는 모든 사람 및 조직을 의미합니다.

📌 주요 이해관계자 유형

이해관계자  역할 및 중요성
고객 (Client) 최종 사용자로, 원하는 기능과 요구사항을 제시
경영진 (Executives) 프로젝트 투자 및 승인
개발팀 (Developers) 요구사항을 기반으로 기능을 개발
QA 및 테스터 (Testers) 요구사항을 검증하고 품질 보장
법률 및 규제 담당자 프로젝트가 법적 요구사항을 준수하는지 검토

🔹 효과적인 커뮤니케이션 방법

요구사항을 정확히 이해하고 반영하기 위해서는 이해관계자와 원활한 커뮤니케이션이 필요합니다.

📌 커뮤니케이션 기법

기법  설명
인터뷰 (Interview) 주요 이해관계자와 개별적으로 대화하여 요구사항을 수집
워크숍 (Workshop) 여러 이해관계자가 함께 모여 요구사항을 논의
설문조사 (Survey) 다양한 사용자로부터 의견을 수집
사용 사례 분석 (Use Case Analysis) 실제 사용 시나리오를 기반으로 요구사항을 도출
프로토타이핑 (Prototyping) 초기 모델을 만들어 고객이 원하는 기능을 시각적으로 확인

💡 예제
한 스타트업이 사용자 친화적인 모바일 앱을 개발하려 한다고 가정하자.

  • 고객 인터뷰를 통해 어떤 기능이 필요한지 조사
  • 프로토타입을 만들어 사용자 테스트 진행
  • 이를 통해 UI/UX 개선과 주요 기능 추가

3️⃣ 기능적 요구사항 vs 비기능적 요구사항

🔹 기능적 요구사항 (Functional Requirements)

기능적 요구사항은 소프트웨어가 수행해야 하는 기능과 동작을 정의합니다.

📌 특징
✅ 사용자가 기대하는 기능을 설명
✅ 특정 입력에 대한 출력이 명확하게 정의됨
✅ 비즈니스 로직을 포함

📌 예시
로그인 기능: 사용자는 이메일과 비밀번호로 로그인할 수 있어야 한다.
검색 기능: 사용자는 제품 이름을 입력하여 검색할 수 있어야 한다.
결제 시스템: 사용자는 신용카드 또는 PayPal을 사용하여 결제할 수 있어야 한다.


🔹 비기능적 요구사항 (Non-Functional Requirements)

비기능적 요구사항은 소프트웨어의 품질 속성, 성능, 보안, 확장성 등을 정의합니다.

📌 특징
✅ 기능을 지원하는 운영적 측면을 설명
✅ 성능, 보안, 유지보수 등의 기준을 포함
✅ 사용자가 직접적으로 인식하지 못할 수도 있음

📌 예시
응답 시간: 웹페이지 로딩 속도는 2초 이내여야 한다.
보안: 사용자의 비밀번호는 암호화되어 저장되어야 한다.
확장성: 시스템은 초당 1,000명의 동시 사용자를 처리할 수 있어야 한다.


📌 기능적 요구사항 vs 비기능적 요구사항 비교

비교 항목 기능적 요구사항 비기능적 요구사항
정의 소프트웨어가 수행해야 할 기능 소프트웨어의 성능 및 운영적 특성
목적 사용자가 기대하는 동작을 정의 시스템의 품질과 효율성을 보장
예시 로그인, 검색 기능, 결제 기능 성능, 보안, 확장성, 유지보수성
테스트 기능 테스트 (Functional Testing) 성능 테스트, 보안 테스트

💡 예제
전자상거래 웹사이트를 개발한다고 가정하면,

  • 기능적 요구사항: 사용자는 제품을 검색하고 장바구니에 추가할 수 있어야 한다.
  • 비기능적 요구사항: 서버는 1초 이내에 검색 결과를 반환해야 한다.

📌 결론

📌 요구사항 분석은 소프트웨어 개발에서 가장 중요한 과정 중 하나로, 명확한 정의가 없으면 프로젝트의 실패 가능성이 높아짐.
📌 이해관계자와 효과적인 커뮤니케이션을 통해 정확한 요구사항을 수집해야 함.
📌 기능적 요구사항은 소프트웨어의 동작을, 비기능적 요구사항은 품질 속성을 정의함.
📌 초기 단계에서 요구사항을 철저히 분석하면 개발 비용과 오류를 줄일 수 있음. 🚀