Projekt Vorgehen und Abwicklung: Aus der Sicht des Kunden.
Bei der Umsetzung und Implementierung unserer Projekte verwenden wir agile Methoden wie beispielsweise SCRUM. Für die Umsetzung des Vorhabens kann mit dem Kunden ein agiler „Time & Material“ Vertrag oder auch ein Festpreisvertrag aufgesetzt werden. Bei der Entwicklung nach SCRUM wird die Implementierung in mehrere kurzen Phasen unterteilt (sogenannte Sprints), welche für gewöhnlich eine Laufzeit von 10 Tagen haben. Am Ende eines Sprints wird eine lauffähige Version der entwickelten Anwendung an den Kunden ausgeliefert, damit die aktuellen Änderungen von dem Kunden geprüft und abgenommen werden können.
Aufkommende Änderungswünsche (sogenannte Change Requests) werden in der Regel in einem nachfolgenden Sprint abgearbeitet. Gleichzeitig werden dabei die Aufgaben definiert, die in dem kommenden Sprint umgesetzt werden sollen. Unsere internen Prozesse zur Gewährleistung der Qualität sind dabei ebenfalls agil und werden innerhalb eines Sprints iterativ durchlaufen.
Jede Aufgabe, die in einem laufenden Sprint bearbeitet wird, durchläuft dabei mehrere Status:
- Wenn entschieden wird, dass eine Aufgabe im kommenden Sprint abgearbeitet werden soll, erhält diese initial den Status „Offen„.
- Sobald einer der Mitarbeiter des Projektteams die Bearbeitung der Aufgabe beginnt, nimmt diese den Status „In Bearbeitung“ an.
- Wenn die Arbeiten an der Aufgabe abgeschlossen sind, werden diese von einem anderen Entwickler begutachtet und getestet. Um das zu signalisieren wird der Status auf „Bereit für Dev-Review“ gesetzt.
- Der jeweilige Tester prüft dann neben der eigentlichen Funktionalität auch, ob die Qualität des Source-Codes unseren internen sowie evtl. vorhanden externen Richtlinien entspricht. Wenn dies nicht der Fall sein sollte, wird die entsprechende Aufgabe wieder in den Status „Offen“ gesetzt und muss erneut bearbeitet werden.
- Sollte die Umsetzung unseren Richtlinien genügen, wird anschließend die Korrektheit und Vollständigkeit der zugehörigen Dokumentation geprüft. Sobald diese Prüfung erfolgreich abgeschlossen wurde, ist die Aufgabe bereit für den abschließenden QA-Test. Hierbei wird erneut von einer anderen Person die Funktionalität und die Korrektheit der Umsetzung geprüft. Erst wenn alle Anforderungen korrekt umgesetzt wurden, wir die Aufgabe als abgeschlossen betrachtet und auf den Status „Done“ gesetzt.
Innerhalb unseres Entwicklungsprozesses setzen wir außerdem auf verschiedene automatisierte Testverfahren. Hierzu zählen zum einen UI-Tests, welche nach jeder neuen Änderung in unserem Versionierungs-System ausgeführt werden. Zusätzlich setzen wir Unit-Tests ein, welche automatisch angestoßen werden, um die Richtigkeit unserer Implementierung zu gewährleisten.
Die Ergebnisse unserer Arbeit werden auf drei Arten dokumentiert:
Auf Source-Code Ebene: Kommentare auf Source-Code Ebene werden zwingend vorausgesetzt, wobei wir intern auf bewährte Coding-Conventions zurückgreifen und diese einsetzen.
Auf Ticket-Ebene: Jede zu erledigende Aufgabe in einem Sprint wird innerhalb eines Ticket-Systems erfasst und bearbeitet. Aktuell setzen wir Atlassian´s Jira als Ticket-System unserer Wahl ein. Jedes Ticket enthält eine genaue Beschreibung der umzusetzenden Anforderungen. Wenn am Ende des Arbeitstages ein Ticket nicht vollständig abgearbeitet werden kann, wird von dem jeweiligen Entwickler der aktuelle Stand der Arbeiten innerhalb des Tickets dokumentiert. Dazu gehören u. a. was bereits erledigt wurde, wie viel Zeit in die Bearbeitung geflossen ist, welche eventuellen Probleme dabei aufgetreten sind sowie mögliche Auswirkungen auf andere Aufgaben oder den aktuellen Sprint im Allgemeinen.
Dokumentation innerhalb eines Projekt-Wikis: Zusätzlich erfolgt die Dokumentation des Projektes innerhalb eines Projekt-Wikis. Hier werden zum einen Projekt-bezogenen Details festgehalten, wie beispielsweise die beteiligten Stakeholder, die Ziele, die Anforderungen und Spezifikationen sowie Beschreibungen ausgewählter Teile der Software-Architektur. Als Wiki-System verwenden wir das bewährte Atlassian´s Confluence.
Weitere Infos: