Plattformen spielen eine zentrale Rolle in der Softwareentwicklung und für die Wettbewerbsfähigkeit vieler Unternehmen. Bei manchen Firmen beruht ihr gesamtes Geschäftsmodell auf einer Plattform, über die die Interaktion mit ihren Kunden läuft. Andere nutzen Plattformen nur intern zur Steigerung ihrer Effizienz, Skalierbarkeit und Innovationsfähigkeit. Plattform Engineering ist die Disziplin, die sich mit Aufbau, Pflege und Weiterentwicklung von Softwareplattformen innerhalb eines Unternehmens beschäftigt. Im Folgenden werden unterschiedliche Arten von Plattformen vorgestellt, die interessant für Embedded-Hersteller sind.

Alle Arten von Plattformen dienen zur Erreichung folgender Ziele:
- Technologisches Fundament: Gemeinsame technische Basis, wie Tools, Dienste und Bibliotheken.
- Standardisierung und Wiederverwendung: Verringerung von Komplexität und Redundanz; Förderung einheitlicher Datenformate und Protokolle; leichtere Integration und Interoperabilität.
- Sicherheit und Governance: Zentrale Mechanismen für Cybersecurity, Datenschutz und Compliance.
- Beschleunigung der Entwicklung: Teams können sich auf eigentliche Businesslogik konzentrieren.
- Innovationsförderung: Durch Prototyping und leichterem Zugang zu neuen Technologien über die Plattform.
- Kostenreduktion: Degressionseffekte durch Vermeiden von Doppelentwicklungen.

Für Embedded-Hersteller sind folgende Arten von Plattformen interessant:
- Enterprise-Software-Plattformen: Geschäftsprozesse und Unternehmenssteuerung für ERP, CRM, ITSM oder HR.
- Cloud-Plattformen: Bereitstellung, Skalierung und Verwaltung von Anwendungen über das Internet in Form von IaaS oder PaaS.
- Datenplattformen: Speicherung, Verwaltung und Analyse von Daten auch mittels KI.
- Entwicklungsplattformen: Werkzeuge und Umgebungen zur Softwareentwicklung, wie Visual Studio oder Eclipse.
- Test- und Integrationsplattformen: Automatisierung von Tests und Softwarebereitstellung für Continuous Delivery.
- Interne Entwicklerplattformen: Standardisierte Workflows und eine technische Umgebung die die eigene Entwicklung über den gesamten Produktlebenszyklus unterstützt.
- Hardware- und Betriebssystem-Plattformen: Stellen die grundlegende technische Umgebung für die Ausführung von Anwendungen bereit.
- Produktplattformen: Basis, auf der mehrere Softwareprodukte oder Produktvarianten gemeinsam entwickelt, betrieben und weiterentwickelt werden können.
- Produkttestplattformen: Testfälle und Infrastruktur gegen die mehrere Softwareprodukte oder Produktvarianten gemeinsam validiert werden können.
Die ersten drei Arten von Plattformen sollen hier nicht weiter betrachtet werden. Entwicklungsplattformen sind allgemein bekannt. Test- und Integrationsplattformen wie Jenkins oder Gitlab werden aus gutem Grund von vielen Firmen genutzt.
Bislang weniger verbreitet sind interne Entwicklerplattformen. Ihr Ziel ist es wiederkehrende Aufgaben zu Automatisieren und Standardisieren, so dass sich die Teams auf das Schreiben von Code konzentrieren können. Dazu bietet sie unter anderem:
- Konfigurationsmanagement: Zentrale und versionierte Verwaltung von relevanten Konfigurationsdaten zu Softwarekomponenten, Infrastruktur und Deployment.
- Infrastrukturorchestrierung: Automatisierte Koordination, Verwaltung und Steuerung von Ressourcen wie Servern, Containern, Netzwerken und Services.
- Umgebungsmanagement: Bedarfsgerechte Bereitstellung von Entwicklungs-, Test-, Staging- und Produktionsumgebungen per Entwickler-Self-Service.
- Deploymentmanagement: Automatisierte, nachvollziehbare und sichere Bereitstellung von Softwareartefakten in verschiedene Umgebungen gemäß definierten Regeln.
- Rollenbasiertes Berechtigungsmanagement: Feingranulare Zugriffsrechte auf Ressourcen anhand von Rollen.
Während die letzten drei Plattformen den Entwicklungsprozess unterstützen, geht es bei den nächsten zwei um das Produkt selbst:
- Eine Hardware- und Betriebssystem-Plattform stellt eine einheitliche Ausführungsumgebung für Anwendungen bereit und abstrahiert die darunterliegende Hardware und das Betriebssystem. Eine solche Plattform wird auch Infrastruktur-Plattform genannt. Durch einen „Hardware Abstraction Layer“ (HAL) und einen „Operating System Abstraction Layer“ (OSAL) werden Hardwarebausteine und das Betriebssystem austauschbar. Dies ist beispielsweise sehr nützlich, wenn man wiederverwendbare Softwarekomponenten für unterschiedliche Microcontroller, Echtzeitbetriebssysteme, embedded Linux und Windows schreiben möchte.


- Eine Produktplattformen bietet einen Baukasten von modularen Komponenten, die einfach zu neuen Produktvarianten kombiniert werden können. Diese werden dann gemeinsam im Rahmen der Plattform betrieben, gewartet und weiterentwickelt. Idealerweise baut eine Produktplattform auf einer Hardware- und Betriebssystem-Plattform auf, so dass die erste sich auf fachliche und die zweite auf technische Aspekte fokussieren kann. Bereits für Hersteller mit einem mittelgroßen Produktportfolio empfiehlt es sich stark über eine Produktplattform nachzudenken, um den Aufwand für Wartung und Entwicklung langfristig im Griff zu behalten.
Ein Produktlinientest ist ein Testverfahren um Qualität, Konsistenz und Kompatibilität über mehrere Produktvarianten hinweg sicherzustellen:
- Wiederverwendbarkeit von Testfällen: Tests werden so konzipiert, dass sie auf mehrere Varianten anwendbar sind.
- Variantenmanagement: Es wird geprüft, ob unterschiedliche Konfigurationen korrekt funktionieren.
- Regressionstests: Sicherstellen, dass Änderungen an einer Variante keine unbeabsichtigten Effekte auf andere Varianten haben.
- Automatisierung: Verwendung gängiger Testplattformen und einer Testautomatisierungsarchitektur, um systematisch über Varianten hinweg zu testen.
Eine Produkttestplattformen bietet einen Baukasten von modularen Komponenten innerhalb einer Testautomatisierungsarchitektur, auf Ebene der Adaptierungs-, Definition- und Generierungsschicht, um einfach Tests zu neuen Produktvarianten zu erstellen. Sie stellt die ideale Ergänzung zu einer Produktplattform dar, die Entwicklung der Tests mit der der Firmware Schritt halten lässt. Durch Wiederverwendung von Testkomponenten lassen sich innerhalb kürzester Zeit hohe Testabdeckungen bei neuen Produktvarianten erreichen.
Für fast jeden Embedded-Hersteller ist die Verwendung von Entwicklungs-, Test- und Integrationsplattformen ein Muss. Besitzen seine Produkte ein komplexes Konfigurationsmanagement oder viele heterogene Entwicklungs-, Test-, Staging- oder Produktionsumgebungen, so kann er sicherlich von einer internen Entwicklerplattform profitieren. Will der Hersteller Anwendungen auf verschiedenen Hardwarebausteinen oder unterschiedliche Leistungsklassen unterstützen, so kommt er kaum um eine Hardware- und Betriebssystem-Plattform herum. Bietet er eine umfassende Produktlinie an, kommt er perspektivisch an einer Produktplattform und auch an einer Produkttestplattform nicht vorbei, da sonst alleine der Wartungs- und Regressionstestaufwand seine kompletten Entwicklungsressourcen belegt.
Unser Artikel über Plattformstrategie zeigt, wie Embedded Hersteller zu einer plattformbasierten Softwareentwicklung kommen können, ohne vorher ihre gesamte Firmenstruktur transformieren zu müssen. Wie ein denken in Plattformen zum Produktlinien Software Engineering führt, beleuchtet der nächste Artikel.