Session Details


Memory Management in kritischen Systemen

Ralph Tandetzky

Beim autonomen Fahren, in Luft- und Raumfahrt steht die Sicherheit an vorderster Stelle. Während des Betriebs dynamisch Speicher zu reservieren, etwa mit new und delete, ist tabu. Wie man es trotzdem schafft, seinen Speicher zu verwalten und dabei Komponenten unabhängig zu halten, wird in dieser Session erklärt.

WebAssembly: nativer Code im Browser - C++ goes Web

Martina Kraus

Eine C++ Anwendung im Web, integriert in einer Single Page Application (SPA) - das geht? Ja, mit WebAssembly (WASM). Nativer Code im Web hat sinnvolle Anwendungszwecke für die unterschiedlichsten Szenarien. Durch die Möglichkeit, existierenden C++-Code speziell kompiliert in den Webbrowser zu laden, können komplexe Algorithmen und Berechnungen - wie sie etwa in Bild- und Videoverarbeitung vorkommen - Cross-Plattform auf nahezu allen Endgeräten ausgeführt werden. In diesem Vortrag zeigt Ihnen Martina Kraus zunächst die Grundlagen von WebAssembly anhand eines kleinen C++-Hello-World-Beispiels. Im Anschluss widmet sie sich dann der Frage, wie man eine existierende C++-Anwendung in eine Angular-basierte SPA integrieren kann, um das Beste aus beiden Welten zu nutzen. Dabei sollen typische Designpatterns und evtl. notwendige Umbauarbeiten an bestehendem Code ebenso beleuchtet werden wie die WASM Toolchain, mit der man zum Ziel einer nativ-angereichten modernen Web-App kommt.

Ein Leben nach dem move

Peter Gottschling

Die ursprüngliche Idee der Move-Semantik war es, Daten von temporären Objekten zu stehlen, die ohnehin kurz nach der Operation sterben werden. Nico Josuttis verglich dies mit einer Organspende. Die Einführung von move zerstörte die Vorstellung vom baldigen Tod der ausgeraubten Objekte komplett. Die Sprache deklariert diese Objekte zwar als abgelaufen. Aber was ist die Konsequenz davon? Nichts. Es liegt weiterhin nicht in der Verantwortung des Compilers, sondern des Programmierers, was mit diesen lästigen Objekten geschieht. Natürlich ist jeder Programmierer aufgefordert, move verantwortungsvoll einzusetzen. Aber können wir uns wirklich in jeder Situation darauf verlassen? Oder besser: Wollen wir uns wirklich darauf verlassen? Wollen wir wirklich die Verantwortung dem Nutzer einer Klasse überlassen? Zurück zu Nicos Metapher: Daten aus I-Werten mit move zu verschieben ist wie Lebendorganspende. Die Spender sind immer noch da, aber in einem desaströsen Zustand und nichts garantiert uns, dass derartige Zombies bald verschwinden werden. Tatsächich könnten es globale oder statische Variablen sein, die bis zum Ende des Programms leben - besser gesagt, dahinsiechen. Und keine Sprachfunktion hindert Programmierer daran, die abgelaufenen Objekte von Funktion zu Funktion weiterzugeben, was im Gegenzug bedeutet, dass wir das Leben unserer Variablen bis zu ihrer Entstehung (unter Berücksichtigung aller möglichen Ausführungspfade) zurückverfolgen müssen, um zu überprüfen, dass kein explizites move irgendwo angewendet wurde. Der Vortrag wird zeigen, dass es ganz einfach ist, diesem Elend ein Ende zu bereiten und Programme ohne x-Werte zu haben, selbst wenn move verwendet wird.

Type driven Development mit C++

Andreas Reischuck

Wie bekommen wir die steigende Komplexität in den Griff? Das Typsystem von C++ könnte ein wichtiger Schlüssel dafür sein. Mit OOP, TMP und funktionaler Programmierung nutzen wir das Potential bei weitem nicht aus. Über die Einführung von Strong Types und Event-getriebener Softwarearchitektur werden wir uns der Idee von abstrakten Daten-Schemas annähern. Aus einem Schema lassen sich Protokolle, Repositories, Speicherformate, Verarbeitungsschritte und GUIs ableiten. Anhand von praxisorientierten Beispielen werden wir die Vorteile und Nachteile dieser Strategie erörtern. Ich hoffe Sie mit diesem Vortrag zumindest dazu zu ermutigen auch außerhalb der bekannten Pfade nach neuen Möglichkeiten zu effektiven Problemlösungen mit C++17 zu suchen. Es gibt noch viel zu entdecken...

C++ Test-driven Development (TDD) with CUTE and Cevelop

Peter Sommerlad

TDD is not about testing. It is about designing and implementing high-quality, well-unit-tested software. It consists of a tight development cycle from "red-bar" to "green-bar", creating software one test at a time. This cycle, very importantly, includes reflecting on the written code and tests and conscious Refactoring throughout to improve its design. While popular IDEs for Java or C# provide TDD support through code generation from non-compiling test cases and through refactoring tooling, IFS Institute for Software were the first to implement similar functionally for C++ 10 years ago. Today, that feature is available through our free-to-download IDE Cevelop. TDD can be done without proper IDE tooling, but saving tedious typing of scaffolding syntax and easy refactoring on a finger tip is really helpful. The advantage of an IDE is preview of refactoring changes with selective application, as well as easy undo, in case of a problematic automatic or manual change. This talk presents the foundation of Test-driven Development, hints on writing tests via ZOMBIES and provides a simple demonstration of TDD for C++ in Cevelop using its built-in CUTE minimizes the use of macros to test test assertions, where the __FILE__ and __LINE__ information is required to later navigate to failing tests. Scaffolding for new tests as well as test registration is automatically generated by Cevelop. Running tests will be visualized through a test view that can show differences in failing equality tests as well as selectively run single or failed test cases.

Improving Readability With Class Template Argument Deduction

A.J. Orians

Topic is improving the readability of source code though a C++17 feature call Class Template Argument Deducation. The talk is about how this latest feature does wonders to remove unnecessary information to help the average programmer as well as how there is room to improve. A.J Orians mentions some of the umpcoming improvement proposals. This session is something a beginner can attend but he shows information that will delight even the expert programmers.

On Error Handling

Andrei Zlate-Podani

Programming has been historically guided by instinct and/or unsubstantiated claims, and to a lower extent by evidence. This is still the case, even in the presence of a growing body of published research. Given that writing of software involves dealing with the intrinsic complexity of the problem-to-solve and with the messiness of the real world, it is quite often the case that error handling and the testing thereof is poorly done. Especially challenging is the use of exceptions, since there is no direct connection from the place of the detection to the point of handling the error. This talk will explore the various methods of error reporting and handling, discuss some of the findings from published papers and dissect the advantages and drawbacks of the various approaches. Its aim is to inform the audience of the importance of detecting and reporting the errors, as well as having a well-designed strategy for error handling.

Visual Studio Code mit Native(C++) Entwicklung und Package Management

Cosmin Dumitru

In der Zeit, wo Cloud Native, Performance C++ Lösungen immer wichtiger sind, stoßen viele Möglichkeiten im Software Engineering an ihre Grenzen. Trotz der vielen neuen Technologien, die die Implementierung eigentlich erleichtern sollen, steigen Kosten und Komplexität. Anhand von Demos zeigen wir, wie mit Open Soure Editor - Visual Studio Code, C++ Entwickler multi-Plattform Applikationen entwickeln können und liefern on premise sowie on Cloud mit Mitteln und Möglichkeiten des aktuellen C++ Standard. Unabhängig von Ihrem Business Focus lernen Sie, wie Native Applikationen implementiert werden können, sowohl in der Cloud (nicht nur Azure) als auch On-Premise mit der gleichen Code-Basis. Lernen Sie auch wie DevOp Automation und Testing mit Docker Containers eine große Produktivität Vorteile bringen kann, durch ganze ALM Prozesse für Native Applikationen.

C++ Programmierung in der Blockchain

Patrick Charrier

Blockchain als Technologie ist in den vergangenen Jahren zunehmend bekannter geworden. Eine Blockchain erlaubt es, die Ausführung von Code dem Konsens eines Netzwerkes von Computern zu unterwerfen. In Konsequenz wird der ausgeführte Code somit zu einer Art Vertrag zwischen den ausführenden Maschinen, weshalb für diesen Fall der Begriff des Smart Contract geprägt wurde. Code ist in der Blockchain in gewissermaßen Gesetz ("Code is Law") und diesen Aspekt wollen wir uns in diesem Vortrag etwas genauer anschauen. Nach einer kurzen Einführung in Blockchain-Basics wagt der Vortrag einen Einblick in die Programmierung von Smart Contracts in C++ auf der EOS-Blockchain.

C++ goes Web: REST mit C++

Matthias Wedemeyer

Bereits seit einiger Zeit gibt es das C++ REST SDK, welches Klassen sowohl für REST-Client als auch REST-Serveranwendungen zur Verfügung stellt. C++ Entwicklern wird hierüber eine komfortable Möglichkeit gegeben, Anwendungen nahtlos in ein Web-Environment einzufügen und das als Consumer und Provider. Lernen Sie das C++ REST SDK kennen und erfahren Sie, wie http Client- und auch http Serveranwendungen mit Hilfe dieses SDK erstellt werden. Und das mit den Mitteln und Möglichkeiten des aktuellen C++ Standards.

Sichere Daten in C++ Anwendungen

Matthias Wedemeyer

Die von Anwendungen verarbeiteten Daten sind unterschiedlichster Natur. Je nach Daten ist es erforderlich, das diese von der Anwendung geschützt werden. Eingegebene Kennwörter im Klartext in der Anwendung zu halten ist ebenso keine gute Idee wie zum Beispiel das Übertragen von unverschlüsselten Personendaten. Handelt es sich gar um unternehmenskritische Daten sollte zudem über eine Signatur der Daten nachgedacht werden, damit der Empfänger dieser weiß, dass die Daten korrekt sind. C++ Entwicklern bietet Windows mit seinem Cryptography API Next Generation, oder kurz seinem CNG API, Funktionen, mit denen Schlüssel erstellt, Daten ver- und entschlüsselt und Nachrichten signiert werden können. Lernen Sie CNG und seine Möglichkeiten kennen, um die von Ihren Anwendungen schützenswerten Daten zu schützen und eine sichere Übertragung dieser zu gewährleisten.

Workshop: Modern Applications with PaaS and Serverless

Damir Dobric

Themen:
• Evolution of Compute Platform
• Docker Containers Overview
• .NET Core in containers
• Azure Container Registry
• Azure Container instances
• AppService Container
• Overview Orchestrators Overview (Overview Kubernetes, Service Fabric)
• Service Bus (Hybrid computation, Point to Point, Pub Sub, Competing Consumer scenarios)
• EventGrid
• Azure Functions
• Logic Apps

Anmelden

Workshop: Die Ioda Architecture - Software verständlicher und testbarer strukturieren

Ralf Westphal

DSoftwarearchitekturen werden an bekannten und beliebten Mustern angelegt. Diese Muster wandeln sich, um Softwarearchitektur noch leichter zu machen. Früher war MVC, dann war Schichtenmodell, heute ist Clean Architektur. Programmiersprachen entwickeln sich und werden besser, Frameworks ebenso, Architekturmuster auch. Sollte man denken. Leider sind die Architekturmuster jedoch steckengeblieben. Sie haben zwei Schritte vorangemacht und das Entwicklerleben vereinfacht. Nun allerdings treten sie auf der Stelle oder erzeugen sogar mehr Komplexität, wo sie reduziert werden sollte. Der Workshop arbeitet funktionale Abhängigkeiten als Kernproblem hinter den klassischen Architekturmustern heraus und stellt den Teilnehmern eine grundlegende Lösung vor - die dann von allen anhand einer Anwendung selbst implementiert wird.

Anmelden

Workshop: C++11/14/17 in Visual Studio 2019

Richard Kaiser

Das neue Visual Studio 2019 soll im ersten Halbjahr 2019 erscheinen. Aktuell zu diesem neuen Release werden in diesem Workshop die C++-Neuerungen seit C++11 sowie die Neuerungen in der Entwicklungsumgebung von Visual Studio 2019 vorgestellt.

Anmelden

Workshop: ASP.NET Core für den Webforms Entwickler

Hannes Preishuber

In diesem Workshop lernen Sie die Lösungen von üblichen Anforderungen eines Web Entwicklers mit ASP.NET core und der Razor View Engine kennen. Dabei legt der Referent als ausgewiesener ASP.NET Webforms Experte vor allem Wert auf die Analogien. Verzichtet wird dagegen auf alles was theoretisch möglich ist, aber besonders zum Einstieg unnötige Komplexität erzeugt. So einfach wie möglich, so nah an Ihrer bisherigen Erfahrungen wie möglich, so viel wie nötig aus der neuen dotnet core Welt. Am Ende können Sie mit Visual Studio eine gängige LOB Anwendung mit ähnlicher Produktivität wie zu Webforms Zeiten erstellen.

Anmelden

Workshop: Web App mit ASP.NET Core MVC

Jürgen Gutsch

In diesem Workshop lernen Sie die Lösungen von üblichen Anforderungen eines Web Entwicklers mit ASP.NET core und der Razor View Engine kennen. Dabei legt der Referent als ausgewiesener ASP.NET Webforms Experte vor allem Wert auf die Analogien. Verzichtet wird dagegen auf alles was theoretisch möglich ist, aber besonders zum Einstieg unnötige Komplexität erzeugt. So einfach wie möglich, so nah an Ihrer bisherigen Erfahrungen wie möglich, so viel wie nötig aus der neuen dotnet core Welt. Am Ende können Sie mit Visual Studio eine gängige LOB Anwendung mit ähnlicher Produktivität wie zu Webforms Zeiten erstellen.

Anmelden

Workshop: Web API Design - REST, OData und GraphQL

Christian Schwendtner

Dass eine moderne Softwarearchitektur Web APIs beinhaltet, steht außer Frage. Auf HTTP und JSON einigt man sich schnell, dann wird es aber schwierig. Wie gestaltet man die API im Detail? Wie soll man umgehen mit Filtern, Blättern, Sortieren, Gruppieren, Aggregieren etc.? Wie veröffentlicht man API-Metadaten? In diesem Workshop widmen sich Rainer Stropek und Christian Schwendtner diesem Thema. Es spielt in nahezu allen Entwicklungsprojekten eine Rolle, da schließlich die Web APIs das Userinterface für die Microservices sind. Rainer und Christian zeigen, welche Antworten das REST-Architekturmuster im Vergleich zu OData und GraphQL haben. Sie stellen am Beginn des Workshops die drei Ansätze gegenüber und diskutieren mit den Teilnehmerinnen und Teilnehmern Vor- und Nachteile sowie Tipps aus der Praxis. Anschließend werden gemeinsam Beispiele auf Basis ASP.NET Core entwickelt. Voraussetzungen: • Basiskenntnisse über Web-Entwicklung sowie C# und .NET Core

Anmelden

Workshop: .NET Architektur

André Ruland

Der Workshop bietet einen Überblick über verschiedene Architekturimplementierungen und deren Testbarkeit. Themen: • Service Layer • Security • MVC und MVVM • Object Mapping • Best Practices • Modernisierung • Einbindung Azure Zielgruppe: langjährige .NET Entwickler

Anmelden

Änderungen vorbehalten