Przejdź do treści

Wymagania funkcjonalne vs niefunkcjonalne: 3 typy, które musisz znać (wyjaśniam na przykładzie auta)

Nagłowek wpisu Wymagania funkcjonalne vs niefunkcjonalne Grzegorz Kropacz

Wyobraź sobie finał 6-miesięcznego projektu IT. Zespół z dumą prezentuje nową aplikację. System robi dokładnie to, co klient opisał na 100 stronach specyfikacji – każda funkcja jest na swoim miejscu. Wdrożenie zakończone, faktury wystawione. Sukces!

A potem dzwoni telefon. Klient jest wściekły…

Dlaczego? Bo system, owszem, działa, ale jest koszmarnie wolny. Wygenerowanie prostego raportu to idealny moment na zaparzenie kawy. Do tego jest tak nieintuicyjny, że pracownicy po prostu nie chcą go używać.

Zespół jest w szoku. Przecież zaimplementowali wszystko, o co prosił klient! Jak to możliwe, że mimo spełnienia wszystkich wymagań, projekt okazał się porażką?

Odpowiedź jest prosta: skupili się tylko na wymaganiach funkcjonalnych, ignorując kluczową różnicę między wymaganiami funkcjonalnymi a niefunkcjonalnymi. Ten artykuł wyjaśni Ci tę różnicę na prostym przykładzie.


  • Czym są wymagania funkcjonalne (czyli „CO” system ma robić).
  • Czym są wymagania niefunkcjonalne i dlaczego rozbijam je na: wymagania jakościowe (czyli „JAK DOBRZE” ma to robić) i ograniczenia (czyli „JAKICH RAM” musimy się trzymać).
  • Dlaczego pominięcie któregokolwiek z tych 3 typów to prosta droga do katastrofy.

Centralna metafora: projektujemy wymarzone auto

Aby to zrozumieć, zabiorę Cię w podróż do świata motoryzacji. Wyobraź sobie, że jesteś inżynierem i masz zaprojektować nowy, rodzinny samochód – powiedzmy, nowe Volvo XC60. Zaczynasz od zebrania wymagań.

Krok #1: Wymagania funkcjonalne („CO” ma robić?)

To najbardziej oczywista część. Zapisujesz listę podstawowych funkcji:

  • Ma jechać do przodu i do tyłu.
  • Ma skręcać.
  • Ma hamować.
  • Ma mieć działające światła.

To jest lista tego, co auto ma robić. W świecie IT to odpowiednik listy funkcjonalności w Twojej aplikacji.

Krok #2: Wymagania Jakościowe („JAK DOBRZE” ma to robić?)

Czy kupiłbyś nowe Volvo XC60, które spełnia wszystkie te funkcje, ale rozpędza się do 100 km/h w 30 sekund i ma hamulce od roweru? Oczywiście, że nie.

Dlatego teraz zadajesz serię pytań o jakość tych funkcji:

  • JAK SZYBKO ma się rozpędzać? (Wydajność: np. 0-100 km/h w mniej niż 8 sekund).
  • JAK BEZPIECZNIE ma hamować? (Bezpieczeństwo: np. 5 gwiazdek w testach Euro NCAP).
  • JAK WYGODNIE ma się go prowadzić? (Użyteczność: np. intuicyjny system multimedialny).
  • JAK MAŁO ma palić? (Efektywność: np. poniżej 6 l/100 km w cyklu mieszanym).

To są właśnie wymagania jakościowe – określają, jak dobrze system ma realizować swoje funkcje.

Krok #3: Ograniczenia („JAKICH RAM” musimy się trzymać?)

Ale to nie wszystko. Twój samochód nie powstaje w próżni. Cały projekt musi poruszać się w narzuconych z góry ramach, czyli musi spełniać ograniczenia:

  • „Musi być zgodny z normą emisji spalin Euro 7”. (Ograniczenie prawne)
  • „Całkowity koszt produkcji jednego egzemplarza nie może przekroczyć 100 000 $”. (Ograniczenie biznesowe)
  • „Musimy wykorzystać tylko silniki i płyty podłogowe już dostępne w ramach naszej modułowej platformy SPA (Scalable Product Architecture)”. (Ograniczenie technologiczne/organizacyjne)

Ograniczenia to twarde reguły gry, których jako zespół projektowy nie możecie negocjować.

Błąd #1: Dlaczego wrzucanie Jakości i Ograniczeń do jednego worka to pułapka?

Grafika wyjaśniająca błąd w projektach IT: wrzucanie wymagań niefunkcjonalnych do jednego worka.
Bardzo częsty błąd w projektach IT: mieszanie wymagań jakościowych z ograniczeniami.

W branży IT te dwa ostatnie kroki (Jakość i Ograniczenia) często wrzuca się do jednego, dużego worka o nazwie Wymagania niefunkcjonalne (ang. Non-functional Requirements).

I to jest przepis na chaos!

Problem w tym, że mieszamy wtedy dwie zupełnie różne rzeczy: nasze życzenia co do jakości („chcemy, by system był szybki”) z faktami, których nie możemy zmienić („musi działać na istniejącej bazie danych Oracle”).

Dlatego jako akredytowany trener IREB i praktyk, w moim podejściu #AnalizaPoLudzku zawsze rozbijam ten worek na 2 osobne, łatwiejsze do zarządzania typy:

  1. Wymagania jakościowe (nasze życzenia dot. jakości).
  2. Ograniczenia (narzucone nam ramy i fakty).

To prosta zmiana, która radykalnie ułatwia pracę i gwarantuje, że niczego nie pominiemy. Ta trójwymiarowa perspektywa jest kluczowa w każdym projekcie IT.

Przykład #AnalizaPoLudzku:

  • Wymaganie funkcjonalne
    „System ma pozwalać na generowanie miesięcznego raportu sprzedaży dla regionu Północ w Salesforce”.
  • Wymaganie jakościowe
    Wygenerowanie raportu dla standardowego oddziału nie może trwać dłużej niż 10 sekund”.
  • Ograniczenie
    „System musi być zgodny z RODO”, a także: „Rozwiązanie musi być zaimplementowane w oparciu o naszą istniejącą bazę danych Oracle”.

Widzisz różnicę? Dopiero te 3 typy wymagań razem tworzą kompletny i użyteczny obraz tego, co ma zostać zbudowane.

Grafika pokazuje, by zawsze dopytywać, co oznacza "szybko" i podaje przykład "raport < 5 sekund"
Jedna z najważniejszych umiejętności analityka w praktyce. Zawsze, gdy słyszysz „szybko”, „łatwo” lub „bezpiecznie”, Twoim zadaniem jest zamiana tego przymiotnika w mierzalną liczbę.

Zamień przymiotnik w liczbę!

Wymagania jakościowe często kryją się w jednym, niepozornym słowie: „szybko”, „łatwo”, „bezpiecznie”. Twoim zadaniem jako analityka jest ZAWSZE dopytać: „Co dla Ciebie znaczy SZYBKO?”. Zamień przymiotnik w mierzalną liczbę! To jedna z 3 najważniejszych umiejętności w tej pracy.

Checklista dla Ciebie

Na następnym spotkaniu z klientem, gdy usłyszysz wymaganie, zadaj 3 pytania:

  1. CO” dokładnie system ma robić? (Funkcjonalność)
  2. JAK DOBRZE” ma to robić? (Jakość)
  3. JAKICH RAM” musimy się przy tym trzymać? (Ograniczenia)
3 pytania, które ratują projekt: 1. Co system ma robić? 2. Jak dobrze ma to robić? 3. Jakich ram musimy się trzymać?
Prosta checklista 3 pytań, które pomogą Ci zebrać komplet wymagań: funkcjonalnych, jakościowych i ograniczeń.

Najczęstsze Pytania (FAQ)

Wymagania funkcjonalne definiują, CO system ma robić (np. „przycisk Zapisz ma zapisać dane”). Wymagania niefunkcjonalne definiują, JAK ma to robić (np. „przycisk Zapisz ma zadziałać w mniej niż 1 sekundę”).

To zależy od definicji. W praktyce najlepiej traktować wymagania jakościowe (np. „szybkość”) jako podzbiór wymagań niefunkcjonalnych, obok Ograniczeń (np. „musi używać bazy Oracle”).

Jest to kluczowe zadanie analityka biznesowego i systemowego, ale musi on je zebrać od wszystkich interesariuszy – biznesu (dotyczące użyteczności), IT (dotyczące technologii, wydajności) oraz działu prawnego (dotyczące bezpieczeństwa, RODO).

Podsumowanie

System bez zdefiniowanych wymagań jakościowych i ograniczeń jest jak samochód, który co prawda jeździ, ale nikt nie chce nim podróżować, bo jest wolny, niebezpieczny i nie mieści się w garażu.

Dlatego pamiętaj o trzech wymiarach wymagań. To solidny fundament dla udanego projektu.

Chcesz nauczyć się, jak profesjonalnie definiować wszystkie 3 typy wymagań, by zapewnić sukces swoim projektom? Zapraszam Cię na moje praktyczne, akredytowane szkolenie z Inżynierii Wymagań wg standardu IREB. Nauczę Cię, jak myśleć w trzech wymiarach i tworzyć specyfikacje, które naprawdę działają.

Grzegorz Kropacz

Grzegorz Kropacz

Jestem certyfikowanym trenerem analizy biznesowej i modelowania procesów w Inprogress. Przygotowuję firmy do wdrożeń narzędzi IT, poprzez szkolenia z analizy biznesowej i modelowania procesów. Posiadam background techniczny i biznesowy - 14 lat spędzonych w doradztwie i konsultingu. Przekazuję sprawdzone metody oparte o międzynarodowe standardy BPMN IREB UML. Szkolę zespoły w firmach oraz uczestników indywidualnych.