• Home
  • Agenda
  • Sprecher
  • Sessions
  • Workshops
  • Location
  • Galerie
  • Covid
  • FAQ
  • Home
  • Agenda
  • Sprecher
  • Sessions
  • Workshops
  • Location
  • Galerie
  • Covid
  • FAQ

Sessions

Hier sehen Sie die Sessions der ADC.
Änderungen vorbehalten.

  • Sessions

    24. & 25. Mai
  • ADC++ Sessions

    24. & 25. Mai
Robert Eichenseer
Session

Keynote: Software Entwickler*innen - Die missverstandene Spezies

Robert Eichenseer

Ach' wie einfach war das Dasein als Software Entwickler*in in vergangenen Tagen verglichen mit Heute!
Noch vor ein paar Jahren reichte es aus der Experte für „EIN THEMA" in der Firma zu sein und ab und an einen nicht funktionierenden Drucker im Familien-, oder Freundeskreis zu fixen. Die Anforderungen haben sich grundlegend geändert.
Lassen Sie sich auf eine Reise mitnehmen, in der ein Überblick auf aktuelle Technologien, deren Entstehung und ein möglicher Ausblick auf die Zukunft gezeigt wird.

Christian Giesswein
Session

Deep Dive mit Blazor – Lifecycle und Rendering in & out!

Christian Giesswein

Blazor hat ein einfaches, verständliches Programmiermodell. Doch wie immer sitzt der Teufel im Detail. Deswegen gilt es in dieser Session einmal unter einen Blick unter die Motorhaube zu werfen. Gerade die Themen Lifecycle in und mit Blazor ist ein relevantes und spannendes Thema, und in diesem Zusammenhang natürlich vor allem auch, wie die Elemente am Ende des Tages gerendert werden. Ein tiefer Einblick und eine spannende Reise in dieser Session rund um Internals von Blazor.

Stephan Hüwe
Session

Rapid Application Development mit C-A-B-B-M (C#, Azure, Blazor, Back4App, MudBlazor)

Stephan Hüwe

Du möchtest schnell Web-Applikationen entwickeln? Mit der Kombination dieser vier Werkzeuge kannst Du innerhalb kürzester Zeit ansprechende Web-Applikationen entwickeln. C# ist unsere Programmiersprache, wir hosten auf Azure, nutzen Blazor als Web-Framework, die Datenhaltung übernimmt Back4App und für das Material-Design sorgt MudBlazor. In diesem Talk möchte ich diese Vierer-Kombination vorstellen und wir entwickeln eine kleine Applikation zusammen.

Maria Korneeva
Session

Modernes Web - wie man es nicht überkompliziert

Maria Korneeva

Frontend-Entwicklung ist heutzutage nicht einfach: Javascript, Typescript, CSS-Präprozessoren, geräte- und browserübergreifende Kompatibilität, Ally, i18n, Frameworks, Frameworks, Frameworks... Benötigen Sie einige Offline-Funktionen? Dann sollten Sie sich mit PWAs beschäftigen. Wollen Sie Zugang zur Kamera? Lassen Sie sich darauf ein und tauchen Sie in die Welt der Hybrid-Apps ein... Aber muss es immer so kompliziert sein? Wussten Sie zum Beispiel, dass <input type="file" /> ausreicht, damit der Benutzer Dateien aus dem Speicher seines Geräts auswählen oder ein neues Bild mit der Kamera des Geräts aufnehmen kann? In meinem Vortrag werde ich verschiedene Funktionen der Webplattform und die Möglichkeiten der HTML5-APIs demonstrieren, wie z. B. Geolokalisierung, Offline-Modus, Spracherkennung usw. Ich werde Code-Beispiele liefern und auf aktuelle Einschränkungen und Implementierungszwänge eingehen.

Christopher Münch
Session

Records in C# mit .NET 5 & .NET 6

Christopher Münch

Mit .NET 5 und C# 9 wurde der Sprache ein neuer Datentyp hinzugefügt: Das Record. Mit Records ist es möglich, unveränderliche (immutable) Datenstrukturen zu definieren. Zusätzlich dazu verwenden Records – auch wenn sie wie Klassen Referenztypen sind – keinen Verweisvergleich. Die Gleichheit zweier Records wird über die eigentlichen Werte des Records ermittelt. Doch ein Record bietet noch viele weitere Features, auf die ich in diesem Vortrag eingehen werde. Außerdem werfe ich einen Blick unter die Haube und zeige wie Records in C# implementiert werden und was der Compiler mit/aus diesen macht.

Christopher Münch
Session

Komponentenbasierte Webentwicklung in C# mit Blazor

Christopher Münch

Mit ASP.NET Core 3.0 wurde dem Web-Framework mit Blazor ein besonders spannendes Feature hinzugefügt. Seit seiner Einführung erfreut es sich großer Beliebtheit und hat in den letzten großen .NET Versionen weitreichende Updates erhalten. Mit Blazor ist es möglich, interaktive Webseiten komplett in HTML und C# zu schreiben. Während es zuvor mit Razor View/Pages nur möglich war, HTML-Code serverseitig vorzurendern, musste für clientseitige Interaktionen auf JavaScript zurückgegriffen werden. Vom Aufbau des Frameworks hat sich Microsoft hier sehr stark an beliebten, modularen SPA (Single Page Application) JavaScript-Frameworks wie Anuglar, React oder Vue orientiert. Blazor ist somit ein modulares und komponentenbasiertes Framework. In dieser Session werde ich zunächst einen allgemeinen Überblick über Blazor geben. In der weiteren Vertiefung werden die verschiedenen Hosting-Modelle (client- & serverseitig), sowie die komponentenbasierte Entwicklung betrachtet.

Kenny Pflug
Session

Legacy Apps mit modernen .NET Features ausrüsten

Kenny Pflug

Jeder kennt sie, jeder liebt sie: Apps, die seit Jahren, wenn nicht Jahrzehnten gewartet und erweitert werden. Häufig laufen diese noch auf alten .NET Framework Versionen wie 4.5 oder gar 4.0. Als Entwickler vermisst man dabei die neuesten Features von C# und der .NET Runtime. In diesem Talk sehen wir uns an, wie wir neue Features wie Span<T>, Records und Nullable Reference Types trotzdem in alten Projekten einsetzen können. Ebenso betrachten wir, wie wir schrittweise die Entwicklung in Legacy Apps verbessern können, indem wir Code entkoppeln und uns „Islands of Joy" aufbauen, die automatisiert testbar sind. Als Abschluss schauen wir uns an, wo Pro und Contra beim Upgrade auf .NET 6 liegen.

Nina Pollak
Session

Identity and access management for End-Customer centric application

Nina Pollak

Der sicherste Code für die Entwicklung eines Systems für Identitäts- und Zugriffsverwaltung ist jener, den wir nicht selbst schreiben müssen. Glücklicherweise bietet uns Azure Active Directory B2C in Kombination mit Azure App Service EasyAuth eine Möglichkeit wie wir unsere Anwendungen und Dienste absichern ohne ein eigenes Identitäts- und Zugriffsystem entwickeln zu müssen. In den letzten Jahren wurde dieses Service von Microsoft deutlich verbessert. Nebst einer sehr sicheren und stabilen Lösung, die gut skaliert bietet diese auch viele Anpassungen und Integrationsmöglichkeiten. In dieser Demo-Only Sessions sehen wir uns an, wie wir Azure AADB2C konfigurieren können und Anwendungen unter Berücksichtigung unterschiedlicher Identitätsanbieter wie Google, Facebook,… leicht absichern können.

Nina Pollak
Session

Configuration Management for Applications in Azure (Secure app config in Azure)

Nina Pollak

Das geheime Schlüssel und andere sensitive Konfigurationseinstellungen nicht in den Quellcode gehören ist heutzutage wohl jeder Person bekannt. Auch andere Konfigurationseinstellungen sollten sicher und gut verwaltet werden, denn auch durch Fehlkonfigurationen können Sicherheitslücken entstehen. In dieser Demo-Only Session sehen wir uns an wie wir Managed Identities, Azure KeyVault und Azure App Configuration einsetzen können, um unsere Konfigurationseinstellungen möglichst sicher zu verwalten und den Zugriff darauf auf das Notwendigste zu beschränken. Zudem zeige ich ihnen, wie sie die in Azure App Configuration integrierte Features-Flags Funktionalität nutzen können.

Florian Rappl
Session

Micro Frontends - Warum und warum nicht?

Florian Rappl

In den letzten 2 Jahren sind Micro Frontends als Architekturmuster immer populärer geworden. Doch was sind Micro Frontends genau? Und was sollen sie lösen? Wie können Micro Frontends implementiert werden? In diesem Vortrag geht Dr. Florian Rappl auf genau diese Fragen ein. Anhand eines illustrativen Beispiels zeigt er den Aufbau einer clientseitig-basierten Micro Frontend Lösung, die schnell umsetzbar und gut skalierbar ist. Im weiteren geht er auf fortgeschrittene Themen wie das Management von gemeinsamen Abhängigkeiten und die richtige fachliche Aufteilung der Applikationsfunktionalität ein.

Florian Rappl
Session

Micro Frontends mit Blazor

Florian Rappl

Mittlerweile hat sich Blazor im .NET Ökosystem bestens etabliert – viele Anwendungen werden bereits mit Blazor gestartet, auf Blazor migriert oder für einen Umstieg vorbereitet. Häufig treten jedoch spätestens bei der entwicklungstechnischen Skalierbarkeit Probleme auf, die sich nicht ohne weiteres lösen lassen. Ein möglicher Ausweg ist der Umstieg auf eine Micro Frontend Architektur. In diesem Vortrag diskutiert Micro Frontend Experte Dr. Florian Rappl mögliche Gründe und Implementierungsstrategien um Micro Frontends auch mit Blazor effizient umsetzen zu können. Florian zeigt anhand von praktischen Beispielen und illustrativen Demos mögliche Fallstricke und Wege um diese zu vermeiden. Hierbei sind nicht nur Skalierbarkeit und Umsetzbarkeit im Fokus, sondern auch Entwicklerfreundlichkeit und Robustheit.

Clemens Vasters
Session

Exploring Flow Architectures

Clemens Vasters

In Anlehnung an den Begriff "Flow Architectures" aus dem Titel des kürzlich erschienenen Buches von James Urquhart wird Clemens Vasters die Elemente ereignis- und nachrichtengesteuerter Architekturansätze untersuchen, die für viele anspruchsvolle, groß angelegte Unternehmenslösungen grundlegend sind. Wir werden uns mit Systemen befassen, die diskrete Ereignisse erzeugen und von diesen gesteuert werden, mit Systemen, die aus Event Streams abgeleitete Signale aussenden, aggregieren und auf diese reagieren, und wir werden die erforderliche und gewünschte Kopplung zwischen den Elementen eines Systems und die Auswirkungen dieser Kopplung auf die Anwendungsarchitektur untersuchen. Wir werden auch mit der falschen Vorstellung aufräumen, dass einige Elemente des Messagings, wie Queues, irgendwie "traditionell" oder "veraltet" sind, während Event Streams "modern" sind - sie sind Facetten desselben Werkzeugkastens.

Clemens Vasters
Session

Azure Event Hubs - The Architect's Cut

Clemens Vasters

Ich bin der leitende Architekt von Azure Event Hubs. Dies ist ein tiefer Einblick. Keine Feature-Delta-Sitzung, sondern ein Blick hinter die Kulissen, wie die Technologie funktioniert und eine Erkundung von Funktionen, die das Publikum vielleicht noch nicht kennt.

Ralf Richter
Session

Mit Serverless zur nachhaltigen Web App

Ralf Richter

Nachhaltigkeit muss sich auch in unserer Entwicklungsarbeit wieder spiegeln. Als Teil der Green Manifesto Community zeige ich in dieser Session, wie man mit Serverless Technologien eine nachhaltige Anwendung erstellt. Dabei gehen wir nicht nur auf die Infrastruktur ein – anhand von dem Beispiel der Web App https://www.greenmanifesto.de zeige ich auf, mit welchen Techstack die App nachhaltig entstanden ist und dabei technisch keine Abstriche machen muss, noch Abstriche in der Performance. Am Ende der Session nimmst Du mit: Was ist eine nachhaltige Web App und wie Du mit Serverless Technologien wie z.B. Azure Static Web App, Azure Functions und ein paar grünen Software Entscheidungen zu Deiner eigenen nachhaltigen Web App kommst.

Marco Papula
Session

Introducing Testing into the Toni Kroos Academy Flutter App

Marco Papula

Eine große App mit zahlreichen Usern und leider keine Tests. Das erschwert uns Entwicklern natürlich erheblich die Arbeit, da sich leichter Bugs einschleichen können und selbst kleine Änderungen dazu führen können, dass wir einen Screen deutlich verbessern und einen anderen dabei gänzlich kaputt machen.

Ich zeige euch am Beispiel der Toni Kroos App, wie man es am besten angeht, Tests hinzuzufügen wenn bisher keine vorhanden sind und auch der Code nicht zwangsläufig mit Testing im Hinterkopf geschrieben wurde. Von der Argumentation mit dem PM, über welche technischen Hürden durch verwendete Plugins enstehen bis zu den spezifischen Test Plugins die wir mittlerweile in der App haben ist alles dabei.

Thorsten Kansy
Session

C# 10 Neuerungen

Thorsten Kansy

Welche neuen Features C#10 für den Entwickler mit bringt stellt Thorsten Kansy in diese Session kurz und übersichtlich vor. Von Neuerungen für Records über File Scoped Namespace ist da einiges dabei.

Rainer Stropek
Session

Automatisiertes Testen mit C# im Jahr 2022

Rainer Stropek

Testautomatisierung ist wichtig, das wissen alle SoftwareentwicklerInnen. Trotzdem erhält das Thema oft nicht die Aufmerksamkeit, die es haben sollte. Das ist schade, da moderne Tools für automatisiertes Testen von C#-Code die Aufgabe deutlich erleichtern. In dieser Session zeigt Rainer Stropek, wie er in seinen Projekten C# Unittests und Integrationstests (DB, Web APIs) entwickelt. Rainer stellt die von ihm verwendeten Frameworks vor und zeigt auch, wie die Tests in Docker und GitHub Actions automatisiert ausgeführt werden können.

Rainer Stropek
Session

Infrastructure as Code mit Bicep

Rainer Stropek

Azure ARM Templates waren gestern, heute schreibt man Bicep Scripts. Bicep erleichtert den Infrastructure-as-Code (IaC) Ansatz für Azure-EntwicklerInnen spürbar. In dieser Session zeigt Rainer Stropek an Beispielen, wie Bicep funktioniert und wie man in der Praxis damit umgeht.

Christoph Menzel
Session

Dart eine totgeglaubte Sprache in neuer Blüte

Christoph Menzel

Die Version 1.0 von Dart wurde bereits im November 2013 veröffentlicht. Seitdem war es immer sehr ruhig um die Sprache und sie wurde nie wirklich erfolgreich.
Doch nun, da Dart die Programmiersprache hinter dem mehr als erfolgreichen Cross-Plattform Framework Flutter ist, gewinnt sie mehr und mehr an Beliebtheit und Popularität.
Dart bringt einige sehr interessante und einmalige Features mit sich, so ist es zum Beispiel möglich sowohl „just in time" (JIT) als auch „ahead of time" (AOT) zu kompilieren. Aber auch das Kompilieren von Dart Code nach Java Script ist möglich.
Anhand verschiedener Live-Codings und Beispielen gebe ich Dir einen Einblick in die Programmiersprache Dart und zeige Dir unterschiedliche Features.
Lass Dich in die Welt von Dart entführen und davon begeistern!

Christoph Menzel
Session

Flutter, der heilige Gral der Cross-Plattform-Entwicklung?!

Christoph Menzel

Wenn sich Google einem Thema annimmt, dann meist richtig und mit vollem Einsatz. Genau das sieht man auch beim Thema Cross-Plattform: Google entwickelte Flutter, ein UI Framework, mit dem native Apps für Mobile, Web und Desktop mit einer einzigen Codebase in sehr kurzer Zeit entwickelt werden können.
Was Flutter so einzigartig macht und wie wir es bereits produktiv für Apps einsetzen, zeige ich Dir in diesem Talk.
Anhand verschiedener Beispiele und Live-Codings siehst Du, warum uns Flutter so überzeugt hat. Damit sind wir auch nicht alleine, denn Toyota verwendet Flutter bereits für ihre neuen Infotainment Systems und viele weitere namhafte Firmen wie Microsoft, Canonical und BMW setzen ebenfalls auf das Framework.
Lass Dich in die Cross-Plattform-Welt von Flutter entführen und davon begeistern!

Philipp Bauknecht
Session

Deep Dive Infrastructure as Code für Web Entwickler mit Bicep in Azure

Philipp Bauknecht

Bicep ist die domänenspezifische Sprache von Microsoft mit deren deklarativer Syntax sich Azure Ressourcen einfach bereitstellen lassen. In dieser demolastigen Session lernen wir anhand eines umfangreichen Szenarios aus der Praxis wie verteilte Web Applikationen in Azure modelliert und erstellt werden können. Dabei gehen wir auf verschiedene Azure Dienste wie App Services, Container Apps, Service Bus, Storage, Functions und FrontDoor ein mit vielen praktischen Tipps und Tricks.

David Tielke
Session

Architektur 101

David Tielke

Das Thema Architektur ist sehr umfangreich und leider schlecht dokumentiert. Aber jedes Projekt benötigt eine Architektur, wenn es langfristig gewartet und weiterentwickelt werden soll. In dieser Session gibt Ihnen Architekturexperte David Tielke einen Überblick was Architektur ist, warum diese für jedes Projekt so enorm wichtig ist und was genau Sie wissen müssen, um Ihre Architektur im Griff zu behalten.

Christian Waha
Session

Building first Apps with Q#

Christian Waha

Hier gibt Christian Waha eine Einführung in Q# und zeigt Ihnen wie man erste Apps erstellt.

Christian Waha
Session

Teams Store Application - How to build and bring it to the store

Christian Waha

Man hat eine App-Idee, doch weiß man nicht wie man diese erstellt und veröffentlicht? Christian erklärt in dieser Session wie man Apps baut und anschließend in den App-Store bringt.

Alexander Eiswirth
Session

AWS Cognito - Web authentication kann auch einfach sein

Alexander Eiswirth

Identität ist die Eingangstür einer jeden Benutzeraktion. Wenn man nicht gerade ein Sicherheitsexperte ist, sollte man beim Thema Authentifizierung & Autorisierung lieber auf einen Dienst zurückgreifen, der einem genau diese Komplexität abnimmt. In dieser Session möchte ich euch am Beispiel von AWS Cognito zeigen, wie schnell und einfach man genau dieses Problem in den Griff bekommt. Wir wenden das Ganze praktisch an und implementieren eine Simple Webapplikation in AWS, die wir mit AWS Cognito versehen, um Benutzer zu authentifizieren und zu autorisieren.

Raphael Schwarz
Session

ASP.NET Core Tipps und Tricks - Plaudern aus dem Nähkästchen

Raphael Schwarz

Bei jahrelanger Erfahrung mit ASP.NET Core eignet man sich einige kleine Kniffe an. In dieser Session erzählt Raphael gängige Tipps und Tricks rund um ASP.NET Core.

Hannes Preishuber
Session

Microsoft Teams Graph API mit ASP.NET

Hannes Preishuber

So richtig cool wird Teams erst, wenn es sich in eigene Systeme integriert. Dazu sieht Microsoft die Graph API vor. Ich zeige euch wie wir Authentifizierung und Workflow in unser bestehendes ASP.NET basiertes CMS integriert haben und man wesentlich mehr aus Teams rausholen kann. Ein paar Slides und Coding.

Hannes Preishuber
Session

Back to the 90’s TCPIP

Hannes Preishuber

Jeder nutzt es und macht sich keine Gedanken darüber. Hannes baut in dieser Session von ganz unten mit .NET über alle Plattformen eine Service Architektur ohne Rest, gRPC oder gar WCF.

Kenny Pflug
Session

ASP.NET Core Minimal APIs in der Praxis

Kenny Pflug

Mit ASP.NET Core 6 wurden die sog. Minimal APIs eingeführt, die langfristig ASP.NET Core MVC ablösen sollen, wenn es um die Erstellung von Web APIs geht. Doch wie geeignet ist diese Technologie für den Produktionseinsatz? Wir werfen einen Blick unter die Haube und besprechen Struktur, Performance, Authentifizierung, Swagger Support, Dependency Injection und automatisierten Testen mit der neuen Endpunkt-Technologie. Weiterhin werfen wir einen Ausblick auf die Neuerungen, die wahrscheinlich mit .NET 7 kommen werden und wo aktuell noch Probleme zu finden sind.

Thorsten Kansy
Session

.NET (Core) Stand der Dinge

Thorsten Kansy

Im November ist bereits die 6. Version von Microsoft‘s plattformübergreifenden Framework released worden. Zeit einmal zu schauen, was der Stand der Dinge eigentlich ist. In dieser Session wirft Thorsten Kansy einen Blick auf Entity Framewore Core, ASP.NET Core & Co und zeigt was sich in den letzten 6 Jahren denn so getan hat und ob der Neuzugang praxistauglich ist.

Roland König
Session

Moderne Desktop-Apps mit WinUI 3

Roland König

Mit WinUI 3 entsteht gerade der neueste Vertreter von GUI-Technologien für Windows. Technisch werden die XAML-Controls und die XAML-Runtime der Universal Windows Platform (UWP) aus dem Betriebssystem entkoppelt und als NuGet-Paket bereitgestellt. Anders als vorher können nun auch klassische Desktop-Applikationen nach dem Win32-Modell mit diesem Framework entwickelt werden. Andere Eigenschaften wie etwa die Unterstützung für C++ Applikationen bleiben erhalten. In Summe hat WinUI das Potential, die Basis für moderne Windows-Desktopentwicklung zu werden.

Stephan Hüwe
Session

Monolith als Design Pattern

Stephan Hüwe

Ich gebe zu: Ich liebe Monolithen. Ja, das entspricht zwar vielleicht nicht dem Hype und ist nicht cool. Aber es gab eine Zeit, da haben wir noch Software entwickelt. Ist es wirklich besser, schlechten Code auf viele Microservices zu verteilen? Dieser Vortrag nimmt Sie mit auf eine kontroverse Reise durch das Tal der Monolithen.

Philipp Bauknecht
Session

E2E Secretless in Azure mit Managed Identities

Philipp Bauknecht

Mit Managed Identities können sich Azure Dienste untereinander authentifizieren und autorisieren, ganz ohne Connection Strings oder Passwörter. Das erhöht nicht nur die Sicherheit, sondern steigert auch die Effizienz in Entwicklung und Betrieb. In dieser Session tauchen wir tief in ein umfangreiches Beispiel ein und lernen wie wir Managed Identities mit Bicep sowohl im DevOps-Prozess als auch zur Laufzeit einer Web-Applikation mit einer SQL Datenbank nutzen können.

Patrick Charrier
Session

Typsichere APIs mit OpenAPI und GraphQL für C++

Patrick Charrier

REST und JSON sind die defacto Standards um zwischen Anwendungskomponenten Daten über das Netzwerk auszutauschen. Typsicherheit bleibt dabei jedoch oft auf der Strecke und bei Sender und Empfänger werden dieselben Data-Transfer-Objects (DTOs) oft redundant und manuell fehleranfällig typisiert. Der Talk zeigt zunächst auf wie diese Probleme mit Hilfe der Datenbeschreibungssprache OpenAPI inkl. entsprechender Code-Generatoren vermieden werden können. Im letzten Teil wird demonstriert, wie das Problem der Granularität von APIs mit Hilfe von GraphQL gelöst werden kann.

Felix Mößbauer
Session

Paketierung eines C++ Projekts mittels Cmake

Felix Mößbauer

Beim Entwickeln einer C/C++ Software Bibliothek sollte bereits zu Anfang ein Augenmerk auf die einfache Integration der Bibliothek gelegt werden.
Dies gilt insbesondere für Bibliotheken, welche später von externen Nutzern in deren Anwendungen integriert werden sollen.
Da in vielen Projekten bereits CMake als Buildsystem verwendet wird, liegt es nahe, auch CMake für die Beschreibung der Compiler und Linker Optionen, sowie abhängiger Bibliotheken und deren Header zu verwenden.
Bei korrekter Beschreibung reichen dann folgende zwei Zeilen zur
Integration:
find_package(foo REQUIRED)
target_link_libraries(myapp PRIVATE foo::foo)
Der Vortrag führt anschaulich durch den Prozess des Paketierens unter Berücksichtigung folgender Ziele:
(a) einfache Integration der Bibliothek in eine Anwendung
(b) Erkennen fehlender Abhängigkeiten vor dem Kompilieren
(c) kein Spamming: Compiler und Linker Optionen nur dort wo benötigt hinzufügen
(d) flexible Paketierung: Einfache Integration in OS Distributions
(e) Unterstützung nicht CMake basierter Buildsysteme (z.B. mittels PKG-Config)
Hierbei geht der Vortrag insbesondere auf die Unterschiede zwischen Import und Export Targets, Find_Package und PackageConfig Skripten sowie Private / Interface / Publik Relationen ein.

Daniela Engert
Session

Vorschau auf C++23

Daniela Engert

C++20 war groß - sehr groß. Manche sagen sogar, es hatte so viele Neuerungen gebracht, dass es nicht nur Anwender überfordern könnte, sondern auch die Entwickler der Compiler und Standardbibliotheken, sodaß das C++ Komittee in C++23 keine größeren Neuerung bringen sollte. Trotzdem gab es natürlich einen Plan für die Dinge, welche als Ziele für den kommenden Standard vordringlich bearbeitet werden sollten. Und dann kam die Pandemie und notwendigerweise andere Methoden und Vorgehensweisen zur gemeinsamen Arbeit an der Spezifikation von C++23.

Volker Hillmann
Session

Evolution von modernem C++ am Beispiel eines einfachen Problems

Volker Hillmann

Dieses ist wieder ein mehr praxisorientiertes Thema rund um moderne, neue C++ Eigenschaften (C++11 – 20). Bjarne Stroustrup hat in einem seiner Bücher mal geschrieben, dass C++ Entwickler zwar die neuen Eigenschaften von C++11 (und 14, 17, 20) wahrgenommen, aber nicht den grundlegenden Programmierstil geändert haben und neue Paradigmen annehmen. Kann man also an einem so einfachen Beispiel, wie dem Einlesen einer größeren sequentiellen Datei Zeit und Ressourcen sparen, wenn man aktuelles C++ einsetzt?

Richard Kaiser
Session

C++17 pmr Allokatoren und STL Container in Embedded Anwendungen

Richard Kaiser

In der Voreinstellung reservieren die Container der C++ Standardbibliothek ihren Speicher mit new und geben ihn mit delete wieder frei. Diese Aufrufe haben keine determinierten Ausführungszeiten und können zu einer Speicherfragmentierung führen.
Das kann in vielen embedded Anwendungen nicht toleriert werden. Die AUTOSAR Regel A18-5-5 verlangt (wie auch entsprechende MISRA-Regeln), dass Speicherverwaltungsfunktionen die folgenden Anforderungen erfüllen müssen:
(a) deterministic behavior resulting with the existence of worst-case execution time,
(b) avoiding memory fragmentation,
(c) avoid running out of memory,
(d) avoiding mismatched allocations or deallocations,
(e) no dependence on non-deterministic calls to kernel.
Deshalb dürfen die Container der C++ Standardbibliothek in solchen Anwendungen nicht verwendet werden.
Seit C++17 stehen die STL Container aber mit Allokatoren aus dem namespace std::pmr (polymorphic memory resources) zur Verfügung. Diese verwenden kein new und delete. Die Container mit diesen neuen Allokatoren können oft so verwendet werden, dass die Anforderungen AUTOSAR Regel A18-5-5 erfüllt werden. Damit kann man das erste Mal in der Geschichte von C++ die Vorteile der STL Container in einem großen Teil der embedded Welt nutzen.

Holger Kolb
Session

C++ & Docker & Portainer & Clion - Smartes Development in Container Zeiten

Holger Kolb

Docker & Co sind nicht nur Ops, sondern auch Dev. Eine kurze Geschichte wie Docker die Entwicklung mit C++ bereichert.

Rafael Bachmann
Session

Eine Einführung in Bare Metal Programmierung in Rust

Rafael Bachmann

Mikrocontroller ohne Betriebssystem sind ein zentraler Bestandteil vieler eingebetteter Systeme. Weil diese Systeme direkt mit der Außenwelt interagieren können, sind sie oft hohen Leistungs- und Sicherheitsanforderungen unterworfen. Diese decken sich mit einigen Werten und Konzepten des Rust Projektes: hohe Performance bei niedrigem Speicher- und Energiebedarf, definiertes Verhalten und sichere Nebenläufigkeit, sowie Compiler und Tooling, welche uns Entwicklern zur Seite stehen.
Natürlich gibt es auch Herausforderungen für Bare Metal Rust - die großzügige Nutzung (auch transitiver) Abhängigkeiten scheint zunächst ungewöhnlich, man begegnet mehrzeiligen Typsignaturen, und für Asynchronizität (Interrupts, DMA, oder Multitasking) wird mit verschiedenen Ansätzen experimentiert.
Wir werden in dieser Session von den Grundlagen der Rust Bare Metal Programmierung ausgehen, um dann Bibliotheken kennenzulernen, welche die Entwicklung portabler Treiber und deren Tests ermöglichen. Dabei werden uns einige Design Patterns, Architekturen, und Tools über den Weg laufen. Zu guter Letzt halten wir einen Ausblick auf Asynchronizität in Embedded Rust.

Rafael Bachmann
Session

Eine Einführung in Asynchrone Programmierung mit async/.await in Rust

Rafael Bachmann

In der Rust Community wurde lange diskutiert und experimentiert, um ein solides Fundament für asynchrone Programmierung zu finden. Seit Ende 2019 ist async/.await endlich in "stable" verfügbar, und das Ökosystem evolviert rapide.
Doch wie passen Event Loops und asynchrone Laufzeitumgebungen in die Konzepte der Programmiersprache Rust, welche auf Zero-Cost Abstractions, (Thread-)Safety by Design, und höchstmögliche Leistung in allen Bereichen setzt? Und, wie ergonomisch und praktikabel ist asynchrones Rust?
In dieser Session werden wir einige Grundlagen erkunden und dann mithilfe beliebter Bibliotheken in die Praxis einsteigen. Dabei werden uns asynchrone Design Patterns, strukturierte Nebenläufigkeit, Tooling, sowie ein paar Gotcha's und Antipatterns begegnen.

Rainer Stropek
Session

A Love Letter to Rust

Rainer Stropek

Rust ist seit einigen Jahren in aller Munde. In dieser Session erklärt Rainer Stropek, warum er sich in Rust „verliebt" hat. Wer neugierig auf Rust ist, aber noch nicht so recht weiß, ob die Plattform den Lernaufwand wert ist, der ist in dieser Session genau richtig.

Georg Zitzlsberger
Session

Einblick in die Entwicklung heterogener Anwendungen mit Intel Data Parallel C++ und SYCL

Georg Zitzlsberger

Intel und die Khronos Group haben mit Data Parallel C++ (DPC++) und SYCL eine neue Möglichkeit geschaffen Anwendungen für verschiedene Zielarchitekturen mit einer einheitlichen Codebasis zu entwickeln. Wir geben einen Einblick zu den zur Verfügung stehenden Sprach-Konstrukte, Erweiterungen und die zur Zeit unterstützten Zielarchitekturen.Demonstrationen mit einer Auswahl an DPC++- tauglichen Entwicklungswerkzeugen runden den Vortrag ab.

Frank Haferkorn
Session

R"---(Mehr über die Compound Gruppe „LOOP")---"_@de

Frank Haferkorn

In seinem deutschsprachigem Vortrag stellt Frank Haferkorn Details zur Compound-Gruppe "LOOP" für C/C++ vor. Nach einer Erläuterung der Syntax werden die Implementierung sowie Vor- und Nachteile der neuen Kontrollflussbefehle ausführlich erklärt - inklusive einer Vergleich Performance.
Die ursprünglichen C Kontrollfluss-Befehle haben sich seit Ende der 1970er Jahre wenig bis gar nicht verändert, Sie heißen „Compound(s)" und sind in die wohlbekannten if-else, while, do-while, for sowie switch und wurden in C++ erweitert um try{}catch(){} block sowie mit C++17 um if(;) und switch(;).
Ist es ein physikalisches Gesetz, dass keine weiteren Compounds hinzukommen dürfen?
Besprochen wird eine für C11, C++11 und C++20 angepasste „Header-Only" Lösung von:
loop(<N>){},
typed_loop(<type>, <N>){},
named_loop(<type>, <name>, <N>){}
named_loop_up(<type>, <name>, <N>){}
named_loop_down(<type>, <name>, <N>){}
Frank Haferkorn präsentiert sowohl eine C, eine C++11 als auch eine um Post-Expressions erweiterte Implementierung für C++20.
Die Vorteile sind Iterationen mit reduziertem Freiheitsgrad, verbesserter Lesbarkeit von C/C ++ und erlauben einfachere / performantere Notation von Algorithmen.
Ein Nebeneffekt ist eine Verbesserung der Teachability von C/C++ insbesondere für die Raspberry PI Generation.
(Zukünftige) Compiler können aufgrund des reduzierten Freiheitsgrads kürzeren Maschinencode Code mit zusätzlich reduzierter Zahl von „Cache-Misses" und damit eine Performance Gewinn erzielen.
Die Performance ist immer mindestens dem eines regulären for(;;){} Compound Befehls.
Eine Performance Analyse für verschiedenen CPU/DSP Plattformen und einer eine abschließende Diskussion darf nicht fehlen.

Volker Hillmann
Session

Von der Wunschliste zur Framework-unabhängigen Programmierung

Volker Hillmann

Auf Veranstaltungen und Schulungen habe ich oft behauptet, dass es möglich ist, mit einer einfachen Wunschliste zu beginnen und daraus ein plattformunabhängiges Programm in C++ zu entwerfen. Damit werden wir unabhängig von Frameworks und Bibliotheken und schützen die Investition Dabei sollte der Beginn sofort möglich sein und in jedes Projekt integrierbar sein. Ich habe aber immer nur den ersten Schritt gezeigt. Das ist jetzt anders. Dieses hatten wir am Anfang mit den beiden Bibliotheken von Embarcadero, der VCL auf der einen Seite und FMX auf der anderen Seite gezeigt. Dann haben wir es verallgemeinert und erweitert und haben Visual C++ genutzt, und die unabhängige Oberflächenbibliothek Qt verwendet.
Damit die Frage auch schon beantworten, natürlich ist es möglich mit einer Schnittstelle, nennen wir sie jetzt einfach mal Wunschliste, zu beginnen und daraus eine unabhängige Lösung für C++ zu schaffen. Dabei muss die Wunschliste möglichst kurz sein, wir sollten uns nicht an dem orientieren was möglich ist, sondern immer an dem was wir wirklich brauchen.
In diesem Vortrag möchte ich ihnen diesen Weg vorstellen und mit Euch diskutieren, wie es noch effizienter geht.

Daniel Siegl
Session

Modelle und Code in einer agilen Welt verwalten!

Daniel Siegl

In dieser Session stellt Daniel fortgeschrittene Wege vor, wie Sie Ihre UML- oder SYSML-Modelle zusammen mit Ihrem Code in Git verwalten und beides in Ihre kontinuierlichen Integrationslösungen (CI) integrieren können.
Die Verwaltung der Modelle zusammen mit dem Code in denselben Zweigen - unter Verwendung von Prozessen aus dem Software-Engineering - ermöglicht es, die komplexen cyber-physikalischen Systeme von heute mit Stil zu entwickeln, ohne dabei die Anforderungen aus sicherheitskritischen Normen zu opfern.

Coming Soon
Workshop

Workshop-Themen folgen noch.

 

Kontakt

ppedv AG
Marktler Str. 15 b
D- 84489 Burghausen

+49 8677-9889-0
events@ppedv.de
ppedv.de

Navigator

  • Anmeldung
  • Unsere Sprecher
  • Sessions
  • FAQ
  • Impressum
  • AGB

Neuigkeiten

  • Workshop
    Jetzt die ADC-Workshops entdecken!
  • events
    Weitere Veranstaltungen der ppedv!

Folgt uns

© ppedv AG 2022

Cookie Warnung- Ich stimme zu, dass diese Seite Cookies für Analysen, personalisierte Inhalte und Werbezwecke verwendet. Datenschutz Infos