본문 바로가기
정보과학/소프트웨어공학특론

소프트웨어 요구사항

by J1소프트 2023. 11. 25.
728x90

개요 
1) 요구 공학(Requirements Engineering)이란?
고객이 시스템으로부터 요구하는 “서비스(Services)”와 시스템이 동작하거나 개발되는 과정에 발생하는 "제약사항(Constraints)"을 구하는 과정이다.

2) 요구사항(Requirements)이란?
요구 공학을 통해 생성된 “서비스”와 “제약사항”에 대한 기술 그 자체를 의미하며, 추상화 수준의 서비스에 대한 설명부터 상세한 수학적 기능 명세에 이르기까지 범위가 다양하다.

3) 요구사항의 종류
① 사용자 요구사항(User Requirements)
시스템이 제공하는 서비스나 조작에 대한 제약사항을 자연어(natural language)나 다이어그램(diagram)으로 기술한 것으로 주로 고객을 위해 작성된다.

 

② 시스템 요구사항(System Requirements)
자세한 서비스, 제약사항이며 기능 명세(Functional specification)이라고도 불리는 시스템, 요구사항 문서(system requirements document)는 내용이 정확해야 한다.

 

③ 소프트웨어 명세(Software Specification)
소프트웨어 설계나 구현 단계를 위한 기초 정보가 상세히 기술되어 있는 것으로 주로 개발자를 위해 작성된다.

 

[그림 5.1] 사용자 요구사항 문서/시스템 요구사항 명세

 

[그림 5.2] 명세의 종류에 따른 관련 담당자들


□  다양한 계층의 담당자들을 위해 다양한 수준의 시스템 명세가 필요하다.
 

1. 1 장 기능적/비기능적 요구사항

1) 소프트웨어 시스템 요구사항
① 기능적 요구사항(Functional requirements)
- 시스템이 제공해야 하는 서비스(services)에 대한 기술
- 특정 입력(input)에 대해 시스템이 어떻게(how) 반응해야 하는지에 대한 기술
- 특정 상황에 대해 시스템에 어떻게 동작(behavior)해야 하는지에 대한 기술
※ 시스템이 하지 말아야 할 것(what the system should not do)에 대해 기술하는 경우도 있다.

② 비기능적 요구사항(Non-functional requirements)
- 시스템에 의해 제공되는 서비스나 기능에 대한 제약사항(constraints)
- 시간, 개발 프로세스, 표준 등에 대한 제약


③ 도메인 요구사항(Domain requirements)
- 응용 도메인(application domain)으로 부터 생기는 요구사항으로 특정 도메인의 특성이 반영된다. 이 요구사항 역시 기능적이거나 비기능적이다.

2) 기능적 요구사항(Functional requirements)
① 제공하는 기능(functionality)과 시스템 서비스(system services)
② 소프트웨어 종류(type of software), 예상되는 사용자(expected users), 소프트웨어가 사용되는 시스템의 종류(type of system)에 좌우
③ 기능적 사용자 요구사항(Functional user requirements)는 시스템의 동작사항에 대한 추상적 기술이지만, 기능적 시스템 요구사항(Functional system requirements)는 시스템 서비스에 대한 상세한 기술이어야 한다.

3) 기능적 요구사항의 예
① 사용자는 초기 데이터베이스의 모든 정보를 검색하거나, 일부를 선택할 수 있어야 한다.
② 시스템은 문서 저장소에 있는 문서를 사용자가 읽기 쉽도록 적당한 뷰어(viewers)를 제공해야 한다.
③ 모든 주문(order)은 고유 번호인 ORDER_ID 를 가져야 하며, 이것을 사용자가 영구 저장소에 복사할 수 있어야 한다.

4) 부정확한 요구사항
① 요구사항이 정확하게 기술되지 않은 경우는 문제가 발생한다.
② 모호한(ambiguous) 요구사항은 개발자(developers)와 사용자(users)가 각기 다르게 해석할 수 있다.
- 앞에서의 “ 적당한 뷰어"의 경우
□  사용자 의도 - 각 문서의 종류마다 다른 전용의 뷰어
□  개발자 해석 - 문서의 내용을 보여주는 텍스트(text) 뷰어

5) 요구사항의 완전성(Completeness)와 일관성(Consistency)
① 요구사항은 완전(Complete)하고 일관적(Consistent)이어야 한다.
② 완전(Complete): 시스템이 필요로 하는 모든 기능들에 대해 기술되어야 한다.
③ 일관적(Consistent): 시스템의 기능들에 대한 내용에서 충돌(conflicts)이 발생하거나 모순(contradictions)이 생겨서는 안 된다.
④ 실제로 복잡한 대규모 시스템에서 완전하고 일관성 있는 요구사항 문서를 만들기는 불가능하다. 이유는 본질적으로 복잡한 시스템과 견해가 다른 데서 나오는 비일관적 요구 때문이다.

6) 비기능적 요구사항(Non-functional requirements)
① 시스템 속성(properties)이나 제약사항(constraints)에 대해 정의한다.
□  신뢰도(reliability), 반응 시간(response time), 저장소(storage) 요구사항 등
□  창발적 속성과 관련 있다. 대부분 개별적 기능이 아닌 전체적 모습에 관한 요구

 

②   프로세스 요구사항이 있을 수도 있다.
□  특정 CASE 시스템, 프로그래밍 언어나 개발 방법론을 사용해야 하는 경우

 

③   비기능적 요구사항이 기능적 요구사항보다 훨씬 중요하다.
□  비기능적 요구사항이 만족되지 않는 경우 시스템 자체가 쓸모없게 될 수도 있다.


7) 비기능적 요구사항의 분류
① 제품 요구사항(Product requirements)
□  제품이 특정 조건에 맞도록 동작해야 한다.  

수행 속도(execution speed), 신뢰도(reliability)
□  예: APSE 와 사용자간의 모든 통신은 표준 Ada 문자 집합으로 표현되어야 한다.

② 조직 요구사항(Organizational requirements)
□  고객이나 개발 조직의 정책(policies)에 맞아야 한다. 프로세스 표준, 구현 요구사항 등
□  예: 시스템 개발 프로세스와 도출 문서는 KNOU-SP-STAN-2004 에 정의된 프로세스와 문서형식을 따라야 한다.

 

③ 외부 요구사항(External requirements)
□  시스템과 개발 프로세스 외부에서 발생하는 요구사항 상호 운용성 요구사항, 법적 요구사항 등
□  예: 사용자의 이름 외에 다른 개인 정보는 시스템 운영자에게 노출되어서는 안 된다.

 

[그림 5.3] 비기능적 요구사항의 종류




8) 도메인 요구사항(Domain requirements)
① 응용 도메인으로 부터 주어지며, 시스템의 특성에 영향을 준다. 
② 새로운 기능적 요구사항 또는 기존의 요구사항에 대한 제약사항이 되거나 특별한 계산식을 정의하는 것 등이 될 수 있다.
③ 도메인 요구사항이 만족되지 않으면 시스템이 쓸모없게 된다.
④ 예:
□  기차의 감속도는 다음과 같이 계산한다. Dtrain = Dcontrol + Dgradient
□  Dgradient = 9.8ms2 * compensated gradient/alpha

9) 도메인 요구사항의 문제점
① 이해도(Understandability)
□  해당 응용 도메인의 언어로 표현된다.
□  그러므로, 시스템을 개발하는 소프트웨어 공학자가 이해하기 어렵다.

② 함축성(Implicitness)
□  도메인 전문가가 잘 이해하는 부분이기 때문에 도메인 요구사항에 대해 상세히 기술할 필요가 없다고 생각한다.


2. 2 장 사용자 요구사항

1) 사용자 요구사항(User requirements)
① 세부 기술에 대한 지식이 없는 시스템 사용자가 이해할 수 있도록 기능적/비기능적 요구사항이 기술되어야 한다.
② 자연어(natural language)나 테이블(tables), 다이어그램(diagrams) 등을 사용해서 정의된다.

2) 자연어의 문제점
① 명확성이 떨어진다.
② 기능적 요구사항과 비기능적 요구사항이 뒤섞여서 표현되는 등, 요구사항에 혼동이 있을 수 있다.
③ 다양한 요구 사항들이 한꺼번에 함축적으로 표현되는 경우가 많다.

3) 요구사항 정리를 위한 가이드라인
① 표준 문서를 만들어 두고, 모든 요구사항에 대해 적용시킨다.
② 언어를 일관성 있게 사용한다. 예를 들어, 필수항목과 희망항목을 구분할 수 있는 표현을 정하여 사용한다.
③ 요구사항의 주요부분을 표시하기 위해 형광색등으로 표시를 한다.
④ 컴퓨터 전문용어를 피한다.

3. 3 장 시스템 요구사항

1) 시스템 요구사항(System requirements)
① 사용자 요구사항보다 상세한 명세를 제공한다.
② 시스템을 설계하는데 기초 자료로 사용된다.
③ 시스템 계약 시 사용된다.
④ 시스템 모델(교재 8 장)을 사용하여 표현되기도 한다.

2) 요구사항과 설계
① 요구사항(requirements)은 시스템이 무엇(what)을 해야 하는지에 대한 기술이며, 설계(design)는 시스템이 어떻게(how) 동작하는가에 대한 기술이다.
② 실제로는 독립적으로 분리된 것이 아니다.
예: 요구사항을 더욱더 구조화 시키기 위해 시스템 아키텍쳐를 설계하는 경우

3) 자연어 명세의 대안(Alternatives)
- 자연어 명세는 모호(Ambiguity)하며, 너무 유연하며(Over-flexibility) 모듈화가 어렵기 때문에(Lack of modularization) 다음과 같은 방법으로 문제점을 해결한다.
□  구조화된 언어 명세(Structured language specifications)
□  설계 기술 언어(Design description language)
□  시각적 표기(Graphical notations)
□  수학적 명세(Mathematical specifications)

4) 구조화된 언어 명세(Structured language specifications)
① 요구사항을 표현하는데 사용하기 위해 자연어를 제한하여 사용한다.
② 이렇게 함으로 해서, 모호성(ambiguity)나 유연성(flexibility)를 줄이고, 명세에 대해 일관성을 부여할 수 있다.
③ 특정 형식(forms)을 기반으로 하는 경우도 있다.
 

[그림 5.13] 표준 형식을 사용한 시스템 요구사항



5) PDL 을 사용한 요구사항 명세
① 프로그래밍 언어의 표현을 추상화하여 사용함
② 다음과 같은 상황에 사용하면 적당함
□  특정 오퍼레이션(operation)이 일련의 간단한 활동들(actions)로 나타나고 실행 순서가 중요한 경우
□  하드웨어와 소프트웨어의 인터페이스가 명세 되어야 하는 경우

 

[그림 5.14] ATM 동작에 대한 PDL



③ PDL 사용의 단점
- 도메인 관련 개념을 표현하기 어렵다.
- 프로그래밍 언어에 익숙한 사람들만 이해할 수 있다.
- 시스템을 이해하기 위한 모델(model)이기 보다는 설계 명세에 가깝다.

6) 인터페이스 명세(Interface specification)
① 대부분의 시스템이 다른 시스템과 함께 동작하기 때문에 요구사항의 일부로 인터페이스가 명세 되어야 한다.
② 정형적인 표기법(Formal notations)이 효과적이다.
 

[그림 5.15] 프린터 서버 인터페이스의 Java PDL



[ 정리하기 ]
□  요구사항은 시스템이 무엇(what)을 해야 하는지와 동작이나 구현에 있어서의 제약사항(constraints)를 정의하는 것이다.
□  기능적 요구사항은 시스템이 제공해야 하는 서비스(services)에 대해 기술한 것이다.
□  비기능적 요구사항은 시스템 개발이나 방법론에 대한 제약사항(constraints)을 기술한 것이다.
□  사용자 요구사항은 시스템이 무엇을 해야 하는지에 대한 상위 레벨(High-level)의 명세이기 때문에 자연어, 테이블, 다이어그램을 사용하여 표현된다.
□  시스템 요구사항은 사용자 요구사항의 내용을 보다 상세화하고 구체화시킨 것으로 구조화된 자연어, PDL 이나 정형적 언어를 사용하여 표현된다.

[ 참고하기 ]
Requirements Engineering
by Elizabeth Hull, Ken Jackson, Jeremy Dick
http://www.amazon.com/exec/obidos/tg/detail/-/1852335777/qid=1078490922/sr=1- 3/ref=sr_1_3/103-7583756-7029449?v=glance&s=books
200 쪽 정도의 분량으로 최신의 요구 공학 기술을 간단 명료하게 설명한 책이다. 요구사항 추출, 검증 및 확인, 변경 관리 등에 관한 일반적 방법과 구체적 방법을 예를 들어 설명하고 있다.

'정보과학 > 소프트웨어공학특론' 카테고리의 다른 글

시스템 모델  (1) 2023.11.25
요구 공학 프로세스  (2) 2023.11.25
소프트웨어 프로세스(2)  (1) 2023.11.23
소프트웨어 프로세스(1)  (1) 2023.11.23
시스템 공학  (0) 2023.11.23