[소프트웨어공학] 요구사항

수진·2023년 4월 23일
0

소프트웨어공학

목록 보기
5/20

요구사항이란,
문제를 해결하기 위해 무엇을 구현해야 하는가에 대한 명세

  • 시스템이 동작하는 방법이나 속성 혹은 특성을 설명
  • 시스템 개발 프로세스의 제약조건이라고 볼 수 있음

그림 https://www.allofsoftware.net/2020/02/software-spec-series-5.html

요구사항 -> 소프트웨어 개발의 첫 단계
언제 발견하느냐에 따라 오류에 대한 수정 비용이 달라짐

1. 요구사항 분류

1. 비즈니스 요구사항

  • 해당 조직에서 프로젝트를 수행하여 시스템을 구현하는 이유
    (이윤 증가, 비용 절감, 이윤 방어, 미래에 소용될 수 있는 비용을 피하거나 절감)

  • 제품을 개발함으로써 얻을 수 있는 이득을 명확하게 함

  • 비전과 범위 문서(vision and scope document)

  • 예제
    - 30~45세 연령대의 고수익 고객 수를 6개월 이내에 30% 증가
    - 한 학기동안 도서관 이용자 수를 5% 증가
    - 은행 창구 직원 유지비용을 25% 절감

    (1) 범위

  • 비즈니스 요구사항(목표)을 만족할 수 있는지에 따라 범위 결정

  • 이해관계자(stakeholder)가 기능 추가를 원하는 경우 제안된 변경이 비즈니스 목표를 달성하는데 어떤 도움이 되는지 판별

  • 범위를 명확하게 함으로써 Scope creep 예방
    - 고객이나 이해관계자로부터 프로젝트 본래의 목적과는 관련이 없는 기능들이 예산이나 기간, 자원 등을 조정없이 계속 추가하는 현상

  • 범위 모델링 -> 배경도(Context Diagram), 유스케이스 다이어그램(Usecase Diagram)

    (1)-1 배경도

    구조적 분석 및 설계 기법에서 사용
    그림: https://33cram.tistory.com/138

    (1)-2 유스케이스 다이어그램(Usecase)

    UML(Unified Modeling Language)
    - usecase들을 통해 각 actor들이 system을 통해 달성하려고 하는 목표를 user requirement로 기술
    그림 https://zdnet.co.kr/view/?no=00000039134587

2. 사용자 요구사항(User Requirements)

  • stakeholder requirements)
  • 사용자가 가치를 제공받기 위해 사용자가 시스템을 통해 달성하고자 하는 목표나 수행하는 태스크
  • 비즈니스 분석가/사용자/제품 관리자로부터 비즈니스 요구사항을 달성하기 위한 요구사항을 도출

3. 기능적 요구사항

  • 사용자 요구사항을 달성할 수 있도록 개발자가 구현하는 것

예) 카페테리아 주문 시스템
[비즈니스 요구사항] : 추상적 X, 명확하게 수치로 표현
- 음식 낭비비용을 6개월 이내 40% 감소
- 운용비용을 12개월 이내에 15% 감소
- 평균 업무 집중 시간을 6개월 이내 직원당 15분 증가

[사용자 요구사항] : 사용자가 목표로 하는 태스크
- 식사 주문
- 메뉴 생성
- 급여 공제 등록

[기능적 요구사항]
- 고객이 급여 공제에 등록되어 있는지 확인
- 고객이 선택한 날짜에 이용가능한 메뉴 표시
- 결제 금액 계산

4. 비기능적 요구사항 분류

그림 https://ee-22-joo.tistory.com/2

  • Ian Sommerville이 분류

  • 시스템이 제공하는 기능이나 서비스에 대한 제약

    4.1 제품(product) 요구사항

  • 제품에 품질에 대한 비기능적 요구사항
    - 사용성(Usability)
    사용자 인터페이스 방식, 다국어 지원 요구사항 등 사용자가 소프트웨어를 어떻게 쉽게 사용할 수 있을지가 기술되는 요구사항

    • 효율성(Efficiency)
      성능 및 공간(메모리)에 관한 제약사항(ex. 웹페이지는 2초 이내에 로드되어야 한다. 실행 파일 크기는 16MB를 넘지 말아야 함)
    • 신뢰성(Reliability)
      제품, 시스템 또는 서비스가 지정된 기간동안 의도된 기능을 고장없이 정의된 환경에서 작동할 확률로 정의되며 보통 MTBF(Mean Time Between Failures)로 표현
    • 이식성(Portabiity)
      소프트웨어를 다른 종류의 시스템 또는 운영체계로 이식하는 것과 관련된 요구사항
    • 이외에도 보안성(Security), 확장성(Scalability), 유지보수성(Maintenability) 등이 있음

    참고: 신뢰성(Reliability)

  • 주어진 조건 하에서 주어진 시간동안 의도된 서비스를 장애 발생 없이 제공하는 능력

  • MTBF(Mean Time Between Failures) = 전체 가동 시간/장애 발생 수

  • Failure rate = 1/MTBF

    참고: 가용성(Availability)

  • 주어진 시점에서 요청된 서비스가 제공되고 운영될 수 있는 확률, 사용자가 서비스를 요청했을 때, 서비스를 제공할 수 있는 확률을 말함

  • 가용성(%) = MTTF/MTBF = MTTF/(MTTR+MTTF)
    - MTTF(Mean Time To Failure): 오작동까지 걸리는 평균시간(정상적으로 운영되는 시간)
    - MTTR(Mean Time To Refair): 고장을 수리하는 평균시간
    - MTBF(Mean Time Between Failures) = MTTF + MTTR
    그림 https://easypeashenglish.tistory.com/39

2. Organizational requirements

  • 소프트웨어 개발 조직에 관한 요구사항
    - Delivery requirments(배포 요구사항): 언제 어떤 형식으로 배포할 것인지에 대한 요구사항
    • Implementation requirements(구현 요구사항): 설계 및 구현에 대한 요구사항
    • Standard requirements(표현 요구사항): 개발할 때 따라야 할 표준에 대한 요구사항

3. External requirements

  • 소프트웨어 개발에 영향을 미치는 외부에 관한 요구사항
    - Interoperability requirement(상호 운용성 요구 사항): 이것은 구현할 소프트웨어가 다른 소프트웨어가 다른 소프트웨어와 어떻게 연동할지를 정의하기 위한 요구사항
    • Ethical requirement(윤리적 요구 사항): 소프트웨어의 내용의 윤리적인 범위를 정하기 위한 요구 사항
    • Iegislative requirement(법적 요구사항): 소프트웨어가 법적으로 허용되는 범위 내에서만 작동함을 보장하기 위한 요구사항이며 privacy와 safety 요구사항으로 분류

0개의 댓글