Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Embedded Software Engineering Fachwissen: ESE 2018 (Teil 1)

MicroConsult bietet das ganze Jahr zu den auf dem Kongress besprochenen Themen Weiterbildungen, Kurse und Seminare sowie Coaching an - im Präsenz- sowie Live-Online-Format!

Profitieren Sie von der Erfahrung unserer Spezialisten für Embedded Software Engineering und nehmen Sie mit uns Kontakt auf. Wir beraten Sie gerne.

MicroConsult Training & Coaching: Themen (Präsenz und Live-Online)

Zum Kontaktformular


 ESE Kongress 2018 Beiträge, Teil 1 - Themenbereiche:


 

Vortragsreihe: Architektur & Design

Ist Architektur-Entwicklung überhaupt noch zeitgemäß?

Und wenn ja, wie machen wir das heute richtig?

Jens Liebehenschel, Frankfurt University of Applied Sciences (ESE Kongress 2018)

Am Anfang dieser Arbeit erfolgt eine kurze Begriffserklärung. Der Nutzen von frühzeitiger Architektur-Entwicklung wird dargestellt. Nach der Vorstellung eines praxiserprobten und in sich schlüssigen Basissatzes von (Werkzeug­unabhängigen) Architektursichten für System- und Software-Architekturen für eingebettete Systeme endet die Arbeit mit Tipps zur Architektur-Entwicklung.

Software Erosion: A Critical Survey on the Scientific State of the Art

Und wenn ja, wie machen wir das heute richtig?

Prof. Dr. Rainer Koschke, Dr. Jan Harder, Dr. Saman Bazrafshan, Universität Bremen (ESE Kongress 2018)

Software erosion is the slow decay of the inner quality of software visible in a proliferation of Bad Smells. Bad Smells (also known as code smells or technical debt) lead to an increasing difficulty of comprehension, test, and modification of software. Examples of Bad Smells include duplicated code, unnecessarily complex, long, or even dead code. At the architectural level, Bad Smells show as cyclic dependencies, high coupling and low cohesion of components as well as violations of architecture specifications. This article summarizes the scientific body of knowledge about software erosion - its different forms, properties, and impact - and states open scientific questions.

"View"-basierte Softwarearchitektur-Dokumentation

Sinnvoll dokumentieren mittels verschiedener Views

Matthias Künzi, visuellklar (ESE Kongress 2018)

Eine Software-Architektur sinnvoll zu dokumentieren bedeutet, dass die relevanten Informationen eines Software-Systems dokumentarisch so festgehalten werden, dass diese zu gegebener Zeit wieder abgerufen werden können. Was sind jetzt aber die relevanten Informationen und wie halte ich diese so fest, dass der Aufwand und der Nutzen in einem sinnvollen Verhältnis stehen? Genau mit dieser Thematik befasst sich der folgenden Artikel.

Automatischer Einklang von Architektur und Implementierung

Hand aufs Herz: Wer hat Lust auf manuelle Reviews?

Ralph Dittmar, TR-Electronic GmbH, Thomas Eisenbarth, Axivion GmbH (ESE Kongress 2018)

Die Architektur als globale Struktur unserer Software ist das Fundament unserer täglichen Arbeit. Daher ist es essentiell, dass wir uns mit unserer Architektur auseinandersetzen und nicht gegen sie arbeiten: Planen, Prüfen und Bewerten können wir am besten mit Blick auf die Architektur. Entwickler arbeiten klassisch jedoch sehr detailliert an ihrer Software und verlieren so leicht den Blick für das Globale. Daher haben wir bei TR-Electronic eine Architekturprüfung etabliert, die uns den Aufwand für diesbezügliche manuelle und ungeliebte Reviews erspart und die Architektur im Tagesgeschäft lebendig werden lässt. Von diesem Weg und den erzielten Resultaten möchten wir berichten, denn eingehaltene Architekturen sind für uns inzwischen eine Selbstverständlichkeit in unserem Entwicklungsprozess geworden.

Continuous Systems Integration with Virtual Spaces

Architecting for Continuous Software Engineering

Pablo Oliveira Antonino, Thomas Kuhn, Benno Kallweit, Fraunhofer IESE (ESE Kongress 2018)

Continuous software engineering aims at orchestrating engineering knowledge from various disciplines in order to deal with the rapid changes within the ecosystems of which software-based systems are a part. The literature claims that one means for ensuring these prompt responses is to incorporate virtual prototypes of the system into the development process as early as possible, such that requirements and architecture decisions are verified early and continuously by means of simulations. Despite the maturity of practices for designing and assessing architectures by means of simulations, there is still a lack of platforms that would enable both the design and simulation of architecture drivers and solutions in a continuous engineering context. In this paper we therefore present the Fraunhofer Virtual Space for Continuous Engineering, which is a web-based platform that enables (i) model- and text-based architecture specification (drivers and design), (ii) continuous simulation of architecture solutions against architecture drivers, and (iii) continuous analysis of the integration and consistency of engineering artifacts.

Wie realisiert man vernetzte sicherheitskritische Systeme?

Ein systematischer Weg am Beispiel einer Antriebssteuerung

Markus Maier, Assystem Germany (ESE Kongress 2018)

Ob Analyse von Prozessdaten oder einfach nur die effiziente Umsetzung von Software-Updates im Feld: Neue Geschäftsmodelle erfordern zunehmend die Öffnung einst abgeschotteter sicherheitskritischer Steuerungssysteme. Assystem zeigt einen systematischen Weg der Entwicklung sicherheitsbezogener vernetzter Systeme am Beispiel einer Antriebssteuerung unter Einhaltung der für den Anwendungsfall relevanten Security- & Safety-Standards.

Mit Software-Archäologie auf dem Weg zu A-SPiCE® Level 3

Umgang mit gewachsener Software

Kosmas Kopmeier, Christian Steinmann, Synspace Group (ESE Kongress 2018)

Die Prozesse der meisten Unternehmen beschreiben den Entwicklungsablauf eines Produkts oder Software auf der grünen Wiese beginnend. Oft gibt es aber auch Projekte, bei denen der Prototyp oder fast schon voll funktionsfähiger Code schon lange, teilweise seit Jahren, vorhanden ist. Dieser ist aber nicht nach den geordneten und dokumentierten Abläufen entstanden, die für ein Serienprojekt gefordert sind. Diesen Fall nennen wir hier Software-Archäologie. Der reguläre Ablauf, dass erst Anforderungen niedergeschrieben werden und dann ein Architektur-Entwurf erstellt wird, bevor dieser dann in Code runtergeschrieben wird, funktioniert nicht, da der Code z.B. nicht dem schönen, neuen Layer-Model entspricht, das der neue Software-Architekt entwickelt hat.


 

Vortragsreihe: Automotive

Beiträge werden in Kürze bereitgestellt. 


 

Vortragsreihe: Echtzeit

Praktische Tipps und Tricks für die Laufzeitoptimierung

Optimierungsansätze auf RTOS-/Codeebene; Single-/Multicore

Peter Gliwa, GLIWA GmbH embedded systems (ESE Kongress 2018)

Die Ressource "Rechenzeit" wird in vielen Projekten im Verlauf der Entwicklung knapp. Im Folgenden sollen einige praktische Ansätze beleuchtet werden, um in solchen Situationen Steuergerätesoftware hinsichtlich der Laufzeit zu optimieren. Zum anderen werden Maßnahmen angesprochen, um frühzeitig beim Design, bei der Konfiguration und Implementierung Laufzeitprobleme zu verhindern.

Die Vektoreinheit - dein Freund und Helfer

Mehr Performance zum Nulltarif?

Dr. Andreas Ehmanns, MBDA Deutschland GmbH (ESE Kongress 2018)

Vektoreinheiten sind seit vielen Jahren in den gängigen Prozessorfamilien Standard und dennoch werden sie - auch im embedded Bereich - häufig von den Softwareentwicklern nicht verwendet. Gerade bei ARM-Prozessoren ist die Entwicklung in diesem Bereich in den letzten Jahren deutlich voran geschritten und eröffnet dem (embedded) Entwickler neue Leistungsbereiche. Von diesen sehr leistungsfähigen Einheiten Gebrauch zu machen und zu entscheiden, wann deren Nutzen brauchbare Vorteile bringt, erscheint häufig wesentlich schwieriger, als es wirklich ist.

Was wird nur aus meinem Code?

Software-Performance endlich fundiert bewerten

Daniel Penning, embeff GmbH (ESE Kongress 2018)

Die Performance von Software spielt bei nahezu jedem Embedded-Projekt eine entscheidende Rolle. Schneller Code führt zu besseren Reaktionsraten und höherem Systemdurchsatz. Eine spezifizierte Aufgabenstellung kann so gegebenenfalls mit weniger Leistung und dementsprechend kleinerem Mikrocontroller bewältigt werden. Der Energiebedarf sinkt und führt so insbesondere bei batteriebetriebenen Systemen zu längerer Laufzeit bzw. einer geringeren Dimensionierung der Batteriekapazität. Diese Effekte resultieren schlussendlich in einer günstigeren Hardware.

Echtzeitfähigkeit von Containerlösungen am Beispiel Docker

Performance-Analyse der Echtzeitfähigkeiten von Linux-basierten Container-Lösungen auf ARM

Michael Schnelle, Mixed Mode (ESE Kongress 2018)

Als Echtzeitsystem bezeichnet man im Allgemeinen ein System, das auf ein Ereignis innerhalb einer endlichen und vorhersagbaren Zeitspanne reagieren muss. Solche Systeme stellen folglich nicht nur logische, sondern auch zeitliche Anforderungen an ein Ergebnis. Echtzeit bedeutet dabei nicht unbedingt schnelles Handeln, sondern das Einhalten der gesetzten Zeitschranken und deterministisches Verhalten. Echtzeitsysteme werden dabei in zwei Kategorien eingeteilt: weiche und harte Echtzeitsysteme.

Safety in sich schnell ändernden Systemen

Praxistaugliche Anwendung von formalen Methoden

Christine Jakobs, Matthias Werner; TU Chemnitz (ESE Kongress 2018)

Der klassische Entwicklungsprozess für Software im Bereich eingebetteter Echtzeitsysteme geht von einem statischen System mit festgelegten Komponenten aus. Die Marktnachfrage führt zu einem Bedarf an stärkerer Dynamik. Dadurch erhöht sich die Komplexität und es wird wichtiger, den Erhalt von sicherheitskritischen Eigenschaften (safety) durch stringente Modellierung und Analyse abzusichern.

Logical Execution Time in the Automotive Environment

Introduction and Application

Martin Alfranseder, Stefan Kuntz, Martin Kardos, Ralph Mader; Continental Automotive GmbH (ESE Kongress 2018)

Within the next years, EE architecture in automotive systems will change significantly. Domain controller platforms are introduced that combine different kinds of microcontrollers equipped with several cores and replace ECUs that are used nowadays. System topologies change from simple networks to hierarchical networks.  Furthermore, features like automated and autonomous driving lead to the fact that functions, which formerly were decoupled from each other, get more and more tightly connected and distributed. In addition, there are still parts of software that are only capable of running on a single core and shall be enabled for multicore based systems. Such functions and complex chains of effects demand stronger timing requirements that are getting more and more difficult to handle. Thus, new methods like Logical Execution Time (LET) are required to ensure all these aspects. This paper briefly describes the concept of LET and presents an overview of different implementations in practical Powertrain applications. Finally, the current status of introducing LET in the AUTOSAR standard is given.


 

Vortragsreihe: Implementierung

10 kleine Dinge, die C++ einfacher machen

Wartbarer Code durch den Einsatz von modernen C++ Features

Dominik Berner, bbv Software Services (ESE Kongress 2018)

Die neuen Standards haben die Programmiersprache C++ merklich modernisiert und teilweise ganz neue Programmierparadigmen in die Welt von C++ eingebracht. Die "großen" Änderungen, wie Variadic Templates, auto, Move-Semantik, Lambda-Ausdrücke und weitere, haben für viel Diskussionsstoff gesorgt und sind dementsprechend weit herum bekannt. Nebst den Sprachfeatures hat auch die Standard-Bibliothek eine merkliche Erweiterung erfahren, und viele Konzepte aus Bibliotheken wie boost wurden so standardisiert. Nebst diesen sehr spürbaren (und teilweise auch umstrittenen) Features gibt es eine ganze Menge an kleinen, aber feinen Spracherweiterungen, die oft weniger bekannt sind oder übersehen werden.

A Guide through the Jungle of Security Coding Standards

Software Security is Becoming Increasingly Important

Michal Rozenau, Parasoft  (ESE Kongress 2018)

Searching for security-focused coding standards, you find a variety of sources – including CERT Coding Standards, OWASP, CWE, and multiple various recommendations and best practices. Additionally, there are many domain-specific standards, including MISRA, AUTOSAR, and a whole family of IEC 61508-based standards. It is a challenge to deal with this amount of information and determine the set of coding standards that should be applied to your specific project. And it is an even bigger challenge to do it in the middle of the SDLC, when the already-existing software needs to be suddenly tuned to comply to such standard.

C++: Typsicher

Fehler zur Compile-Zeit finden und Tippfehler reduzieren

Andreas Fertig (ESE Kongress 2018)

Templates existieren in C++ bereits seit einiger Zeit. Mit dem C++11 Standard-Update wurden sie noch besser. Nun gibt es  variadische Template-Argumente. Einige Leute argumentieren, dass dies das wichtigste neue Feature in C++11 ist. Templates sind eine gute Möglichkeit, den Compiler-Code für Sie erstellen zu lassen. Da Templates zur Kompilierzeit ausgewertet werden, sind sie auch perfekt für eine frühestmögliche Fehlererkennung. Sie können robusteren Code mit ihnen schreiben. Mit Templates können Sie Berechnungen bereits zur Kompilierzeit durchführen. Zusammen mit constexpr sind sie ein sehr leistungsfähiges Werkzeug, das jeder in seiner Werkzeugkiste haben sollte.

Festkomma-Arithmetik – einfacher als man glaubt

Einsatz in eigenen Algorithmen und Bibliotheken

Ferdinand Englberger, Universität der Bundeswehr München (ESE Kongress 2018)

Obwohl immer mehr Mikrocontroller über Gleitkommarechenwerke verfügen, wird Festkomma-Arithmetik in vielen Bibliotheken z. B. für digitale Signalverarbeitung, für neuronale Netze oder in Regelungsalgorithmen eingesetzt. Die Befehlssätze der Prozessoren haben Erweiterungen zum Umgang mit Festkommazahlen und ermöglichen mit SIMD-Instruktionen deren effektive Verarbeitung. Es werden die Grundlagen der Festkomma-Arithmetik erläutert und damit das notwendige Verständnis geschaffen, um diese Arithmetik in eigenen Algorithmen und in Bibliothekfunktionen effektiv einsetzen zu können.

Moderne Compiler-Optimierungen

Alte und neue Tricks für den kleinsten und schnellsten Code

André Schmitz, Green Hills Software (ESE Kongress 2018)

Compiler-Optimierung ist ein alter Hut und bekannt, seidem es Compiler gibt. Trotzdem kommen jedes Jahr neue Versionen von Compilern auf den Markt, die nochmal z.B. 5% kleineren oder 10% schnelleren Code generieren. Wie kann das sein? Sind die bisherigen Compiler etwa schlecht, oder verwendet der Compiler-Hersteller Tricks, die nicht standardkonform sind? Compiler-Optimierung ist von Natur her eine komplexe Angelegenheit, und der Erfolg der Optimierung hängt sehr stark von dem zu optimierenden Sourcecode ab. Dieser Beitrag beleuchtet grundsätzliche Konzepte von optimierenden Compilern für C und C++, zeigt Beispiele sowohl von altbekannten als auch von sehr aktuellen Optimierungen auf und hinterfragt den Sinn dieser Optimierungen. Außerdem werden Fallstricke aufgezeigt beim Versuch, Code manuell zu optimieren.

Migration auf Python 3

Warum die Uhr immer lauter tickt

Rainer Grimm, Modernes C++ (ESE Kongress 2018)

Python 3 wurde im Jahr 2008 veröffentlicht. Da Python 3 nicht abwärtskompatibel zu Python 2 ist, wurde in der Regel der bestehende Code in Python 2 weiterentwickelt und der neue Code direkt in Python 3 geschrieben. Die Existenz zweier Parallelwelten nimmt am 1.1.2020 ein abruptes Ende. Mit dem 1.1.2020 wird der Unterstützung von Python 2 eingestellt. Die Migration der Codebasis von Python 2 nach Python 3 ist daher unvermeidlich.

C++ in Deeply-Embedded Systems

Modern Code on Tiny Chips

Dr. Michael von Tessin, Sonova (ESE Kongress 2018)

Most deeply-embedded systems are implemented in C. In this paper, we explain why, and why those systems could profit from using C++. We present how this can be achieved successfully. To this end, we also report from our own experience in converting a large, productive, deeply-embedded code base from C to C++.


 

Vortragsreihe: Internet of Things

Beiträge werden in Kürze bereitgestellt.


 

Vortragsreihe: Machine Learning

Beiträge werden in Kürze bereitgestellt.


 

Vortragsreihe: Management

Beiträge werden in Kürze bereitgestellt.


 

Vortragsreihe: Modellierung

Guidelines Are a Modeler’s Best Friend

Ein Einstieg in die statische Modellanalyse

Dr. Simon Rösel, Model Engineering Solutions GmbH (ESE Kongress 2018)

Anforderungsmodellierung ist eine Technik, die in vielen Unternehmen nicht oder nur ansatzweise praktiziert wird, und die vergleichsweise einfach und iterativ eingeführt werden kann. Da der Kosten- und Zeitdruck in vielen Unternehmen enorm ist, befinden sich hier "low hanging fruit", mit denen die Entwicklung effektiver gestaltet werden kann. Da es viele unterschiedliche Ansätze gibt, werden hier sowohl die Konzepte vermittelt, die einem helfen, was in die eigene Arbeit passt, als auch konkrete Taktiken, die mit wenig Aufwand Ergebnisse bringen.

The "Standards" Way of Modeling

How I Learned to Stop Worrying and Love Modeling

Robert Baillargeon, Sodius, Walter van der Heiden, Willert Software Tools (ESE Kongress 2018)

With every new standard, there is a target of an improved process of engineering. However, to design vehicles no standard is used, or can be judged, in isolation. For this reason, it is critical that we have patterns of adoption that leverage these standards to their strength in concert with other standards.  Over decades of practice in engineering design and tool deployment our teams have identified patterns of delivering the best from standards that improves adoption for the engineers. 

Fallstudie: Terrain Awareness and Warning System

Automatische Parallelisierung eines modellbasierten Designs

Peer Ulbig, Umut Durak, David Müller, Deutsches Zentrum für Luft- und Raumfahrt e.V., Oliver Oey, Timo Stripf, Michael Rückauer, emmtrix Technologies GmbH (ESE Kongress 2018)

Der Luft- und Raumfahrtsektor verlangt nach neuen Methoden und Ansätzen zur kosteneffizienten Steigerung der Performanz von Anwendungen unter Beibehaltung des Sicherheitsniveaus und der Programmierbarkeit. Ein vielversprechender Ansatz besteht in der Verwendung von Multicore-Architekturen. Um ihr volles Potenzial ausschöpfen zu können, besteht neben der notwendigen Zertifizierung allerdings auch ein Bedarf an Programmierwerkzeugen und -prozessen. Dabei ist die Unterstützung des modellbasierten Entwurfs zur Vereinfachung der Systemmodellierung, der Verifikation und der Validierung von Designentscheidungen entscheidend. In diesem Paper wird daher ein modellbasierter Entwurf für Multicore-Architekturen vorgestellt. Als Fallstudie wird ein "Terrain Awareness and Warning System" (TAWS) modellbasiert entwickelt und mit Hilfe der interaktiven Parallelisierungslösung emmtrix Parallel Studio (ePS) für die Ausführung auf einem Infineon Aurix TC297B Mikrocontroller parallelisiert.


Beiträge ESE 2018, Teil 2