본문 바로가기
소프트웨어공학

[소프트웨어공학] 5. Requirements Engineering (2)

by leziwn.cs 2023. 10. 6.
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 (자연어)

▶ 자연어의 단점

  • 명확성 부족
  • 요구사항 혼동
  • 요구사항 통합: 여러 다른 요구사항이 함께 표현될 수 있다.

System Requirements Specification - 자연어 예시

 

2) Structured Natural Language (구조화된 자연어)
  • 기능, 개체에 대한 설명
  • 입력, 입력의 출처에 대한 설명
  • 출력, 출력의 목적지에 대한 설명
  • 수행해야 하는 동작에 대한 설명
  • 사전 조건, 사후 조건
  • 기능으로 인한 부작용

System Requirement Specification - 구조적 자연어 예시

 

Tabular Specification (표)
  • 자연어를 보완하는데 사용한다.
  • 여러 가능한 대체 조치를 정의할 때 특히 유용하다.

예) 다양한 시나리오에 대한 인슐린 요구사항을 계산하는 방법