Hinweis: Die aktuelle OOP-Konferenz finden Sie hier!

Konferenzprogramm

Die im Konferenzprogramm der OOP 2022 Digital angegebenen Uhrzeiten entsprechen der Central European Time (CET).

Unser Programm gibt es auch als praktische PDF-Datei >>Zum Download

Thema: Programming Languages

Nach Tracks filtern
Nach Themen filtern
Alle ausklappen
  • Montag
    31.01.
  • Dienstag
    01.02.
  • Mittwoch
    02.02.
  • Donnerstag
    03.02.
  • Freitag
    04.02.
, (Montag, 31.Januar 2022)
10:00 - 17:00
Mo 7
Rust Fundamentals Workshop
Rust Fundamentals Workshop

This training has been designed for developers who want to start working with Rust professionally and already have a solid background in programming from other C-like languages like Java, C++, C#, or JavaScript/TypeScript. It is not specialized on a specific field of use but should rather equip attendees with fundamental knowledge to successfully get started with Rust.

Target audience: Developers, Architects
Prerequisites: Solid background in programming from other C-like languages
Level: Practicing

Extended Abstract
Rust has recently gained significant popularity. It has been achieving top rankings in the Most Loved Language-category of the Stack Overflow developer survey for many years in a row. The reasons for Rust’s success are manifold. The language is statically typed but with zero-cost abstractions, it eliminates entire classes of bugs because of its memory safeness, it generates blazingly fast code, you can build a wide variety of application types ranging from embedded systems for IoT devices to RESTful web APIs in the cloud, etc.

This training has been designed for developers who want to start working with Rust professionally and already have a solid background in programming from other C-like languages like Java, C++, C#, or JavaScript/TypeScript. It is not specialized on a specific field of use but should rather equip attendees with fundamental knowledge to successfully get started with Rust.

Rainer Stropek is co-founder and CEO of the company software architects and has been serving this role since 2008. At software architects, Rainer and his team are developing the award-winning SaaS time tracking solution time cockpit. Previously, Rainer founded and led two IT consulting firms that worked in the area of developing software solution based on the Microsoft technology stack.

Rainer is recognized as an expert concerning software development, software architecture, and cloud computing. He has written numerous books and articles on programming languages, database development, cloud computing, and web development. Additionally, he regularly speaks at conferences, workshops and trainings in Europe and the US. In 2010 Rainer has become one of the first MVPs for the Microsoft Azure cloud computing platform. In 2015, Rainer also became a Microsoft Regional Director. 2016, Rainer additionally received the MVP award for Visual Studio and Developer Technologies.

Rainer graduated the Higher Technical School Leonding (AT) for MIS with honors and holds a BSc (Hons) Computer Studies of the University of Derby (UK).

Mehr Inhalte dieses Speakers? Schaut doch mal bei sigs.de vorbei: https://www.sigs.de/autor/rainer.stropek

Rainer Stropek
Rainer Stropek
flag VORTRAG MERKEN

Vortrag Teilen

18:30 - 20:00
Nmo 1
Wenn "Microservice-Architektur" die Antwort ist, was war dann eigentlich die Frage?
Wenn "Microservice-Architektur" die Antwort ist, was war dann eigentlich die Frage?

Als Entwickler kann man ihnen fast nicht ausweichen – den Microservice-Architekturen. Die Entscheidung für deren Einsatz ist oft schon getroffen, bevor es die erste User-Story im Backlog und die erste Zeile Code im Repository gibt.
„Microservice“ lautet scheinbar die Antwort auf alle Fragen nach der besten Umsetzung heutiger Business-Probleme. Netflix und andere dienen als schillerndes Beispiel für den Erfolg dieser Architektur.
Aber sind sie wirklich der einzige Weg ins Ziel? Sind sie Fluch oder Segen? Dem wollen wir auf den Grund gehen.

Zielpublikum: Entwickler:innen, Architekt:innen, Entscheider mit technischem Background
Voraussetzungen: Kenntnisse in Java oder einer anderen objektorientierten Sprache, Grundkenntnisse in Software-Architektur
Schwierigkeitsgrad: Fortgeschritten

Extended Abstract
Als Entwickler kann man ihnen fast nicht ausweichen – den Microservice-Architekturen. Egal ob Neuauflage einer Bestandsanwendung oder Green-Field-Projekt, der Architektur-Ansatz ist oft schon festgelegt, bevor es die erste User-Story im Backlog und die erste Zeile Code im Repository gibt.
„Microservice“ lautet scheinbar die Antwort auf alle Fragen nach der besten Umsetzung heutiger Business-Probleme. Unternehmen wie Netflix dienen als schillerndes Beispiel für den Erfolg dieser Architektur. Und alle wollen nacheifern. Mit modernen Tools, agilen Methoden und motivierten Entwicklern wird das schon zu schaffen sein.
Aber was waren eigentlich die Architektur-Zziele, die zur Entscheidung geführt haben? Und welche Alternativen hätte es gegeben? Was sind die Kernprobleme, die wir lösen müssen? Und sind Microservices wirklich der einzige Weg ins Ziel? Oder wieso wurden sie gewählt?
Wir haben uns angeschaut, warum Vergleiche mit Netflix hinken, warum Microservice-Architekturen sich oft zu mehr Fluch als Segen entwickeln und dass die Rolle der Entwickler bei diesem Scheitern oft unterschätzt wird.

Tilmann Glaser ist freiberuflicher Software Engineer. Als iSAQB zertifizierter Software-Architekt betreut er Entwicklungsprojekte und unterstützt Teams als Mentor für agile Software-Engineering-Methoden (ASE). Dabei ist ihm wichtig, selbst mit anzupacken und als Teil der Teams aktiv an der Software-Entwicklung teilzunehmen. Seine mehr als fünfzehn Jahre Erfahrung in verschiedenen Rollen in IT-Projekten bringt er gerne ein, um neue Blickwinkel aufzuzeigen. Seine Kernthemen sind agile Transition, Architektur in agilen und klassischen Umfeldern, Clean Code, Test-Driven Development (TDD) und Project Recovery.

Mehr Inhalte dieses Speakers? Schaut doch mal bei sigs.de vorbei: https://www.sigs.de/autor/tilmann.glaser

Peter Fichtner ist seit 1995 bei Atruvia in Karlsruhe tätig. Nach über zehn Jahren in der Anwendungsentwicklung und weiteren 10 Jahren in der Architektur greift er auf breitgefächerte Erfahrungen im Java-Umfeld zurück. Aktuell fokussiert er die Themen Test-Driven-Development (TDD), Continuous Integration (CI), Clean Code (CC) sowie agile Entwicklungsmethoden. In seiner Rolle als Coach für agiles Softwareengineering (ASE) unterstützt Peter Fichtner seit acht Jahren agile und nicht-agile Teams bei Atruvia mit Schulungen und Coachings.
Tilmann Glaser, Peter Fichtner
Tilmann Glaser, Peter Fichtner
flag VORTRAG MERKEN

Vortrag Teilen

, (Dienstag, 01.Februar 2022)
09:00 - 10:30
Di 9.1
C++20: What's In There For You
C++20: What's In There For You

C++20 is now a year old. Time to take a closer look at the benefits you get when using C++ for standards 11 to 20. You learn about Coroutines by building a coroutine-based parser. The new ranges and the spaceship operator help you write less code. You will learn how Concepts help you to express constraints better and improve error messages. Doing things at compile-time saves run-time. Let‘s see how C++20 improves your code with the new features consteval and constinit. After this talk, you learned some C++20 features and saw the improvements to C++17 code.

Target Audience: Developers
Prerequisites: Knowledge about at least C++11
Level: Advanced       

Extended Abstract
C++20 is now a year old. The major compilers already provide a solid support for the new standard. It is time to take a closer look and figure out the benefits you get when using C++20. Because there are so many improvements in C++20, we will focus on: Concepts, Coroutines, ranges, the spaceship operator, and compile-time evaluation.
Coroutines are the feature that likely will have a strong impact on future finite state machine code. In a brief tour, we will see what we need to do for building a coroutine-based byte-stream parser and how this code is so much more beautiful than without Coroutines.
Less code is always a good thing. The new ranges part of the STL helps us achieve this goal. We will take a brief look at how ranges simplify our code.
Speaking about less code, how about writing a class with all comparison operations without having to write an awful amount of boilerplate code? Sounds good? Then let's see how C++20 helps us there with the spaceship operator.
And while we are speaking about less code, generic programming comes to mind. Concepts give us a whole new way to express constraints and requirements in generic code. Concepts make our code better readable while, at the same time, give us way better error messages.
We don't stop there. Together we will look at the updates to the compile-time world. With consteval and constinit we have two new keywords allowing us new things to do. A lot of former restrictions of constexpr functions were dropped as well. The most popular is probably the ability to dynamically allocate memory at compile-time. We will explore these features using some practical examples.
After this talk, you will have seen the probably most impactful features of C++20. You learned by examples how to use them. The comparisons to pre-C++20 code give you a good understanding of what your benefits are by using C++20.

Andreas Fertig, CEO of Unique Code GmbH, is an experienced trainer and consultant for C++ for standards 11 to 20.
Andreas is involved in the C++ standardization committee, in which the new standards are developed. At international conferences, he presents how code can be written better. He publishes specialist articles, e.g., for iX magazine, and has published several textbooks on C++.
With C++ Insights (https://cppinsights.io), Andreas has created an internationally recognized tool that enables users to look behind the scenes of C++ and thus understand constructs even better.
Before working as a trainer and consultant, he worked for Philips Medizin Systeme GmbH for ten years as a C++ software developer and architect focusing on embedded systems.

Andreas Fertig
Andreas Fertig
flag VORTRAG MERKEN

Vortrag Teilen

14:00 - 14:45
Di 3.2
Rust in a Polyglot World, from Client to Cloud
Rust in a Polyglot World, from Client to Cloud

While Rust is typically pitched as systems programming language, it is equally adept at application development thanks to its high level features and great tooling. In addition to increased performance, native code has the advantage that it can easily be reused across different system components, an advantage even more pronounced in polyglot environments. In this talk, we would like to present our experience of using Rust to write core components in such a polyglot system.

Target Audience: Architects, Developers
Prerequisites: Basic knowledge of Python, Java
Level: Advanced

Extended Abstract
While Rust is typically pitched as systems programming language, it is equally adept at application development thanks to its high level features and great tooling. In addition to increased performance, native code has the advantage that it can easily be reused across different system components, an advantage even more pronounced in polyglot environments.
In this talk, we would like to present our experience of using Rust to write core components in such a polyglot system. The systems spans different contexts, from client to cloud, and different programming languages, from Python to Java, respectively. We will showcase how the Rust language itself and its tooling simplified this task and discuss different integration patterns.

Christopher Prohm is working as a Data Scientist for Volkswagen. His main focus is the application of machine learning and data analytics to problems in the area of technical development.
Christopher Prohm
Christopher Prohm
flag VORTRAG MERKEN

Vortrag Teilen

14:00 - 14:45
Di 9.2
NEU! What Classes we Design and How
NEU! What Classes we Design and How

C++ class design has been error prone since the beginning, until Scott Meyers told us about the Rule-of-Three. But even that is not enforced by the language. In addition, C++11 changed the set of compiler-provided special member functions and the intrinsic rules have become more complicated. However, instead of starting from the rules for special member functions, we will look at what role a class type plays and how that maps on what special member functions to define and how, if any. Examples for class roles are Value, Relationship, Manager (scoped, unique, general), Mix-in.  

We will also look at the roles of member variable types that influence or imply the role of the class type. The role of a class will also take out many mysteries of move operations and will lead to clear guidance when and how to provide move operations: for suppressing copying, for managing unique ownership (Unique Manager) or for optimizing object copies (General Manager). We will rehearse the Rule of Zero and learn more about the Rule of Five/Six, the Rule of DesDeMovA, and the Rule of Unique Three. This all will enable you to much more consciously and safely design your class types and combine types of member variables. You will have then the ability to select from a few reasonable combinations from the plethora of possibilities of special member function combinations: {public:,protected:,private:} x {destructor, default constructor, copy constructor, copy assignment, move constructor, assignment} x {noexcept(true),noexcept(false)} x { =default, =delete, {/body/}, not declared } (math as homework)

Target Audience: Developers
Prerequisites: C++ class design
Level: Expert

Peter Sommerlad is a consultant and trainer for C++ and agile software development. He was professor and lead the Institute for Software at HSR Rapperswil. Peter is co-author of the books POSA Vol. 1 and Security Patterns and contributed to "97 things every programmer should know". Peter is an ACM Senior Member and member of ACCU, IEEE CS, and the ISO WG21( C++ ) and WG23 (vulnerabilities) committees. Peter participated in the creation of MISRA C++202x.
Peter Sommerlad
Peter Sommerlad
flag VORTRAG MERKEN

Vortrag Teilen

16:15 - 17:15
Di 9.3
C++17 Polymorphic Memory Resources (pmr) and STL Containers for Embedded Applications
C++17 Polymorphic Memory Resources (pmr) and STL Containers for Embedded Applications

For many embedded C++ applications, compliance with the AUTOSAR or Misra rules is required. Among them is AUTOSAR Rule A18-5-5 which does not allow memory allocations with new. Since new and delete violate A18-5-5, the default STL containers must not be used in applications requiring AUTOSAR compliance. This holds for many embedded applications. With the allocators available since C++17 in the namespace std::pmr (polymorphic memory resources) these requirements can often be satisfied.

Target Audience: Architects, Developers, Project Leader
Prerequisites: Good C++ knowledge
Level: Advanced

Extended Abstract
For many embedded C++ applications, compliance with the AUTOSAR or Misra rules is required. Among them is AUTOSAR Rule A18-5-5.
Memory management functions shall ensure the following:
(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.

This rule has far-reaching consequences, because per default the C++ standard library containers allocate their memory with new and free it with delete. These calls
• do not have deterministic execution times.
• can cause memory fragmentation.

Since new and delete violate A18-5-5, the default STL containers must not be used in applications requiring AUTOSAR compliance. This holds for many embedded applications.
With the allocators available since C++17 in the namespace std::pmr (polymorphic memory resources) these requirements can often be satisfied. This means that, for the first time in the history of C++, the containers and algorithms of the C++ standard library can be used in applications that require AUTOSAR Rule A18-5-5.

Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C# und C++ sowie C. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen.
Nach dem Studium der Mathematik an der Universität Tübingen und der FU Berlin war er an der Pädagogischen Hochschule Reutlingen in der Lehrerausbildung tätig und hat sich intensiv mit Mathematikdidaktik beschäftigt. Danach war er Software-Entwickler (v.a. für technische Anwendungen), bei einigen Firmen Leiter der Software-Abteilung, über 20 Jahre Professor an der Dualen Hochschule Lörrach, über 30 Jahre freiberuflicher Trainer für C, C++, C#, Speaker bei Konferenzen, Mitglied im DIN Normierungsausschuss Informationstechnik NI-22, usw.
Richard Kaiser
Richard Kaiser
flag VORTRAG MERKEN

Vortrag Teilen

17:45 - 18:45
Di 3.4
Turmbau zu Babel in nachrichtenbasierten Systemen
Turmbau zu Babel in nachrichtenbasierten Systemen

Der verstärkte Einsatz von Microservices führt zu einer erhöhten Kommunikation zwischen den Systemkomponenten. Bei der technischen Realisierung sind REST-Schnittstellen für die synchrone und Message Broker für die asynchrone Informationsverteilung weit verbreitet. Wenn es aber um den Inhalt und die syntaktische Struktur der Nachrichten geht, kann es leicht zu einer babylonischen Sprachverwirrung kommen. In diesem Vortrag betrachten wir verschiedene Ansätze, um einer solchen Sprachverwirrung Einhalt zu gebieten.

Zielpublikum: Architekt:innen, Entwickler:innen
Voraussetzungen: Projekterfahrung
Schwierigkeitsgrad: Anfänger

Extended Abstract
Der verstärkte Einsatz von Microservices führt zu einer erhöhten Kommunikation zwischen den Systemkomponenten. Bei der technischen Realisierung sind mittlerweile REST-Schnittstellen für die synchrone und Message Broker für die asynchrone Informationsverteilung weit verbreitet. Wenn es aber um den Inhalt und die syntaktische Struktur der Nachrichten geht, kann es leicht zu einer babylonischen Sprachverwirrung kommen.
„Ach, das Feld. Ne, das haben wir doch umbenannt“ oder „Dieses Feld haben wir doch schon vor Wochen entfernt und dies über … bekannt gegeben“ dürften bekannte Sätze sein, wenn man den Gesprächen der beteiligten Entwickler lauscht.
In diesem Vortrag möchte ich vor allem im Hinblick auf einen asynchronen Nachrichtenaustausch einige Ansätze betrachten, um einer solchen Sprachverwirrung Einhalt zu gebieten. Anschließend werden wir einen Blick auf die schema-basierte Lösung werfen, die wir im aktuellen Projekt einsetzen.

Kristian Kottke ist als Lead Software Developer für die iteratec GmbH in verschiedenen Projekten und Branchen tätig. Er beschäftigt sich mit Software-Architekturen sowie unterschiedlichen Technologiestacks, wobei seine Interessen insbesondere in den Bereichen Big-Data- und NoSQL-Technologien liegen
Kristian Kottke
Kristian Kottke
flag VORTRAG MERKEN

Vortrag Teilen

17:45 - 18:45
Di 9.4
MISRA C++ 202x
MISRA C++ 202x

New MISRA C++ 202x are coming. This release will address modern C++ and thus is relevant not only for safety critical code in the automotive sector, but also for day-to-day C++ development. Expect the new MISRA rules to be less "miserable" for your day-to-day coding and use static analysis tooling to enforce them. Understand what kind of C++ will be considered unsafe, get examples of guidelines and learn which rules better to suppress in static analysis tools in non-safety-critical software.

Target Audience: Developers
Prerequisites: C++
Level: Advanced 

Extended Abstract
New MISRA C++ guidelines are coming. In contrast to the previous release in 2008, MISRA C++ will address modern C++ as it is used in modern automotive systems. It is expected that other domains with safety critical software will incorporate MISRA C++ as well. In addition many of the rules, especially those supported by corresponding static analysis tools, can make your own C++ coding practices better. The talk briefly introduce the development of safety critical software, highlight some of the modern MISRA C++ rules applicable to all kinds of code and will also show corners of the rule set, better avoided for "normal" C++ code. The latter is important to know, when you are asked to retrofit your code to the output of a static analyzer tuned to MISRA-C++.
* History of MISRA C++ guidelines
* Peculiarities of software development for safety-critical systems
* Example guidelines and how they influence coding
* "strong stuff" that should not bother in normal C++
* Outlook on further revisions

Peter Sommerlad is a consultant and trainer for C++ and agile software development. He was professor and lead the Institute for Software at HSR Rapperswil. Peter is co-author of the books POSA Vol. 1 and Security Patterns and contributed to "97 things every programmer should know". Peter is an ACM Senior Member and member of ACCU, IEEE CS, and the ISO WG21( C++ ) and WG23 (vulnerabilities) committees. Peter participated in the creation of MISRA C++202x.
Peter Sommerlad
Peter Sommerlad
flag VORTRAG MERKEN

Vortrag Teilen

, (Mittwoch, 02.Februar 2022)
09:00 - 10:45
Mi 7.1
Applying AI Methods to Help Users in Fixing Static Analysis Violations
Applying AI Methods to Help Users in Fixing Static Analysis Violations

The adoption of static analysis of C++ and Java requires that the findings and errors can be prioritised in an efficient way. Our work shows that Machine learning (ML) can support this presentation of static analysis results to end-users. The ML engine learns from the codebase itself, and also observes the violations that the user fixes and which he ignores. The ML uses this to suggest the next best violations to fix, relying on probability of violations to be harmful or most likely to be a noise.

Target Audience: Developer Managers, R&D Managers, Software Architects, Software Engineers
Prerequisites: English, Software development, Coding experience, C++, Java, C#.
Level: Expert

Extended Abstract
Static code analysis is often understood as a mandatory part for checking the source code compliance to government and industry regulations, company-wide guidelines and practices. It can play, however, a more fundamental role in estimating the quality of the code in general, understanding the amount of technical debt, creating the strategy to reduce the amount of technical debt, as well as a helper in making decisions on how to speed up the development by creating a more maintainable, understandable, sociable codebase.

However, by its nature, static code analysis is bound to produce a large amount of noise and false alerts that can distract the team from the actual bugs in the code and prevent them from working thoroughly with the findings. One of the reasons for that is the level of soundness of the static analysis tool. If we want to be sure that the analysis is bound to find all errors in the code, the static analysis tool has to report all possible candidates. The more sound the tool is configured to be, the larger the number of the possible errors is reported, which increases the number of false positives as well.

To improve the user experience of working with static analysis technology, we have developed a machine learning (ML) based approach to presenting the results of the static analysis to users. The ML engine can learn from the code base itself, from a user's preferences, as well as from the interaction within the team. At the code level, our engine learns from the syntactical and semantical structure of the analyzed code to understand which violations are more likely to cause more harm, which violations are more likely to be noise, what underlying problems can be fixed to drastically reduce the number of reported violations. At the user level, the ML engine observes which violations the user fixes and which violations the user ignores. Based on these observations, the ML engine builds a model and uses it to suggest the next best violations to fix.

Igor Kirilenko is VP of Development at Parasoft. He joined Parasoft in 2013, and currently he is responsible for technical strategy, architecture, and development of all products delivered by the company. For the past several years Igor Kirilenko has also been leading the R&D team of highly trained engineers at Parasoft who are focused on research of AI and Machine Learning technologies and creation of new approaches for improvement of accuracy in static analysis findings.
Keeping a Huge Product Database up to Date With State of the Art Machine Learning
Keeping a Huge Product Database up to Date With State of the Art Machine Learning

Maintaining a database containing millions of products can be very challenging, especially when the information you require of these products is subject to changes over time.

We show how we used state of the art Deep Learning methods (such as Transformers, BERT) in connection with smart text matching in order to extract relevant information from free-form text.

We also explain how we leveraged the existing database to create an automatically labelled training dataset.

Our model enables us to continuously update idealos database automatically.

Target Audience:
Decision Makers, Technical Project Leaders, Developers
Prerequisites: Basic knowledge of machine learning methodology
Level: Advanced

Extended Abstract

To maintain idealos product base, product information in the form of values of predefined product attributes needs to be extracted from free-form text product descriptions.

Before the use of a Machine Learning based solution, this process required a lot of manual work to define rules to extract this information. There is also a high effort connected to keeping these rules consistent across the whole database and different types of products, especially since the source of this information (the product descriptions) as well as the required information (the product properties) are subject to changes over time.

In this talk we present a machine learning solution, based on fine tuned state-of-the-art models such as BERT, which is able to extract product information automatically from product descriptions with production-ready performance.

Our solution contains two different models, each following one of the well-known problem settings in Natural Language Processing (NLP): Semantic Segmentation of text (also known as Token Classification) and Question Answering. We will present both models in detail, as well as discussing their advantages and disadvantages for solving the task at hand and how we measured its performance (metrics).

We will also emphasize the importance of identifying aspects of your data that ensure that the developed model can actually fulfill your business needs before curating your dataset.

This highlights another benefit of implementing a Machine Learning model for a huge database: You will get sanity checks of your existing data “for free”, as consistent data is a prerequisite for a successful Machine Learning project.

One problem that is very common in large organisations is that there is often no or only very little training data in the form of labels for specific text sections available. We show how we mitigated this problem by leveraging the existing database to generate a large artificial training dataset. This allowed us to only use a few thousand manually labelled examples for training and testing to reach sufficient performance.

Jan Anderssen (PhD, Linguistics) is Domain Lead Inventory Business at idealo internet GmbH. He has more than 10 years of experience in various product development and leadership roles in e-commerce.

Jona Welsch is Machine Learning Project Lead at dida, where he is responsible for the development of machine learning solutions in the areas of Natural Language Processing and Computer Vision.

Igor Kirilenko
Jan Anderssen, Jona Welsch
Igor Kirilenko

Vortrag Teilen

Jan Anderssen, Jona Welsch
flag VORTRAG MERKEN

Vortrag Teilen

15:45 - 16:30
KeyMi 2
KEYNOTE: CUPID - for joyful coding
KEYNOTE: CUPID - for joyful coding

Some codebases are nicer to work with than others. This is true for applications, services, libraries, frameworks, even programming languages themselves. Is this a purely personal choice or are there universal characteristics of software that can make code a joy to work with? Daniel has been thinking about this for a long time, especially since he poked a stick at the SOLID principles for fun a few years ago and people came after him with pitchforks.

Extended Abstract
His recent post about why he feels SOLID is outdated ended up on the front page of Hacker News! Now he has codified his thoughts into his own pithy five-letter acronym, CUPID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. Why these characteristics, what do they mean, and why should you care? Can they improve your coding experience or is this just more programmer navel-gazing?

Daniel Terhorst-North uses his deep technical and operational knowledge to help business and technology leaders to optimise digital product organisations. He puts people first and finds simple, pragmatic solutions to business and technical problems, often using lean and agile techniques. With thirty years of experience in IT, Daniel is a frequent speaker at technology and business conferences worldwide. The originator of Behaviour-Driven Development (BDD) and Deliberate Discovery, Daniel has published feature articles in numerous software and business publications, and contributed to “The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends” and “97 Things Every Programmer Should Know: Collective Wisdom from the Experts”. He occasionally blogs at https://dannorth.net/blog.
Daniel Terhorst-North
Daniel Terhorst-North
Track: Keynote
Vortrag: KeyMi 2
flag VORTRAG MERKEN

Vortrag Teilen

, (Donnerstag, 03.Februar 2022)
09:00 - 10:30
Do 1.1
Architekturexplizite Java-Applikationen mit jMolecules
Architekturexplizite Java-Applikationen mit jMolecules

Architektonische Konzepte in Code abzubilden, bleibt in Java-Applikationen meist eine Herausforderung, ebenso wie die Trennung von fachlichem Code und Applikationsframework. Der Vortrag gibt einen Überblick über das jMolecules API und zeigt, wie Entwickler:innen die bereitgestellten Abstraktionen nutzen können, um Architektur-Konzepte auszudrücken. Darüber hinaus wird konkrete Integration mit Technologien sowie die Generierung von Dokumentation am praktischen Beispiel beschrieben.

Zielpublikum: Software-Architekt:innen, Seniorentwickler:innen
Voraussetzungen: Grundlegende Java- und Software-Architekturkenntnisse
Schwierigkeitsgrad: Fortgeschritten

Extended Abstract
Java-Applikationen basieren gewöhnlicherweise auf einem Framework oder einer Entwicklungsplattform. Einige davon erlauben es, einige architektonische Konzepte auszudrücken. Diese jedoch direkt in Code abzubilden, bleibt meist eine Herausforderung, ebenso wie die Trennung von fachlichem Code und Applikationsframework.
jMolecules ist eine Framework-unabhängige Bibliothek, die es erlaubt, verbreitete, architektonische Konzepte direkt in Code abzubilden, zu überprüfen, ob Regeln bezüglich der Implementierung dieser Konzepte eingehalten werden, und sowohl die nötige technische Integration als auch entsprechende Dokumentation daraus abzuleiten.
Der Vortrag gibt einen Überblick über den grundsätzlich Ansatz und zeigt, wie Entwickler:innen die bereitgestellten Abstraktionen nutzen können. Darüber hinaus wird konkrete Integration mit Spring, Jackson und JPA sowie die Generierung von Dokumentation am praktischen Beispiel gezeigt.
 

Oliver Drotbohm ist Teil des Spring Engineering Teams bei VMware. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Domain-Driven Design, REST, Spring und Persistenztechnologien. Sein neues Buch "Modulithic Applications with Spring" erscheint 2022.

Stephan Pirnbaum ist Consultant bei der BUSCHMAIS GbR. Er beschäftigt sich leidenschaftlich gern mit der Analyse und strukturellen Verbesserung von Softwaresystemen im Java-Umfeld. In Vorträgen und Workshops präsentiert er seine gesammelten Erfahrungen und genutzten Methodiken.

Mehr Inhalte dieses Speakers? Schaut doch mal bei sigs.de vorbei: https://www.sigs.de/autor/stephan.pirnbaum

Oliver Drotbohm, Stephan Pirnbaum
Oliver Drotbohm, Stephan Pirnbaum
flag VORTRAG MERKEN

Vortrag Teilen

, (Freitag, 04.Februar 2022)
09:00 - 16:00
Fr 1
Paradigms Lost, Paradigms Regained: Programming with Objects and Functions and More
Paradigms Lost, Paradigms Regained: Programming with Objects and Functions and More

It is very easy to get stuck in one way of doing things. This is as true of programming as it is of life. Although a programming paradigm represents a set of stylistic choices, it is much more than this: a programming paradigm also represents a way of thinking. It represents a set of patterns of problem framing and solving and contains the ingredients of software architecture.

This session explores the strengths and weaknesses of different programming styles, patterns and paradigms across different programming languages, past and present.

Target Audience: Developers, Architects
Prerequisites: Programming experience
Level: Advanced

Extended Abstract
It is very easy to get stuck in one way of doing things. This is as true of programming as it is of life. Although a programming paradigm represents a set of stylistic choices, it is much more than this: a programming paradigm also represents a way of thinking. Having only way to think about problems is too limiting. A programming paradigm represents a set of patterns of problem framing and solving and contains the ingredients of software architecture. As Émile Auguste Chartier noted, there is nothing more dangerous than an idea when you have only one idea.

Perhaps even more problematic than being stuck with a narrow view of paradigms, is being stuck with a dysfunctional view of each paradigm. For instance, many developers working in languages and frameworks that support object orientation have a strong idea of the principles of interaction, data abstraction and granularity that support an effective view of OO, and instead surround themselves with manager objects, singletons and DTOs.

This session explores the strengths and weaknesses of different programming styles, patterns and paradigms across different programming languages, past and present.

Kevlin Henney is an independent consultant, speaker, writer and trainer. His development interests are in programming, practice and people. He is co-author of two volumes in the ”Pattern-Oriented Software Architecture” series, and editor and contributor for multiple books in the ”97 Things” series. He lives in Bristol and online.

Kevlin Henney
Kevlin Henney
flag VORTRAG MERKEN

Vortrag Teilen

09:00 - 16:00
Fr 9
Ausgebucht Reactive Streams: Automatische Parallelität, Wunsch und Wirklichkeit
Reactive Streams: Automatische Parallelität, Wunsch und Wirklichkeit

Reactive Streams sind eine Schlüsseltechnologie für hochskalierbare verteilte Systeme, sie automatisieren Parallelität und Nebenläufigkeit transparent. Aber wie erziele ich ein ganz bestimmtes Parallelitätsverhalten? Wann laufen Datenproduktion oder Pipeline-Stufen parallel? Wie optimiere ich Performance und Skalierbarkeit?

Im Tutorial lernen Sie, Parallelität in Reactor und RxJava effizient auf nichtfunktionale Anforderungen Ihres Systems zuzuschneiden und lernen den grundlegenden Einsatz und Realisierungskonzepte dieser Frameworks kennen.

Auf dem Rechner sollte JDK 9 oder neuer installiert sein.

Maximale Teilnehmerzahl: 30

Zielpublikum: Entwickler / Architekten die Reactive Streams effizient nutzen wollen (beliebige Programmiersprache)
Voraussetzungen: Kein Reactive Stream Wissen erforderlich, Java Grundlagen, JDK 9 oder neuer für die Übungsaufgaben
Schwierigkeitsgrad: Anfänger

Extended Abstract
The Time is Now: Das Pandemiejahr hat gezeigt, wie wichtig die Skalierbarkeit von Softwaresystemen für das Funktionieren unserer Gesellschaft ist. Reactive Streams sind eine zentrale Schlüsseltechnologie für hochskalierbare nebenläufige und verteilte Systeme. Parallelität und Nebenläufigkeit werden transparent hergestellt und mit wenigen Aufrufen konfiguriert. Aber in der Praxis ist es nicht immer einfach zu erkennen, mit welcher Konfiguration ich ein ganz bestimmtes gewünschtes Parallelitätsverhalten herstellen kann, und wie sich dieses dann auf Performance und Skalierbarkeit meiner Applikation auswirkt.

Nach einer Einführung in die Anwendung der Reactive Streams Framewoks RxJava und Reactor erwerben Sie in diesem Tutorial die Fähigkeit, die Parallelitätskonzepte in Reactive-Streams generell zu verstehen und diese gezielt für die Anforderungen Ihrer Applikation zu einzusetzen.

Es wird gezeigt, wie sich Parallelität, Nebenläufigkeit und Nonblocking Back-Pressure konfigurieren lassen, und welches genaue Verhalten hinsichtlich Datenproduktion, Datenfluss und Parallelität in der Pipeline sich hinter den jeweiligen Alternativen verbirgt.

Da die Konzepte programmiersprachenübergreifend sind, ist das Tutorial auch für Anwender von Reactive Streams in anderen Sprachen als Java gut geeignet.

Anhand zahlreicher praktischer Übungsaufgaben lernen Sie, sich Fragen der folgenden Art zu beantworten:

  • Was muss ich bei parallellaufenden Stream-Stufen beachten?
  • Wie ist das Queueing in einem Reactive Stream realisiert?
  • Wie setze ich Back-Pressure als Schlüssel zu einer hohen Skalierbarkeit ein?

Agenda

  • Einführung: Reactive Streams Standard und das Reactive Manifesto
  • Grundlegende Benutzung von Reactor / RxJAva
  • Streams aufbauen, verzweigen und zusammenführen
  • Datengeneratoren
  • Parallelität: Konfiguration und Verhalten
  • Nebenläufigkeit: Datenmanagement in den Frameworks
  • Nonblocking Back-Pressure: Benutzung und Realisierung
  • Nichtfunktionale Anforderungen: Skalierbarkeit und Performance
Marwan Abu-Khalil ist Softwarearchitekt in der Siemens AG und Trainer im Siemens Zertifizierungsprogramm für Software Architekten. Er unterrichtet seit Jahren leidenschaftlich Parallele Programmierung für die unterschiedlichsten Programmiersprachen und Umgebungen.
Marwan Abu-Khalil
Marwan Abu-Khalil
flag VORTRAG MERKEN

Vortrag Teilen

Zurück