Unsere Methode: Kontinuierliche Integration
Dank eines umfassenden Ansatzes, der sich auf den ganzen Lebenszyklus einer Anwendung richtet, beträgt bei Canoo die Erfolgsquote für Projekte bemerkenswerte 100 Prozent.

Was ist kontinuierliche Integration?
Kontinuierliche Integration bezeichnet eine Reihe von Softwareentwicklungsverfahren, die die Auslieferung von Software dadurch beschleunigen, dass sie die Integrationszeiten reduzieren. Wenn ein Entwickler etwas ändert, holt er eine Kopie des Codes aus der aktuellen Version des zentralen Projektarchivs. In dem Maße, in dem andere Entwickler geänderten Code ins Projektarchiv zurücklegen, unterscheidet sich diese Kopie immer mehr vom Projektarchiv-Code.
Wenn Entwickler Code ins Projektarchiv zurücklegen wollen, müssen sie diesen Code also zuerst updaten, damit er alle in der Zwischenzeit im Projektarchiv vorgenommenen Änderungen enthält. Je mehr Änderungen im Projektarchiv vorkommen, desto größer ist der Aufwand für die Entwickler, bevor sie ihre eigenen Änderungen zurücklegen können.
Irgendwann ist dann der Unterschied zwischen dem Projektarchiv und dem Code, mit dem ein Entwickler arbeitet, so groß, dass er in die sogenannte "Integrationshölle" gerät: Die Integration dauert länger als die eigentlichen Änderungen. Im schlimmsten Fall müssen die Änderungen verworfen und die Arbeit neu gemacht werden. Kontinuierliche Integration hingegen bedeutet, dass man früh und häufig integriert, um so die "Integrationshölle" zu umgehen. Das Endziel ist, Kosten und Zeit zu sparen.
Vorteile
- Wenn Unit-Tests nicht erfolgreich verlaufen oder wenn ein Fehler festgestellt wird, können die Entwickler einfach auf fehlerfreien Code zurückgreifen, ohne Zeit mit Fehlerbeseitigung zu verlieren.
- Integrationsprobleme werden kontinuierlich entdeckt und behoben keine unerwarteten Verzögerungen in letzter Minute
- Frühe Warnung bei defektem / inkompatiblem Code
- Frühe Warnung bei konfligierenden Änderungen
- Unmittelbare Unit-Tests für alle Änderungen
- Ständige Verfügbarkeit einer "aktuellen" Version für Test-, Demo- oder Releasezwecke
- Entwicklerdisziplin der negative Effekt, der beim Einchecken von unvollständigem oder defektem Code entsteht, spornt zu kürzeren Feedbackzyklen an.