더북(TheBook)

2.1.2 비기능 요구사항이란?

소프트웨어 공학에서는 요구사항을 크게 두 가지로 나눕니다. 기능 요구사항과 비기능 요구사항입니다.

기능 요구사항은 시스템이 무엇을 해야 하는가를 정의합니다. ‘사용자가 로그인할 수 있어야 한다’, ‘상품을 장바구니에 담을 수 있어야 한다’, ‘결제가 완료되면 주문 내역을 저장해야 한다’ 이런 것들이 기능 요구사항입니다. 눈에 보이고, 테스트하기 쉽고, 된다/안 된다로 명확하게 판단할 수 있습니다.

비기능 요구사항은 시스템이 어떻게 동작해야 하는가를 규정합니다. ‘로그인 응답 시간이 2초를 넘으면 안 된다’, ‘동시 접속자를 1만 명까지 처리할 수 있어야 한다’, ‘서버가 한 대 죽더라도 서비스는 유지되어야 한다’ 이런 것들이 비기능 요구사항입니다. 기능이 동작하는 것만으로는 부족하고, 어떤 조건에서 어떻게 구현되어야 하는지를 정의하는 겁니다. 기능은 결과를 말하고, 비기능은 조건과 품질을 말합니다. 사소한 차이일 수 있지만, 실제 시스템에서는 이 두 요구사항이 전혀 다른 의미를 가집니다. 기능 요구사항은 코드로 바로 확인할 수 있지만, 비기능 요구사항은 특정 상황에 닥칠 때까지 드러나지 않기 때문입니다.