본문 바로가기
기술&교육

Function vs Nonfunction (기능 요구사항 vs 비기능 요구사항)

by 베어그릴스 2022. 8. 29.
반응형

어떤 시스템은 사용하기 편리하고, 어떤 시스템은 소중한 시간을 많이 낭비한다. 왜? 무엇이 다른가? 우리는 두 시스템의 차이를 생각해 볼 필요가 있다.

 

비기능 요구사항을 놓치면

  • 프로젝트 리스크를 증가시키고,
  • 이해관계자 가치를 급락시키고,
  • 내부 및 외부 사용자의 생산성을 떨어뜨리고.
  • 고치기 어렵고, 비용이 많이 들어가는 근본적인 결함을 만든다.

 

요구사항 (Requirement) : 시스템이 갖춰야 할 요건

 요구사항 내용의 종류에 따라서 기능적 요구사항과 비기능적요구사항을 나눌 수 있다.  정산하기나 모임 관리처럼 시스템이 갖고 있는 기능기능적 요구사항이라하고 정산하는 속도, 시스템의 메모리 사용량처럼 기능은 아니나 측정해서 제한을 두고 시스템이 만족하도록 해야 하는 것비기능적 요구사항이라 한다.

 


 기능적 요구사항 (Functional Requirements)

시스템에 주어지는 특정 입력에 대한 시스템이 산출하는 출력을 통해 정의된다. 

 

  • 시스템은 어떤 서비스를 제공하는가
  • 어떤 입력이 주어졌을 때 어떻게 반응하는가
  • 어떤 상황에서 어떻게 행동하는가 
  • 시스템이 무엇을 해야 하는지 설명 (기능 or 시스템 서비스)

 

기능적 사용자 요구사항 : 사용자에 의해 이해 될 수 있는 추상적 방법으로 설명

기능석 시스템 요구사항 : 시스템 기능, 입력, 출력, 예외사항 등 

 

 

비기능적 요구사항 (Non-Functional Requirements)

비기능 요구사항 범주:

  • 보안 Security
  • 사용자 편리성 Usability
  • 신뢰성 및 효율성 Reliability & Efficiency
  • 양도 가능성 Transferability
  • 유지보수 편리성 Maintainability
  • 호환성 Compatibility

 

소프트웨어 기능들에 대한 조건(시스템의 속성)과 제약사항에 관한 요구사항

 

  • 기능적 요구사항보다 더 결정적인 부분이 될 수 있다 -> why? 이부분이 충족되지 않으면 시스템 이용가치 X
  • 각각의 특징과 서비스보다는 전체적인 시스템에 적용

 

제품 요구사항(Product Requirement) - 제품의 동적을 규정

조직 요구사항(Organizational Requirement) - 고객과 개발자 조직의 정책과 절차 

외부 요구사항(External Requirement) - 시스템과 그 개발 프로세스의 외부 요소로부터 생긴 모든 요구사항

 


비기능적 요구사항 
제품 요구사항
(Product Requirement)
사용성(Usability)  :   사용자가 어떻게 쉽게 사용할 수 있는가
효율성(Efficiency) 성능(Performance)  :  특정 기능이 특정시간 내에 실행 
공간 (Space)  :  특정 기능 수행시 메모리를 최대 얼마까지 사용할 수 있는가 
신뢰성(Reliableility)  :  특정 기능 실행시 실패할 가능성이 몇 %보다 낮아야 하는가 
이식성 (Portability)  :  다양한 플랫폼 위에서 작동하는가 
조직 요구사항 
(Organizational Requirement)
배포(Delivery)  :  소프트 웨어를 어떻게 배포할 것인가 
구현(Implement)  :  소프트웨어 구현 ; 어떤 방법론? 어떤 프로그래밍 언어?
표준(Standard)  :  소프트웨어 개발 시 어떤 표준을 따를 것인가 
외부 요구사항
(External Requirement)
상호 운용성 (Interoperability)  :  구현할 소프트웨어가 다른 소프트웨어와 어떻게 연동할지 정의 
윤리적 (Ethical)  :  소프트 웨어의 내용의 윤리적 범위을 정의 ex) 성인용 게임 19세 이상  
법적 (Legislative)  사생활(privacy)   ex) 공개범위 선택
안전성(safety)     ex) 자료 저장방식, DBMS 어떤것? 자료의 암호화 여부 

 

Non-Functional Requirement System or Feature Level
시스템이 다운될때 복구하는 방법을 제공해야 한다. System
새벽 3시부터 7시까지 시스템 다운이 되어야만 한다. System
평균 5분 이내에 주문을 처리해야 한다. System
신용카드 번호는 일반 관리자를 제외하고, 모든 내부 사용자에게는 숨겨져야 한다. Feature
10초 내에 신용카드 승인 여부를 처리해야 한다. Feature
시스템은 데스크탑, 랩탑, 모바일 디바이스에서 작동되어야 한다. System
피자 토핑은 계절에 따라 다양하다. 시스템 릴리즈 없이, 토핑 목록을 매일 수정할 수 있어야 한다. Feature

비 기능 요구사항 문서화 DOCUMENTING NON-FUNCTIONAL REQUIREMENTS

비 기능 요구사항을 작성하는 방법을 결정할 때, 어떤 것은 전체 시스템을 추적할 것이고, 어떤 것은 기능, 사용자 스토리, 개별 요구사항을 추적한다는 것을 기억해야 한다.

  • 분리된 비기능 요구사항 문서를 만드는 방법
  • 요구사항 유형 컬럼을 추가하는 방법
  • 유즈 케이스의 마지막에 나열
  • 사용자 스토리 인수 기준에 추가
  • 구두로
  • 프로세스 모델 및 플로우 차트에 기록

시스템 전체 또는 기능 레벨에서 비 기능 요구사항을 무시하면서 악마같은 시스템을 만들지 말아야 한다.
개발자나 테스터는 시스템 제약이나 품질 측정을 이해해야 한다.
비 기능 요구사항은 사용자 및 이해관계자에게 상당한 가치를 부여도록 한다.

반응형

댓글