{"id":8141,"date":"2025-11-29T14:51:23","date_gmt":"2025-11-29T13:51:23","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=8141"},"modified":"2026-02-11T05:23:31","modified_gmt":"2026-02-11T04:23:31","slug":"state-machines-origami","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/zustandsautomaten-origami\/","title":{"rendered":"State machine origami"},"content":{"rendered":"<h2>Effiziente Embedded-Software durch interaktive Statecharts<\/h2>\n<p>Autoren: Dr. Klaus Birken, Axel Terfloth, itemis AG<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2015<\/h3>\n<p><strong>Zustandsautomaten haben sich in vielen Projekten zur Implementierung von Embedded-Software bew\u00e4hrt. Damit l\u00e4sst sich das Verhalten von Komponenten grafisch beschreiben und effizienter Code in C oder C++ generieren. Die Interaktion der Statecharts mit ihrer Umgebung wird \u00fcber Konzepte wie Events und formale Schnittstellen beschrieben. Das Open-Source-Projekt Franca erlaubt die Modellierung solcher Schnittstellen, speziell ihrer Semantik (d.h. erlaubte Abfolgen von Events). In den meisten Projekten wird diese Information nur informell dokumentiert \u2013 mit Franca sind die erlaubten Abl\u00e4ufe maschinenlesbar und damit automatisiert pr\u00fcfbar. Tools zur Erstellung von Zustandsautomaten k\u00f6nnen sich diese Semantik-Information zunutze machen und den Entwickler interaktiv unterst\u00fctzen, z.B. durch Hinweise auf zu erwartende oder zu sendende Events sowie auf nicht erreichbare Zust\u00e4nde. Dies stellt die Einhaltung aller Schnittstellen-Contracts sicher und sichert letztlich die Qualit\u00e4t des Codes.<\/strong><\/p>\n<h2>Schnittstellen und ihre Dynamik beschreiben mit Franca<\/h2>\n<p>Bei der Embedded-Entwicklung sollten Schnittstellen zwischen Komponenten oder Subsystemen nicht direkt als C-Header-Dateien entworfen und repr\u00e4sentiert werden, sondern auf einer h\u00f6heren Abstraktionsebene, die von der Programmiersprache unabh\u00e4ngig ist. Dies wird durch eine Beschreibungssprache f\u00fcr Schnittstellen oder\u00a0<em>IDL<\/em>\u00a0(kurz f\u00fcr:\u00a0<em>Interface Definition Language<\/em>) m\u00f6glich [1]. Diese reduziert die Syntax auf genau das Vokabular, das f\u00fcr die inhaltliche Definition von Schnittstellen gebraucht wird. Die Abbildung auf eine Programmiersprache geschieht typischerweise durch Codegenerierung.<\/p>\n<p>Eine IDL erlauben es, Schnittstellen unabh\u00e4ngig von der Zielplattform und -sprache formal zu beschreiben. Damit k\u00f6nnen dieselben Schnittstellen zur Integration \u00fcber Teilsysteme, Programmiersprachen, Controller und Steuerger\u00e4te hinweg eingesetzt werden. Schnittstellen werden so ein \u00fcbergreifendes Werkzeug f\u00fcr Architekten und Entwickler. Das Open-Source-Projekt\u00a0<em>Franca<\/em>\u00a0[2] bietet eine solche IDL und verschiedene Tools, um Schnittstellen zu erstellen, zu bearbeiten oder daraus Programmcode zu generieren. Franca wurde zun\u00e4chst im Rahmen des GENIVI-Konsortiums [3] entwickelt und ist derzeit auf dem Weg, ein offizielles Projekt unter dem Dach der Eclipse Foundation zu werden. Auf fr\u00fcheren ESE-Kongressen wurden die verschiedenen Aspekte von Franca vorgestellt (z.B. [1], [4], [6]).<\/p>\n<p>Der typische Sprachumfang einer IDL deckt die\u00a0<em>statischen<\/em>\u00a0Anteile von Schnittstellen ab, d.h. Datentypen, Attribute und Funktionsaufrufe. Dies ist zur Dokumentation der Schnittstellen und auch zur Codegenerierung zun\u00e4chst ausreichend, da in Programmiersprachen ebenfalls nur statische Anteile von Schnittstellen beschrieben werden (C-Header oder C++-Klassen enthalten keine Festlegung z.B. von Aufrufreihenfolgen).<\/p>\n<p>Die\u00a0<em>dynamischen<\/em>\u00a0Anteile von Schnittstellen werden heute meist erst in der Implementierung ber\u00fccksichtigt. Dies sind erlaubte Aufrufreihenfolgen (also Sequenzen) und deren Parameterwerte. Ebenfalls geh\u00f6ren z.B. nicht-funktionale Eigenschaften wie Timing-Restriktionen zu den dynamischen Anteilen. Gerade f\u00fcr komplexere Systeme ist es sinnvoll, die dynamischen Anteile bereits als Teil der Schnittstellendefinition festzulegen, denn der Schnittstellen-Designer hat die genaueste Vorstellung davon, wie seine Schnittstelle zu verwenden ist [4]. \u00dcber die formale Festlegung der Dynamik kann er dies den nachfolgenden Implementierern \u00fcbermitteln. Dies steigert die Qualit\u00e4t des resultierenden Softwaresystems.<\/p>\n<p>Franca unterst\u00fctzt genau diese Beschreibung des dynamischen Verhaltens von Schnittstellen. Dazu bietet Franca IDL die M\u00f6glichkeit, Vertr\u00e4ge (sog.\u00a0<em>contracts<\/em>) von Schnittstellen in Form von Protokoll-Zustandsautomaten zu spezifizieren. Dies sind Zustandsautomaten, die auf der Verbindung zwischen den beiden kommunizierenden Softwareteilen (z.B. Komponenten) angesiedelt sind und auf Kommunikationsereignisse in beiden Richtungen reagieren. Beispielsweise geschieht ein Zustands\u00fcbergang, falls die Client-Seite eine Remote-Methode aufruft. Ein weiterer Zustands\u00fcbergang wird ausgel\u00f6st, wenn die Server-Seite die Antwort-Nachricht zu dieser Methode sendet. In jedem Zustand des Protokoll-Automaten sind nur die Ereignisse erlaubt, die durch ausgehende Transitionen beschrieben sind. Alle anderen Ereignisse w\u00e4ren Protokollfehler und damit Verletzungen des Vertrags.<\/p>\n<p>Mit Franca werden die Zustandsautomaten als Teil der IDL textuell modelliert. In einem Vorjahresbeitrag wurde detailliert gezeigt, wie solche Verhaltensdefinitionen verwendet werden k\u00f6nnen, um Trace-Daten aus einem realen Embedded-System zu validieren [4]. Im vorliegenden Artikel wird nun beschrieben, wie solche Dynamik-Festlegungen an der Schnittstelle bereits\u00a0<em>w\u00e4hrend der Implementierung<\/em>\u00a0eines Embedded-Systems verwendet werden k\u00f6nnen, sofern diese Implementierung mittels eines Statechart-Modellierungswerkzeugs umgesetzt wird.<\/p>\n<h2>Embedded-Software mittels Statecharts erstellen<\/h2>\n<p>Zustandsautomaten sind ein verst\u00e4ndlicher Formalismus, der sich zur Spezifikation und Implementierung des reaktiven Verhaltens von Systemen bew\u00e4hrt hat. Es gibt eine Reihe von Ans\u00e4tzen, wie Zustandsautomaten in Programmiersprachen wie C und C++ effizient implementiert werden k\u00f6nnen. Wie bei IDLs hat sich aber auch bei Zustandsautomaten die Beschreibung auf einer h\u00f6heren Abstraktionsebene in Form von Modellen bew\u00e4hrt. Meist werden Zustandsautomaten graphisch in Form von Statecharts spezifiziert. Diese von der Programmiersprache unabh\u00e4ngigen Modelle k\u00f6nnen dann ebenfalls mittels Codegenerierung in C, C++ oder Code anderer Programmiersprachen \u00fcbersetzt und in die Software eingebunden werden. Da Zustandsautomaten das dynamische Verhalten von Systemen beschreiben, sind bei der Entwicklung insbesondere Hilfsmittel zur Ausf\u00fchrung der Zustandsautomaten in der Modellierungsumgebung\u00a0 z.B. mithilfe von Simulatoren sehr hilfreich.<\/p>\n<p>Das Open-Source-Project\u00a0<em>YAKINDU Statechart Tools (YSCT)<\/em>\u00a0[5] stellt eine Werkzeugumgebung zur Modellierung, Simulation sowie Code-Generierung f\u00fcr Statecharts bereit.<\/p>\n<h2>Statecharts mit Franca-Schnittstellen &#8211; Integration von Tools und Modellen<\/h2>\n<p>Softwarekomponenten, die mit Hilfe von Statecharts implementiert werden, interagieren in der Regel mit anderen Softwarekomponenten. Dies erfordert wohldefinierte Schnittstellen. Damit liegt es nahe, die Schnittstellen der Softwarekomponenten mit einer IDL zu beschreiben. Eine solche Integration gibt es zwischen Franca und YSCT.\u00a0 Die Statecharts bieten die M\u00f6glichkeit, Ports zu definieren, die zur Anbindung passender Softwarekomponenten dienen. F\u00fcr jeden Port kann spezifiziert werden, ob \u00fcber diesen ein in Franca definiertes Interface bereitgestellt (<em>provide<\/em>) oder genutzt (<em>require<\/em>) werden soll. Die in dem Interface definierten Ereignisse, Methoden sowie Datenelemente k\u00f6nnen im Statechart dann direkt verwendet werden. In Abh\u00e4ngigkeit davon, ob das Statechart als Nutzer oder Anbieter einer Schnittstelle agiert, stehen jeweils passende Elemente zur Verf\u00fcgung.<\/p>\n<p>Softwarekomponenten verf\u00fcgen oftmals \u00fcber mehr als eine Schnittstelle und m\u00fcssen auch im Hinblick auf ihr dynamisches Verhalten Schnittstellen-konform sein. Die Komplexit\u00e4t der Schnittstellen multipliziert sich allerdings potentiell in der Implementierung der Komponenten, so dass ohne weitere Hilfsmittel die Validierungs- und Testaufw\u00e4nde sehr gro\u00df werden k\u00f6nnen.\u00a0 Im nachfolgenden Beispiel wird nun dargestellt, wie durch die Nutzung von Protokoll-Zustandsautomaten f\u00fcr die Schnittstellen die Statechart-basierten Implementierungs-Zustandsautomaten automatisch validiert werden k\u00f6nnen.<\/p>\n<h2>Beispielprojekt: Roboterarm-Steuerung<\/h2>\n<p>Als Beispiel f\u00fcr die beschriebene Integration der Open-Source-Tools YSCT und Franca dient eine Steuerungssoftware f\u00fcr einen Roboter-Arm. Die Roboter-Hardware ist ein AL5D-Kit von Lynxmotion mit SSC32-Steuerplatine. Abbildung 1 (siehe\u00a0<a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\">PDF<\/a>) zeigt den Roboterarm; dieser besteht aus f\u00fcnf Achsen und einer Greifeinheit.<\/p>\n<p>F\u00fcr unser Beispiel modellieren wir das Verhalten an der Applikationsschnittstelle der Robotersteuerung; diese erlaubt die Kontrolle folgender Funktionen:<\/p>\n<ul>\n<li>Der Greifer kann Objekte festhalten und loslassen (Operationen\u00a0<em>grab<\/em>\u00a0und\u00a0<em>release<\/em>).<\/li>\n<li>Der Arm kann den Greifer an eine bestimmte kartesische Position bewegen (Operation\u00a0<em>move<\/em>).<\/li>\n<\/ul>\n<p>Die statischen Elemente der Schnittstelle sind also die Methoden\u00a0<em>move<\/em>,\u00a0<em>grab<\/em>\u00a0und\u00a0<em>release<\/em>. Jede Ausf\u00fchrung einer dieser Methoden besteht aus zwei Ereignissen: Zuerst ruft die Client-Seite der Schnittstelle die Methode auf; danach sendet die Server-Seite eine positive oder negative Antwort. Zus\u00e4tzlich zu dieser elementaren Protokollfestlegung gibt es fachliche Einschr\u00e4nkungen der erlaubten Abl\u00e4ufe. Beispielsweise ist eine\u00a0<em>release<\/em>-Operation ohne eine vorherige\u00a0<em>grab<\/em>-Operation nicht sinnvoll. Insgesamt lassen sich alle erlaubten Sequenzen durch den Protokoll-Zustandsautomaten aus Abbildung 2 (siehe\u00a0<a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\">PDF<\/a>) definieren.<\/p>\n<p>Ein Protokoll-Zustandsautomat wie in Abbildung 2 (siehe\u00a0<a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) wird als Bestandteil der Schnittstellendefinition mittels Franca IDL formuliert. Wichtig ist, dass dieser nur die Semantik der Schnittstelle beschreibt und nicht die eigentliche Implementierung der Steuerungskomponente. Diese wird durch einen weiteren, viel detaillierteren Zustandsautomaten mit dem Yakindu Statecharts-Tool erstellt.<\/p>\n<h2>Interaktives Feedback bei der Statechart-Modellierung<\/h2>\n<p>In einem fr\u00fcheren ESE-Beitrag wurde gezeigt, wie aufgezeichnete Trace-Daten automatisiert gegen einen oder mehrere Protokoll-Zustandsautomaten validiert werden k\u00f6nnen [4]. Dies erh\u00f6ht die Qualit\u00e4t des resultierenden Produkts, indem Fehler in der Implementierung beim Testen gezielt aufgedeckt und behoben werden k\u00f6nnen. Besser ist es jedoch, die Fehler bereits w\u00e4hrend der Implementierung zu vermeiden. Dies wird durch die Integration von YSCT und Franca erm\u00f6glicht: Die Implementierungs-Statecharts werden hierbei w\u00e4hrend der Entwicklung st\u00e4ndig gegen die Protokoll-Zustandsautomaten der beteiligten Franca-Schnittstellen gepr\u00fcft. Der Entwickler wird durch interaktives Feedback angeleitet.<\/p>\n<p>Abbildung 3 (siehe\u00a0<a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt f\u00fcr das oben beschriebene RobotArm-Beispiel anhand eines Screenshots, welche Informationen aus den Schnittstellendefinitionen abgeleitet und wie diese f\u00fcr den Nutzer dargestellt werden. Der Entwickler hat gerade begonnen, den Zustandsautomat f\u00fcr die RobotArm-Steuerungskomponente zu bauen. Diese Komponente implementiert die Schnittstelle RobotArm mit dem Verhalten aus Abbildung 2 (siehe\u00a0<a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>Aus der Schnittstellendefinition werden folgende Informationen abgeleitet:<\/p>\n<ul type=\"disc\">\n<li>Im Zustand\u00a0<em>Idle<\/em>\u00a0wird zwar der Aufruf der Operation\u00a0<em>move<\/em>\u00a0behandelt (siehe Transition\u00a0<em>Idle<\/em>\u00e0<em>Moving<\/em>), die Behandlung der Operation\u00a0<em>grab<\/em>\u00a0fehlt jedoch. Dies wird durch eine Warnung dargestellt. Der Entwickler wird dadurch angeleitet, eine weitere Transition (und einen weiteren Zustand) zur Behandlung des\u00a0<em>grab<\/em>-Aufrufs zu erg\u00e4nzen.<\/li>\n<li>Der Zustand\u00a0<em>Moving<\/em>\u00a0wird durch einen\u00a0<em>move<\/em>-Aufruf erreicht. Die Antwort auf die\u00a0<em>move<\/em>-Operation steht jedoch noch aus, dies wird durch eine Information dargestellt (<strong>&#8222;<\/strong>Proposed send&#8230;&#8220;). Der Entwickler wird somit angeleitet, die\u00a0<em>move<\/em>-Antwort zu implementieren.<\/li>\n<\/ul>\n<p>Durch die weitere Arbeit am Zustandsautomaten werden interaktiv weitere Warnungen und Informationen generiert und durch erneute Entwickler-Aktion bearbeitet. Am Ende entsteht ein Zustandsautomat, der keine Warnungen mehr enth\u00e4lt. Dies zeigt, dass die Vorgaben des Protokoll-Zustandsautomaten eingehalten sind. Bei komplexen Komponenten mit mehr als einer Schnittstelle verst\u00e4rkt sich der positive Effekt, weil der Entwickler durch mehr Informationen noch besser angeleitet werden kann.<\/p>\n<p>Im n\u00e4chsten Schritt werden zu jeder Warnung oder Information des Tool zus\u00e4tzlich Vorschl\u00e4ge angeboten, wie der Hinweis durch einen Mausklick direkt zu beheben bzw. umzusetzen ist (sog.\u00a0<em>Quickfixes<\/em>). Der Entwickler kann damit komplette Teile des Zustandsautomaten automatisch erzeugen lassen und gleichzeitig vorhandene Warnungen beheben.<\/p>\n<h2>Vorteile f\u00fcr die Embedded-Praxis<\/h2>\n<p>Werkzeuge zur Modellierung von Zustandsautomaten und Codegenerierung werden allenthalben in Embedded-Projekten benutzt. In diesem Beitrag wurde daran ankn\u00fcpfend gezeigt, wie die innovative Ber\u00fccksichtigung von Schnittstellen-Semantik Entwickler dazu anleiten kann, dass das Verhalten der erstellten Softwarekomponenten konform zu vorgegebenen Schnittstellen ist. Der Entwickler wird automatisch m\u00f6glichst fr\u00fch auf m\u00f6gliche Fehler hingewiesen und dadurch entlastet. Implementierungsfehler werden fr\u00fchzeitig entdeckt und behoben, somit wird die Qualit\u00e4t der Software erh\u00f6ht. Die teure Behebung von Integrationsfehlern und Fehlern in der Serie wird soweit wie m\u00f6glich vermieden. Durch die oben beschriebenen automatisierten Vorschl\u00e4ge des Tools wird dem Entwickler zus\u00e4tzlich das Editieren des Diagramms erleichtert, was seine Arbeit insgesamt beschleunigt.<\/p>\n<p>Generell ist die modellbasierte Definition von Schnittstellen gerade bei verteilten Anwendungen notwendig und sinnvoll. Durch Franca IDL k\u00f6nnen die Schnittstellen formal definiert werden und dienen dann als maschinenlesbarer &#8222;Vertrag&#8220; f\u00fcr die beteiligten Parteien und Systeme. Franca ist unter [1] f\u00fcr jedermann verf\u00fcgbar und kann inklusive Dokumentation frei heruntergeladen und direkt eingesetzt werden. Ebenso kann Yakindu Statecharts ohne Lizenzkosten f\u00fcr die Implementierung von Embedded Systems eingesetzt werden. Die Integration beider Werkzeuge bringt dar\u00fcberhinaus einen zus\u00e4tzlichen Nutzen f\u00fcr Entwickler und Architekten.<\/p>\n<h2>Referenzen<\/h2>\n<p>[1]\u00a0\u00a0 K. Birken:\u00a0<em>Schnittstellen voll im Griff \u2013 Modellbasierte Ansa\u0308tze mit dem Open-Source-Werkzeug Franca.<\/em>\u00a0In: Tagungsband<em>\u00a0\u2013\u00a0<\/em>Embedded Software Engineering Kongress 2012, Sindelfingen, 2012.<\/p>\n<p>[2]\u00a0\u00a0\u00a0<a href=\"https:\/\/code.google.com\/a\/eclipselabs.org\/p\/franca\/\" target=\"_blank\" rel=\"noopener\">https:\/\/code.google.com\/a\/eclipselabs.org\/p\/franca\/<\/a><\/p>\n<p>[3]\u00a0\u00a0\u00a0<a href=\"https:\/\/www.genivi.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.genivi.org<\/a><\/p>\n<p>[4]\u00a0\u00a0 K. Birken:\u00a0<em>Interfaces dynamisch beschreiben mit Franca.\u00a0<\/em><em>In: Tagungsband \u2013\u00a0<\/em>Embedded Software Engineering Kongress 2013, Sindelfingen, 2013.<\/p>\n<p>[5]\u00a0\u00a0 Yakindu Statechart Tools (https:\/\/statecharts.org)<\/p>\n<p>[6]\u00a0\u00a0 T. Szabo, K. Birken:\u00a0<em>Modellbasiert im Internet of Things.\u00a0<\/em>In: Tagungsband<em>\u00a0\u2013\u00a0<\/em>Embedded Software Engineering Kongress 2014, Sindelfingen, 2014.<\/p>\n<p><a title=\"Zustandsautomaten-Origami (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_open_source_zustandsautomaten-origami_itemis_birkenterfloth.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Open Source &#8211; unsere Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"MicroConsult Training\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Open Source \/ Embedded Software Engineering.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Open Source &#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema\u00a0Open Source \/ Embedded Software Engineering steht\u00a0<a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier\u00a0<\/strong><\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"MicroConsult Fachwissen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Effiziente Embedded-Software durch interaktive Statecharts Autoren: Dr. Klaus Birken, Axel Terfloth, itemis AG Beitrag &#8211; Embedded Software Engineering Kongress 2015 Zustandsautomaten haben sich in vielen Projekten zur Implementierung von Embedded-Software bew\u00e4hrt. Damit l\u00e4sst sich das Verhalten von Komponenten grafisch beschreiben und effizienter Code in C oder C++ generieren. Die Interaktion der Statecharts mit ihrer Umgebung [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-8141","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zustandsautomaten-Origami - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/state-machines-origami\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zustandsautomaten-Origami - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Effiziente Embedded-Software durch interaktive Statecharts Autoren: Dr. Klaus Birken, Axel Terfloth, itemis AG Beitrag &#8211; Embedded Software Engineering Kongress 2015 Zustandsautomaten haben sich in vielen Projekten zur Implementierung von Embedded-Software bew\u00e4hrt. Damit l\u00e4sst sich das Verhalten von Komponenten grafisch beschreiben und effizienter Code in C oder C++ generieren. Die Interaktion der Statecharts mit ihrer Umgebung [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/state-machines-origami\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T13:51:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-11T04:23:31+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Zustandsautomaten-Origami\",\"datePublished\":\"2025-11-29T13:51:23+00:00\",\"dateModified\":\"2026-02-11T04:23:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/\"},\"wordCount\":1931,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/\",\"name\":\"Zustandsautomaten-Origami - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T13:51:23+00:00\",\"dateModified\":\"2026-02-11T04:23:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/zustandsautomaten-origami\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zustandsautomaten-Origami\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"State Machine Origami - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/state-machines-origami\/","og_locale":"en_GB","og_type":"article","og_title":"Zustandsautomaten-Origami - MicroConsult Academy GmbH","og_description":"Effiziente Embedded-Software durch interaktive Statecharts Autoren: Dr. Klaus Birken, Axel Terfloth, itemis AG Beitrag &#8211; Embedded Software Engineering Kongress 2015 Zustandsautomaten haben sich in vielen Projekten zur Implementierung von Embedded-Software bew\u00e4hrt. Damit l\u00e4sst sich das Verhalten von Komponenten grafisch beschreiben und effizienter Code in C oder C++ generieren. Die Interaktion der Statecharts mit ihrer Umgebung [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/state-machines-origami\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T13:51:23+00:00","article_modified_time":"2026-02-11T04:23:31+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Zustandsautomaten-Origami","datePublished":"2025-11-29T13:51:23+00:00","dateModified":"2026-02-11T04:23:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/"},"wordCount":1931,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/zustandsautomaten-origami\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/","url":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/","name":"State Machine Origami - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T13:51:23+00:00","dateModified":"2026-02-11T04:23:31+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/zustandsautomaten-origami\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/zustandsautomaten-origami\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Zustandsautomaten-Origami"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=8141"}],"version-history":[{"count":7,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8141\/revisions"}],"predecessor-version":[{"id":11610,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8141\/revisions\/11610"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=8141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=8141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=8141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}