CodeJin 2023. 4. 24. 04:26

※ 공부한 것을 정리한 노트입니다. 참고만 하세요. ※

요구사항의 중요성

  • 아직도 많은 프로젝트들은 도전중이다(https://codejin.tistory.com/250)
  • 프로젝트의 성공, 도전, 실패의 주 원인은 요구사항에 있다.

  • 즉, 요구사항이 잘 되는지 안되는지는 곧 해당 프로젝트의 흥망성쇠를 결정하는 셈이다.

요구사항이란?

  • 문제 해결을 위해 무엇을 구현해야 하는가에 대한 명세
  • 시스템이 동작한느 방법, 속성, 혹은 특성을 설명
  • 시스템 개발 프로세스의 일종의 제약 조건  

요구사항 분류

  • 위로 갈수록 범위가 크다(추상적이다) / high level이다
  • Business requirements
    • why?
    • 이윤증가, 비용절감, 이윤 방어, 미래에 소용될 수 있는 비용 절감
    • 제품을 개발함으로써 얻을 수 있는 이득을 명확히.
    • Vision and scope document
    • ex
      • 30~45세 연령대의 고수익 고객 수를 6개월 이내에 30% 증가
      • 한 학기동안 도서관 이용자 수를 5% 증가
      • 은행 창구 직원 유지비용 25%절감
    • Vision  
      • 프로젝트를 통해 달성하고자 하는 것에 대한 간결하고 명확한 대답
      • 모든 이해 관계자들이 의사 결정하는 기반과 프로젝트의 방향성 제공
      • 모든 이해 관계자들이 공유해야만 한다. 따라서 비전은 명확하고 간결해야하며 수분 안에 이해될 수 있도록 표현
      • 누가? 무엇을? 어떤 점이? 다른?
    • Scope  
      • 비즈니스 요구사항을 만족할 수 있는지에 따라 범위 결정
      • 이해관계자(stakeholder)가 기능 추가를 원하는 경우, 제안된 변경이 비지니스 목표를 당성하는데 어떤 도움이 되는지 판별
      • Scope creep 예방
        • 고객, 이해 관계자로부터 프로젝트 본래 목적과는 관련이 없는 기능, 예산, 기간 자원을 조정 없이 계속 추가하는 현상
      • 범위 모델링
        • 배경도(context diagram)
          • 구조적 분석 및 설계 기법에서 사용
        • 유스케이스 다이어그램
          • UML (Unified Modeling Language)
  • User(stakeholder) requirements
    • what?
    • 사용자가 시스템을 통해 어떤 목표를 수행하려는가?
    • 사용자가 가치를 제공받기 위해 사용자가 시스템을 통해 달성하고자 하는 목표나 수행하는 태스크
    • 비지니스 분석가, 사용자, 제품 관리자로부터 비지니즈 요구사항을 달성하기 위한 요구사항 도출(분할)
  • Functinoal / Non Functional  requirements
    • 요구사항을 만족하기 위해 구현해야하는 것
    • Functional  
      • user requirements를 달성할 수 있도록 개발자가 구현해야하는 것
    • Non Functional  
      • 시스템이 제공하는 기능이나 서비스에 대한 제약
      • Ian Sommerville이 3가지의 관점으로 나눔

  • 제품 요구 사항  
    • 품질 속성에 대한 사항
    • 사용성(Usability) : 사용자가 소프트웨어를 어떻게 쉽게 사용할 수 있을지가 기술되는 요구사항
    • 효율성(Efficiency) : 성능(복잡도 및 실제)에 대한 제약사항
    • 신뢰성(Reliability) : 지정된 기간동안 의도된 기능을 고장 없이 정의된 환경에서 작동할 확률. MTBF로 표현
    • 이식성(Portability) : 다른 환경으로 이식하는 것과 관련된 요구사항
    • 보안성, 확장성, 유지보수성, 가용성 등등...
    • MTBF(Mean Time Between Failures)
      • 전체 가동시간 / 장애 발생 수
      • Failure rate = 1/MTBF
    • 가용성(availability)
      • 주어진 시점에서 요청된 서비스가 제공되고 운영될 수 있는 확률
      • MTTF / MTBF
      • MTTF : Mean Time To Failure
      • MTTR : Mean Time To Repair
      • MTBF : MTTF + MTTR
      • 가용성 = MTTF / MTBF = up / (up + down)
  • 조직 요구사항  
    • 배포 요구 사항 : 언제 어떤 형식으로 배포할 것인지에 대한 요구사항
    • 구현 요구 사항 : 설계 및 구현의 요구사항
    • 표준 요구 사항 : 개발할 때 따라야 할 표준에 대한 요구사항ㄷ
  • 외부 요구 사항 
    • 상호 운용성 요구사항 : 구현할 소프트웨어가 다른 소프트웨어와 어떻게 연동할 지 정의하기 위한 요구사항
    • 윤리적 요구사항 : 소프트웨어의 내용의 윤리적인 범위를 정하기 위한 요구 사항
    • 법적 요구사항 : 소프트웨어가 법적으로 허용되는 범위 내에서만 작동함을 보장하기 위한 요구사항 (privacy / safety)