Definicja

Wymaganie niefunkcjonalne (ang. Non-functional Requirement – NFR) określa cechy jakościowe systemu oraz ograniczenia, w jakich musi on operować. Podczas gdy wymagania funkcjonalne opisują zachowanie systemu, wymagania niefunkcjonalne definiują jego wydajność, niezawodność, bezpieczeństwo i inne parametry, które decydują o komforcie i stabilności użytkowania.

Kategorie wymagań niefunkcjonalnych

Wymagania te są często klasyfikowane za pomocą modelu FURPS lub normy ISO 25010. Do najpopularniejszych kategorii należą:

  • Wydajność (Performance): Czas odpowiedzi systemu, przepustowość, zużycie zasobów (np. “Strona musi załadować się w czasie poniżej 2 sekund”).
  • Dostępność (Availability): Czas bezawaryjnej pracy (np. “System dostępny 99,9% czasu w skali roku”).
  • Bezpieczeństwo (Security): Ochrona danych, szyfrowanie, autoryzacja (np. “Dane muszą być szyfrowane algorytmem AES-256”).
  • Skalowalność (Scalability): Zdolność systemu do obsługi rosnącej liczby użytkowników lub danych.
  • Użyteczność (Usability): Łatwość obsługi i zgodność z zasadami UX/UI (np. “Zgodność z wytycznymi WCAG 2.1 na poziomie AA”).

NFR w projektach zwinnych (Agile)

W przeciwieństwie do wymagań funkcjonalnych, które są realizowane jako pojedyncze User Stories, wymagania niefunkcjonalne często mają charakter przekrojowy i mogą być wdrażane na kilka sposobów:

1. Jako część Definition of Done (DoD)

Jeśli wymaganie niefunkcjonalne dotyczy całego systemu (np. “Każdy nowy kod musi być pokryty testami w 80%”), najlepiej włączyć je do Definition of Done. Dzięki temu każdy Inkrement automatycznie spełnia ten standard jakości.

2. Jako Kryteria Akceptacji (AC)

Jeśli wymaganie dotyczy konkretnej funkcji (np. “Eksport raportu PDF musi trwać mniej niż 5 sekund”), zapisuje się je bezpośrednio w Acceptance Criteria danej User Story.

3. Jako osobne zadania w Backlogu

W przypadku dużych zmian infrastrukturalnych (np. “Przeniesienie bazy danych do chmury w celu poprawy skalowalności”), wymaganie niefunkcjonalne staje się osobnym zadaniem technicznym w Product Backlogu.


Dlaczego wymagania niefunkcjonalne są ważne?

Zaniedbanie NFR prowadzi do powstania tzw. długu technicznego. System może posiadać wszystkie wymagane funkcje, ale być bezużyteczny, jeśli:

  • Będzie się zawieszał przy większym obciążeniu.
  • Będzie posiadał luki bezpieczeństwa narażające dane użytkowników.
  • Będzie zbyt trudny w utrzymaniu i dalszym rozwoju.

Typowe błędy

  • Brak mierzalności – Używanie sformułowań typu “System ma być szybki” lub “Interfejs ma być ładny”. Wymagania niefunkcjonalne muszą być mierzalne i testowalne.
  • Pomijanie NFR na początku projektu – Próba “doklejenia” bezpieczeństwa lub wydajności do gotowego systemu jest znacznie droższa niż ich planowanie od startu.
  • Zbyt restrykcyjne parametry – Ustalanie dostępności na poziomie 99,999% w projekcie, który tego nie wymaga, co drastycznie podnosi koszty infrastruktury.

Podsumowanie

Wymagania niefunkcjonalne są fundamentem zaufania użytkownika do produktu. Dobry Analityk Biznesowy oraz Product Owner muszą dbać o to, by wymagania te były regularnie rewidowane i spełniane, co zapewnia wysoką jakość każdego dostarczanego Inkrementu.


Powiązane pojęcia:

Kliknij w pojęcie, aby przejść do jego definicji w słowniku