Können TDD- und Agile-Verfahren eine optimale Lösung versprechen? (Oder sogar eine "gute" Lösung?)
Nicht genau. Aber das ist nicht ihr Zweck.
Diese Methoden bieten lediglich einen "sicheren Übergang" von einem Zustand in einen anderen, wobei anerkannt wird, dass Änderungen zeitaufwändig, schwierig und riskant sind. Beide Vorgehensweisen zielen darauf ab, sicherzustellen, dass die Anwendung und der Code funktionsfähig sind und nachweislich die Anforderungen schneller und regelmäßiger erfüllen.
... [TDD] lehnt die Softwareentwicklung ab, mit der Software hinzugefügt werden kann, die nachweislich nicht den Anforderungen entspricht ... Kent Beck, dem zugeschrieben wird, dass er die Technik entwickelt oder "wiederentdeckt" hat, erklärte 2003, dass TDD simple fördert entwirft und schafft Vertrauen. ( Wikipedia )
TDD konzentriert sich darauf, sicherzustellen, dass jeder Codeabschnitt die Anforderungen erfüllt. Insbesondere wird sichergestellt, dass der Code den bereits bestehenden Anforderungen entspricht, anstatt dass die Anforderungen durch eine schlechte Codierung bestimmt werden. Es gibt jedoch kein Versprechen, dass die Implementierung in irgendeiner Weise "optimal" ist.
Wie bei agilen Prozessen:
Arbeitssoftware ist das primäre Maß für den Fortschritt ... Am Ende jeder Iteration überprüfen die Stakeholder und der Kundenvertreter den Fortschritt und bewerten die Prioritäten neu, um die Kapitalrendite zu optimieren ( Wikipedia )
Beweglichkeit sucht nicht nach einer optimalen Lösung ; Nur eine funktionierende Lösung - mit der Absicht, den ROI zu optimieren . Es verspricht eher früher als später eine funktionierende Lösung ; kein "optimaler".
Aber das ist in Ordnung, denn die Frage ist falsch.
Optimale Werte in der Softwareentwicklung sind unscharfe, sich bewegende Ziele. Die Anforderungen sind in der Regel im Fluss und voller Geheimnisse, die nur zu Ihrer großen Verlegenheit in einem Konferenzraum mit vielen Vorgesetzten Ihres Chefs auftauchen. Und die "eigentliche Güte" der Architektur und Codierung einer Lösung wird durch die geteilten und subjektiven Meinungen Ihrer Kollegen und derjenigen Ihres Manager-Overlords bewertet - von denen möglicherweise keiner etwas über gute Software weiß.
TDD- und Agile-Praktiken erkennen zumindest die Schwierigkeiten an und versuchen, zwei Dinge zu optimieren, die objektiv und messbar sind: Arbeiten gegen Nichtarbeiten und Früher gegen Später.
Und selbst wenn wir "arbeiten" und "früher" als objektive Metriken haben, hängt Ihre Fähigkeit zur Optimierung in erster Linie von den Fähigkeiten und der Erfahrung eines Teams ab.
Zu den Dingen, die Sie als Bemühungen zur Erzielung optimaler Lösungen auffassen könnten , gehören:
etc..
Ob aus all diesen Dingen tatsächlich optimale Lösungen hervorgehen, wäre eine weitere wichtige Frage!