Egal, wie ansprechend, benutzerfreundlich und funktional eine Software bei Inbetriebnahme ist, während ihrer Lebensdauer wird sie unweigerlich mit sich ändernden Anforderungen konfrontiert. Darum ist Zukunftssicherheit so wichtig. Eine langlebige Software muss einfach zu warten, anzupassen und zu erweitern sein.
Bei der Auswahl einer neuen Softwarelösung neigen Unternehmen oft dazu, sich für das System mit den niedrigsten Anschaffungskosten zu entscheiden. Durchaus nachvollziehbar, kann sich im Nachhinein aber rächen. Die Kosten für Betrieb und Wartung von Software – Updates, Fehlerbehebung usw. – können enorm sein und bis zu 15 oder sogar 20 % der initialen Kosten pro Jahr betragen. Rechnet man dazu noch die Kosten für Ausfallzeiten aufgrund von Softwareproblemen, wird deutlich, warum es aus Kostengesichtspunkten sinnvoll ist, in eine hochwertige, zukunftssichere Software zu investieren. Die Wartungskosten unserer Software sind durchschnittlich 30 % niedriger als bei anderen Systemen.
Die Kosten für Betrieb und Wartung von Software – Updates, Fehlerbehebung usw. – können enorm sein und bis zu 15 oder sogar 20 % der initialen Kosten pro Jahr betragen.
Die Grundlage für hohe Qualität und Zukunftssicherheit muss bereits in den frühen Phasen eines Softwareprojekts geschaffen werden. Im Folgenden erfahren Sie, wie die Teams unserer Digital Factory arbeiten, um Software zu entwickeln, die auch auf lange Sicht gut funktioniert – was immer die Zukunft bringt:
1. Auf Business Value fokussieren:
Cegeka Foundation Phase
Unsere Entwicklungsteams lieben (neue) Technologie. Dennoch steht bei uns in der Softwareentwicklung immer der Kunde im Mittelpunkt. Zukunftssichere Software muss in erster Linie die Erwartungen des Kunden erfüllen, heute und in Zukunft. Um das zu erreichen, beginnen wir jedes komplexe Entwicklungsprojekt mit einer Foundation Phase: eine Reihe von Workshops, die helfen zu verstehen, was die Business Driver des Kunden sind und welche Software(-architektur) benötigt wird, um diese Anforderungen zu erfüllen.
2. Bewährte, zukunftssichere Technologien auswählen
Bei der Festlegung des technischen Umfangs, d.h. der erforderlichen Architektur und des Technologie-Stacks, ist die Zukunftssicherheit der Technologie ein wesentliches Auswahlkriterium (Sprachen, Frameworks, Methodiken etc.). Dank jahrelanger Erfahrung und ständiger Weiterbildung kennen unsere Software Engineers die neuesten und besten Trends und Technologien. Noch wichtiger ist aber: Sie wissen, welche Technologien gut unterstützt und auch auf längere Sicht Bestand haben werden. Diese nutzen wir als solides Fundament für die neue Softwarelösung.
3. Code schreiben:
die Stärke von Disziplin, Teamwork und Einfachheit
Die Zukunftssicherheit von Software hängt vor allem von der Qualität der Softwarearchitektur und des Codes ab. Hochwertiger Code lässt sich einfacher warten, anpassen, um neue Module oder Funktionalitäten ergänzen oder in einer neuen Umgebung ausführen. Unsere Softwareentwickler halten sich konsequent an Best Practices, um eine hohe Codequalität zu erzielen:
- Ein klarer, wiederverwendbarer Code, der für Kollegen leicht zu verstehen, einfach zu testen und zu lesen sowie selbsterklärend für diejenigen ist, die den Code zukünftig pflegen.
- Die Zusammenarbeit von zwei Entwicklern als Team (Pair Programming) hilft, einen qualitativ besseren Code zu produzieren, der von anderen leichter gelesen und bei Bedarf geändert werden kann.
- Der gesamte geschriebene Code gehört dem ganzen Team (Collective Code Ownership). Das bedeutet, dass jeder Entwickler des Teams jeden Codeabschnitt bearbeiten und mit der Arbeit an der nächsten Iteration beginnen kann.
- Den Code systematisch organisiert und übersichtlich zu halten, verbessert seine Lesbarkeit und Wartbarkeit. Auf diese Weise minimieren wir technische Schulden: das Risiko, dass Fehler aus der Vergangenheit behoben werden müssen, bevor neue Funktionen hinzugefügt werden können (Kontinuierliches Refactoring).
- Kontinuierliche Tests von Projektbeginn an – sowohl automatisiert als auch manuell – helfen den Entwicklern, Fehler oder Abweichungen vom Umfang so schnell wie möglich zu erkennen. Darüber hinaus unterstützt das kontinuierliche Testen schnelle Anpassungen an der Software, ohne dass Auswirkungen auf den bestehenden Code befürchtet werden müssen. Mit einem kurzen Test lässt sich überprüfen, ob die gesamte Anwendung weiterhin funktioniert. Zusätzlich überwachen wir laufend die Wartbarkeit des Codes, z.B. mit Codeanalysetools.
Keep it simple! Das Schreiben von möglichst einfachem Code stellt sicher, dass Software leicht zu warten ist: Jeder kann Änderungen vornehmen und das System um neue Funktionen erweitern.
4. Feedback geben - in kurzen, iterativen Feedbackschleifen
Unsere Entwickler arbeiten in kurzen Sprints. So können sie problemlos Änderungen am Code vornehmen, ohne Zeitplan und Budget zu stark zu beeinträchtigen. In regelmäßigen Abständen erfolgt eine Abstimmung zur Festlegung der Prioritäten – falls nötig, indem wir die finanziellen Auswirkungen eines zusätzlichen Features oder eines gemeldeten Fehlers mit den Kosten für deren Entwicklung oder Behebung vergleichen.
5. Wissen teilen
Best Practices wie Pair Programming, Collective Code Ownership, Code Reviews sowie allgemein ein agiler Entwicklungsansatz, erleichtern den Wissensaustausch im gesamten Team. Auf diese Weise ist gewährleistet, dass jeder aus dem Team die Software des Kunden in- und auswendig kennt – und nicht nur ein Einzelner, der schon lange daran arbeitet. Zudem arbeiten wir eng mit unseren Kunden zusammen und transferieren Wissen, um die Kontinuität ihrer Systeme zu gewährleisten.