Wymagania funkcjonalne opisują, co system powinien robić: operacje biznesowe, procesy, scenariusze użytkownika — czyli funkcjonalność.
Wymagania niefunkcjonalne definiują, jak system powinien działać: ograniczenia, parametry jakości, wydajność, bezpieczeństwo, użyteczność itp. Te wymagania często wpływają na wybór technologii, skalowalność i stabilność rozwiązania.
Dlaczego ważne jest rozróżnienie:
Kluczowe cechy:
Czy „użyteczność interfejsu” wchodzi w skład wymagań funkcjonalnych?
Nie, to parametr niefunkcjonalny (usability). Wymaganie funkcjonalne to obecność na przykład przycisku „Zapisz”, niefunkcjonalne to szybkość jego reakcji i łatwość użycia.
Czy można zignorować wymagania niefunkcjonalne, jeśli nie są one wyraźnie wskazane przez klienta?
Nie. Analityk jest zobowiązany do omówienia i sformalizowania nawet niejawnych wymagań niefunkcjonalnych, w przeciwnym razie zwiększa się ryzyko opóźnień w uruchomieniu, skarg użytkowników i dodatkowych kosztów.
„System powinien być w stanie obsługiwać 1000 zapytań na minutę”. Czy to wymaganie funkcjonalne?
Nie, to wymaganie niefunkcjonalne — charakterystyka wydajności.
Negatywny przypadek: System w pełni zebezpieczył zadeklarowaną funkcjonalność biznesową, ale przy dużym obciążeniu zaczynał „zamulać”, ponieważ wydajność nie została w ogóle uwzględniona. Zalety:
Pozytywny przypadek: Analityk wspólnie z architektem i klientem ustalili w wymaganiach maksymalne obciążenie, kryteria reakcji, przeprowadzili testy obciążeniowe. Zalety: