Développement de logiciels durables : maîtriser la complexité

«Les idées sont faciles, l'exécution est primordiale» - c'est un dicton bien connu de l'influent directeur d'Intel et investisseur technologique John Doerr, avec lequel il souligne l'importance particulière du plus haut niveau niveau de mise en œuvre – compétence en matière d’innovations technologiques. La raison de cette évaluation est qu’un risque existentiel dans le développement de produits technologiques est la complexité sans cesse croissante. Des extensions fonctionnelles sophistiquées, des départs de porteurs de connaissances ou des changements fondamentaux dans les bases de production sont des facteurs de complexité qui sont souvent reconnus trop tard ou traités avec une détermination insuffisante. La gestion de la complexité est donc une tâche centrale dans la production de produits technologiques.

Dans le développement de logiciels, les suggestions permettant de maîtriser la complexité sont tout sauf nouvelles. Différents modèles de processus ont été discutés dès les années 1950 et au cours des 20 dernières années, le développement logiciel agile a eu une grande influence sous de nombreuses formes, s'étendant au-delà du monde du logiciel. Malgré des avancées méthodologiques indéniables, le nombre de projets logiciels ayant échoué reste élevé : des projets sont annulés, les exigences centrales restent insatisfaites ou sont bien en deçà des attentes, ou encore le logiciel ne peut plus être développé et adapté aux nouvelles exigences beaucoup plus tôt que prévu.

Le modèle de processus de développement de logiciels chez SMA est fortement influencé par l'idée du produit. Le cycle de vie à long terme du logiciel est au centre du processus de production. Des exigences élevées en matière de qualité, de maintenabilité et de fiabilité de livraison répondent à l'exigence de mettre en œuvre de nouveaux développements innovants et ambitieux.

Cette tâche présente un niveau élevé de complexité inhérente et nécessite des outils appropriés. Un outil central à cet égard est l’automatisation d’activités initialement manuelles.

Un exemple est le processus de création de nouvelles versions de Viriato, qui est désormais hautement automatisé : les branches appropriées sont créées pour tous les composants et documents versionnés pertinents dans le système de contrôle de version, les tâches sont automatiquement configurées dans le serveur d'intégration continue, le dépendance -Gestion mise à jour et système de gestion des problèmes adapté pour permettre l'affectation des histoires implémentées à la version Viriato.

Le résultat de l'automatisation est des gains d'efficacité élevés, l'élimination des sources d'erreur et une standardisation améliorée.

L'équipe de production met en œuvre de telles mesures dans le cadre du processus d'amélioration continue, qui fait partie intégrante des itérations du processus Scrum. Les améliorations potentielles des processus sont identifiées, réfléchies et, le cas échéant, mises en œuvre selon une approche structurée. Sur une longue période, les nombreuses améliorations progressives conduisent à des résultats convaincants.

Les améliorations incrémentielles sont un outil fondamental pour maîtriser la complexité, car elles permettent une évolution dans un environnement complexe qui n'est pas possible avec un remplacement important et risqué. Les systèmes successeurs des systèmes existants sont souvent développés précisément parce que les ajustements incrémentiels ne sont plus possibles ou deviennent trop coûteux en raison de la complexité ingérable du logiciel.

Dans ce qui suit, quelques représentants de sma.software fournissent un aperçu approfondi des aspects spécifiques de la production de logiciels chez SMA


Produktentwicklung - Björn Glaus Björn Glaus ist Leiter der Produktion in der sma.software. Für Björn steht die uneingeschränkte Fokussierung auf die Produktentwicklung für Fahrplan- und Kapazitäts-Planung im Zentrum der sma.software. Diese Beständigkeit führt seiner Meinung nach zu einer einmaligen Expertise an der Schnittstelle zwischen hochwertiger, moderner Software-Entwicklung, tiefem Domänenwissen und praxisrelevanten, algorithmischen Anwendungen.
Björn sieht die Kernkompetenz von SMA darin, diesen Fähigkeitsmix so umzusetzen, dass er beim Nutzer auch ankommt.

Eine Nutzergruppe mit besonderer Bedeutung für sma.software, so Björn, sind die Viriato-Nutzer innerhalb der SMA. Der tagtägliche, interne Einsatz der Software in Beratungsprojekten ermöglicht einen kurzen Feedback-loop und einen ständigen fachlichen Austausch zwischen Entwicklern und Anwendern. Die Consultants von SMA bewegen sich in einem hoch kompetitiven Umfeld, was eine Software erfordert, die sie in Projekten optimal unterstützt. So entsteht ein ideales Umfeld für die Erstellung von anspruchsvoller Anwendungs-software.

Gemäss Björn besonders relevant für die Produktentwicklung sind Verbesserungen, die in den letzten Jahren im Prototyping erzielt worden sind. Die Verbesserungen adressieren v.a. zwei Punkte:

Zum einen kann heute, dank Investitionen in die technische Infrastruktur, ein funktionaler Prototyp schneller und einfacher implementiert und in geeigneten Beratungsprojekten eingesetzt werden. Die Prototyp-Entwicklung ist entkoppelt von der Produktentwicklung, basiert aber auf genau definierten Produkt- und Qualitätsständen. Der Einsatz des Prototyps in einem Beratungsprojekt ist für alle Beteiligten leichtgewichtig und risikoarm, weil der Prototyp strikt nur in einem spezifischen Projekt eingesetzt wird und es jederzeit möglich ist, auf die Produkt-Version zurückzugehen.

Zum zweiten hat die Einführung von neuen Rollen und Prozessen an der Schnittstelle von R&D, Business-Analyse und Entwicklung dazu geführt, dass sich Resultate aus dem Prototyping methodisch effizient in das Produkt übernehmen lassen. Dank der Prototyp-Entwicklung sind Unklarheiten und Risiken früh geklärt, was die Übernahme in das Produkt, nsbesondere die Einhaltung der hohen Vorgaben bezüglich Stabilität, Architektur-Richtlinien, automatischer Testabdeckung und anderer Qualitätskriterien stark vereinfacht.


Software Craftmanship - Benjamin Ernst Benjamin Ernst ist Architekt bei sma.software. Beni legt Wert darauf, neben technischem Coaching und konzeptionellen Aufgaben weiterhin viel Zeit mit Programmierung oder in Code-Reviews zu verbringen. Er sieht die modulare Architektur von Viriato als ein zentrales und effektives Mittel im Komplexitätsmanagement: Die Software wird in Form von losen gekoppelten Modulen entwickelt, alle Module benutzen ein gemein-sames, mächtiges Domänenmodell sowie ein eigenentwickeltes Applikations-Framework, das geteilte Services und Basisklassen zur Verfügung stellt. Die Modularisierung ermöglich einen höheren Parallelisierungsgrad in der Implementierung, weil gleichzeitig an unterschiedlichen Modulen gearbeitet werden kann, ohne dass sich die Entwickler in die Quere kommen.

Eine nachhaltig hohe Entwicklungsgeschwindigkeit sei nur möglich, so Beni, wenn auch die Qualität des Codes und der Arbeitsweise konstant hoch gehalten wird. Die architektonische Integrität und weitere Qualitäts-aspekte der Software werden deshalb kontinuierlich automatisiert überwacht. Neben dem Monitoring sind auch ständige Investitionen in die Architektur, den bestehenden Source Code und das technische Tooling notwendig. Eine grosse Code-Basis hat die Tendenz, dass durch Weiterentwicklungen strukturelle Mängel entstehen und der 

Organisationsgrad im Code abnimmt. Beni betont in dem Zusammenhang die besondere Bedeutung von Code-Refactorings und funktionalen Redesigns. Das sind technische Praktiken, bei denen die Struktur des Codes bzw. der Benutzer-Experience verbessert wird, ohne die Funktionalität zu ändern. Solche Erneuerungsarbeiten halten die Software aktuell, sie sind aber auch essenziell für den Erhalt von Know-How im Entwickler-Team. Software, die nur schwer weiterentwickelt werden kann, weil der Code zu wenig verstanden wird, ist ein häufig unterschätztes Risiko.

Für Beni ist die Entwicklung in einer Produktfirma dadurch geprägt, dass stärker in Eigenentwicklungen investiert wird als im schnelllebigen Projektgeschäft. Um die Projektzeiten kurz zu halten, kommen dort eher Lösungen Dritter zum Einsatz. Wegen der langfristigen Perspektive im Produktgeschäft lohnt es sich dagegen, Frameworks selbst zu entwickeln.

Diese sind massgeschneidert und die Weiterentwicklung ist unter voller Kontrolle. Als Beispiele nennt Beni das Build-System zur Erstellung der Software aus dem Quellcode, das spezifisch auf die modulare Architektur ausgerichtet ist, sowie den Persistenzlayer (die Datenbankabstraktions-schicht), der hinsichtlich der hohen Performance-Anforderungen in der Fahrplanung optimiert ist.


Kunden-Projekte - Markus Ullius Markus Ullius ist Leiter Service in der sma.software und leitet ein Team von Business Analysten, Projektleitern und Testern. Markus und sein Team können auf vieljährige Erfahrung in der Umsetzung von grossen Softwareprojekten zurück-greifen. Markus erwähnt mit Stolz, dass von Kunden-seite wiederholt die grosse Termintreue und hohe Qualität der Softwarelieferungen der sma.software betont worden ist. Er sieht dies als Resultat eines ausgereiften Realisierungsprozesses, der den gesamten Lebens-zyklus einer Funktionalität abbildet: die präzise Formulierung des Kunden-bedürfnisses als Anforderung steht am Anfang und ist Voraussetzung für die Erarbeitung von Lösungsvorschlägen in Form von Stories. Die Implementierung einer Lösung erfolgt dann in gut planbaren Entwicklungssprints. Die Auslieferung findet erst nach einem Qualitäts-sprint statt, in dem keine funktionale Entwicklung mehr erfolgt, sondern nur noch Testing und Bugfixing. Nach der Lieferung ist die neu entwickelte Software in Wartung & Support. Markus betont die kurzen Wege und die organisatorische Nähe des Supports zur Entwicklung.
Wenn nötig kann in kürzester Zeit ein qualifizierter Entwickler zu einem Supportfall hinzugezogen werden.

Markus verweist darauf, dass die Stories bezüglich Vollständigkeit, Verständlichkeit und Komplexität einen hohen Standardisierungsgrad aufweisen. Die Standardisierung ist Voraussetzung, dass mehrere Projekte gleichzeitig umgesetzt werden können, weil es für die Entwicklung in gewisser Hinsicht irrelevant wird, aus welchem Projekt eine User Story kommt. Die Story ist so zugeschnitten, dass sie in wenigen Tagen umgesetzt werden kann, Akzeptanzkriterien werden vorgängig formuliert, die enge fachliche Begleitung ist während der Implementierung sichergestellt. Der Business Analyst, der Entwickler und der Tester bilden während der Umsetzung quasi ein Team im Team.

Ziel ist, so Markus, dass die Entwicklung möglichst geschützt ist vor Störungen aus dem Projektgeschäft, z.B. kurzfristigen Änderungswünschen oder überraschenden Re-Priorisierungen. Solche Diskussionen dürfen durchaus stattfinden, sind aber der Entwicklung vorgelagert. Für die Entwicklung wird ein fokussiertes, diszipliniertes und stressarmes Arbeitsklima angestrebt.


Fazit Die Domäne der sma software ist das System Eisenbahn. Dieses zeichnet sich durch eine hohe, inhärente Komplexität sowie lange Lebens- und Investitionszyklen aus. Damit Innovationen erfolgreich sind, müssen sie sich umsetzen lassen, d.h. machbar sein, was in einem solchen Umfeld eine anspruchsvolle Aufgabe ist. Die sma.software hat die Fähigkeit, Innovationen erfolgreich umzusetzen, weil sie langjährige Erfahrung in der Beherrschung von Komplexität auf unterschiedlichen Ebenen - Code, Prozess, Kultur, Team - hat. Das Resultat des beständigen Wirkens sind eine stabile, erweiterbare Softwareplattform sowie eine leistungsfähige, verlässliche Organisation. Diese dienen als Basis für zukunftsfähige und zweckmässige Lösungen.