Czy praktyki TDD i Agile mogą zapewnić optymalne rozwiązanie? (A może nawet „dobre” rozwiązanie?)
Nie dokładnie. Ale to nie jest ich cel.
Metody te zapewniają po prostu „bezpieczne przejście” z jednego stanu do drugiego, potwierdzając, że zmiany są czasochłonne, trudne i ryzykowne. Obie praktyki mają na celu zapewnienie, że aplikacja i kod są wykonalne i udowodniono, że spełniają wymagania szybciej i bardziej regularnie.
... [TDD] jest przeciwny opracowywaniu oprogramowania, które pozwala na dodawanie oprogramowania, które nie spełnia wymagań ... Kent Beck, któremu przypisuje się opracowanie lub „ponowne odkrycie” tej techniki, stwierdził w 2003 r., Że TDD zachęca do prostego projektuje i budzi zaufanie. ( Wikipedia )
TDD koncentruje się na zapewnieniu, że każda „część” kodu spełnia wymagania. W szczególności pomaga upewnić się, że kod spełnia wcześniej istniejące wymagania, a nie pozwala, aby wymagania były sterowane przez słabe kodowanie. Ale nie obiecuje, że wdrożenie jest w jakikolwiek sposób „optymalne”.
Jeśli chodzi o procesy zwinne:
Działające oprogramowanie jest podstawową miarą postępu ... Pod koniec każdej iteracji interesariusze i przedstawiciel klienta przeglądają postępy i ponownie oceniają priorytety w celu zoptymalizowania zwrotu z inwestycji ( Wikipedia )
Zwinność nie szuka optymalnego rozwiązania ; tylko działające rozwiązanie - z myślą o optymalizacji ROI . Obiecuje działające rozwiązanie wcześniej niż później ; nie „optymalny”.
Ale to OK, ponieważ pytanie jest złe.
Optymalne w tworzeniu oprogramowania są rozmyte, ruchome cele. Wymagania są zwykle zmienne i pełne tajemnic, które pojawiają się tylko, ku twojemu zawstydzeniu, w sali konferencyjnej pełnej szefów twojego szefa. „Wewnętrzna dobroć” architektury i kodowania rozwiązania jest oceniana na podstawie podzielonych i subiektywnych opinii twoich rówieśników i opinii twojego kierowniczego zwierzchnika - z których żaden tak naprawdę nie mógł wiedzieć o dobrym oprogramowaniu.
W każdym razie, TDD i Agile praktyki uznają trudności i próby w celu optymalizacji dla dwóch rzeczy, które są obiektywne i mierzalne: . Robocza V nie pracujący i prędzej v później..
I nawet jeśli mamy „pracować” i „wcześniej” jako obiektywne wskaźniki, twoja zdolność do ich optymalizacji zależy przede wszystkim od umiejętności i doświadczenia zespołu.
Do rzeczy, które można interpretować, gdy wysiłki dają optymalne rozwiązania, należą:
itp..
To, czy każda z tych rzeczy faktycznie zapewnia optymalne rozwiązania, byłoby kolejnym wielkim pytaniem!