Programowanie zwinne
W programowaniu zwinnym (agile programming) nie postuluje się tworzenia jednego złożonego dokumentu określającego wymagania.
Niemniej faza określania określania wymagań jest w programowaniu zwinnym niezwykle ważna i kładzie się w niej szczególny nacisk na:
- stałe odkrywanie i specyfikacje wymagań dla kolejnych, częstych iteracji systemu
- stały udział przedstawicieli klienta w fazie określania wymagań (klient ocenia aktualne iteracje pod kątem zgodności z wymaganiami i określa wymagania dla kolejnej iteracji)
- zapis wymagań w postaci scenariuszy (user stories)
- przekształcanie wymagań w testy systemu
Sposób określania wymagań w programowaniu zwinnym dobrze nadaje się do sytuacji, kiedy:
- wymagania często i znacznie się zmieniają
- poprawność systemu daje się uzyskać poprzez testowanie (a nie poprzez szczegółową specyfikację) – można dostarczać wersje beta systemu użytkownikom do testowania (czy możliwe jest to w przypadku np. oprogramowania sterującego samolotem?)
Problemami podejścia do określania wymagań w programowaniu zwinnym są:
- chęć i możliwość uczestnictwa przedstawicieli klienta w określaniu wymagań
- możliwość ustalenia wymagań dla kolejnych iteracji (ustalenie priorytetów i rozwiązanie problemu zależności)