📌요구사항 개요
📖요구사항이란
- 소프트웨어 시스템이 제공해야하는 기능들(what)
- 해당 시스템의 제약 사항들
📖중요성
- 프로젝트 실패의 중요 원인은 적당하지 않은 요구사항 때문
📖요구사항을 정하는 것의 어려움
- 요구사항 자체가 복잡
- 고객 스스로 무엇을 원하는지 명확하지 않다
- 이해당사자들(고객, 개발자)은 자신들만의 용어로 요구사항을 표현한다, 본인 분야의 용어를 모두 알거라고 착각한다
- 자주 변하는 요구사항
- 복수의 고객들간의 요구사항들 충돌
📖좋은 요구사항의 속성
- unambiguous : 모호하지 않다
- correct : 고객의 정말 원하는 것
- complete : 빠지는 요구사항이 있으면 안된다
- consistent : 요구사항간의 충돌, 상충하는 것이 있으면 안된다
- feasible : 기술적으로 구현 가능해야한다
- traceable : 각 요구사항들은 그에 맵핑되는 설계, 개발 코드, 테스트가 있어야한다
📖좋은 요구사항을 위해서는
- Requirement Engineering이 필요하다
📌Requirement Engineering
- 요구사항 공학
- 요구사항을 찾고, 분석하고, 문서화, 최종 점검하는 프로세스
📖요구사항의 유형
- user requirements
- 고객, 사용자들을 위한 요구사항 문서
- 기술적 용어 사용 금지
- system requirements
- 개발자를 위한 요구사항 문서
- 기능적 요구사항(what), 비기능적 요구사항(제약사항)
- 구체적이여야한다
📖기능적 요구사항, 비기능적 요구사항
- 기능적 요구사항 : 소프트웨어의 서비스, 기능, 사용자의 어떤 입력에 어떤 출력을 할 것인가
- 비기능적 요구사항
- Quality req : 서비스의 제약사항, 처리속도가 몇 ms이하, 퍼포먼스, 보안성 등
- system constraints : 디자인, 지원하는 OS, 설치 및 사용 방법 등
- external constraints : 법적 규제 등