본문 바로가기
정보시스템/프로젝트 관리

요구사항 기능 비기능

by 3604 2023. 9. 26.
728x90

출처: https://tonyjev93.github.io/software%20engineering/requirements-analysis/

요구사항

요구사항이란 시스템이 갖춰야 할 요건을 말한다.

요구사항 엔지니어링은 시스템의 기능과 제약사항(속성)들로부터 고객들이 요구하는 서비스들을 확립해나가는 과정을 말한다.

요구사항은 내용의 종류에 따라 기능적 요구사항, 비기능적 요구사항으로 나눌 수 있다.

시스템이 갖추어야 하는 비즈니스적인 요구사항을 기능적 요구사항이라고 하며, 그 외 시스템이 갖추어야 하는 성능적인 요소(메모리 사용량, 처리 속도, 보안 …)에 대한 조건을 비기능적 요구사항이라고 한다.

 

기능적 요구사항

시스템 서비스 또는 기능들에 대한 요구사항

  • 어떤 서비스를 제공하는가
  • 어떤 입력에 대해 어떤 출력을 제공하는가
  • 어떤 상황에서 어떻게 행동하는가
  • 무엇을 처리하는가

기능적 사용자 요구사항사용자에 의해 이해 될 수 있는 추상적 방법으로 설명기능적 시스템 요구사항시스템 기능, 입력, 출력, 예외사항 등

 

비기능적 요구사항

시스템 또는 개발 과정에 대한 제약사항에 관한 요구사항

Ex) 안정성, 응답 시간, 요구 저장공간 …

제품 요구 사항

제품의 품질에 대한 비기능적 요구 사항

사용성 요구 사항

어떻게 하면 사용자가 소프트웨어를 쉽게 사용할 수 있을것인가에 대한 사용성에 대한 요구사항을 기술한다.

  • 사용자 인터페이스는 어떤 방식을 채택할 것인가?
  • GUI를 지원한다면, UI 요소들은 어떻게 배치할 것인가?
  • 사용 중 오류가 발생한다면, 이를 어떻게 보여줄 것인가?
  • 다국어를 지원할 것인가?
  • 도움말이나 매뉴얼은 어떻게 작성할 것인가?
  • 장애인은 소프트웨어를 어떻게 사용할 수 있는가?

효율성 요구 사항

소프트웨어는 빠를 수록, 메모리를 적게 사용할 수록 좋기 때문에 시스템의 효율성에 대한 요구사항을 기술한다.

  • 성능 요구 사항 (performance requirement)
    • 특정 기능에 대해 어느정도 시간 내에 수행되어야 하는지 정의
    • Ex)
      • OS의 부팅 시간은 1분 이내여야 한다.
      • 지도를 보여주는데 걸리는 시간은 5초 이내여야 한다.
  • 공간 요구 사항 (space requirement)
    • 특정한 기능을 수행할 때 메모리를 최대 얼마까지 사용할 수 있는지를 정의
    • Ex)
      • 특정한 실행 파일의 크기는 1MB보다 작아야 한다.

신뢰성 요구 사항

특정한 기능을 실행할 때 실패할 가능성이 몇 % 보다 낮아야 함을 기술한다.

이식성 요구 사항

소프트웨어는 가능한 다양한 플랫폼들 위에서 작동하는 것이 더 좋다. 이식성 요구 사항에서는 소프트웨어가 다양한 플랫폼에서 작동하기 위해 필요한 것들을 담는다.

웹 어플리케이션의 경우 모든 브라우저에서 정상적으로 작동하는 것이 이상적이며, 브라우저의 호환성을 높이는 것을 목적으로 이식성 요구 사항을 작성하는 것을 고려할 수 있다.

플랫폼을 개발한다면, 그것이 업그레이드 된 후에도 그 위에 작동하는 어플리케이션들은 정상적으로 작동되어야 한다.

또는 여러 소프트웨어들이 연동하는 시스템에서 이들의 업그레이드로 인해 연동에 나쁜 영향을 미쳐서는 안 된다. 이러한 소프트웨어를 만들기 위해서도 이식성 요구 사항의 작성을 고민해 볼 수 있다.

 

조직 요구 사항

소프트웨어 개발과 관계되는 조직들에 대한 비기능적 요구 사항이다.

배포 요구 사항

소프트웨어를 어떻게 배포할 것인가에 대한 요구 사항이다.

크게는 온라인과 오프라인으로 구별할 수 있다. 어떤 방식으로 소프트웨어를 배포할지가 결정되어야 한다.

  • Ex)
    • 안랩 V3 - 온라인 / 오프라인으로 모두 판매
    • 온라인 게임 - 인터넷을 통해 온라인으로 다운로드

구현 요구 사항

소프트웨어 구현과 관계된 요구 사항으로 어떤 방법론을 사용할 것인지, 어떤 프로그래밍 언어를 사용할 것인지 등이 이것에 해당 된다.

표준 요구 사항

이것은 소프트웨어를 개발할 때 어떤 표준을 따를 것인지를 정하기 위한 요구 사항이다.

 

외부 요구 사항

소프트웨어에 영향을 미치는 외부에 대한 비기능적 요구 사항이다.

상호 운용성 요구 사항

구현할 소프트웨어가 다른 소프트웨어와 어떻게 연동할지를 정의하기 위한 요구 사항이다.

윤리적 요구 사항

소프트웨어의 내용의 윤리적인 범위를 정하기 위한 요구 사항이다.

특정 계층의 사용자가 소프트웨어를 사용하는 것이 윤리적인 문제가 있다면, 그들이 그것을 사용하는 것을 제한해야 한다. 주로 게임에서 찾아볼 수 있는 요구사항이다.

Ex) 만 19세 이상만 사용 가능

법적 요구 사항

소프트웨어가 법적으로 허용되는 범위 내에서만 작동함을 보장하기 위한 요구 사항이다.

1) 사생활 요구 사항

사용자의 사생활을 보호하기 위한 요구 사항이다.

실례로는 SNS 사용자들은 글이나 사진을 올릴 때 공개 범위(전체, 친구들, 비공개)를 선택할 수 있다.

2) 안정성 요구 사항

소프트웨어의 자료들을 보호하기 위한 정책을 결정하는 요구 사항이다.

소프트웨어가 저장한 자료들은 재난이나 침입으로부터 안전해야 한다. 만약 자료가 손상되면 복구할 수 있어야 한다.

  • 작성시 고려사항
    • 자료 저장 방식은 어떻게 할 것인가? (파일, 레지스트리, DB)
    • DBMS는 어떤 것을 선택할 것인가?
    • 자료의 백업 주기는 어떻게 정할 것인가?
    • 자료 저장은 중앙 집중 방식과 분산 방식 중 어떤 것으로 할 것인가?
    • 자료를 암호화할 것인가?

 

참고

요구사항의 유형

요구사항은 일반적으로 기술하는 내용에 따라 기능 요구사항(Functional Requirements) 비기능 요구사항(Non-functional Requirements)으로 구분하여 기술 관점과 대상의 범위에 따라 시스템 요구사항(System Requirements) 사용자 요구사항(User Requirements)으로 나눈다.

①기능 요구사항(Functional Requirements)

- 시스템이 무엇을 하는지, 어떤 기능을 하는지에 대한 사항
- 시스템의 입력이나 출력으로 무엇이 포함될지, 시스템이 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항
- 시스템이 반드시 수행해야 하는 기능
- 사용자가 시스템을 통해 제공받기를 원하는 기능

ex) "사용자는 회원ID와 비밀번호를 입력하여 로그인 할 수 있다" = 기능 요구사항

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

시스템 장비 구성 요구사항:
-하드웨어, 소프트웨어, 네트워크 등의 시스템 장비 구성에 대한 요구사항

성능 요구사항:
-처리 속도 및 시간, 처리량, 동적* 정적 적용량, 가용성 등 성능에 대한 요구사항

인터페이스 요구사항:
-시스템 인터페이스와 사용자 인터페이스에 대한 요구사항으로 다른 소프트웨어, 하드웨어 및 통신 인터페이스, 다른 시스템 과의 정보 교환에 사용되는 프로토콜과의 연계도 포함하여 기술

데이터 요구사항:

- 초기 자료 구축 및 데이터 변환을 위한 대상, 방법, 보안이 필요한 데이터 등 데이터를 구축하기 위해 필요한 요구사항

테스트 요구사항:
- 도입되는 장비의 성능 테스트(BMT)나 구축된 시스템이 제대로 운영되는지를 테스트하고 점검하기 위한 테스트 요구사항

보안 요구사항:
- 시스템의 데이터 및 기능, 운영 접근을 통제하기 위한 요구사항

품질 요구사항:
- 관리가 필요한 품질 항목, 품질 평가 대상에 대한 요구사항으로 가용성, 정합성, 상호 호환성, 대응성, 신뢰성, 사용성, 유지 관리성, 이식성, 확장성, 보안성 등으로 구분하여 기술


ex) "시스템은 1년 365일, 하루 24시간 운용이 가능해야 한다" 와 같이 품질 및 제약사항과 관련이 있다.

출처: [2021 정보처리기사 필기] 요구사항의 유형(기능/비기능) (tistory.com)

 

728x90