요구사항의 개념 및 특징
소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 제약조건
- 개발이나 유지보수 과정의 기준과 근거 제공
- 개발하려는 소프트웨어의 전반적인 내용 확인
- 이해관계자들 간의 의사소통을 원활하게 하는 데 도움을 줌
- 요구사항을 토대로 이후 과정의 목표와 계획 수립
요구사항의 유형
기술하는 내용에 따라 기능 요구사항(Functional requirements)
과 비기능 요구사항(Non-functional requirements)
로 구분
기술 관점과 대상 범위에 따라 시스템 요구사항(System requirements)
과 사용자 요구사항(User requirements)
로 구분
기능 요구사항
Functional requirements
- 시스템이 무엇을 하는지, 어떤 기능을 하는지
- 입력이나 출력 값, 어떤 데이터를 저장하거나 연산해야 하는지
- 반드시 수행해야 하는 기능
- 사용자가 제공받기를 원하는 기능
비기능 요구사항
Non-functional requirements
- 시스템 장비 구성 요구사항
- 성능 요구사항
- 인터페이스 요구사항
: 프로토콜과의 연계도 포함
- 데이터 요구사항
- 테스트 요구사항
- 보안 요구사항
- 품질 요구사항
- 제약사항
: 사전에 파악된 기술, 표준, 업무, 법/제도 등의 제약조건
- 프로젝트 관리 요구사항
- 프로젝트 지원 요구사항
사용자 요구사항
User requirements
- 사용자 관점에서 본 요구사항
- 친숙한 표현으로 이해하기 쉽게 작성
시스템 요구사항
System requirements
- 개발자 관점에서 사용자와 다른 시스템에 제공해야 할 요구사항
- 전문적이고 기술적인 용어로 표현
- 소프트웨어 요구사항이라고도 함
요구사항 개발 프로세스
요구사항을 체계적으로 도출하고 분석한 후 분석 결과를 명세서(Specification Document)에 정리한 후 이를 확인 및 검증하는 활동
요구공학(Requirements Engineering)
요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문
- 요구사항 변경의 원인과 처리 방법 이해
- 관리 프로세스의 품질 개선
- 프로젝트 실패 최소화
요구공학⊃요구사항 관리⊃요구사항 개발
요구사항 도출(요구사항 수집)
시스템 개발에 관련된 사람들이 서로 의견을 교환하며 요구사항을 식별하고 이해하는 과정
- 소프트웨어가 해결해야 할 문제 이해
- 이해관계자(Stakeholder)가 식별됨
- 이해관계자 간의 효율적인 의사소통 중요
- 소프트웨어 개발 생명 주기(SDLC; Software Development Life Cycle) 동안 지속적으로 반복
- 청취와 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스
요구사항 분석
요구사항 중 이해되지 않는 부분을 걸러내기 위한 과정
- 타당성 조사
- 비용과 일정에 대한 제약 설정
- 서로 상충되는 요구사항이 있으면 중재
- 소프트웨어의 범위 파악
- 소프트웨어와 주변 환경이 상호 작용하는 방법 이해
- 자료 흐름도(DFD), 자료 사전(DD)
요구사항 명세
분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
- 기능 요구사항은 빠짐없이 완전하고 명확하게 기술
- 비기능 요구사항은 필요한 것만 명확하게 기술
- 사용자가 이해하기 쉽도록 작성
- 개발자가 효과적으로 설계할 수 있도록 작성
- 잘못된 부분은 요구사항 정의서에서 추적
- 소단위 명세서(Mini-Spec) 사용 가능
소프트웨어 요구사항 명세서
SRS; Software Requirement Specification
소프트웨어가 반드시 제공해야하는 기능, 특징, 제약조건 명시
- 모든 동작과 성능, 보안, 사용성 같은 품질도 기술
- 유형에 맞게 양식을 만들어 사용
- 시스템 기능, 데이터, 외부 인터페이스, 품질 요구사항은 단위별로 개별 요구사항 명세서 작성
요구사항 명세 기법
정형 명세 기법
: 수학적 원리 기반, 모델 기반
: 수학적 기호, 정형화된 표기법
: 정확하고 간결하게 표현
: 결과가 작성자에 관계없이 일관성이 있어 완전성 검증 가능
: 사용자가 이해하기 어려움
: VDM, Z, Petri-net, CSP
비정형 명세 기법
: 상태/기능/객체 중힘
: 명사, 동사 등 자연어를 기반으로 서술, 다이어그램 작성
: 작성자에 따라 결과가 다를 수 있어 일관성이 떨어지고, 해석이 달라질 수 있음
: 내용의 이해가 쉬워 의사소통이 용이함
: FSM, Decision Table, ER모델링, State Chart(SADT)
요구사항 확인(요구사항 검증)
개발 자원을 요구사항에 할당하기 전 명세서가 정확하고 완전하게 작성되었는지 검토
- 분석가가 정확하게 이해한 후 요구사항 명세서를 작성했는지 확인(Validation)
- 실제 요구를 반영하는지, 상충되는 요구사항은 없는지 점검
- 문제가 발견되면 재작업 비용 발생하므로 검증이 매우 중요
- 이해하기 쉬운지, 일관성은 있는지, 회사의 기준에는 맞는지, 누락된 기능은 없는지 검증(Verification)
- 이해관계자들이 검토
- 모든 문제를 확인할 수 있는 것은 아님
- 요구사항 정의 문서들에 대해 형상 관리 수행