Deine Punkte klingen mehr nach Wasserfall. Alles bis ins kleinste Detail vorher auskaspern und dann wird es genau so durchgezogen, wie es die Dokumente verlangen. Du läufst bei sowas immer ein Stück weit Gefahr, dass du auf Probleme stößt, die du nicht vorhergesehen hast (z.B. auf Grund mangelnder Erfahrung). Da du ja allein an dem Projekt arbeitest oder zumindest der einzige stakeholder bist, kannst du zumindest ausschließen, dass sich ständig die Anforderungen ändern.
Die Alternative zu diesem Weg wäre eher
Top-Down vorzugehen, also erst einmal Meter machen, einen Durchstich zu einem Prototypen, den man dann in mehreren Iterationen verfeinert. Dieser Ansatz erzwingt aber quasi
TDD, um sicheres Refactoring zu erlauben und nicht ständig neue Bugs einzubauen. Im Zuge dessen, schau dir unbedingt Versionskontrolle (SVN oder Git) und Continuous Integration (z.B.
Jenkins) an.
Zum Testing - klar könntest du Prototypen rausgeben, so nach
diesem Schema. Am wichtigsten finde ich aber die eigene automatische Testabdeckung, auch wenn du nicht test-first (siehe TDD) entwickelst. Solche Tests sind durchaus Mehraufwand, ja. Es rechnet sich aber, weil du dadurch direkt viele viele Fehler ausschließt.
Die Tests durch Menschen solltest du eher unter anderen Aspekten betrachten. Kommen die User mit deiner Software zurecht, d.h. hast du das GUI intuitiv genug gestaltet? Fehlen wichtige Features, die die User veranlassen würden, deine Software nicht mehr zu benutzen?
Das sollten so die wichtigsten Stichpunkte sein, damit du dich weiter umsehen kannst. Ich beschäftige mich selbst gerade mehr mit dem agilen Weg und TDD. Letzteres erfordert aber viel Disziplin beim Design deiner Software. Du merkst dabei sehr schnell, welcher Code schlecht testbar ist.