Avatar

Prof. Dr. René Wörzberger

Professor of Software Architectures and Systems

University of Applied Sciences TH Köln

Biography

Since 2017, I work as a professor in the field of software architectures, software systems, and software engineering. Prior to that, I have worked as an IT architect and project manager at Deutsche Post DHL Group and NTT Data.

Interests

  • Software Architectures
  • Large-scale Web Applications
  • Software Engineering
  • Cloud Computing

Education

  • PhD in Computer Science, 2010

    RWTH Aachen University

  • Diploma in Computer Science, 2004

    RWTH Aachen University

Recent Posts

Experience

 
 
 
 
 

Professor

University of Applied Science TH Köln

Mar 2018 – Present Cologne, Germany

Teaching and research in the field of

  • Software Architectures
  • Software Engineering
  • Cloud Computing
 
 
 
 
 

Professor

University of Applied Science HSD

Sep 2017 – Feb 2018 Düsseldorf, Germany
Taught software engineering
 
 
 
 
 

IT Architect and Project Manager

Deutsche Post DHL Group

Jul 2014 – Jun 2017 Bonn, Germany

Responsibilities included

  • Architecting large-scale web applications
  • Project management
 
 
 
 
 

IT Architect

NTT Data Deutschland

Feb 2010 – Jun 2014 Cologne, Germany

Responsibilities included

  • Lead developing and architecting web applications
  • Acting as Scrum Master
  • Developing and operating continuous integration pipelines
 
 
 
 
 

PhD Student and Lecturer

RWTH Aachen

Jan 2005 – Dec 2009 Aachen, Germany

Responsibilities included

  • Researching in the field of business process management systems
  • Giving lectures in software engineering
  • Acquiring funding

Teaching

I give/gave diverse courses at Technische Hochschule Köln dealing with distributed systems architectures, software engineering and cloud computing.

Large and Cloud-based Software Systemes in Computer Science & Engineering (Master’s program) has its own Lecture Notes and includes topics like

  • Software Systems: definition and some basic terms
    • Stakeholders: The whole plethora of stakeholder groups and their numerous interests in large projects.
  • Quality Attributes
    • Performance: What makes my system slow? What workload do I have to deal with? Why is often latency a bigger problem than throughput? Why is it bad idea to fully utilize my system? How can I scale my system?
    • Dependability: How can I increase my system’s availability? How can I make my system resilient to faults? Why do I have to trade availability for consistency and vice versa?
    • Maintainability: What is maintainability? What fundamental cognitive mechanism drive the perception of a code base’s maintainability?
    • Security: How can I describe security properties? What are the aspects of security? What are common threats for (web based) systems?
  • Design
    • Trade-offs: Why is there no silver bullet in system architecture?
    • Requirements: How can I formulate quality requirements?
    • Principles: Which fundamental principles govern architectural design?
    • Patterns: What do we conceive as a pattern in system architecture?
    • Decomposition: How can I break down my system into smaller parts, how should I do the “cuts”?
    • Monolithic Systems: How can I embody architecture in single (monolithic) programs, e.g., using layers or hexagonal architectures? What are the downsides of monoliths?
    • Scaling: How can I lower response times and increase availabilty with horizontal scaling? What patterns do we have for scaling? How do we allocate processes to computing resources.
    • Load Balancing: How do we distribute workload among processes of the same kind to improve thoroughput and availability=
    • Distributed Systems: How can I distribute a system into several programs, e.g., in a Microservice fashion. What are downsides of distribution? What are strategies for redeployment in distributed systems.
    • Communication: What are the basic patterns of communications in distributed systems?
    • Caching: How should we store copies of data closed to its consumers to lower latency?
    • Modelling: How can I communicate my thoughs about systems in models using modeling languages like UML?
  • Technology
    • Middleware: What standard components constitute a contemporary large cloud-based web application? What are load balancers, inbound gateways, caching services, data warehouses, message queues, identity provides etc.?
    • Cloud Computing: What kinds of cloud offerings do we have to deal with? How do we create an infrastructure in the cloud for a large-scale web application?
    • Virtualization: What are virtual machines and containers, how do they differ and what are the trade-offs?
    • Web: How do HTTP as the fundamental protocol of the world-wide web, its applications like GraphQL and related protocols like WebSockets and gRPC work? How can web applications be secured by means of Transport Layer Security (TLS) for encryption and server (and client) authentication, OAuth 2 for authorization, and OpenID Connect for user authentication?
    • Messaging and Streaming: What do message queues, brokers and streaming platforms like Apache Kafka do?
    • Web Security: How to make communication and interaction in web applications confidential, authentic and integrous? What are common threats and methods? What are hash functions, symmetric and asymmetric ciphers? What is encryption and signing? How do Transport Layer Security (TLS), Open Authorization (OAuth2), and OpenID Connect (OIDC) work?
    • Persistence: What kind of (No)SQL databases do we have and what are their trade-offs (relational, document, key-value, graph)? How does scaling work in the database world? How much consistency do I need in distributed databases?

Programming Basics (Praktische Informatik) in Computer Science & Engineering (Bachelor’s program) in a one-term substitution including topics like

  • Java type system and object-oriented programming
  • Dynamic data structures
  • Java IO
  • Java UI programming / event driven programming

System Design Lab Course in Computer Science & Engineering (Bachelor’s program) including topics like

  • End-to-end software development process in small teams
  • Source-code management and issue tracking with GitLab
  • Documentation with AsciiDoc

DevOps in study program Code & Context (Bachelor’s program) and Software Management in Computer Science & Engineering (Bachelor’s program)

  • Linux Command Line Basics with, e.g., bash
  • Git Deep-Dive
  • Build Automation with, e.g., Apache Maven
  • Test Automation with, e.g., JUnit, Mockit, Selenium and JMeter
  • Container Virtualization and Orchestration with, e.g., Docker and Kubernetes
  • Cloud Computing with, e.g., Google Cloud
  • Security Basics and Protocols like TLS

Client Server Basics in study program Code & Context (Bachelor’s program)

  • Web fundamentals and front-end programming (HTML, CSS, Javascript etc.)
  • Backend-Programming with Java, Spring, SQL and NoSQL databases

Trustable Applications in study program Code & Context (Bachelor’s program)

  • Security basics: common threats and methods
  • Cryptographic basics: hash functions, symmetric and asymmetric encryption and siging
  • Transport Layer Security (TLS)
  • Open Authorization 2 (OAuth2)
  • Open ID Connect (OIDC)

Project Explore in study program Code & Context (Bachelor’s program)

  • application of learning outcomes of first term in study program [“Code & Context” (Bachelor’s program)]
  • development of products in teams

Project Launch in study program Code & Context (Bachelor’s program)

  • development and launch of a minimal viable product (MVP)
  • development of workable business models
  • requirements elicitation including real (prospect) end-users
  • application of learning outcomes of first four terms in study program Code & Context (Bachelor’s program)

Community and Reflection in study program Code & Context (Bachelor’s program)

Projects

Adaptable and Human-Centered Environment for the Administration of Development Processes

Within the collaborative research center IMPROVE (SFB 476), the AHEAD project aims at building a universal administration system for …

Dynamic Process Management Based Upon Existing Systems

The subproject T6 of the Transferbereich 61 follows the former subproject B4 of the SFB 476 IMPROVE. The aim of the project T6 is to …

Publications

DYPROTO – tools for dynamic business processes

In this article, we present research results about tools for supporting dynamic business processes. This research work has been conducted in a three-year cooperation between our department and an IT service provider for insurance companies. Our partner’s process management system (PMS) is rather aligned with static processes, whose structure is not changed at process run time. Therefore, we contribute an approach for obtaining dynamic process execution support based on this static PMS by automatically augmenting existent WS-BPEL process definitions and run time data. Dynamically changeable processes are presented to process participants as graphical models by a process model editor. This editor aids process participants with performing dynamic changes inasmuch as it is aware of explicit and implicit technical and professional process knowledge and detects violations against this knowledge in dynamically changed process instance models. We delineate how explicit process knowledge can be graphically modelled and exploited in automatic checks using OCL-constrained and integrated meta-models. Checks versus explicit knowledge are complemented by checks versus implicit knowledge which is contained in other process definition and process instance models. These checks include process similarity computations based on graph grammar formalisms and tools.

Support for modeling an monitoring of engineering design processes

Engineering design processes are highly complex and dynamic inasmuch unforeseen changes occur frequently at process runtime. In this paper we present the process management system PROCEED that aids process managers and process participants in planning and enacting the work processes in plant design projects. It is based on the commercial lifecycle engineering tool Comos. PROCEED exceeds the state of the art in process management in several ways. The models used to represent running design processes incorporate aspects of project plans and workflow instances to reflect the current planning and execution states of work processes. Workflow definitions are used to define best practices for repetitive process parts and are enacted to guide process participants. PROCEED ensures consistent changes of process models even at process runtime. A process manager can resort to numerous progress measures in order to get exact quantitative information about the performance of a process.

Management dynamischer Geschäftsprozesse auf Basis statischer Prozess-Managementsysteme (Dissertation)

In dieser Arbeit wird ein Prozessmanagementsystem beschrieben, das auch dynamische Prozesse unterstützt. Dynamische Änderungen können von Prozessbeteiligten über strukturelle Änderungen an Modellen bereits laufender Prozesse durchgeführt werden.