요구공학
기술노트
🗣️ 요구공학 (Requirements Engineering)
요구공학은 소프트웨어 개발의 첫 단계로, 개발하고자 하는 시스템에 대한 이해관계자들의 요구사항을 체계적으로 도출, 분석, 명세, 검증, 관리하는 모든 활동과 프로세스를 의미합니다. "무엇을 개발할 것인가?"를 명확히 정의하는 과정입니다.
요구공학의 실패는 프로젝트 전체의 실패로 이어질 수 있는 매우 중요한 초기 단계입니다.
⚙️ 요구공학의 주요 프로세스
- 도출 (Elicitation) : 인터뷰, 설문조사, 워크숍 등 다양한 방법을 통해 고객과 이해관계자로부터 요구사항을 수집하고 이끌어내는 과정입니다.
- 분석 (Analysis) : 수집된 요구사항들의 타당성을 검토하고, 서로 충돌하거나 불명확한 부분을 해결하며, 우선순위를 정하는 과정입니다. 이 과정에서 요구사항을 모델링(UML 등)하기도 합니다.
- 명세 (Specification) : 분석된 요구사항을 체계적이고 명확한 형식의 문서(요구사항 명세서, SRS)로 작성하는 과정입니다. 개발자와 고객 모두가 동의할 수 있는 공식적인 문서가 됩니다.
- 검증 (Validation) : 작성된 요구사항 명세서가 사용자의 실제 요구를 정확하게 반영하고 있는지, 완전하고 일관성이 있는지를 검토하고 확인하는 과정입니다.
- 관리 (Management) : 개발 과정 중에 발생하는 요구사항의 변경을 추적하고, 통제하며, 관리하는 지속적인 활동입니다.
📚 요구사항의 종류
- 기능적 요구사항 (Functional Requirements) : 시스템이 '무엇을' 해야 하는가, 즉 시스템이 제공해야 할 구체적인 기능이나 동작에 대한 요구사항입니다. (예: "사용자는 로그인할 수 있어야 한다.")
- 비기능적 요구사항 (Non-functional Requirements) : 시스템이 '어떻게' 동작해야 하는가, 즉 성능, 보안, 사용성, 신뢰성 등 시스템의 품질과 제약 조건에 대한 요구사항입니다. (예: "로그인 처리는 3초 이내에 완료되어야 한다.")
💡 기술사 핵심 Point
- 성공적인 요구공학의 핵심은 이해관계자들과의 지속적인 의사소통입니다.
- 요구사항은 크게 기능적 요구사항과 비기능적 요구사항으로 나뉘며, 특히 비기능적 요구사항은 시스템의 품질을 결정하고 아키텍처 설계에 큰 영향을 미치므로 누락되지 않도록 주의해야 합니다.
- 요구사항 추적성 매트릭스(Requirements Traceability Matrix, RTM)는 각 요구사항이 설계, 코드, 테스트 케이스 등 개발 생명주기의 다른 산출물들과 어떻게 연결되는지를 추적하고 관리하는 중요한 도구입니다.
- 애자일 개발 방법론에서는 변화를 수용하기 위해, 초기에 모든 요구사항을 완벽하게 정의하기보다는 사용자 스토리(User Story)와 제품 백로그(Product Backlog)를 통해 요구사항을 점진적으로 구체화하고 발전시켜 나갑니다.