1. 개요

고객 요구사항은 사용자가 직면한 문제를 해결하거나 특정한 목적을 달성하기 위해 필요로 하는 조건 또는 기능을 의미한다.[1] IEEE 표준 연구에 따르면, 이는 단순히 시스템이 수행해야 할 동작을 넘어 사용자가 문제를 풀기 위해 요구되는 구체적인 능력이나 상태를 포함하는 개념이다.[2] 소프트웨어 개발 프로세스에서 요구사항은 프로젝트의 전체적인 방향성을 설정하고 설계의 기초가 되는 핵심적인 메커니즘으로 작동한다.

비즈니스 운영 환경에서 기업은 운영에 영향을 미치는 다양한 문제점에 직면하며, 이를 해결하기 위한 솔루션을 찾는 과정이 필수적이다.[3] 이 과정에서 비즈니스 문제와 사용자 요구사항은 밀접하게 연결되어 있으며, 사용자가 실제로 필요로 하는 기능이 무엇인지 정확히 식별하는 것이 성공의 관건이다. 만약 요구사항이 불완전하거나 잘못 정의될 경우, 프로젝트 결과물에 부정적인 영향을 미치거나 해결하고자 했던 비즈니스 문제를 제대로 해소하지 못하는 심각한 결과를 초래할 수 있다.[1]

소프트웨어 공학적 관점에서 요구사항은 체계적인 관리를 위해 여러 범주로 분류된다. 주요 분류 방식으로는 시스템이 수행해야 하는 동작을 기술하는 기능적 요구사항, 시스템의 품질이나 제약 조건을 다루는 비기능적 요구사항, 그리고 특정 산업 분야의 지식을 바탕으로 하는 도메인 요구사항이 있다.[4] 이러한 분류 체계를 활용하면 복잡한 요구사항을 더욱 용이하게 관리하고, 우선순위를 설정하며, 개발 진행 상황을 효과적으로 추적할 수 있게 된다.

효율적인 시스템 구축을 위해서는 요구 공학(Requirements Engineering) 프로세스를 도입하여 요구사항을 정의하고 문서화하며 지속적으로 관리해야 한다. 요구 공학은 크게 요구사항을 구체화하고 기록하는 요구사항 개발 단계와, 생성된 요구사항을 통제하고 변경 사항을 반영하는 요구사항 관리 단계로 구성된다.[5] 요구사항이 명확하게 합의되지 않거나 우선순위가 제대로 설정되지 않을 경우 프로젝트의 불확실성이 증가할 위험이 있다. 따라서 지속적인 관찰과 체계적인 프로세스 적용을 통해 기술적 구현과 비즈니스 목표 사이의 간극을 줄이는 노력이 필요하다.

2. 비즈니스 문제 정의와 분석

비즈니스 문제를 결정하는 과정은 기업의 운영에 영향을 미치는 현안을 파악하고 해결책을 찾는 단계이다.[1] 기업은 운영 효율성이나 서비스 제공 방식에 있어 다양한 도전에 직면하며, 이러한 문제를 명확히 규정하는 것이 정보 시스템 구축의 출발점이 된다.[2] 비즈니스 문제는 단순히 기술적인 결함을 의미하는 것이 아니라, 조직이 달성하고자 하는 목적과 그 과정에서 발생하는 장애물을 포함한다. 이를 정확히 정의하지 못할 경우 프로젝트의 방향성이 상실될 위험이 있다.

문제 해결을 위해 사용되는 도구와 기법은 사용자 요구사항을 구체화하는 데 핵심적인 역할을 수행한다.[3] 요구사항을 정의하기 위해서는 다양한 분석 도구를 활용하여 현상을 진단하고, 이를 바탕으로 필요한 기능을 도출한다. 이 과정에서 파악된 데이터는 요구 공학의 핵심 요소로 작용하며, 단순한 아이디어를 구체적인 설계 지침으로 변환시킨다. 적절한 도구의 선택은 요구사항의 누락을 방지하고 분석의 객관성을 확보하는 데 기여한다.

비즈니스 문제와 사용자 요구사항 사이에는 긴밀한 연계성이 존재한다. 비즈니스 문제는 조직 차원의 거시적인 목표를 다루는 반면, 사용자 요구사항은 개별 사용자가 문제를 해결하기 위해 필요로 하는 구체적인 조건이나 능력을 의미한다.[4] 따라서 비즈니스 목적이 명확히 정의되어야만 이를 뒷받침할 수 있는 기능적, 비기능적 요구사항이 도출될 수 있다. 만약 비즈니스 문제에 대한 이해가 부족하다면, 사용자가 실제로 필요로 하는 서비스와 괴리된 결과물이 만들어질 가능성이 높다.

불완전하거나 잘못된 요구사항은 프로젝트 전체에 심각한 결과를 초래할 수 있다. 요구사항이 부정확하게 정의되면 소프트웨어 개발 단계에서 불필요한 수정 작업이 반복되거나, 최종 시스템이 비즈니스 목표를 달성하지 못하는 상황이 발생한다.[5] 이는 비용 상승과 일정 지연으로 이어지며, 조직의 자원을 낭비하게 만든다. 따라서 비즈니스 문제를 철저히 분석하고 이를 사용자 관점의 요구사항으로 정교하게 변환하는 과정은 프로젝트 성공을 위한 필수적인 절차이다.

3. 요구사항의 분류 및 유형

소프트웨어 공학 프로세스에서 요구사항을 체계적으로 분류하는 작업은 관리, 우선순위 설정, 추적 과정을 용이하게 만들기 위해 필수적이다.[3] 소프트웨어 요구사항은 크게 기능적 요구사항, 비기능적 요구사항, 그리고 도메인 요구사항의 세 가지 주요 유형으로 구분된다. 각 범주는 시스템이 수행해야 하는 구체적인 동작과 시스템이 갖추어야 할 품질 속성을 정의하며, 이를 통해 개발 팀은 프로젝트의 목표를 명확히 이해할 수 있다.[3]

기능적 요구사항은 사용자가 특정 문제를 해결하거나 목적을 달성하기 위해 시스템에 요청하는 구체적인 기능 및 동작을 의미한다. 이는 입력 데이터에 대한 시스템의 반응이나 작업 수행 결과와 같은 직접적인 서비스 내용을 포함한다. 반면, 비기능적 요구사항은 시스템이 제공하는 기능 자체보다는 시스템의 성능, 보안성, 신뢰성, 사용성 등 품질 특성과 제약 조건을 다룬다.[3] 이러한 분류를 통해 개발자는 시스템의 핵심 동작과 이를 뒷받침하는 운영 환경의 기준을 동시에 확보할 수 있다.

비즈니스 요구사항과 기술적 관점에서의 요구사항은 그 목적과 범위에서 차이를 보인다. 비즈니스 측면에서는 기업의 운영 효율성을 높이거나 서비스 제공 방식의 문제를 해결하기 위한 전략적 목표에 집중한다.[1] 이와 달리 기술적 요구사항은 이러한 비즈니스 목표를 달성하기 위해 필요한 구체적인 시스템 사양과 구현 가능한 기능을 정의하는 데 주력한다. 만약 사용자 요구사항이 불완전하거나 잘못 정의될 경우, 프로젝트 전체의 방향성이 어긋나거나 구축된 시스템이 실제 문제를 해결하지 못하는 결과가 초래될 수 있다.[1]

4. 요구 공학 프로세스

요구 공학은 사용자의 필요를 체계적으로 파악하고 이를 소프트웨어 공학의 설계 및 구현 단계로 전환하기 위한 일련의 절차를 의미한다. 이 프로세스의 핵심은 요구사항 수집과 분석 단계를 통해 비즈니스 문제를 명확히 규정하는 것이다. 기업이 운영 과정에서 직면한 도전 과제를 식별하고, 이를 해결하기 위해 필요한 구체적인 조건을 정의하는 작업이 포함된다.[1] 수집된 정보는 단순히 나열되는 것이 아니라, 사용자가 문제를 해결하거나 특정 목적을 달성하는 데 필요한 능력과 상태를 구체화하는 과정을 거친다.

분석 단계에서는 수집된 요구사항을 시각화하기 위해 다양한 다이어그램 도구를 활용한다. 기획 및 설계 과정에서 모델링 도구를 사용하면 복잡한 시스템의 구조와 흐름을 직관적으로 파악할 수 있으며, 이는 이해관계자 간의 의사소통을 원활하게 만든다. 특히 사용자 스토리를 작성하여 요구사항을 정의하면, 개발 팀은 구현해야 할 기능의 단위와 우선순위를 더욱 명확하게 인지할 수 있다.[2] 이러한 시각적 모델링과 서술적 기법은 요구사항이 누락되거나 잘못 정의되어 발생하는 잠재적인 위험을 방지하는 역할을 수행한다.

실무 환경에서 협업 미션을 수행할 때는 요구사항의 우선순위를 설정하고 합의된 상태를 유지하는 것이 중요하다. 잘 이해되고 우선순위가 지정된 요구사항 집합은 프로젝트의 성공을 결정짓는 필수 요소이다. 따라서 애자일 방법론 등을 적용하여 지속적으로 요구사항을 검토하고, 팀원 간의 합의를 통해 요구사항의 정확성을 확보하는 프로세스가 실무에서 강조된다.

5. 비즈니스 요구사항 문서(BRD)

비즈니스 요구사항 문서는 기업이 직면한 문제를 해결하기 위해 필요한 목적과 범위를 명확히 규정하는 공식적인 문서이다. 이 문서는 조직의 운영에 영향을 미치는 현안을 파악하고, 이를 해결하기 위한 구체적인 방향성을 제시하는 데 목적이 있다.[1] 비즈니스 요구사항은 단순히 기술적인 사양을 나열하는 것이 아니라, 기업이 달성하고자 하는 전략적 목표와 그 과정에서 발생하는 장애물을 정의하는 역할을 수행한다. 따라서 BRD는 프로젝트의 성공을 결정짓는 핵심적인 기초 자료로 활용된다.

효과적인 BRD를 구성하기 위해서는 프로젝트의 성격에 부합하는 필수 요소들이 포함되어야 한다. 우선 해결해야 할 비즈니스 문제가 무엇인지 명확히 정의해야 하며, 이를 통해 도출된 요구사항은 관리와 추적이 용이하도록 체계적으로 정리되어야 한다.[2] 또한, 요구사항의 중요도에 따라 우선순위를 설정하는 과정이 반드시 필요하다. 잘 이해되고 합의된 요구사항 집합을 구축하는 것은 프로젝트의 방향성을 유지하고 자원을 효율적으로 배분하는 데 필수적이다.

문서 작성 시에는 일관된 형식을 유지하기 위해 템플릿을 활용하는 것이 권장된다. 표준화된 템플릿은 요구사항을 분류하고 관리하는 과정을 용이하게 만들며, 이해관계자 간의 의사소통 오류를 줄이는 데 기여한다. 따라서 소프트웨어 공학적 관점에서 요구사항을 정확하게 식별하고 문서화하는 작업은 시스템 설계 및 구현 단계로 전환하기 위한 핵심적인 절차이다.

6. 요구사항 수집 및 검증 방법

사용자 요구사항을 정확하게 파악하기 위해서는 다양한 도구와 기술을 활용한 전략적 접근이 필요하다. 기업은 운영 과정에서 발생하는 문제를 해결하기 위해 사용자 요구사항을 정의하며, 이 과정에서 적절한 기법을 선택하여 정보의 누락을 방지해야 한다.[1] 만약 요구사항이 불완전하거나 잘못된 상태로 수집될 경우, 이는 프로젝트 전체의 실패나 비용 상승과 같은 부정적인 결과로 이어질 수 있다. 따라서 비즈니스 문제를 명확히 규정하고 이를 바탕으로 구체적인 요구 조건을 도출하는 과정이 필수적이다.

수집된 요구사항은 단순히 나열되는 것에 그치지 않고, 우선순위가 설정되며 이해관계자들 사이에서 합의된 상태여야 한다.[2] 애자일 방식과 같은 현대적인 개발 방법론에서는 사용자 스토리를 활용하여 요구사항을 구체화하기도 한다. 또한, 시스템이 특정 산업 분야나 환경에서 작동하기 위해 반드시 충족해야 하는 도메인 요구사항을 식별하는 것도 중요하다. 이러한 요구사항은 소프트웨어 공학의 관점에서 관리, 우선순위 설정, 추적 과정을 거치며 체계적으로 조직화된다.

검증 단계에서는 수집된 정보가 사용자의 실제 의도를 반영하고 있는지 확인하는 절차를 수행한다. IEEE 표준 연구에 따르면 요구사항은 사용자가 문제를 해결하기 위해 필요로 하는 조건이나 능력을 의미하므로, 이 정의가 기술적 사양과 일치하는지 검토해야 한다.[3] 수집된 데이터가 기능적 요구사항비기능적 요구사항의 기준을 충족하는지 확인하며, 이를 통해 시장에서의 성공 가능성을 높이고 법적·규제적 준수 사항을 놓치지 않도록 관리한다.

7. 같이 보기

  • 소프트웨어 요구사항 분류
  • 기능적 요구사항
  • 비기능적 요구사항
  • 사용자 스토리
  • 애자일 방법론
  • 요구사항 관리 도구

[1] Oopenstax.org(새 탭에서 열림)

[2] Wwww.agilebusiness.org(새 탭에서 열림)

[3] Wwww.geeksforgeeks.org(새 탭에서 열림)

[4] Aamaran-th.github.io(새 탭에서 열림) 설계/요구 공학 프로세스/

[5] Aasana.com(새 탭에서 열림)