18 Aug 2016
LOCAL FLAVOUR

Technologie: So kommen neue Features in die car2go-App

Jedes agile Entwicklerteam verfolgt das Ziel, seinen Kunden auf wiederholbare und zuverlässige Weise einen Mehrwert zu liefern. Doch bei der Entwicklung von Software läuft nicht immer alles wie geplant. Deshalb muss man schnell auf Veränderungen reagieren, sie genau betrachten und sich anpassen, um etwas Neues schaffen und Nutzer überzeugen zu können. Unsere Philosophie liegt darin, in jedem Sprint (also Zyklus der Funktionsimplementierung) eine neue veröffentlichungsfähige Produktversion (Inkrement) zu erstellen und am Ende einen Knopf zu drücken und Kaffee zu trinken, während ein Wunder geschieht. 

 

Aber wie kommt es zu diesem Wunder und wie genau automatisieren wir die Freigabe einer neuen App-Version im Zwei-Wochen-Takt, die bei 99,9 Prozent aller Nutzer ohne Abstürze läuft? Produktinkremente entstehen – vereinfacht ausgedrückt – durch die fortlaufende Integration neuer Features und automatisierte Tests, während sichergestellt wird, dass jeder Build aus einem CI-Branch (Continuous Integration) theoretisch freigegeben werden könnte.

 

Im Folgenden wollen wir uns den Lebenszyklus eines Features von der Planung über die Entwicklung bis hin zur Verteilung an die Nutzer im Detail anschauen.

 

process

 

Planungsphase

Am Anfang stehen natürlich jede Menge Ideen für neue Features, die uns über verschiedene Kanäle von car2go-Fans, aber auch von Stakeholdern, Kunden und Kollegen erreichen. Diese Ideen werden zunächst priorisiert und dann im Backlog festgehalten (mehr dazu vielleicht in einem künftigen Beitrag).

Im nächsten Schritt werden die Ideen in User-Storys übersetzt, wobei unser Designer-Team sich ein Verständnis dieser Software-Anforderungen verschafft und Entwürfe zu Papier bringt. Nach ein paar Durchgängen testen echte Nutzer einen ersten Wireframe-Prototyp, damit wir erfahren, ob wir auf dem richtigen Weg sind.

Anschließend analysieren wir die User-Story aus technischer Sicht, wobei der Product Owner und das Entwicklungsteam deren Komplexität prüfen und anpassen. Für die Fehler- und Projektverfolgung kommt Jira von Atlassian zum Einsatz.

Entsprechend den Prioritäten beginnen wir dann mit dem Sprint-Abschnitt, stimmen die Details der Implementierung ab und teilen die Story in plattformspezifische Aufgaben auf.

 

Entwicklungsphase

Um die User-Story zu implementieren und zu testen, führen wir die einzelnen Aufgaben in Feature-Branches durch, wofür wir Gitflow nutzen. Sobald alles erledigt ist, wird es Zeit, dem Design den letzten Schliff zu verpassen und zu prüfen, ob alle Abnahmekriterien erfüllt sind. Dann erstellen wir einen Pull-Request und stellen sicher, dass alle Integrationstests bestanden wurden. Erst wenn weitere Entwickler die neue Story abgesegnet haben, integrieren wir sie in unseren CI-Branch. Für die Zusammenarbeit nutzen wir dabei Stash von Atlassian.

 

Verteilungsphase

Zu Beginn der letzten Phase testen wir das fertige Feature manuell im Team, um mögliche Fehler aufzudecken. Sobald alle Fehler behoben sind, kommt es zum Code-Freeze. Kann die neue App-Version dann freigegeben werden, startet ein Entwickler einen Jenkins-Job, der automatisierte Tests durchführt und eine Binärdatei erstellt und signiert und schließlich auf eine App-Plattform hochlädt.

Die Binärdatei kann daraufhin von Alpha-Testern heruntergeladen werden, welche die Integration des neuen Features anhand eines Fragebogens manuell testen. Finden sie keine Fehler, die der offiziellen Freigabe im Weg stehen würden, folgt ein offener Beta-Test. Nach weiteren umfassenden Tests und der Auswertung des Feedbacks aus unterschiedlichen Kanälen entscheiden der Product Owner und die Stakeholder schließlich, ob die neue App-Version veröffentlicht werden kann.

Die folgenden Zahlen veranschaulichen ganz gut, wie sich unser Prozess im Laufe der Zeit entwickelt hat: Die car2go-App wurde seit 2012 insgesamt 47 Mal aktualisiert – 5 Mal 2012, 6 Mal 2013, 10 Mal 2014, 18 Mal 2015 und dieses Jahr bislang 8 Mal (Hotfix-Releases fließen nicht in die Statistik ein). Die aktuelle Version der car2go-App gibt es für Android, iOS, BlackBerry und Windows Phone. Vergesst nicht, die App regelmäßig zu aktualisieren, damit ihr immer die neuesten Features nutzen könnt!

Zu guter Letzt habe ich in diesem Beitrag einige Scrum-Leitlinien angedeutet, die sich für mein Team als nützlich erwiesen haben. Ein wirkliches Patentrezept gibt es jedoch nicht, zudem spiegelt dieser Beitrag nur eine Momentaufnahme unseres ständig verbesserten Prozesses wider, der schon wieder ganz anders aussehen kann, wenn ihr das hier lest.

 

Fragen oder Anregungen? Wir tauschen uns gerne dazu mit Euch aus!