Freiberufler, Java-Architekt und Java-Entwickler


Ich schreibe regelmäßig Patterns, um mein Wissen in einer sehr bewährten Form zu dokumentieren und weiterzugeben. Diese Pattern-Papers erhalten intensives Feedback dadurch, dass sie durch ein Shepherding und einen Workshop auf einer Pattern-Konferenz (EuroPLoP) gehen.


Expand and Contract

A Pattern to Apply Breaking Changes to Persistent Data with Zero Downtime

The Expand and Contract pattern provides a way to implement breaking changes to a system in a safe manner. The pattern is particularly helpful in an environment where maintenance downtime is unacceptable. This paper examines the details on how to apply the pattern when the structure of persistent data needs to be changed. The paper is supposed to be a useful read for every software developer who operates in such an environment.

Entity View

Simplify Data Access in Domain-Driven Applications

In a domain-driven application, the Entity View pattern can be used to provide cohesive information about an entity that cannot be retrieved from the entity directly. The pattern is particularly useful if some client requires data about an entity that is stored beyond the entity's boundaries. In that case a service facade aggregates the relevant data and provides it in form of a dedicated object: an entity view.

Start Writing on Site

A Pattern to Return to a Pattern Conference

This has been a fun submission to the 20th EuroPLoP conference. It gives a solution to the problem how you can increase the likelyhood to return to a PLoP conference if you are at a PLoP conference and enjoy it very much.

Highly Scalable, Ultra-Fast and Lots of Choices

A Pattern Approach to NoSQL

Venturing into the NoSQL solution space for the first time brings up many new concepts and features that you may not be familiar with. How can you decide what features you need and which product to chose?

How to Write a Pattern?

A Rough Guide for First-Time Pattern Authors

Pattern writing is a creative, iterative process. For new pattern authors, however, it is often not obvious where to start and how to proceed. Although well-written patterns typically follow a strict format, the number of available formats push first-time authors right at the start to choose a specific format without knowing its advantages and liabilities. This paper aims at smoothing the learning curve of pattern writing by proposing a step-by-step guide that enables you to write a pattern in a simple but complete format.

Patterns for Data Migration Projects

Data migration is a common operation in enterprise computing. Whenever a new system is introduced and after each merger and acquisition, existing data has to be moved from a legacy system to some hopefully more suitable target system. This paper presents several patterns that deal with the complexity involved in matching two distinct domain models and, at the same time, ensuring that the migrated data is of high quality.

Handling Application Properties

Simplify Application Customization in Different Environments

This paper aims at evolving a language of patterns dealing with application properties. It contains patterns dealing with flexible ways of loading properties, providing common properties for multiple deployments and enforcing the explicit setting of some properties. Using the patterns facilitates maintenance of properties, allows for simplified refactoring and gives the possibility to keep varying environment settings under version control. As property storages, property files and database tables are discussed.

Using a Profiler Efficiently

Strategies that Help you to Find Performance Problems and Memory Leaks

Sooner than later most software development projects suffer from severe runtime problems. When features are given top priority, caring for non-functional requirements such as performance or stability is most often postponed during the initial development phase. Once a system is in production, however, performance problems and memory leaks quickly catch more attention. A Profiler is a very useful development tool to find the causes of these problems. Using a Profiler is not that easy; you need good strategies to detect the actual causes. This paper gives you advice how to use a Profiler efficiently.

Object Prefetch Filter

A Pattern for Improving the Performance of Object Retrieval of Object-Relational Mapping Tools

Object-relational mapping tools provide a bridge between object-oriented programming languages and relational database systems. Although the concepts of object-relational mapping are well understood, the performance of object retrieval still is a crucial point in using the tools. Prefetching objects is a means to improve the performance, in particular to avoid the so-called n+1 selects problem. This problem arises when a list of objects is retrieved from a database and for each object another database call needs to be executed to retrieve referenced objects. This paper presents a pattern that, if applied to the implementation of a mapping tool, gives application developers the choice to explicitly define for every query which part of a network of objects to prefetch.

Business Logic in the Presentation Layer

Design Patterns on the Implementation of Business Logic on the Client-Side

As a general rule of thumb, business logic in a multi-layered information system should be implemented in a dedicated domain layer and be separated from the presentation layer. Although this rule has demonstrated its validity, it restricts the options for designing information systems. At times, there may be good reasons to deploy some types of business logic locally in the presentation layer. This paper presents a collection of design patterns that address the forces of implementing business logic in the presentation layer in the context of an object-oriented business domain layer.

User Interface Design for Searching

A Pattern Language

The ability to perform search requests in business data is an important asset of any information system. To be accepted by its users, an information system needs a front-end user interface that leverages the features and complexity of the back-end search facilities. Intended for GUI designers and developers, this paper proposes a pattern language for the design of such user interfaces.

Query Engine

A Pattern for Performing Dynamic Searches in Information Systems

This paper presents an architecture pattern for information systems that require complex search capabilities. The pattern includes means to generically describe search requests, a service that interprets search requests and executes them on data sources, and strategies for transmitting results back to the requesting clients.

Über Patterns

Patterns selbst gemacht

Eine interaktive Gebrauchsanleitung

Handout und Foliensatz eines Workshops im Rahmen der Java User Group München am 14.09.2009 (Zusammenfassung (PDF) sowie Folien (PDF))

Collected notes from the Shepherding Workshop at EuroPLoP 2008

Collected notes for a workshop at EuroPLoP 2008 on how to become a shepherd or how to become a better shepherd, respectively. Shepherding is a process in which an experienced pattern authors gives feedback to another author who submitted a paper to a pattern conference. The shepherd works closely with the author so that he or she can improve the paper before the actual conference starts.