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