ISO/IEC/IEEE 29148:2018은 소프트웨어 요구사항 명세(software requirements specification, SRS)를 소프트웨어의 필수 요구사항(기능, 성능, 설계 제약, 속성)과 외부 인터페이스를 모아 구조화한 것으로 정의한다.[1] 표준 자체는 ISO/IEC/IEEE 29148에서 다룬다.
쓰임
ISO/IEC/IEEE 24765 용어집은 소프트웨어 요구사항 검증을, SRS가 아키텍처 설계의 기반으로 충분한지 등을 확인하는 과정으로 정의한다. 이 용어집은 테스트 케이스를 설계하고 구현하는 기준이 되는 정보를 테스트 기준으로 정의하고, 요구사항 명세가 그 한 형태일 수 있다고 둔다.[2]
SRS의 내용
IEEE 830-1998은 좋은 SRS의 내용과 품질을 기술하고 SRS의 목차 예를 여럿 제시했다. 이 권고 관행은 ISO/IEC/IEEE 29148:2011로 대체되었다.[3] ISO/IEC/IEEE 29148:2018은 SRS를 요구사항 프로세스가 만드는 정보 항목의 하나로 두고 그 내용을 정한다.[1]
명확성
ISO/IEC/IEEE 24765 용어집은 명확하다(unambiguous)를 필요하면 정의의 도움을 받아 한 가지로만 해석되게 서술된 것으로 정의한다.[2] 산출물 사이의 일관성은 추적성에서 다룬다.
표기의 정형도
ISO 26262-1:2018은 서술 기법을 문법과 의미가 얼마나 완전히 정의되었는지에 따라 비정형, 반정형, 정형 표기로 정의한다.[4]
- 비정형 표기(informal notation): 문법이 완전히 정의되지 않은 서술 기법이다. 문법 정의가 불완전하면 의미도 완전히 정의되지 않는다.
- 반정형 표기(semi-formal notation): 문법은 완전히 정의되었지만 의미의 정의는 불완전할 수 있는 서술 기법이다. 이 표준은 UML(Unified Modeling Language)을 예로 든다.
- 정형 표기(formal notation): 문법과 의미가 모두 완전히 정의된 서술 기법이다. 이 표준은 예로 Z 같은 명세 언어와 수식을 든다.[4]
SWEBOK V4.0a에 따르면 정형 명세 언어는 타입, 집합, 순서열, 논리 명제 같은 수학의 기본 개념에 기반한다. Z 같은 정형 모델링 언어는 의미가 매우 정밀하게 정의되어 명세를 기계로 분석할 수 있고, 요구사항 모델이 정형적일수록 덜 모호해 소프트웨어 엔지니어가 요구사항을 잘못 해석할 여지가 줄어든다.[5]
자연어 요구사항을 정해진 문장 틀로 가볍게 제약하는 방법은 EARS에서 다룬다.