Istnieje już doskonała odpowiedź Aaronaught, ale ponieważ zostały usunięte inne odpowiedzi, które były całkowicie błędne co do tego, co jest wymogiem niefunkcjonalnym, myślę, że warto byłoby dodać kilka wyjaśnień, aby uniknąć błędów na temat wymóg niefunkcjonalny to.
Wymaganiem niefunkcjonalnym jest „jakość lub właściwość, którą musi posiadać produkt” ¹. James Taylor mówi, że niefunkcjonalne wymaganie „[...] jest [mimo to] wymaganiem i jest ważne dla klienta - czasami nawet ważniejsze niż wymaganie funkcjonalne” . Następnie podaje dwa przykłady: logo produktu oraz dokładność i niezawodność sprzętu. Oba przykłady pokazują bardzo dobrze, że:
- Niefunkcjonalne wymagania nie są marketingowym gadżetem typu: „Internet jest obecnie ważny i chcemy mieć stronę internetową”.
- Wymagania niefunkcjonalne dotyczą klientów, ponieważ mogą mieć duży wpływ na ich produktywność i zdolność do korzystania z produktu.
- Wymagania niefunkcjonalne są całkowicie obiektywne.
Ostatni punkt jest niezbędny. Jeśli wymaganie jest subiektywne, nie ma nic wspólnego z listą wymagań. Nie byłoby możliwe zbudowanie testów walidacyjnych z czegoś, co jest subiektywne . Jedynym celem listy wymagań jest wyliczenie niejednoznacznych oczekiwań klienta. „Chcę, aby ten kwadrat był czerwony” jest wymogiem. „Chcę, aby ten kwadrat miał ładny kolor” to życzenie, które wymaga wyjaśnienia.
Pamiętaj, że lista wymagań jest jak umowa (w większości przypadków jest częścią umowy). Jest podpisany przez klienta i firmę deweloperską, aw przypadku sporu zostanie wykorzystany zgodnie z prawem, aby ustalić, czy poprawnie wykonałeś swoją pracę. Co się stanie, jeśli zamówię Ci oprogramowanie, określ, że „produkt musi być świetny” i odmówię zapłaty, gdy produkt zostanie wykonany, ponieważ dla mnie to, co faktycznie zrobiłeś, nie jest świetnym produktem?
Zobaczmy kilka przykładów.
1. Oprogramowanie reaguje na użytkownika końcowego.
To nie jest wymóg. Nie działa. Nie jest niefunkcjonalny. To po prostu nie jest wymagane. W ogóle. Ma wartość zerową. Nie można sprawdzić, czy system oprogramowania spełnia to wymaganie podczas testów sprawdzania poprawności. Ani ty - dział kontroli jakości, ani klient.
2. Przeładowanie statystyk użytkownika wykonuje 90% czasu poniżej 100 ms. podczas testowania na maszynie o wydajnościach określonych w załączniku G część 2 i obciążeniu poniżej 10% dla procesora, poniżej 50% dla pamięci i bez aktywnych operacji dyskowych R / W.
To jest wymóg. Jeśli dodatek 2 część G jest wystarczająco precyzyjny, mogę zabrać maszynę z podobnym sprzętem i przeprowadzić test walidacyjny w dziale kontroli jakości, i zawsze otrzymam wynik binarny: pozytywny lub negatywny.
Czy to wymóg funkcjonalny? Nie. Nie określa, co system musi zrobić. Prawdopodobnie wcześniej istniały wymagania funkcjonalne, określające, że aplikacja musi być w stanie ponownie załadować statystyki użytkownika.
Czy jest to wymóg niefunkcjonalny? To jest. Określa właściwość, którą musi posiadać produkt, tj. Maksymalny / średni czas reakcji, biorąc pod uwagę próg procentowy.
3. Aplikacja napisana jest w C #.
Czy to wymóg? Tak naprawdę nie wiemy bez kontekstu. Może być życzeniem wiodącego programisty, który poprzez wprowadzenie tego wymogu chce uniknąć późniejszej dyskusji z kolegami na temat używanego języka. Może to być również wymaganie oparte na sprzęcie / oprogramowaniu, starszych elementach lub elementach kompatybilności. Nie wiemy
4. Baza kodu C # produktu jest zgodna z minimalnymi zalecanymi regułami firmy Microsoft i regułami globalizacji firmy Microsoft.
To dziwna rzecz. Osobiście wolałbym nie nazywać tego wymogiem i umieścić go w osobnym dokumencie określającym standardy i najlepsze praktyki.
5. Główne okno aplikacji ma niebieską (# 00f) ramkę 10px z różowymi (#fcc) wypełnionymi kółkami, przy czym koła te są umieszczone na wewnętrznej krawędzi ramki i mają średnicę 3px, oddzielone od siebie o 20px.
Jest to wymóg i niefunkcjonalny. Określa ona coś możemy przetestować podczas testów walidacji i określa właściwości produktu, nie co produkt jest przeznaczony do zrobienia.
6. System śledzenia pojazdu mierzy prędkość z dokładnością ± 0,016 mil na godzinę.
Również wymóg niefunkcjonalny. Daje mierzalny próg precyzji systemu. Nie mówi, co system musi zrobić, ale mówi, jak precyzyjnie wykonuje swoją pracę. Ale poczekaj? Mówi, że system śledzenia pojazdu mierzy prędkość, prawda? Czy to także wymóg funkcjonalny? Cóż, nie, ponieważ kładziemy nacisk na precyzję pomiaru, a nie na fakt, że pomiar jest wykonywany.
7. System śledzenia pojazdu mierzy prędkość pojazdu.
Teraz jest to wymóg funkcjonalny. Nie mówi, jak działa system, ale co robi. Dzięki wymaganiom funkcjonalnym mogliśmy dowiedzieć się, że system śledzenia pojazdu mierzy prędkość, moc akumulatora, ciśnienie Nie wiem co i czy światła są włączone, czy nie.
8. Strony witryny zajmują 850 ms. załadować.
To nie jest wymóg. Próbuje być jednym, ale jest całkowicie nieważny. Jak byś to zasłużył? Jakie strony Wszystko? Testowany przez lokalną sieć 1 Gb / s na czterordzeniowym komputerze klienckim i ośmiordzeniowym serwerze z dyskami SSD używanymi w 2% lub przez modem starego i gównianego laptopa, gdy witryna jest hostowana przez mały serwer używany w 99% ? Co należy rozumieć przez „ładowanie”? Czy to znaczy, że pobierasz stronę? Pobieranie i wyświetlanie? Wysyłasz żądanie POST z dużymi danymi, a następnie ładujesz odpowiedź i wyświetlasz ją?
Podsumowując, wymóg niefunkcjonalny jest zawsze wymogiem, co oznacza, że opisuje coś, co jest całkowicie obiektywne i można je sprawdzić za pomocą automatycznego lub ręcznego testu sprawdzającego, ale zamiast powiedzieć, co robi system, wyjaśnia, w jaki sposób system robi coś lub jak sam system jest .
¹ Zarządzanie projektami informatycznymi: stosowanie strategii zarządzania projektami do inicjatyw w zakresie oprogramowania, sprzętu i integracji, James Taylor, ISBN: 0814408117.