Continuous Integration im Web Development

Ein wichtiger Schlüsselfaktor in der erfolgreichen Softwareentwicklung ist die korrekte und zeitnahe Umsetzung aller durch den Kunden definierten Anforderungen.

Insbesondere die Softwareentwicklung ist jedoch von dem Problem betroffen, dass sich diese Anforderungen über die Laufzeit des Projektes aus verschiedenen Gründen häufig ändern.

Diese Tatsache führte dazu, dass vor allem bei traditionellen Entwicklungsprozessen, wie zum Beispiel dem Wasserfallmodell welches in Abbildung 1 dargestellt ist, bereits die Anforderungen einen der größten Risikofaktoren in der Softwareentwicklung darstellten.

Abbildung 1: Wasserfallmodell
Abbildung 1: Wasserfallmodell

Wie man anhand der Illustration sieht, sieht das Wasserfallmodell vor, dass sämtliche Anforderungen bereits in der Anfangsphase erhoben werden und im Folgenden die Grundlage für den gesamten weiteren Entwicklungsprozess dienen. Treten in der Anfangsphase Fehler auf, propagieren sich diese im schlimmsten Fall weiter bis in die Auslieferungsphase und wirken sich schlussendlich negativ auf die Kundenzufriedenheit aus.


Agile Entwicklungsprozesse

Um diesem Problem entgegenzuwirken, wird mittlerweile verstärkt auf agile Entwicklungsprozesse gesetzt. Agile Softwareentwicklung legt den Fokus verstärkt auf die Zusammenarbeit zwischen den Teams, adaptive Planung und iterative Entwicklung des Produkts, anstatt sich strikt an einen vorgegebenen Plan zu halten, der am Anfang des Projekts definiert wurde [1].

Durch den iterativen Ansatz agiler Entwicklungsmethoden ist es beispielsweise möglich, anfangs einen Feature Backlog mit allen Anforderungen zu definieren, und den Entwicklungsprozess in mehrere kurze Entwicklungszyklen, bzw. Iterationen aufzuteilen, wobei in jeder Iteration ein Teil dieser Anforderungen umgesetzt wird. Am Ende jeder Iteration kann der Kunde die aktuelle Version begutachten und sein Feedback dazu abgeben.

Dadurch werden Unklarheiten schneller aufgedeckt und es kann besser auf Änderungswünsche reagiert werden. Dieses Prinzip ist in Abbildung 2 veranschaulicht.

Abbildung 2: Agiler Entwicklungsprozess
Abbildung 2: Agiler Entwicklungsprozess

Continuous Integration

Ein mächtiges Werkzeug um diese Art der Zusammenarbeit zu erleichtern ist dabei Continuous Integration. Dazu wird ein Continuous Integration Server (CI-Server) eingerichtet, der regelmäßig den aktuellen Status des Sourcecodes einholt (z.B. von Git oder SVN). Anschließend können auf dem CI-Server automatisierte Build Steps, wie zum Beispiel Unit TestsSourcecode Analysen und auch das Deployment ausgeführt werden. Mit dieser Methode ist es möglich, beliebig kurze Auslieferungszyklen für die entwickelte Software zu erreichen. Im Extremfall kann sogar der aktuelle Status dem Kunden zur Verfügung gestellt werden, sobald eine Änderung im Sourcecode eingecheckt wurde.


Ausblick

In dieser Blogserie wird beschrieben, wie man mit Hilfe diverser Tools einen effizienten CI- Workflow für die Entwicklung von Web-Applikationen mit PHP einrichten und außerdem die Kommunikation innerhalb des Entwicklungsteams erleichtern kann. Konkret werden dabei die Tools „TeamCity“ (CI-Server) [2], „PhpStorm“ (IDE) [3], „YouTrack“ (Issue Tracker) [4] und „SonarQube“ (Codeanalyse Tool) [5] in einen Workflow integriert.


Referenzen

[1] Beck, Kent; et al. (2001). "Manifesto for Agile Software Development". Agile Alliance. http://agilemanifesto.org/ Letzter Zugriff 15. April 2014.
[2] http://www.jetbrains.com/teamcity/
[3] http://www.jetbrains.com/phpstorm/
[4] http://www.jetbrains.com/youtrack/
[5] http://www.sonarqube.org/


« Zurück zur Übersicht

« Zurück von Dipl.-Ing. Florian Bacher von Dipl.-Ing. Florian Bacher Weiter »

Zur besten Nutzung dieser Website und zur Bedienerfreundlichkeit werden Cookies verwendet. Diese Website nutzt zusätzlich Google Analytics und Scripte, welche Cookies benutzen. Wenn Sie diese Website weiter nutzen, gehen wir von Ihrem Einverständnis aus. [ Mehr zum Datenschutz ].
OK