Software Entwicklung im Bereich der digitalen Mobilität

Softwareentwicklung ist nicht zuletzt in der Welt der neuen und digitalen Mobilität eine besondere Herausforderung. Komplexe Strukturen und heterogene Architekturen müssen zu einem großen Ganzen zusammengeführt und über das Frontend für den Nutzer intuitiv zugänglich gemacht werden. Dazu muss der Datenfluss vom Frontend über Backend-Systeme und Microservices unterschiedlicher Anbieter ebenso gewährleistet sein, wie das Zusammenspiel mit Hardware-Komponenten wie in Fahrzeugen verbauten On-Board-Units (OBUs) oder Bluetooth-fähigen Fahrradschlössern.

Drei Entwickler tüfteln gemeinsam an einer Lösung

Eine weitere Herausforderung besteht in der hohen Dynamik, die Projekte in diesem Umfeld üblicherweise mit sich bringen: Viele Anforderungen sind zu Projektbeginn noch unklar und im Laufe der Umsetzung ergeben sich laufend neue Erkenntnisse, die das Projekt in eine neue Richtung treiben. Daher ist es wichtig, unsere Entwicklungsteams bestmöglich darauf vorzubereiten. Das Team und die Qualität unserer Software stehen bei uns stets im Vordergrund.

 

Methoden und Maßnahmen zur Steigerung der Softwarequalität

Um unserem Qualitätsanspruch gerecht zu werden, verwenden wir verschiedene Methoden und Maßnahmen.

 

Test Driven Development (TDD)

Vor jeder Implementierung einer neuen Funktionalität werden Tests geschrieben, die das gewünschte Verhalten erwarten. Dadurch wird sichergestellt, dass die Implementierung von vornherein testbar ist. Die Tests stellen für den Moment der Entwicklung und auch für die Zukunft sicher, dass die zu testende Implementierung den Anforderungen entspricht.

 

Manuelle Tests

Neben den automatischen Tests wird unsere Software auch umfangreich manuell getestet. Manuelle Tests sind fester Bestandteil unseres Entwicklungs- und Review-Prozesses, aber auch alle anderen Projektmitglieder, allen voran der Product Owner und der Kunde, haben die Möglichkeit jeden neuen Entwicklungsstand zu testen, bevor eine neue Version dem Nutzer zur Verfügung gestellt wird.

 

Code Reviews

Im Rahmen von Code Reviews wird jede Änderung an der Code Basis von mindestens einem weiteren Teammitglied auf Quellcode-Ebene überprüft und die Funktionalität getestet, bevor die Änderung in den Entwicklungsstand übernommen wird.

Das bringt mehrere Vorteile mit sich:

  • Steigerung der Qualität: Fehler und/oder Missverständnisse werden frühzeitig erkannt, man setzt sich intensiver mit dem eigenen Code auseinander
  • Collective Code Ownership: Das Team kennt den gesamten Code und fühlt sich auch ganzheitlich dafür verantwortlich
  • Vermeidung von Wissensinseln: Es gibt immer Mitwisser die den Code ebenfalls gut kennen und bei Zeitdruck, Urlaub oder Krankheit problemlos übernehmen können
  • Erweiterung des eigenen Horizonts: Gegenseitige Inspiration durch kontinuierlichen und offenen Austausch über den Code

 

Pair Programming

Bei anspruchsvollen Aufgaben, der Einführung neuer Teammitglieder oder Entwicklungen, die die Zusammenarbeit unterschiedlicher Disziplinen erfordern, werden Anforderungen auch mal im Team zusammen an einer Tastatur umgesetzt. Zwei Köpfe kommen schneller zum Ziel, ggf. langwierige Abstimmung können direkt erfolgen und Denkfehler werden möglichst früh erkannt.

Macbook auf einem Schreibtisch an dem entwickelt wird

Automatisierung

Als Softwareentwickler neigt man dazu, jeden Schritt den man mehr als einmal zu tun hat zu automatisieren. Durch unsere kurzen Releasezyklen und den konsequenten Einsatz von TDD ergibt sich einerseits die Notwendigkeit die für ein Release notwendigen Schritte möglichst umfassend zu automatisieren und andererseits die Möglichkeit unsere Tests jederzeit automatisiert ausführen zu lassen.

 

Continuous Integration (CI)

Jeder Entwicklungsstand durchläuft, bevor er einem händischen Code Review unterzogen wird, eine Reihe automatisierter Schritte. So wird sichergestellt, dass die Änderungen ohne Konflikte in die Code-Basis integriert werden können, der Quellcode wird statischen Analysen unterzogen, automatisierte Tests werden ausgeführt, Apps werden kompiliert. Über jeden ausgeführten Schritt wird eine Rückmeldung an das Versionsverwaltungssystem geben, so dass beim Code Review sämtliche Informationen auf einem Blick zur Verfügung stehen.

 

Continuous Deployment (CD)

Um neue Features und Änderungen schnell am Markt testen zu können, ist es wichtig, jeden Projektstand jederzeit an Tester ausliefern zu können und bereit für ein Release an die Endnutzer zu sein.

Unser Continuous Deployment Prozess sorgt genau dafür: Jeder Stand der Software wird automatisiert für die jeweiligen Plattformen (z.B. Android, iOS, Web) und Umgebungen (z. B. Staging, Production) gebaut und bereitgestellt.

Somit wissen die Tester, wann sie loslegen können und der Code kann reibungslos die vorgesehenen Prozesse durchlaufen. Große Updates und umfangreiche „Projektreleases“ gibt es bei uns inzwischen nur noch sehr selten. Unser bevorzugter Ansatz ist iterativ vorzugehen und die Software in einem inkrementellen Entwicklungszyklus (auch „Sprint“ genannt) weiter zu entwickeln und zu verbessern.

Die Bereitstellung von Entwicklungsständen von Apps erfolgt dabei im Normalfall vollständig automatisiert, entweder nach Fertigstellung eines Features oder in nächtlichen Releases. Dafür nutzen wir die von Apple und Google zum Testen von Vorabversionen zur Verfügung gestellten Dienste TestFlight und Google Play Beta Tests.
 

Entwicklungsteam

Unser Anspruch ist es, uns als Individuen sowie als Team ständig weiterzuentwickeln. Um die anspruchsvollen Projekte erfolgreich umsetzen zu können und immer auf dem neuesten Stand der Technologien und Entwicklungen zu sein, ist das unserer Meinung nach zwingend notwendig. Wir nehmen uns deshalb in regelmäßigen Abständen bewusst aus dem Arbeitsalltag heraus und richten den Fokus auf unsere Skills.

 

Code Retrospektiven

In wöchentlichen Code Retrospektiven wird sich zu aktuellen Problemstellungen aus laufenden Projekten in großer Runde ausgetauscht, es werden Erfahrungen über den Einsatz und die Anwendung neuer Technologien, Tools, Methoden, Libraries oder Paradigmen vorgestellt, ausprobiert und diskutiert. So profitiert das gesamte Team von neuen Erfahrungen und es entsteht ein gemeinsamer Werkzeugkoffer statt Inselwissen und Wildwuchs.

 

Developer Days / Code Retreats

In etwas größeren Abständen finden zudem Developer Days und Code Retreats statt. Diese erfolgen üblicherweise ohne konkreten Bezug zu Projekten oder bestimmten Programmiersprachen, beispielsweise in Form von Coding Katas, und widmen sich des Austauschs und der Verbesserung der persönlichen Programmier-Fertigkeit.

 

Wenn Sie Fragen zum Thema Entwicklung bei insertEFFECT haben können Sie sich jederzeit an unseren Experten wenden.

 

Ihr persönlicher Ansprechpartner

Manuel Robledo

Manuel Robledo
Geschäftsführer (CTO) Entwicklung
Telefon: 0911/274487-13
E-Mail: entwicklung@inserteffect.com