본문 바로가기
정보처리기사/소프트웨어 설계

요구사항 개발

by jhwannabe 2023. 7. 7.

요구공학(Requirements Engineering)

  • 소프트웨어 개발 시 사용자 요구가 정확히 반영된 시스템 개발을 위하여 사용자의 요구를 추출, 분석, 명세, 검증, 관리하는 구조화된 활동 집합
  • 요구사항을 정의하고, 문서로 만들고, 관리하는 프로세스를 의미
  • 효과적인 의사소통을 통하여 공통 이해를 설정하며, 불필요한 비용 절감, 요구사항 변경 추적이 가능해짐
  • 분석 결과의 문서화를 통해 향후 유지보수에 유용하게 활용할 수 있음
  • 자료 흐름도, 자료 사전 등이 효과적으로 이용될 수 있으며, 더 구체적인 명세를 위해 소단위 명세서가 활용될 수 있음

요구공학의 목적

  • 소프트웨어 개발 시 이해관계자 사이의 원활한 의사소통 수단을 제공
  • 요구사항 누락 방지, 상호 이해 오류 등의 제거로 경제성을 제공
  • 요구사항 변경 이력 관리를 통하여 개발 비용 및 시간을 절약할 수 있음
  • 비용과 일정에 대한 제약 설정과 타당성 조사, 요구사항 정의 문서화 등 수행

요구사항 베이스라인(BaseLine, 기준선)

  • 이해 당사자 간의 명시적 합의 내용이며 프로젝트 목표 달성 여부를 확인하는 기준
  • 요구사항을 조기에 명확히 확정하고, 추후 ㅎ발생 가능한 변경사항을 체계적으로 관리하기 위한 기준이 됨

요구공학(개발) 프로세스

  • 요구사항을 명확히 분석하여 검증하는 진행 순서를 의미
  • 개발 대상에 대한 요구사항을 체계적으로 도출
  • 도출된 요구사항을 분석하여 분석 결과를 명세서에 정리
  • 정리된 명세서를 마지막으로 확인, 검증하는 일련의 단계를 말함
  • 경제성, 기술성, 적법성 대안성 등 타당성 조사가 선행되어야 함

SWEBOK에 따른 요구사항 개발 프로세스

  • 도출(Elicitation) → 분석(Analysis) → 명세(Specification) → 확인(Validatioin)

요구사항 도출(Requirement Elicitation)

  • 소프트웨어가 해결해야 할 문제를 이해하는 첫 번째 단계
  • 현재의 상태를 파악하고 문제를 정의한 후 문제 해결과 목표를 명확히 도출하는 단계
  • 요구사항의 위치와 수집 방법과 관련
  • 이해관계자(Stakeholder)가 식별되며, 개발팀과 고객 사이의 관계가 만들어지는 단계
  • 다양한 이해관계자와 효율적인 의사소통 중요
  • 요구사항 도출 기법 : 고객의 발표, 문서 조사, 설문, 업무 절차 및 양식 조사, 브레인스토밍, 워크숍, 인터뷰, 관찰 및 모델의 프로토타이핑, Use Case, 벤치마킹 BPR(업무 재설계), RFP(제안 요청서)

요구공학 분석(Requirement Analysis)

  • 소프트웨어가 환경과 어떻게 상호작용하는지 이해하고, 사용자의 요구사항을 걸러 내기 위한 과정을 통하여 요구사항을 도출하고, 요구사항 정의를 문서화하는 과정
  • 도출된 사항을 분석하여 소프트웨어 개발 범위를 파악하고 개발 비용, 일정에 대한 제약을 설정하고 타당성 조사를 수행
  • 요구사항 간 상충하는 것을 해결하고, 소프트웨어의 범위(비용과 일정)를 파악하고 타당성 조사를 시행
  • 요구사항 기술 시 요구사항 확인, 요구사항 구현의 검증, 비용 추정 등의 작업이 가능하도록 충분하고 정확하게 기술
  • 요구분석을 위한 기법 : 사용자 의견 청취, 사용자 인터뷰, 현재 사용 중인 각종 문서 분석과 중재, 관찰 및 모델 작성 기술, 설문 조사를 통해 의견 수렴

요구사항 분석 수행 단계

  • 문제 인식 : 인터뷰, 설문 조사 등 도구를 활용하여 요구사항을 파악하는 과정
  • 전개 : 파악한 문제를 자세히 조사하는 작업
  • 평가와 종합 : 요구들을 다이어그램이나 자동화 도구를 이용하여 종합하는 과정
  • 검토 : 요구분석 작업의 내용을 검토, 재정리하는 과정
  • 문서화 : 요구사항 분석 내용을 문서로 만드는 단계

요구사항 분류

  • 기술 내용에 따른 분류 : 기능 요구사항, 비기능 요구사항
  • 기술 관점 및 대상에 따른 분류 : 시스템 요구사항, 사용자 요구사항

요구사항 분류 기준

  • 기능 요구사항, 비기능 요구사항을 구분하고 우선순위 여부 확인
  • 요구사항이 하나 이상의 고수준 요구사항으로부터 유도된 것인지 확인
  • 이해관계자나 다른 원천(Source)으로부터 직접 발생한 것인지 확인
  • 요구사항이 제품에 관한 것인지 프로세스에 관한 것인지 확인하고 요구사항이 소프트웨어에 미치는 영향의 범위 확인
  • 요구사항이 소프트웨어 생명주기 동안에 변경이 발생하는지 확인

기능적 요구사항 vs 비기능적 요구사항

기능적 요구사항 비기능적 요구사항
시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항 시스템 구축에 대한 성능, 보안, 품질, 안정성 등으로 실제 수행에 보조적인 요구사항

요구사항 명세(Requirement Specification)

  • 시스템 정의, 시스템 요구사항, 소프트웨어 요구사항을 작성
  • 체계적으로 검토, 평가, 승인될 수 있도록 문서로 만드는 것
  • 기능 요구사항은 빠지는 부분 없이 명확하게 기술
  • 설계과정의 오류사항을 추적할 수 있어야 함
  • 비기능 요구사항은 필요한 것만 명확하게 기술
  • 개발자가 효과적으로 설계할 수 있고 사용자가 쉽게 이해할 수 있도록 함

요구사항 명세 기법

구분 정형 명세 비정형 명세
기법 - 수학적 기반 / 모델링 기반 - 상태 / 기능 / 객체 중심 명세 기법
- 자연어 기반
종류 - Z, VDM
- Petri-Net (모형 기반)
- LOTOS (대수적 방법)
- CSP, CCS
- FSM (Finite State Machine)
- Decision Table, ER 모델링
- State Chart (SADT)
- Use Case
- 사용작 기반 모델링
장점 - 시스템 요구 특성을 정화하고 명세가 간결하게 명세할 수 있음
- 명세 / 구현의 일치성
- 명세 작성 이해 용이
- 의사전달 방법 다양성
단점 - 낮은 이해도
- 이해관계자의 부담 가중
- 불충분한 명세 기능
- 모호성

요구사항 명세 속성

  • 정확성 : 요구사항은 정확해야 함
  • 명확성 : 단 한 가지로만 해설되어야 함
  • 완전성 : 모든 것이 표현(기능 + 비기능) 가능해야 함
  • 일관성 : 요구사항 간 충돌이 없어야 함
  • 수정 용이성 : 요구사항 변경이 가능해야 함
  • 추적성 : RFP, 제안서를 통해 추적 가능해야 함

요구사항 확인(Requirement Validation)

  • 요구사항 분석 단계를 거쳐 문서로 만들어진 내용을 확인하고 검증하는 단계
  • 일반적으로 요구사항 관리 도구를 이용하여 이해관계자들이 문서를 검토해야 하고, 요구사항 정의 문서들에 대해 형상 관리를 함
  • 회사의 표준에 적합하고 이해할 수 있고, 일관성이 있고, 완전한지 검증
  • 요구분석가가 요구사항을 이해했는지 확인(Validation)이 필요
  • 리소스가 요구사항에 할당되기 전에 문제를 파악하기 위하여 다음과 같은 검증을 수행함
    • 표준에 적합한가?
    • 이해 가능한가?
    • 일관성 있는가?
    • 완전한가?
  • 요구사항 관리 도구의 필요성 : 요구사항 변경으로 인한 비용 편익 분석, 요구사항 변경의 추적, 요구사항 변경에 따른 영향 평가

형상 관리(Configuration Management)

  • 애플리케이션 개발 단계에서 도출되는 프로그램, 문서, 데이터 등의 모든 자료를 형상 단위라고 함
  • 이러한 자료의 변경을 관리함으로써 애플리케이션 버전 관리 등을 하는 활동

요구사항 할당(Requirement Allocation)

  • 요구사항을 만족시키기 위한 아키텍처 구성 요소를 식별하는 활동
  • 식별된 타 구성 요소와 상호작용 여부 분석을 통해 추가 요구사항 발견 가능

정형 분석(Formal Analysis)

  • 구문(Syntax)과 형식적으로 정의된 의미(Semantics)를 지닌 언어로 요구사항을 표현함
  • 명확하게 표현하여 오해를 최소화할 수 있음
  • 요구사항 분석의 마지막 단계에서 이루어짐

 

728x90
반응형

'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글

UML (1)  (0) 2023.07.08
요구사항 확인 기법  (0) 2023.07.08
현행 시스템 분석  (0) 2023.07.07
SCRUM  (0) 2023.07.07
소프트웨어 개발 방법론  (0) 2023.07.07