소프트웨어 요구사항

**소프트웨어 요구사항**(Software requirements)은 시스템이 무엇을 해야 하는지, 시스템이 제공하는 서비스 또는 서비스 및 운영 제약 조건에 대한 설명이다. IEEE 소프트웨어 공학 용어 표준 용어집은 요구사항을 다음과 같이 정의한다.
# 문제를 해결하거나 목표를 달성하기 위해 사용자가 필요로 하는 조건 또는 기능
# 계약, 표준, 사양 또는 기타 공식적으로 부과된 문서를 충족하기 위해 시스템 또는 시스템 구성 요소가 충족하거나 소유해야 하는 조건 또는 기능
# 1 또는 2와 같이 조건 또는 기능의 문서화된 표현

소프트웨어 요구사항 작업과 관련된 활동은 크게 도출, 분석, 명세화 및 관리로 나눌 수 있다.

소프트웨어 요구사항이라는 용어는 특정 소프트웨어를 빌드/설치/사용하기 위해 소프트웨어 패키지에 따라 필요한 소프트웨어 릴리스 노트를 설명하는 데 추가로 사용된다.

## 도출

도출은 이해관계자 및 기타 소스로부터 요구사항을 수집하고 발견하는 것이다. 결합 응용 설계(JAD) 세션, 인터뷰, 문서 분석, 포커스 그룹 등 다양한 기술을 사용할 수 있다. 도출은 요구사항 개발의 첫 번째 단계이다.

## 분석

분석은 도출에서 진행되는 논리적 세분화이다. 분석은 각 요구사항에 대한 더 풍부하고 정확한 이해에 도달하고 여러 보완적인 방식으로 요구사항 집합을 표현하는 것을 포함한다.

요구사항 분류 또는 요구사항 우선순위 지정은 종종 분석을 따르는 또 다른 활동이다. 이는 계획 단계에서 애자일 소프트웨어 개발과 관련이 있으며, 예를 들어 플래닝 포커를 통해 이루어지지만, 프로젝트 및 요구사항 또는 구축 중인 제품/서비스의 맥락과 성격에 따라 다를 수 있다.

## 명세화

명세화는 수집된 요구사항 지식을 효과적인 의사소통 및 변경 관리를 용이하게 하는 지속적이고 잘 정리된 방식으로 표현하고 저장하는 것을 포함한다. 유스 케이스, 유저 스토리, 기능 요구사항 및 시각적 분석 모델은 요구사항 명세화를 위한 인기 있는 선택이다.

## 유효성 검사
유효성 검사는 프로젝트의 비즈니스 목표를 충족하는 솔루션을 구축하기 위해 올바른 요구사항 집합이 명세화되었는지 확인하는 기술을 포함한다.

## 관리

요구사항은 프로젝트 중에 변경되며 종종 많은 요구사항이 존재한다. 이러한 변경 관리는 이해관계자를 위해 올바른 소프트웨어가 구축되도록 보장하는 데 가장 중요하다.

## 요구공학을 위한 도구 지원

### 요구사항 도출, 분석 및 유효성 검사를 위한 도구
이러한 활동에는 관찰 보고서(사용자 관측), 설문지(인터뷰, 설문조사 및 투표), 유스 케이스, 유저 스토리와 같은 아티팩트가 포함될 수 있으며, 요구사항 워크숍(샤레트), 브레인스토밍, 마인드맵, 역할연기와 같은 활동, 심지어 프로토타이핑까지 포함될 수 있다는 점을 고려할 때, 이러한 기능 중 일부 또는 전부를 제공하는 소프트웨어 제품을 사용하여 이러한 작업을 수행하는 데 도움을 받을 수 있다.

프리마인드와 같은 마인드맵 도구와 Concordion과 같은 specification by example 도구의 사용을 명시적으로 옹호하는 저자가 적어도 한 명 있다.
또한 이러한 활동으로 인해 발생하는 아이디어 및 진술은 위키 및 트렐로와 같은 기타 협업 도구로 수집 및 정리될 수 있다. 실제로 구현되는 기능 및 표준 준수는 제품마다 다르다.

### 요구사항 명세화를 위한 도구

소프트웨어 요구 명세(SRS) 문서는 워드 프로세서와 같은 범용 소프트웨어 또는 여러 특수 도구 중 하나를 사용하여 생성될 수 있다. 이러한 도구 중 일부는 SRS 문서를 가져오고, 편집하고, 내보내고, 게시할 수 있다. ISO/IEC/IEEE 29148:2018과 같은 표준화된 구조 및 방법론을 따르면서 SRS 문서를 작성하는 데 도움이 될 수 있다. 마찬가지로 소프트웨어는 요구사항을 가져오거나 내보내는 데 일부 표준(ReqIF 등)을 사용하거나 이러한 교환을 전혀 허용하지 않을 수 있다.

### 요구사항 문서 검증을 위한 도구
이러한 종류의 도구는 예상되는 구조 또는 표준에 따라 요구사항 문서에 오류가 있는지 확인한다.

### 요구사항 비교를 위한 도구
이러한 종류의 도구는 예상되는 문서 구조 및 표준에 따라 두 가지 요구사항 집합을 비교한다.

### 요구사항 병합 및 업데이트를 위한 도구
이러한 종류의 도구는 요구사항 문서를 병합하고 업데이트할 수 있도록 한다.

### 요구사항 추적성을 위한 도구
이러한 종류의 도구는 모델 및 소스 코드와 같은 다른 아티팩트로 요구사항을 추적하거나(전방 추적성), 비즈니스 규칙 및 제약 조건과 같은 이전 아티팩트로 추적할 수 있다(후방 추적성).

### 모델 기반 소프트웨어 또는 시스템 요구사항 엔지니어링을 위한 도구
모델 기반 시스템 엔지니어링(MBSE)은 개념 설계 단계부터 개발 및 이후 라이프사이클 단계에 걸쳐 시스템 요구사항, 설계, 분석, 검증 및 유효성 검사 활동을 지원하기 위한 모델링의 공식적인 적용이다.
요구공학의 일부 단계에 대해 모델 기반 접근 방식을 취하고 다른 단계에 대해서는 보다 전통적인 접근 방식을 취하는 것도 가능하다. 매우 많은 조합이 가능할 수 있다.

형식성 및 복잡성의 수준은 관련된 기본 방법론에 따라 달라진다(예를 들어, i*는 SysML보다 훨씬 더 형식적이며, UML보다도 더 형식적이다).

### 일반 요구공학을 위한 도구
이 범주의 도구는 이전에 언급된 기능 및 요구사항 구성 관리 및 협업과 같은 기타 기능을 혼합하여 제공할 수 있다. 실제로 구현되는 기능 및 표준 준수는 제품마다 다르다.

다른 단계 및 활동을 지원하는 더 강력하거나 일반적인 도구도 있다. 이러한 도구는 ALM 도구로 분류된다.

## 같이 보기
* 요구사항
* 요구공학
* 소프트웨어 요구 명세(SRS)
* 비기능 요건
* 소프트웨어 성능 테스트에서 다루는 성능 요구사항
* 안전 요구사항
* 보안 요구사항

## 각주

## 추가 자료
*
*
*
*Burek, Paul (2008). Creating clear project requirements differentiating "what" from "how". Conference Paper. Requirements Management, Business Analysis, Scope Management.
*Koopman, Philip (2020). Embedded Software Requirements . Fall Lectures.
*IEEE Xplore Search. "Software Requirements".

분류:소프트웨어 공학
분류:소프트웨어 요구사항