Software-Entwicklung Kosten Sparen
Virtuelle Plattformen sind im Hardware-Design gang und gäbe, nicht aber in der System- und Software-Entwicklung, obwohl sie hier eine Menge Vorteile bieten – und das über den gesamten Produktzyklus hinweg, von der Produktdefinition über die Entwicklung bis zur Implementierung und langfristigen Wartung und Pflege.
Eine virtuelle Plattform ist ein Embedded Computer System, das auf einem handelsüblichen regulären PC simuliert wird. Es verhält sich wie die physische Ziel-Hardware und kann das komplette Software-Stack booten und betreiben. So entsteht eine Plattform für die Definition der Architektur, für System- und Software-Design, für Tests und Debugging sowie für Trainings. Solche Plattformen werden für die Simulation verschiedenster Ziele unterschiedlichster Hardware Umgebungen verwendet – von Single-Prozessor-Boards bis hin zu komplexen Multicore-, Multiboard- und Rack-basierten Clustern. Die virtuelle Plattform benutzt denselben Code wie später das physische System und ist schnell genug, um interaktiv genutzt zu werden. Sie liefert Einsicht in und Kontrolle über das System in einem Maß, das auf der physischen Hardware nicht möglich ist. Mit einer virtuellen Plattform kann die Software-Entwicklung früher beginnen. Sobald die Spezifikation der neuen Hardware vorliegt, können virtuelle Plattformen aufgesetzt werden, das sind oft Monate oder Jahre vor der Verfügbarkeit der physischen Hardware. Die virtuelle Hardware lässt sich zudem flexibler nutzen: Da es sich tatsächlich um Software handelt, kann sie vielfach kopiert und zu jeder Zeit auf einer beliebigen Anzahl Instanzen eingesetzt werden. Jeder Entwickler hat so sein eigenes Zielsystem, ohne dass Anschaffungskosten für weitere Hardware anfallen, und viele sonst nacheinander ausgeführte Entwicklungsprozesse können gleichzeitig stattfinden. Ein Beispiel hierfür ist die Entwicklung des ‚Fermi‘-Weltraumteleskop (‚GLAST‘) der NASA, das Fotoaufnahmen im Bereich der Gammastrahlung macht. Bei seiner Entwicklung standen die Entwickler vor dem Problem, dass die extrem sicherheitskritische Flugsoftware nur auf physischen Testmodellen der Flug-Hardware entwickelt und getestet werden kann. Da eine Vielzahl verschiedener Entwicklergruppen mit dem Projekt beschäftigt war, wäre es bei diesem etwa 700 Millionen US-Dollar teuren Teleskop eine Investition in Millionenhöhe gewesen, jedem Team ein eigenes Hardwaremodell zur Verfügung zu stellen. Mit virtueller Hardware, in diesem Fall auf Basis der Simulationssoftware Wind River Simics, konnte dies vermieden werden. Weitere Einsparungen ergeben sich daraus, dass virtuelle Hardware beliebig erweitert werden kann. Da es eine rein virtuelle Erweiterung über die Software ist, fallen keine zusätzliche Hardware-Anschaffungskosten an. Besonders bei Projekten, bei denen Software für Systeme auf Basis neuer Hardware entwickelt wird, zeigen sich die Vorteile einer früh und breit verfügbaren virtuellen Hardware gegenüber der Arbeit mit physischer Hardware. Hardware- und Software-Entwicklung sowie die jeweilige Produktionsplanung können weitgehend voneinander entkoppelt werden, denn die Planung der Software ist nur noch abhängig von der Fertigstellung des Hardware Designs, nicht von der tatsächlichen Verfügbarkeit der physischen Hardware. Dadurch lassen sich Zeitvorgaben besser einhalten, und der negative Einfluss einer Verzögerung bei der Hardware-Verfügbarkeit auf das gesamte Projekt sinkt. Hardware- und Software-Entwickler können gemeinsam und gleichzeitig an virtuellen Modellen arbeiten und sich früher über das Design austauschen. Fehler am Hardware Design, die Software-Entwicklern später das Leben unnötig schwer machen, lassen sich so vermeiden. Ist die physische Hardware dann verfügbar, ist es zudem problemloser, sie mit der Software zu integrieren, denn die meisten Fehler sind bereits im Vorfeld auf der virtuellen Plattform entdeckt und behoben worden. Was jetzt noch an Fehlern auftritt, hängt in der Regel mit dem genauen Timing der Hardware und mit analogen Effekten in Bezug auf das Design der Platine zusammen. Die Entwicklungszeit kann dadurch um Monate verkürzt werden. Auch bei Software-Entwicklungsprojekten für existierende Hardware können Prozesse optimiert, effizienter gestaltet und so die Entwicklungszeiten verkürzt werden. Da die virtuellen Plattformen leicht und vielfach bereitgestellt werden können, hat der einzelne Entwickler die Möglichkeit, neuen Code und Änderungen in einer kompletten integrierten Systemumgebung zu testen. Fehler werden sofort sichtbar, was die Latenzzeit verkürzt. Das Wind River Team konnte in einigen Anwendungsfällen eine langfristige Zeiteinsparung bei der Fehlerbehebung in bestehenden Systemen um den Faktor vier oder sogar mehr beobachten. Eine der schwierigsten Aufgaben im Software Debugging ist es, ein Problem zuverlässig zu reproduzieren, das nicht vom Entwickler selbst, sondern von Testern oder Anwendern gefunden wurde. In der Regel werden dann aufwendige Berichte darüber ausgetauscht, wie der Fehler beschaffen ist, in welcher Softwareversion und Systemumgebung er auftrat und ob es irgendwelche Besonderheiten des Setups gab. Meistens muss der Entwickler noch mehrmals nachfragen, und so kann es mehrere Tage dauern, bis das Problem überhaupt identifiziert ist und die eigentliche Behebung des Fehlers beginnen kann. Auch hier können virtuelle Plattformen helfen: Findet bei einem internationalen Projekt zum Beispiel das Test-Team in Frankreich einen Fehler, kann es einfach per E-Mail einen Snapshot des Systemstatus sowie die Aufzeichnungen darüber, was zu dem Fehler geführt hat, an das Entwicklerteam in Deutschland schicken. Unabhängig davon, ob die zugrunde liegende Hardware physisch vorhanden ist, kann sofort mit dem Debuggen begonnen werden.
Bei Entwicklungsprojekten mit geografisch verteilten Teams ist auch der gemeinsame Zugriff auf ein komplettes elektronisches System und seinen Status möglich. Die Debugging-Fähigkeiten virtueller Plattformen haben zudem einen immensen Einfluss auf die Behebung der ‚Hard Bugs‘, die Projekte komplett lahmlegen können, auf physischer Hardware aber extrem schwer zu reproduzieren sind. Diese besonders schweren Programmfehler wurden in Projekten mit virtueller Hardware innerhalb von Stunden aufgespürt. Ein fehlerhafter Systemstatus und seine Historie können schnell unter Entwicklern, Testern und Anwendern ausgetauscht werden und per Replikation mit hoher Priorität von mehreren Teams gleichzeitig bearbeitet werden. Das Debugging der Software eines kompletten Systems kann in einer Systemumgebung stattfinden, auch wenn eine Vielzahl Boards mit verschiedenen Architekturen und diversen unterschiedlichen Betriebssystemen verwendet werden, vorausgesetzt, die virtuelle Plattform unterstützt integriertes Source Code System Debugging und erlaubt den detaillierten Einblick in ein Betriebssystem. Virtuelle Plattformen automatisieren Regressionstests, da Entwickler volle Kontrolle über das Zielsystem haben. Reboots, Resets und Ergebnisprüfung sind sehr zuverlässig, und System-Snapshots vermeiden die Wiederholung langwieriger Prozesse wie System-Boots und Softwareinstallationen. Fehlerberichte von virtuellen Plattformen sind detailliert, da insgesamt mehr System-Stati überwacht werden können und die Erfassung und Diagnose von Software-Aktivität leichter fällt. Das bedeutet, dass Reports schneller erstellt und direkt an das richtige Team weitergeleitet werden können. Analysewerkzeuge helfen Entwicklerteams, die heterogenen Aspekte ihrer Designs besser zu erkennen und zu verstehen. Wind River Analyzer z.B. erstellt für einen kompletten Software Application Stack einen grafischen Workflow mit Details darüber, wann welche Prozesse wo laufen. Verfügt die virtuelle Plattform über Funktionen für individuell einstellbaren grafischen Output, können Entwickler das Interface des Endsystems und den visuellen Runtime-Status virtuell darstellen. Das Feedback von Endanwendern und eigene Erfahrungen mit dem Verhalten eines Systems können schon früh in den Entwicklungsprozess einfließen, was die Qualität des Endprodukts verbessert und die Markteinführung beschleunigt.