요구사항(Requirement)이란?
시스템이 무엇을 해야 할지에 대해서 서술한 것 그러므로 당연히 소비자의 니즈(needs)가 반영된다
이러한, 니즈와 제약에 대해서 찾아내고, 분석하고, 문서화 그리고 검토하는 것을 요구 공학이라고 부른다
요구 사항은 고급언어(*사람이 이해할 수 있는)로 적히고 , 시스템이 제공해야 하는 서비스와
(서비스, 개발, 운영) 시스템의 제약이라고 할 수 있다
1. 사용자 요구(User Requirement Definition):
시스템의 제약과 서비스를 표현하기 위해 자연어와 다이어그램으로 나타내어진다
2. 시스템 요구(System Requirements Specification):
소프트웨어 시스템의 기능, 서비스 그리고 운영상의 제약보다 상세하게 적힌다
무엇을 구현할지에 대해 상세하게 설명
기능적 & 비기능적 요구사항
소프트웨어 시스템은 일반적으로 기능적 혹은 비기능적 요구사항으로 분류된다
기능적 요구사항 :
시스템이 제공해야 하는 서비스의 서술문
어떻게 서비스가 특정 환경에서 반응하고 대응하는지
사용자 요구사항으로 표현될 때 기능 요구사항은 일반적으로 시스템 사용자가 이해할 수 있는 추상적 방식으로 설명된다
시스템 기능에서 인풋(input)과 아웃풋(output), 익셉션(exception) 같은 것이다
기능적 요구사항의 명세
1. 요구사항의 완전성 : 사용자의 의해 요구된 모든 서비스가 정의되어야 한다
2. 요구사항의 일관성 : 요구사항은 모순되는 정의가 있으면 안 된다
실제로는, 크고 복잡한 시스템에서, 완전성과 일관성을 이룬다는 것은 불가능하다
비기능적 요구사항 :
:시스템으로부터 제공되는 서비스나 기능의 제약사항
:개별적인 시스템 특징 혹은 서비스보다는 전체 시스템에 적용되곤 한다
:시스템이 사용자에게 제공하는 특정 서비스와 직접적으로 관련되지 않은 요구사항
:신뢰성 , 응답 시간 그리고 메모리 사용량 같은 시스템 속성과 관련된 제약
:퍼포먼스, 보안 혹은 이용 가능성(availability) 같은 시스템 구현과 관련된 제약
비기능적 요구사항 특징
: 비기능적 요구사항이 만족되지 않으면 기능적 요구사항보다 심각해질 수 있다
: 비기능적 요구사항은 특정 컴포넌트보다 시스템의 전체 아키텍처에 영향을 받는다
비기능적 요구사항의 분류
1. 제품 요구사항(Product Requirement) : 소프트웨어 실행시간 동작에 대한 제약 혹은 구체사항
ex) 성능 , 신뢰성, 보안, 사용성..
2. 조직 요구사항(Organization Requirement) : 고객과 개발자 조직 안의 정책과 절차로부터 오는 요구사항
ex) 운영 프로세스, 개발 프로세스, 개발환경, 프로세스 표준 , 운영환경...
3. 외부 요구사항(External Requirement) : 시스템과 개발 과정 외부 요소로부터 오는 광범위한 요구사항
ex) 규제, 법률, 윤리...
비기능적 요구사항의 척도(Testability)
: 비기능적 요구사항은 다른 기능적 혹은 비기능적 요구사항과 종종 충돌한다
: 요구사항 문서에서 기능적 그리고 비기능적 요구사항을 분류하는 것은 어렵다