EA - NFR (Non-Functional Requirements): Kluczowe aspekty zarządzania i kategoryzacji

 Wymagania niefunkcjonalne (ang. Non-Functional Requirements, NFRs) to krytyczny element każdego projektu IT. Choć często stoją w cieniu wymagań funkcjonalnych, NFRy determinują jakość, wydajność, bezpieczeństwo i użyteczność systemu. Są one kluczową częścią tzw. driverów architektonicznych, które wpływają na wybory technologiczne i architektoniczne.



Czym są NFRy?

NFRy określają, jak system powinien działać, a nie co ma robić. Nie definiują funkcjonalności systemu, ale jego cechy, takie jak:

  • Wydajność: czas odpowiedzi API, obsługa dużej liczby użytkowników.
  • Bezpieczeństwo: brak podatności o wysokim ryzyku w testach OWASP ZAP.
  • Dostępność: procentowy czas dostępności systemu zgodny z SLA.
  • Kompatybilność: zgodność z określonymi przeglądarkami, urządzeniami i systemami operacyjnymi.
  • Użyteczność: maksymalny akceptowalny procent błędów użytkownika.

NFRy jako część driverów architektonicznych

Definicja driverów

Driver to uzasadnienie wyboru określonego rozwiązania – technologii, architektury lub sposobu implementacji. Drivery pomagają zrozumieć priorytety interesariuszy i dostosować system do ich oczekiwań.

Typy driverów:

  1. Wymagania funkcjonalne: lista funkcji, które system ma realizować.
  2. Atrybuty jakościowe (NFRy): np. wydajność, bezpieczeństwo, skalowalność.
  3. Ograniczenia projektowe: czas, budżet, zasoby, dostępne technologie.
  4. Konwencje: zasady stosowane w celu zachowania spójności i wartości.
  5. Cele projektowe: np. prototyp, produkcyjne rozwiązanie, projekt badawczy.

Kategoryzacja NFRów

1. Wydajność (Performance):

  • Strona internetowa musi obsłużyć określoną liczbę użytkowników w czasie godzinowym przy zachowaniu maksymalnego czasu odpowiedzi poniżej np. 2 sekund.
  • API musi odpowiadać w czasie nieprzekraczającym 300 ms na żądanie.

2. Kompatybilność (Compatibility):

  • System musi działać na określonych wersjach systemów operacyjnych, przeglądarek i urządzeń.
  • Wymagania sieciowe: kompatybilność z LTE oraz 5G.

3. Dostępność (Availability):

  • Usługa musi być dostępna 99,9% czasu w miesiącu zgodnie z SLA.

4. Bezpieczeństwo (Security):

  • Strona i API nie mogą posiadać wysokich ani średnich podatności według raportu OWASP ZAP.

5. Lokalizacja (Localization):

  • System musi wspierać lokalne formaty walut, dat i adresów w określonych regionach.

6. Użyteczność (Usability):

  • Maksymalny akceptowalny procent błędów użytkownika nie może przekraczać 0,5%.

Jak zarządzać NFRami w czasie projektu?

  1. Odkrywanie NFRów:

    • NFRy należy zidentyfikować na etapie analizy wymagań poprzez rozmowy z interesariuszami.
    • Warto korzystać z narzędzi takich jak stakeholder mapping, aby zrozumieć priorytety i oczekiwania użytkowników.
  2. Priorytetyzacja:

    • Nie wszystkie NFRy mają jednakowe znaczenie. Kluczowe jest ustalenie, które z nich są krytyczne dla sukcesu projektu.
    • Przykład: W systemie płatności online bezpieczeństwo będzie ważniejsze niż wydajność.
  3. Zarządzanie zmianami:

    • Drivery, w tym NFRy, zmieniają się w trakcie cyklu życia projektu. Ważne jest ich regularne przeglądanie i aktualizowanie.
  4. Monitorowanie i testowanie:

    • NFRy powinny być mierzalne i testowalne. Na przykład:
      • Wydajność API można testować za pomocą narzędzi takich jak Postman czy JMeter.
      • Bezpieczeństwo systemu można monitorować za pomocą OWASP ZAP.
    • Regularne testy pozwalają upewnić się, że system spełnia określone wymagania.
  5. Automatyzacja:

    • Wprowadzenie testów NFR w pipeline CI/CD pozwala na bieżące weryfikowanie, czy wprowadzane zmiany spełniają wymagania.

Przykład zastosowania NFRów w projekcie

Załóżmy, że tworzysz platformę e-commerce. Oto, jak można zarządzać NFRami:

  1. Wydajność: Strona główna musi ładować się w czasie poniżej 3 sekund, obsługując 1000 użytkowników jednocześnie.
  2. Bezpieczeństwo: Wszystkie formularze płatności muszą przechodzić testy OWASP ZAP bez ostrzeżeń o wysokim ryzyku.
  3. Dostępność: System musi być dostępny 99,9% czasu w miesiącu, z wyjątkiem zaplanowanych przerw serwisowych.
  4. Lokalizacja: Ceny produktów muszą być wyświetlane w walucie użytkownika, zgodnie z jego lokalizacją.

Podsumowanie

NFRy są nieodłącznym elementem driverów architektonicznych i mają kluczowy wpływ na sukces projektu. Poprawne ich zidentyfikowanie, kategoryzacja i zarządzanie pozwalają na budowanie systemów, które nie tylko realizują funkcjonalności, ale także spełniają wymagania jakościowe, bezpieczeństwa i wydajności. Dzięki systematycznemu podejściu i automatyzacji procesów testowania NFRy mogą stać się fundamentem efektywnego zarządzania projektem IT.

Komentarze