c23 [SW 공학] 요구 분석
본문 바로가기
[SW 공학]

[SW 공학] 요구 분석

by Jarvis2304 2023. 10. 11.

▶소프트웨어 개발 과정

- (도메인 분석) 계획 → (요구)분석 → 설계 → 구현 → 테스트 → 유지보수

- 소프트웨어를 만들기 위해 계획 단계에서 유지보수 단계까지 이르기까지 일어나는 일련의 과정

- 소프트웨어 개발 생명주기라고 함

이미지 출처: 쉽게 배우는 소프트웨어 공학

 

▶2단계: 요구분석

- 무엇을 개발할지 결정하는 것

- 기존 시스템의 문제점을 파악하고, 사용자 인터뷰를 통해 새로운 요구 사항을 도출하여 수집

- 이 요구사항을 최적화된 상태로 정리한 후 특정 표현 도구를 사용하여 다이어그램 등으로 나타냄

- 요구 사항을 표현하는 도구는 소트트웨어 개발론에 따라 다름

- 구조적 방법론에서는 자료흐름도(DFD, Data Flow Diagram), 자료 사전(DD, Data Dictionary), 소단위 명세서를 사용

- 정보공학 방법론에서는 개체-관계 다이어그램을 데이터베이스 설계를 표현하는 데 사용

- 객체지향 방법론에서는 UML 표기법을 사용, UML 표기법은 다양한 다이어그램으로 구성되어 있는데 요구 사항은 유스케이스 다이어그램을 사용해 표현

- 어떻게(how)보다는 무엇을(what)에 관점을 둠 (무엇을 하는 시스템을 개발할지 정하는 것)

▷요구분석 단계의 주요 작업 : 요구 추출 → 요구 분석 및 명세화( 요구 분석 명세서 작성) → 검토 및 수정

 

 

 

 

소프트웨어 개발 목적

- 소프트웨어 개발의 궁극적인 목적은 개발된 소프트웨어를 사용하는 고객이 만족하도록 하는 것

- 고객 만족을 위해서는 원하는 품질의 제품을 정해진 개발 기간과 주어진 예산 범위 안에서 개발해야 함

- 그러려면 먼저 사용자 요구 사항을 정확히 파악하고 분석하는 작업 필요

 

사용자 요구를 만족시키기 위해서는 다음과 같은 특성 만족시켜야 함

  • 적시성(time of market) :사용자는 매우 복잡한 업무라도 빠른 시간에 만들기를 원한다
  • 유연성(flexibility) :급변하는 환경에도 잘 적응할 수 있는 시스템을 원하고 있다
  • 통합(intergration) :기존의 시스템과도 쉽게 통합할 수 있어야 한다.

 

 

 

 

▶요구 추출

- 문제를 이해하기 위해 정보를 수집하고 사용자에게 무엇이 필요한지를 찾아내는 것

 

 

요구(사항)의 정의

- 제안된 시스템이 무엇을 하는가를 나타낸 문장

- 소프트웨어 개발에서 요구 사항은 사용자와 개발자 간에 합의한 개발 범위에서 시스템이 제공해야 하는 기능 (기능 요구 사항)

- 사용자 요구 사항에는 기능적 요구 사항, 비기능적  요구사항 존재

- 개발 초기에 사용자의 요구 사항을 추출하여 정리한 문서를 '요구 분석 명세서'라고 함

- 요구 분석 명세서에는 시스템의 기능이 '무엇'(what)인지에만 초점을 두어 정리하고 어떻게(how)구현할지는 기술하지 않음

- '어떻게'는 구현 관점으로 설계에서 자세히 표현함

 

 

 

▷요구(사항)의  특징

요구는 문장이다

- 요구는 어떤 사실을 짧고 간결한 정보로 표현한 것으로 단순 명료한 문장이나 그림으로 표현할 수 있음

- 이러한 요구들을 모아놓은 것을 요구 문서라고 부름

 

● 시스템이 무엇을 하는가를 나타낸다

- 시스템이 완수할 것으로 예상되는 작업에 대해 기술한 것

- 도메인을 설명한 것도 아니고, 시스템이 어떤 방법으로 구현될지를 나타낸 것도 아님

 

● 관련자 모두가 동의한 것이다

- 시스템에 대한 정의를 모든 관련자(사용자, 고객, 개발자, 관리자)가 검토하고 수정이 필요하면 타협하여 합법적으로 정리한 것

- 따라서 관련자 모두가 동의하기 전까지는 공식 요구로 선언하지 않는다

 

● 고객의 문제를 적절히 해결하기 위한 것이다

- 고객의 문제를 해결하는 데 도움이 될 때 존재하는 것

- 소프트웨어 공학이 다루는 여러 가지는 고객이 안고 있는 문제의 해결과 직결됨

 

 

 

 

 

 

▷요구(사항)의 유형

- 기능적 요구와 비기능적 요구로 나뉨

- 또는 사용자 요구 사항와 시스템 요구 사항으로 나뉨

 

● 기능적 요구 :시스템이 외향적으로 나타내는 기능, 사용자가 원하는 기능

ex)

-현금인출기의 외형적인 기능: 현금 인출, 잔금 조회, 계좌 이체, 현금 서비스 등

-입력, 출력, 저장, 컴퓨팅, 타이밍과 동기화

 

● 비기능적 요구 :기능이 아닌 성능이나 품 질, 제약 사항, 효율, 환경 등

ex)

- 품질 특성 :반응 시간, 처리량, 자원 사용량, 신뢰도, 가용성, 장애에서의 회복, 유지보수와 확장의 허용, 재사용성의 허용

- 시스템의 환경과 기술 :플랫폼, 사용 기술

- 프로젝트 개발 방법 :사용하는 개발 프로세스(방법론), 비용과 납기일

 

 

▷요구 추출 방법

요구 추출 방법 작업 방법 특징
관찰 사용자의 업무를 관찰하며 기록 감추어진 문제를 잘 드러냄
인터뷰 여러 관련 당사자를 만나 질문하고 대답을 기록 정확한 요구 추출이 가능하며 요구에 대한 오해를 줄일 수 있음
브레인스토밍 여러 사람이 모인 그룹에서 아이디어를 쏟아놓음 효과적인 정보 추출이 가능함
프로토타이핑 시범적으로 시스템을 구현 요구에 대한 빠른 피드백이 가능함
사용 사례 분석 시스템의 외부 기능 파악 체계적인 요구 구성이 가능함

 

 

 

▷요구 사항의 표현

- 요구 사항이 정리되면 어떠한 형태로든 정리된 내용을 한눈에 파악할 수 있도로 기록하거나 표현해야함(모델링 언어를 통해 요구 사항을 표현)

- 소프트웨어 개발에서는 UML의 다양한 다이어그램을 통해 개발하려는 소프트웨어의 범위나 개략적인 구조와 기능을 이해할 수 있음

- 이해 당사자들이 그들만의 관점에서 필요한 다이어그램들을 보며 개발될 소프트에어를 이해할 수 있음

- 이와 같이 UML의 수많은 다이어그램들이 소프트웨어 개발 과정에서 하나의 모델로 사용됨

 

 

●모델링 언어

- 요구 사항 정의 및 분석 · 설계의 결과물을 다양한 다이어그램으로 표현하는 표기법

 

●모델링 언어의 종류

-여러 다이어그램과 다이어그램을 그리기 위한 일련의 규칙들로 이루어져 있는데, 개발 방법론에 따라 사용하는 도구가 다름

- 구조적 방법론에서는 자료흐름도(DFD, Data Flow Diagram), 자료 사전(DD, Data Dictionary), 소단위 명세서를 사용

- 정보공학 방법론에서는 개체-관계 다이어그램을 데이터베이스 설계를 표현하는 데 사용

- 객체지향 방법론에서는 UML 표기법을 사용, UML 표기법은 다양한 다이어그램으로 구성되어 있는데 요구 사항은 유스케이스 다이어그램을 사용해 표현

 

○ DFD(Data Flow Diagram)

 

 

 

 

○ 개체-관계 다이어그램(ERD: Entity-Relationship Diagram)

 

 

 

○ 유스케이스 다이어그램

 

 

 

 

 

 

 

 

▶요구 분석 및 명세화(요구 분석 명세서 작성)

- 요구 분석 명세서는 요구 분석 과정의 최종 산출물

- 사용자와 개발자를 연결하는 중요한 문서

- 설계 및 구현에서 참조할 사항, 전반적으로 알아야 할 사항을 포함하는 문서

- 사용자와 개발자 간의 계약서

 

 

 

▷요구 분석 명세서 구조

 

 

 

 

 

▶검토 및 수정

- 여러 방법을 통해 추출하고 정리한 사용자의 요구 분석 명세서가 정확하고 완전하게 서술되었는지 검토하는 활동

- 사용자의 요구 사항이 완전하게 서술되었는지 검증하고, 요구 분석 명세서를 작성할 때 문서 표준을 따랐는지 확인

 

 

▷검토 사항

  • 완전성 :사용자의 모든 요구 사항이 누락되지 않고 완전하게 반영되고 있는가?
  • 일관성 :요구 사항이 서로 간에 모순되거나 충돌되는 점은 없는가, 산출물 또는 요구사항의 내용이 일관성을 유지하고 있는가?
  • 명확성 :서술된 명세서의 내용이 애매모호하지 않고 모든 참여자가 명확히 이해할 수 있는가?
  • 기능성 :서술된 명세서의 내용이 '어떻게'보다 '무엇을'에 관점을 두고 서술되었는가?
  • 검증 가능성 :서술된 명세서의 내용이 사용자의 요구를 만족하는가? 개발된 소프트웨어가 사용자가 요구하는 내용과 일치하는지를 검증할 수 있는가?
  • 추적 가능성 :사용자 요구 분석 명세서와 설계서를 추적할 수 있는가?
  • 변경 용이성 :요구 분석 명세서의 내용을 변경하고자 할 때 쉽게 찾아 변경할 수 있도록 작성되었는가?

 

 

'[SW 공학]' 카테고리의 다른 글

[SW 공학] 설계  (0) 2023.10.11
[SW 공학] 계획-2  (0) 2023.09.27
[SW 공학] 계획-1  (1) 2023.09.25
[SW 공학] 개요  (0) 2023.09.24

댓글