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:
- Wymagania funkcjonalne: lista funkcji, które system ma realizować.
- Atrybuty jakościowe (NFRy): np. wydajność, bezpieczeństwo, skalowalność.
- Ograniczenia projektowe: czas, budżet, zasoby, dostępne technologie.
- Konwencje: zasady stosowane w celu zachowania spójności i wartości.
- 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?
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.
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ść.
Zarządzanie zmianami:
- Drivery, w tym NFRy, zmieniają się w trakcie cyklu życia projektu. Ważne jest ich regularne przeglądanie i aktualizowanie.
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.
- NFRy powinny być mierzalne i testowalne. Na przykład:
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:
- Wydajność: Strona główna musi ładować się w czasie poniżej 3 sekund, obsługując 1000 użytkowników jednocześnie.
- Bezpieczeństwo: Wszystkie formularze płatności muszą przechodzić testy OWASP ZAP bez ostrzeżeń o wysokim ryzyku.
- Dostępność: System musi być dostępny 99,9% czasu w miesiącu, z wyjątkiem zaplanowanych przerw serwisowych.
- 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
Prześlij komentarz