Ein bisschen Hintergrundwissen - wir sind ein kleines Team von 5 RAD-Entwicklern, die für die interne Softwareentwicklung in einem großen Nicht-Software-Unternehmen verantwortlich sind. "Interne Software" unterscheidet sich von einer Desktop-.NET-Anwendung, die MSSQL-Server als Backend für Python-Skripte verwendet, die im Hintergrund für MS Word-Dokumente und -Vorlagen ausgeführt werden - ein Zoo von Technologien.
Das gesamte Team besteht aus Allroundern, die in der Lage sind, die Anforderungen der Benutzer zu erfassen, zu codieren, zu testen und in der Produktion einzusetzen. Sobald die Software in der Produktion ist, wird sie von einem anderen Team betreut, aber es fällt uns normalerweise leicht, einzugreifen, wenn etwas schief geht.
Bisher klingt alles gut, aber es gibt ein Problem: Wir müssen ein RAD-Team häufig freigeben, und es vergeht kein Tag, an dem wir neue Versionen von ein oder zwei Anwendungen freigeben (oder es könnte sich um ein Skript oder ein aktualisiertes Word-Dokument handeln) , C ++ - Konsolen-App usw.) in die Produktion ein. Wir führen Entwicklungstests durch und beziehen Endbenutzer mit ein, indem sie die Software in einer UAT-Umgebung ausführen lassen ...
... aber die Bugs schleichen sich trotzdem in die Produktion ein. Die Benutzer verstehen, dass diese Fehler und die gelegentliche Instabilität der Preis sind, den sie dafür zahlen, dass sie wirklich schnell das bekommen, was sie wollen, aber gleichzeitig haben wir darüber nachgedacht - vielleicht könnten wir unsere Entwicklungs- oder Veröffentlichungspraktiken verbessern, um die Stabilität des zu verbessern Software und reduzieren Sie die Anzahl der Fehler, die wir beim Hinzufügen einer neuen Funktionalität einführen.
Das Gute ist, dass wir nicht wirklich viel von den Prozessen haben, daher sollte es einfach sein, mit der Verbesserung zu beginnen. Das Schlechte ist, dass wir als kleines RAD-Team nicht wirklich viel Zeit und Ressourcen haben, um sie umzusetzen etwas Großes, aber wir haben über die folgenden Initiativen nachgedacht und würden uns über Feedback, Tipps, Hinweise und Vorschläge freuen.
Gegenwärtig werden einige der Anwendungen direkt nach dem Entwicklertest in die Produktion freigegeben, wobei der Benutzerakzeptanztest umgangen wird. Diese Praxis sollte eingestellt werden und selbst eine kleine Änderung muss von einem Endbenutzer getestet werden. Jede Anwendung verfügt über einen speziellen Beta-Tester, der von den Endbenutzern ausgewählt wird. Erst nachdem ein Beta-Tester die neue Version freigegeben hat, wird sie vom Test in die Produktionsumgebung befördert.
Wir führen keine Codeüberprüfungen durch, aber wir werden Codeüberprüfungen durchführen, bevor einer von uns den Änderungssatz eincheckt. Ich habe auch über eine "Rollout-Überprüfung" nachgedacht - im Grunde muss einer der Entwickler neben dem anderen sitzen und zusehen, wie er / sie das Software-Rollout durchführt (Binärdateien kopieren, Konfigurationen aktualisieren, neue Tabelle zur Datenbank hinzufügen usw.) - normalerweise nur Dauert 5-10 Minuten, so dass eine "Rollout-Überprüfung" nicht viel Zeit in Anspruch nimmt.
So verkürzen Sie die Rollback-Zeit, wenn sich herausstellt, dass eine neue Version fehlerhaft genug ist, um aus der Produktion genommen zu werden und durch eine gute frühere Version ersetzt zu werden. Wir speichern eine Historie aller Releases (als Binärdateien), um es einfach zu machen, eine Version zurück zu gehen - und obwohl es schnell geht, "neu veröffentlichte Binärdateien mit Binärdateien einer früheren Version zu überschreiben", ist es immer noch ein manueller Prozess, der fehleranfällig ist und manchmal fordernd "was ist, wenn der Rollback fehlschlägt und das System unbrauchbar anstatt fehlerhaft macht".
Hier sind uns die Ideen ausgegangen und wir würden gerne Ihr Feedback dazu erhalten. Wenn Sie uns einige einfache Tipps zur Verbesserung von Release- und Entwicklungsprozessen geben könnten, wäre das großartig.