SRS의 정의
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는 종합설계도와 같고 프로젝트의 전체적인 그림을 제공함
비즈니스 관점에서의 개발 프로젝트 이해
- 기업에서 프로젝트가 어떻게 요구되고 기획되며 진행되는지를 이해하는 것이 중요
- 이해관계에 따라 형태가 변할 수는 있으나 상당수는 큰 틀을 유지함
1. 과업 발생
- 니즈가 발생하는 발주처에서 진행되어야 할 과업(프로젝트)이 그 집단의 니즈에 맞게 발생하게 됨
2. 사업자 선정 및 계약
- 사업자가 선정되면 발주처는 선정된 사업자에게 거래를 제안하고 여러번의 미팅을 거져 최족 계약을 진행하게 됨
- 이때 발주처는 선정된 사업장에 명확한 요구사항과 일정, 사업 비용 등을 명시할 필요가 있음
- 이러한 행위를 RFP(Request For Proposal, 제안 요청서)로 작성하여 문서화 함
- 제안 요청서는 개요와 구축 컨셉, 제안요청사항 정의, 제안서 작성가이드 정의의 내용을 포함함
- 이때 제안서란 수주할 사업자가 해당 내용을 바탕으로 이렇게 해결하겠다고 제안하는 행위의 전체를 의미
- 한 기업이 과업을 발주 했을 때 고객사에서 사업자 선정을 하고 계약을 맺거나 다른 방법으로 사업을 입찰하여 여러 경쟁사 중 한 사업자가 수주할 수도 있음
- 이 때 제안서를 통해 참여한 기업은 고객의 최종 선택을 받을 수 있음
3. 기획/분석
- 진행할 프로젝트의 계약을 포함한 전처리가 완료되면 프로젝트를 종괄하는 PM(Project Manager)은 프로젝트를 수행하기 위해 일함
- 흔히 PM을 항해사에 비유하며 사업 내용을 확인하고 그에 맞는 인력과 시간을 확보할 수 있음
- 인력, 시간, 돈을 고려하여 고객의 요구사항을 잘 고민하고 그 과정에서 고객과의 소통을 통해 탄생하는 문서가 SRS(Software requirements sepcification)임
4. 설계
- 설계 단계는 기획된 SRS의 목표에 따라 그에 맞는 구체적인 설계가 고려되는 과정
- 구체적인 설계를 하기위해서는 가이드가 필요함
- 따라서 개발자를 포함한 프로젝트 인원은 그들의 역할에 맞는 특정 내용을 정리하는 문서들을 통해 설계를 구체화함
- 정의서, 아키텍쳐 설계서, 클래스 정의서 등이 설계 문서의 일부임
- 이렇듯 구체화된 설계 구분을 통해 명확한 목표로 사용될 수 있는 설계 작업을 진행함
5. 구현
- 기획, 분석, 설계 과정을 거친 후 그 가이드에 맞게 개발 업무를 수행하는 과정
- 개발자는 올바르게 개발하고 있는지 알기 위해 개발된 최소의 단위(동작 단위)로 그 결과를 시험하고 그 결과를 기술하기도 함 → '단위 테스트'라고 많이 언급되고 있음
- 여러명이 모여서 하나의 프로젝트를 구성하고 있다는 것을 잊으면 안됨
6. 시험
- 올바르게 구현이 되었는지, 구현의 결과가 올바른 설계에 의한 것인지 면밀하게 검토할 필요가 있음
- 시험 단계에서는 '통합 시험'을 통해 온전히 하나의 서비스가 그 역할을 잘 수행하 수 있는지를 검사함
- 이 과정에서 서비스 오픈을 위해 사용자나 운영자 관점에서의 지침서(메뉴얼) 등을 작성하기도 함
7. 서비스 오픈
8. 유지 보수
- 프로젝트가 계약될 시점에 '유지보수'에 대한 항목을 보통 명시하며 기간은 경우에 따라 다름
- 유지보수는 과정도 사업비에 포함되는 항목임
개발 프로젝트 구분
* 솔루션 : 솔루션은 기업에서 개발한 제품을 말함. 카카오톡이나 배달의 민족 애플리케이션이 대표적임. 그 기업의 고유한 자산이자 매출의 원천이 됨 . 완벽하게 올바른 의미는 아니지만 현 시점에서 말하는 '솔루션 개발 회사'는 이렇듯 우리의 솔루션을 개발하는 회사을 의미함
* SI(System Intergration) : 시스템 구축을 의미. 사실 기존의 SI의 뜻은 요즘 사용되는 SI와는 의미가 조금 달랐음. 예전에는 기업의 전산 시스템을 구축할 때 자체적으로(외부의 힘을 빌리지 않고) 시스템을 구축했음. 하지만 시간이 흐르면서 시스템이 복잡해지고 더 높은 전문성을 요구함에 따라 특화된 기업과 계약을 맺고 진행하는 형태로 발전됨. SI라는 의미 자체는 시스템을 구푹하는 행위를 압축해서 표현함이 올바른 표현임
* SM(System Management) : 시스템 운영 및 유지보수를 의미함. 시스템 개발보다는 개발 완료되어 서비스되는 시스템을 관리하는 관리자로 운영에 맞춰진 형태를 뜻함. 예로 들면 대기업 금융 회사의 전산실 업무 담당 등이 있음
SRS의 구성
1. 소개
1.1 목적(Purpose)
이 문서에 요구사항이 명시되어 있는 제품 또는 애플리케이션을 설명한다. 이 SRS가 전체 시스템 중 일부에만 관련된 것이라면 그 부분 또는 하위시스켐을 설명한다.
1.2 문서 규칙(Document Convention)
텍스트 스타일, 하이라이트 또는 주석과 같은 모든 표준 또는 표기 규칙을 설명한다.
1.3 독자 대상과 읽는 방법(Intend Audience and Reading Suggestion)
SRS 가 대상으로 하고 있는 다양한 독자계층을 나열한다. SRS의 나머지 부분과, SRS가 조직되어 있는 방법을 설명하고, 각각의 독자 계층에 대하 가장 적합한 읽기 순서를 설명한다.
1.4 프로젝트 범위(Project Scope)
설명되고 있는 소프트웨어와 그 목적에 대해 간단하게 설명한다
1.5 참조(Refrerence)
이 SRS가 참조하고 있는 모든 문서 또는 다른 리소스를 나열하며, 가능한 경우에는 하이퍼링크도 포함시킨다
2. 전체 설명(Overall Description)
2.1 제품조망(Production Perspective)
제품의 구성과 유래를 설명한다. 제품이 확장되는 제품군의 다음 구성제품인지, 완성된 시스템의 다음 버전인지, 기존 애플리케이션을 대체하는 것인지, 완전히 새로운 제품인지를 설명한다.
2.2 제품 기능(Project Feature)
제품이 가지고 있는 주요 기능 또는 제품이 수행하는 중요한 기능을 나열한다. 요구사항의 주요 그룹과 그 그룹이 연결되어 있는 방법을 설명하는 최상위 플로우 다이어그램, 유스케이스 다이어그램, 클래스 다이어그램 등이 도움이 된다.
2.3 사용자 계층과 특징(User Classes and Characteristic)
이 제품을 사용할 것으로 예상되는 사용자 계층을 파악하고 그들의 특징을 설명한다.
2.4 운영 환경(Operation Environment)
하드웨어 플랫폼, 운영체계와 버전, 사용자, 서버와 데이터베이스의 지리적 위치 등과 같은 소프트웨어가 동작되는 환경을 설명한다. 시스템에 아무런 문제없이 연동해야 하는 다른 소프트웨어 컴포넌트 또는 애플리케이션을 나열한다
2.5 설계 및 구현 제약사항(Design and Implementation constraint)
개발자가 선택할 수 있는 사항을 제약하는 모든 요소와 제약 조건의 이유를 설명한다. 제약 조건은 다음과 같다.
- 반드시 사용하거나 피해야하는 기술, 툴, 프로그래밍 언어와 인터페이스
- 사용될 웹 브라우저의 유형과 버전과 같이 제품의 운영환경으로 인한 제약
- 필요한 개발 규칙 또는 표준(예를 들면 고객의 조직이 소프트웨어를 유지보수 할 예정이라면, 그 조직은 하청업체가 따라야하는 설계 표기법과 코딩 표준을 명시할 수 있다)
- 이전 제품과의 호환성
- 비즈니스 규칙에 따른 제약
- 메모리 또는 프로세스의 제약, 크기, 무게, 비용과 같은 하드웨어의 제약
- 기존 제품을 개선하는 경우 따라야 하는 기존 사용자 인터페이스 규칙
- XML와 같은 표준 데이터 교환 방식
2.6 사용자 문서(User Documentation)
소프트웨어와 함께 제공할 사용자 문서를 나열한다. 사용자 문서로는 사용자 메뉴얼, 온라인 도움말, 교재 등이 있으며 따라야 하는 문서 전달 형식, 표준 또는 툴이 있다면 그것들을 설명한다
2.7 가정과 종속관계(Assumptions and Dependencies)
가정이 잘못되거나 이것을 공유하지 않는다면 문제가 발생될 수 있기 때문에 어떤 가정은 프로젝트 위험으로 간주된다. 프로젝트가 통제할 수 없는 외부 요소에 어느 정도 종속되는지 또한 설명해야 한다.
3. 시스템 특징(System Feature)
3.1 시스템 특징
가. 설명과 우선 순위(Description and Priority)
기능에 대해 간단하게 설명하고 그것이 높은 우선순위인지 낮은 우선순위이지를 나타낸다. 우선 순위는 프로젝트 중에 변할 수 잇는 동적인 것으로, 요구사항 관리 툴을 사용한다면 요구사항 특성의 우선 순위를 정의한다.
나. 자극/응답 순서(Stimulus/Response Sequence)
입력 자극(사용자 행동, 외부 장비의 신호 또는 다른 자극)의 순서와 이 기능에 대한 동작을 정의하는 시스템 반응을 나열한다.
다. 기능 요구사항(Functional Requirement)
이 기능과 관련된 상세한 기능 요구사항을 항목으로 나열한다. 이것들은 사용자가 기능의 서비스를 수행하기 위해 또는 유스케이스를 수행하기 위해 사용하느 소프트웨어 기능들이다.
4. 외부 인터페이스 요구사항(External Interface Requirement)
4.1 사용자 인터페이스(User Interface)
- 시스템이 요구하는 각각의 사용자 인터페이스와 논리적인 특성을 설명한다. 따라야 할 GUI 표준 또는 제품 스타일 가이드에 대한 참조
- 폰트, 아이콘, 버튼 레이블, 이미지, 색상 체계, 필드탭 순서, 공통으로 사용되는 컨트롤 등에 대한 표준.
- 화면 레이아웃 또는 해상도 제약 조건
- 도움말 버튼과 같이 모든 화면에 나타나는 표준 버튼, 기능 또는 탐색 링크
- 단축키
- 메세지 표시 규칙
- 소프트웨어 번역을 원활하게 하는 레이아웃 표준
- 시각 장애자를 위한 기능
4.2 하드웨어 인터페이스(Hardware Interface)
시스템의 소프트웨어와 하드웨어 컴포넌트간의 모든 인터페이스 특징을 설명한다. 설명에는 지원되는 장비 유형, 소프트웨어와 하드웨어 간의 데이터 컨트롤 연동, 사용될 통신 프로토콜 등이 포함된다.
4.3 소프트웨어 인터페이스(Software Interface)
이 제품과 다른 소프트웨어 컴포넌트(데이터베이스, 운영체제, 툴, 라이브러리, 통합 상업용 컴포넌트) 간의 연결을 설명한다. 소프트웨어 컴포넌트 간에 교환되는 메시지, 데이터 컨트롤 항목을 설명한다
4.4 통신 인터페이스(Communication Interface)
이메일, 웹 브라우저, 네트워크 통신 프로토콜, 전자 문서와 같이 제품이 사용할 모든 통신 기능에 대한 요구 사항을 설명한다. 관련된 모든 메세지 형태를 정의하고 통신 보안 또는 암호화 문제, 데이터 전송률과 동기화 매커니즘을 명시한다.
5. 기능 이외의 다른 요구사항(Other Nonfunctional Reuirement)
5.1 성능 요구사항(Perfomance Requirement)
다양한 시스템 운영에 대한 특정 성능 요구사항을 설명한다. 개발자들이 적합한 설계를 선택할 수 있게 만든 논리를 설명하낟.
5.2 안전 요구사항(Safety Requirement)
반드시 방지해야 하는 잠재적인 위험한 행동 뿐만 아니라 반드시 취해야 할 모든 안전 장치 또는 행동을 정의한다.
5.3 보안 요구사항(Security Requirement)
제품에 대한 접속과 제품사용에 영향을 미치는 보안, 무결성 또는 사생활 문제, 제품이 사용하거나 만드는 데이터 보호를 모두 명시한다.
5.4 소프트웨어 품질 특성(Software Quality Attribute)
고객 또는 개발자에게 중요한 별도의 품질 특성을 설명한다. 이런 특성들은 명확하고 계량적이며 확인이 가능해야 한다.
6. 다른 요구사항(Other Requirement)
SRS의 다른 부분에서는 다루지 않는 모든 요구사항을 정의한다
'📚 기초 지식' 카테고리의 다른 글
화면 정의서 (0) | 2023.02.14 |
---|---|
사용자 요구사항 정의서 (0) | 2023.02.14 |
배포 Deployment (0) | 2023.02.02 |
배포 전략 (0) | 2023.02.02 |
[AWS] EC2, RDS, S3 (0) | 2023.02.02 |