Jaka jest różnica między wymaganiami funkcjonalnymi a niefunkcjonalnymi? [Zamknięte]

283

Jaka jest różnica między wymaganiami funkcjonalnymi a niefunkcjonalnymi w kontekście projektowania systemu oprogramowania?

Podaj przykłady dla każdego przypadku.

Omid7
źródło
@TravisJ Znowu trzymajmy tag na pytaniach, aż skończymy z pierwszą fazą wypalania tagów.
TylerH

Odpowiedzi:

525

Wymóg funkcjonalny opisuje, co powinien zrobić system oprogramowania, podczas gdy wymagania niefunkcjonalne ograniczają sposób, w jaki system to zrobi.

Pozwól mi rozwinąć.

Przykładem wymagania funkcjonalnego byłoby:

  • System musi wysłać wiadomość e-mail za każdym razem, gdy spełniony jest określony warunek (np. Zamówienie jest złożone, klient rejestruje się itp.).

Powiązanym niefunkcjonalnym wymaganiem dla systemu może być:

  • E-maile powinny być wysyłane z opóźnieniem nie większym niż 12 godzin od takiego działania.

Wymóg funkcjonalny opisuje zachowanie systemu w odniesieniu do jego funkcjonalności. Wymóg niefunkcjonalny opracowuje charakterystykę wydajności systemu.

Zazwyczaj wymagania niefunkcjonalne mieszczą się w obszarach takich jak:

  • Dostępność
  • Pojemność, bieżąca i prognoza
  • Spełnienie
  • Dokumentacja
  • Odzyskiwanie po awarii
  • Wydajność
  • Skuteczność
  • Rozciągliwość
  • Odporność na awarie
  • Interoperacyjność
  • Konserwowalność
  • Prywatność
  • Ruchliwość
  • Jakość
  • Niezawodność
  • Sprężystość
  • Czas odpowiedzi
  • Krzepkość
  • Skalowalność
  • Bezpieczeństwo
  • Stabilność
  • Wsparcie
  • Testowalność

Pełniejsza lista jest dostępna pod wpisem Wikipedii w sprawie wymagań niefunkcjonalnych .

Wymagania niefunkcjonalne są czasami definiowane w kategoriach wskaźników (tj. Czegoś, co można zmierzyć w systemie), aby uczynić je bardziej namacalnymi. Wymagania niefunkcjonalne mogą również opisywać aspekty systemu, które nie odnoszą się do jego wykonania, ale raczej do jego ewolucji w czasie (np. Łatwość konserwacji, rozszerzalność, dokumentacja itp.).

LBushkin
źródło
Odłożę się oczywiście na twoją reputację i historię zawodową (na którą patrzyłem przed napisaniem tego): czy twój przykład niefunkcjonalnych wymagań nie może być uważany za zachowanie? A może chodzi ci bardziej o to, że niefunkcjonalne wymagania opisują ograniczenia wokół zachowań?
Thomas
1
Aby nieco wyjaśnić moje pytanie (i może nie być to możliwe): czy istnieje sposób na lepsze wyjaśnienie granicy tego, co stanowi zachowanie?
Thomas
plus 1 za dobry przykład systemu e-mail. :)
Ahtisham
33

wymagania funkcjonalne to główne rzeczy, których użytkownik oczekuje od oprogramowania, na przykład jeśli aplikacja jest aplikacją bankową, aplikacja powinna móc utworzyć nowe konto, zaktualizować konto, usunąć konto itp. wymagania funkcjonalne są szczegółowe i określone w projekcie systemu

Wymóg niefunkcjonalny nie jest prostym wymogiem systemu, ale jest związany z użytecznością (w pewien sposób), na przykład w przypadku aplikacji bankowej główny wymóg niefunkcjonalny będzie dostępny, aplikacja powinna być dostępna 24/7 bez przestojów Jeśli to możliwe.

pulasthi
źródło
27

Wymagania funkcjonalne

  1. Wymagania funkcjonalne określają funkcję, którą musi spełniać system lub jego komponent. Można to udokumentować na różne sposoby. Najczęstsze z nich to pisemne opisy w dokumentach i przypadki użycia.

  2. Przypadkami użycia mogą być tekstowe listy wyliczeniowe, a także diagramy opisujące działania użytkownika. Każdy przypadek użycia ilustruje scenariusze behawioralne według jednego lub więcej wymagań funkcjonalnych. Często jednak analityk zaczyna od wyszukania zestawu przypadków użycia, z których analityk może wywnioskować wymagania funkcjonalne, które należy wdrożyć, aby umożliwić użytkownikowi wykonanie każdego przypadku użycia.

  3. Wymagania funkcjonalne są tym, co powinien osiągnąć system . Może być

    • Obliczenia
    • Szczegóły techniczne
    • Manipulowanie danymi
    • Przetwarzanie danych
    • Inne specyficzne funkcje
  4. Typowe wymaganie funkcjonalne będzie zawierało unikalną nazwę i numer, krótkie streszczenie oraz uzasadnienie. Informacje te są wykorzystywane, aby pomóc czytelnikowi zrozumieć, dlaczego wymaganie jest potrzebne, i aby śledzić wymaganie poprzez rozwój systemu.

Wymagania niefunkcjonalne

LBushkin wyjaśnił już więcej na temat wymagań niefunkcjonalnych. Dodam więcej.

  1. Wymagania niefunkcjonalne to wszelkie inne wymagania niż wymagania funkcjonalne. Są to wymagania określające kryteria, które można wykorzystać do oceny działania systemu, a nie konkretnych zachowań .

  2. Wymagania niefunkcjonalne mają postać „system powinien być” , ogólną właściwością systemu jako całości lub określonego aspektu, a nie określoną funkcją. Ogólne właściwości systemu zwykle wskazują na różnicę między tym, czy projekt rozwojowy się powiódł, czy nie.

  3. Wymagania niefunkcjonalne - można je podzielić na dwie główne kategorie:

    • Cechy wykonania , takie jak bezpieczeństwo i użyteczność, które można zaobserwować w czasie wykonywania.
    • Cechy ewolucji , takie jak testowalność, łatwość konserwacji, rozszerzalność i skalowalność, które są zawarte w statycznej strukturze systemu oprogramowania.
  4. Wymagania niefunkcjonalne nakładają ograniczenia na opracowywany produkt, proces opracowywania i określają zewnętrzne ograniczenia, które musi spełniać produkt.
  5. IEEE Std 830 - 1993 Zapotrzebowania 13 niefunkcjonalne mają być zawarte w oprogramowaniu Wymagania dokumentu.
  1. Wymagania dotyczące wydajności
  2. Wymagania dotyczące interfejsu
  3. Wymagania operacyjne
  4. Wymagania dotyczące zasobów
  5. Wymagania weryfikacyjne
  6. Warunki przyjęcia
  7. Wymogi dokumentacyjne
  8. Wymagania bezpieczeństwa
  9. Wymagania dotyczące przenośności
  10. Wymagania jakościowe
  11. Wymagania dotyczące niezawodności
  12. Wymagania dotyczące konserwacji
  13. Wymagania bezpieczeństwa

To, czy wymaganie jest wyrażone jako wymaganie funkcjonalne czy niefunkcjonalne, może zależeć:

  • na poziomie szczegółowości, który ma być zawarty w dokumencie wymagań
  • stopień zaufania, jaki istnieje między klientem systemu a deweloperem systemu.

Dawny. System może być wymagany do przedstawienia użytkownikowi wyświetlania liczby rekordów w bazie danych. Jest to wymóg funkcjonalny. Jak aktualna [aktualizacja] musi być ta liczba, jest wymogiem niefunkcjonalnym. Jeśli liczba musi być aktualizowana w czasie rzeczywistym, architekci systemu muszą upewnić się, że system jest w stanie zaktualizować liczbę [wyświetlanych] rekordów w akceptowalnie krótkim odstępie czasu od zmiany rekordów.

Bibliografia:

  1. Wymagania funkcjonalne
  2. Wymóg niefunkcjonalny
  3. Kwantyfikacja i identyfikowalność wymagań
Somnath Muluk
źródło
1
dobrze wyjaśnione. Dzięki!
Arslan Ramay
1
Ładna odpowiedź z dobrymi referencjami. Chcę tylko dodać bardziej zaktualizowany standard, ponieważ IEEE 830-1993 został zastąpiony. Najnowszym standardem jest ISO / IEC / IEEE 29148: 2018 „Inżynieria systemów i oprogramowania - Procesy cyklu życia - Inżynieria wymagań” ( iso.org/standard/72089.html )
wylogowanie
8

Wymagania funkcjonalne to te, które są związane z techniczną funkcjonalnością systemu.

wymóg niefunkcjonalny to wymóg określający kryteria, które można zastosować do oceny działania systemu w określonych warunkach, a nie określonych zachowań.

Na przykład jeśli rozważasz witrynę zakupów, dodawanie produktów do koszyka, przeglądanie różnych produktów, stosowanie ofert i ofert oraz skuteczne składanie zamówień spełnia wymagania funkcjonalne.

Gdzie jako wydajność systemu w godzinach szczytu, czas potrzebny systemowi na pobranie danych z bazy danych, bezpieczeństwo danych użytkownika, zdolność systemu do obsługi, jeśli duża liczba użytkowników logujących się spełnia wymagania niefunkcjonalne.

Maruthi Srinivas
źródło
Doskonała odpowiedź.
Iftekhar
3

WYMAGANIA FUNKCJONALNE działania, które musi wykonać system

  • biznes korzysta z funkcji wykonywanych przez użytkowników
  • przykład przypadków użycia, jeśli rozwijasz wymagane funkcje systemu płac
  • generować elektroniczne transfery środków
  • kwoty prowizji obliczeniowej
  • obliczyć podatki od wynagrodzeń
  • zgłosić odliczenie podatku do IRS
ABDUL
źródło
2

Myślę, że funkcjonalny wymóg jest po stronie klienta dla programisty, co dotyczy funkcjonalności dla użytkownika przez oprogramowanie, a niefunkcjonalny wymóg jest od programisty do klienta, tj. Wymóg nie jest podany przez klienta, ale programista zapewnia, aby system działał płynnie, np. bezpieczeństwo, ochrona, elastyczność, skalowalność, dostępność itp.

Rajnor DS
źródło