Inżynieria oprogramowania - Faza określania wymagań

1. W fazie określenia wymagań ważne jest ustalenie wymagań klienta wobec tworzonego systemu. Dokonywana jest zamiana celów klienta na konkretne wymagania  zapewniające osiągnięcie tych celów. Inaczej rzecz biorąc, ta faza jest procesem, w którym klienta wspólnie z przedstawicielem producenta konstruuje zbiór wymagań z postawionymi celami.

2. Poziomy ogólności opisu wymagań:
  • definicja wymagań (ogólny opis w języku naturalnym po rozmowie z klientem)
  • specyfikacja wymagań (częściowo ustrukturalizowany zapis wykorzystujący zarówno język naturalny oraz sformalizowane notacje)
  • specyfikacja oprogramowania (formalny opis wymagań)
3. Dobry opis wymagań powinien:
  • być kompletny i niesprzeczny
  • opisywać zewnętrzne zachowanie się systemu a nie sposób jego realizacji
  • obejmować ograniczenia przy jakich musi pracować system
  • być łatwy w modyfikacji
  • brać pod uwagę przyszłe możliwe zmiany wymagań wobec systemu
  • opisywać zachowanie systemu w niepożądanych lub skrajnych sytuacjach
4. Wymagania użytkowników powinny być wyjaśniane poprzez krytykę i porównania z istniejącym oprogramowaniem i prototypami. Wymagania użytkowników powinny być jasne, jednoznaczne, weryfikowalne, kompletne, dokładne, realistyczne oraz osiągalne.

5. Metody rozpoznania wymagań:
  • wywiady i przeglądy
  • studia na istniejącym oprogramowaniem
  • studia wymagań systemowych
  • studia osiągalności
  • prototypowanie
6. Wymagania funkcjonalne opisują czynności i operacje wykonywane przez system. Funkcje te mogą być także wykonywane przy użyciu systemów zewnętrznych. Powinny one obejmować takie kwestie jak:
  • określenie wszystkich rodzajów użytkowników systemu (korzystający z systemu, administracja)
  • określenie funkcji systemu dla każdego z rodzajów użytkowników
  • określenie systemów zewnętrznych, które będą wykorzystywane podczas działania systemu
  • ustalenie struktur organizacyjnych, przepisów prawnych, statutów, zarządzeń, instrukcji itp.
7. Metody specyfikacji wymagań:
  • język naturalny
  • formalizm matematyczny
  • język naturalny strukturalny
  • tablice, formularze
  • diagramy blokowe
  • diagramy kontekstowe
  • diagramy przypadków użycia
8. Wymagania niefunkcjonalne opisują ograniczenia, przy których system ma realizować swoje funkcje (np, wymagania dotyczące produktu, procesu oraz wymagania zewnętrzne). Powinny być one weryfikowalne i mierzalne (czyli powinna istnieć możliwość sprawdzenia lub zmierzenia czy system je rzeczywiście spełnia. - np. czas odpowiedzi, wymagana pamięć dyskowa itp.)

9. Czynniki uwzględnianie przy konstruowaniu wymagań niefunkcjonalnych:
  • możliwości systemu (zestaw funkcji)
  • objętość (np. liczba użytkowników)
  • szybkość (długość danej operacji)
  • dokładność 
  • ograniczenia
  • interfejsy komunikacyjne
  • interfejsy sprzętowe
  • interfejsy oprogramowania
  • interakcja człowiek-maszyna
  • adaptowalność (jaka będzie reakcja na zmianę wymagań)
  • bezpieczeństwo
  • odporność na awarie
  • standardy
  • zasoby
  • skala czasowa