A software requirements specification (SRS) is a document that describes what the software will do and how it will be expected to perform. It also describes the functionality the product needs to fullfill all stakeholders (business, user) needs.
SRS란
, 개발하고자 하는 소프트웨어(제품)가 무엇을 하는 것이고 어떻게 작동할지를 예상하는 문서의 집합이며, 제품이 모든 이해 관계자(비즈니스, 사용자)의 요구를 충족시키는데 필요한 기능을 설명한다.
SRS는 소프트웨어를 기획, 분석, 설계, 구현, 시험 하는데 있어 필요한 종합 설계도와 같다.
위에서 언급한 것처럼, SRS는 종합 설계도와 같으며, 프로젝트의 전체적인 그림을 제공한다.
어떤 분야든지 전체적인 그림을 그려보는 작업은 매우 중요하다.
개발에 관련된 모든 팀이 따라야 하는 항목들을 제공하기 때문이다.
SRS 작성 시에는 산출물 양식의 표를 이용하여 해당 항목에 기술하며 이해하기 쉽고 구체적인 언어표현을 사용해야 하며,
기능적 요구사항
과비기능 요구사항
을 별도의 표로 작성하는 것이 좋다.
SRS의 구성 방식은 회사마다 다르겠지만, 일반적으로는 다음과 같은 구성을 가진다.
목적 (Purpose)
제품 또는 애플리케이션을 설명
문서 규칙 (Document Convention)
텍스트 스타일, 하이라이트 또는 주석과 같은 모든 표준 또는 표기규칙을 설명
대상 독자와 읽는 방법 (Intend Audience and Reading Suggestion)
SRS가 대상으로 하고있는 다양한 독자계층을 나열. SRS가 조직되어 있는 방법을 설명하고, 각각의 독자 계층에 대해 적합한 읽기 순서를 설명
프로젝트 범위 (Project Scope)
설명되고 있는 소프트웨어와 그 목적에 대해 간단하게 설명한다.
제품 기능 (Project Feature)
제품이 가지고있는 주요기능 또는 제품이 수행하는 중요한 기능을 나열.
사용자 계층과 특징 (User Classes and Characteristic)
이 제품을 사용할 것으로 예상되는 사용자계층을 파악하고 그들의 특징을 설명
운영 환경 (Operation Environment)
하드웨어 플랫폼, 운영체제와 버전 등과 같은 소프트웨어가 동작되는 환경과 더불어 시스템이 문제없이 연동해야 하는 다른 소프트웨어 컴포넌트 또는 애플리케이션을 나열한다.
설계 및 구현 제약사항 (Design and Implementation constraint)
개발자가 선택할 수 있는 사항을 제약하는 모든 요소와 각 제약조건의 이유를 설명한다.
ex) 사용해야 하는 기술, 언어와 인터페이스, 또는 사용될 웹 브라우저의 버전과 같이 제품의 운영환경으로 인한 제약 등이 포함될 수 있다.
사용자 문서 (User Documentation)
소프트웨어와 함께 제공할 사용자 문서를 나열
설명과 우선순위 (Description and Priority)
기능에 대한 간단한 설명과 그것에 대한 우선순위를 나타낸다
기능 요구사항 (Functional Requirement)
기능과 관련된 상세한 기능 요구사항을 항목으로 나열
사용자 인터페이스 (User Interface)
화면 레이아웃 또는 해상도 제약 조건, 단축키와 같이 시스템이 요구하는 각각의 사용자 인터페이스와 논리적인 특징을 설명한다.
사용자 인터페이스 설계 상세 내용은 SRS가 아닌 별도의 사용자 인터페이스 명세에 문서로 정리한다.
하드웨어/소프트웨어 인터페이스 (Hardware/Software Interface)
성능 요구사항 (Performance Requirement)
다양한 시스템 운영에 대한 특정 성능 요구사항을 설명
보안 요구사항 (Security Requirement)
제품에 대한 접속과 사용에 영향을 미치는 보안, 무결성 문제, 제품이 사용하거나 만드는 데이터 보호를 모두 명시
소프트웨어 품질 특성 (Software Quality Attribute)
고객 또는 개발자에게 중요한 모든 별도의 품질 특성을 설명하며, 이러한 특성들은 명확하고 확인이 가능해야 한다.