What is a Requirement?
: 시스템이 수행해야 하는 작업 (시스템이 무엇을 해야 하는가?)
- 서비스, 제약사항에 대한 상위 수준의 추상적인 설명 ~ 세부적인 기능 사양에 이르기까지 다양하다.
Types of Requirements
: 요구사항을 작성 대상에 따라 구분한 것
- 사용자 요구사항: 고객을 위해 작성
- 시스템 요구사항: 시스템의 기능, 서비스, 운영 제약에 대해 보다 상세하게 설명한 구조화된 문서
Functinal and Non-functional Requirements
: 요구사항을 내용에 따라 구분한 것
- 기능 요구사항
: 시스템이 제공해야 하는 서비스, 특정 입력에 대해 시스템이 반응하는 방식, 특정 상황에 시스템이 동작하는 방식을 기술한 것 - 비기능 요구사항
- 도메인 요구사항
Functional Requirements
- 사용자 기능 요구사항: 사용자 요구사항 + 기능 요구사항
- 시스템 기능 요구사항: 시스템 요구사항 + 기능 요구사항
Requirements Completeness (완전성) and Consistency (일관성)
- 완전성: 사용자가 필요로 하는 모든 서비스, 정보가 포함되어야 한다.
- 일관성: 요구사항에 대한 설명에 충돌이나 모순이 없어야 한다.
Non-functional Requirements
: 시스템의 속성, 제약조건을 정의한다.
- 비기능 요구사항이 기능 요구사항보다 더 중요할 수 있다. 만약 비기능 요구사항이 충족되지 않으면, 시스템이 쓸모가 없을 수 있다.
Goals and Requirements
비기능 요구사항은 정확하게 기술하기 매우 어려울 수 있지만, 부정확한 비기능 요구사항은 검증하기 어렵다.
--> 검증 가능한 비기능 요구사항: 객관적으로 테스트할 수 있는 몇 가지 척도를 사용해서 요구사항을 작성해야 한다.
Metrics
Domain Requirements
: 시스템의 운영 도메인에서 얻게 되는 요구사항
- 도메인 요구사항이 충족되지 않으면, 시스템이 작동하지 않을 수 있다.
▶ 도메인 요구사항의 문제점:
- 요구사항이 애플리케이션 도메인의 언어로 표현되기 때문에, 이를 시스템을 개발하는 소프트웨어 개발자가 이해하지 못하는 경우가 있다.
- 도메인 전문가는 해당 영역을 너무 잘 이해하고 있기 때문에, 도메인 요구사항을 명시적으로 만들 생각을 하지 않는다.
The Software Requirements Document (소프트웨어 요구사항 문서)
: 시스템 개발자에게 요구되는 사항에 대한 공식 설명
- 사용자 요구사항의 정의, 시스템 요구사항의 사양을 모두 포함해야 한다.
- 설계 문서가 아니다. 가능한한 시스템이 수행해야 하는 방법(HOW)보다 시스템이 수행해야 하는 작업(WHAT)을 작성해야 한다.
Users of a Requirements Document (요구사항 문서의 사용자)
- 시스템 고객: 요구사항 문서를 통해, 요구사항이 자신들의 요구를 만족하는지 확인한다.
- 관리자: 요구사항 문서를 사용해서 시스템에 대한 입찰을 계획하고, 시스템 개발 프로세스 계획을 수립한다.
- 시스템 엔지니어 (개발자): 요구사항 문서를 통해, 어떠한 시스템을 개발해야 하는지 이해한다.
- 시스템 테스트 엔지니어: 요구사항을 이용해서 시스템에 대한 검증 테스트를 개발한다.
- 시스템 유지보수 엔지니어: 요구사항을 이용해서 시스템 및 부분과의 관계를 이해한다.
The Structure of Requirements Document
- 서문
- 개요
- 용어
- 사용자 요구사항 정의 -- 사용자에게 제공할 서비스를 기술한다.
- 시스템 아키텍처 -- 시스템 아키텍처에 대한 고수준의 개요를 보여준다.
- 시스템 요구사항 명세 -- 기능, 비기능 요구사항을 상세하게 기술한다.
- 시스템 모델 -- 시스템 컴포넌트 사이의 관계를 보여주는 그래픽 시스템 모델을 포함한다.
- 시스템 진화
- 부록
- 색인
Ways of Writing a System Requirements Specification
- 자연어
- 구조적 자연어: 표준 양식, 템플릿에 따라 자연어로 요구사항을 작성한다.
- 디자인 설명 언어: 프로그래밍 언어와 유사항 언어를 사용하지만, 시스템의 운영 모델을 저으이하여 요구사항을 저으이하기 위해 보다 추상적인 기능을 제공한다.
- 그래픽 표현: UML 유스케이스, 시퀀스 다이어그램
- 수학적 명세
1) Natural Language (자연어)
▶ 자연어의 단점
- 명확성 부족
- 요구사항 혼동
- 요구사항 통합: 여러 다른 요구사항이 함께 표현될 수 있다.
2) Structured Natural Language (구조화된 자연어)
- 기능, 개체에 대한 설명
- 입력, 입력의 출처에 대한 설명
- 출력, 출력의 목적지에 대한 설명
- 수행해야 하는 동작에 대한 설명
- 사전 조건, 사후 조건
- 기능으로 인한 부작용
Tabular Specification (표)
- 자연어를 보완하는데 사용한다.
- 여러 가능한 대체 조치를 정의할 때 특히 유용하다.
'소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] 7. Architectural Design (0) | 2023.10.15 |
---|---|
[소프트웨어공학] 6. Requirements Engineering Process (요구 공학 프로세스) (1) | 2023.10.06 |
[소프트웨어공학] 5. Requirements Engineering (1) (0) | 2023.09.27 |
[소프트웨어공학] 4. Software Processes (2) (0) | 2023.09.21 |
[소프트웨어공학] 4. Software Processes (1) (0) | 2023.09.21 |