Books and Booklets


How to Understand Almost Anything - A Practitioner's Guide to Domain Analysis (out Spring 2023, update out August 2024)

Domain analysis is the process of understanding a body of knowledge, the subject matter of a domain. You want to understand the concepts, vocabulary, rules and constraints clearly enough so you can define a set of abstractions and their relationships, a formal model, a “language” that can be used to completely and unambiguously describe, and ultimately execute, the subject matter in the domain. This book explains how to do this. At the core of the book are three chapters that cover the three aspects of domain analysis: collecting, thinking and validating. Chapter five zooms out beyond the core domain analysis activities and discusses related issues such as agility, business strategy and process change. The last chapter describes recurring ideas and concepts when defining abstractions. You can use those as a checklist of what to think about when designing your abstractions. The book is based on more than a decade of analysing domains and designing languages in a wide variety of fields from science to finance to public administration to healthcare.

See here for more details and purchase options.


Modellkompetenz für Wissenschaft und Technik (May 2022)

Modelle sind heute in aller Munde, insbesondere, seitdem die Klimakrise stärker thematisiert wird und die Corona-Pandemie unseren Alltag bestimmt. Sie sind die Grundlage technischer Entwicklungen und wissenschaftlicher Analysen und Vorhersagen. Wie funktionieren diese Modelle? Wie stehen sie in Zusammenhang mit Experimenten und Beobachtungen? Wie entwickelt man sie? Wann und warum können wir ihnen vertrauen und wo sind ihre Grenzen?

Anhand anschaulicher Beispiele werden in diesem Buch wichtige Grundlagen und Eigenschaften von naturwissenschaftlichen Modellen erklärt sowie Ansätze erläutert, um deren Relevanz und Aussagekraft einzuschätzen. Die Autor:innen geben kurzweilige und verständliche Hilfestellungen für die Entwicklung von Modellkompetenz. Dabei sprechen sie über Gültigkeitsbereiche, analytische, parametrische und numerische Modelle, Vereinfachungen und Gültigkeitsbereich, die Verwendung von Modellen zur Vorhersage, Szenarioentwicklung, Optimierung und Erklärung, Modellvalidierung durch Experimente, Beobachtung und Analysen sowie die Modellierbarkeit beschränkende Faktoren, darunter Komplexität, Chaos, Emergenz und blinde Flecken.

Die verwendeten Beispiele kommen aus Meteorologie und Klimawissenschaften, aus der Epidemiologie, der Teilchenphysik, der Fusionsforschung, aus sozio-technischen Systemen, aber auch aus den Ingenieurwissenschaften, wie etwa der Steuerung von Flugzeugen oder der Konstruktion von Kranen. Viele der Beispiele verknüpfen die Autor:innen zudem mit ihrem erfolgreichen Wissenschafts- und Technikpodcast „omega tau“.

Vorwort [PDF]
Inhaltsverzeichnis [PDF]
Bei Amazon kaufen
Seite beim Hanser Verlag


Once You Start Asking (April 2020)

http://onceyoustartasking.com

Follow Markus into the cockpits of a glider over the Swiss Alps and of a fighter jet over Indiana, onto the bridge of a Royal Navy survey ship, to the largest optical telescope on Earth with the Milky Way reflecting on its two huge mirrors, to a non-descript field in the middle of Germany that hosts an ultra-sensitive gravitational wave detector, and into a mysterious world beneath Geneva that houses the World's largest particle accelerator and the detectors that observe the collisions of elementary particles to probe into the building blocks of our Universe.

But this book is not just a collection of personal adventures of the author — only the first two chapters on SOFIA and HMS Enterprise are. Instead it covers, in detail, a number of topics that Markus has repeatedly covered in over ten years of recording episodes for the omega tau podcast: aviation and aerospace engineering, astronomy and telescopes, particle physics and large-scale physics experiments as well as models and modeling languages. With 220,000 words, over 150 illustrations and a couple dozen formulas, Markus explains the engineering of the marvelous machines that power modern science.

So how do you control a 17-ton telescope mounted on a 747, and why would you want to do that in the first place? How do multibeam sonars map the sea floor? How can modern gliders fly 100s of kilometers, and why do they take water ballast to do it? How can the SR-71 fly at Mach 3 at 80,000 feet? How do computers reliably control an A320 and why is it so hard to fly a helicopter? How do you build mirrors with surface roughness on the order of micrometers? How do you computationally combine 66 radio dishes into one big interferometer, and how do you combine antennas all over the World to observe a black hole? How do you insolate a detector so well from its environment that it can measure gravitational waves? How do you control the hair-width beam of the LHC to produce millions of particle collisions per second, in order to replicate the state of matter just after the Big Bang? How does a physicist analyse the data produced by ATLAS and CMS to "see" previously unknown particles like the Higgs boson? And what role do models play in all of this?

If you've asked yourself any of these questions, this book is for you.

ONCE YOU START ASKING, everything becomes interesting. Everything blooms into a wealth of unexpected details that are fascinating to explore. ONCE YOU START ASKING, people who know something about anything will open up and enthusiastically tell you everything about Their Thing. ONCE YOU START ASKING, you uncover new knowledge. The scientific process relies critically on asking What, How and Why questions over and over again. ONCE YOU START ASKING, you realize that things aren’t simple, but beautiful nonetheless. ONCE YOU START ASKING.

Links to shops are here: http://onceyoustartasking.com


Design, Evolution and Use of KernelF (June 2018)

KernelF is a functional language built on top of MPS. It is designed to be highly extensible and embeddable in order to support its use at the core of domain-specific languages, realising an approach we sometimes call Funclerative Programming. "Funclerative" is of course a mash-up of "functional" and "declarative" and refers to the idea of using functional programming in the small, and declarative language constructs for the larger-scale, often domain-specific, structures in a program. We have used KernelF in a wide range of languages including health and medicine, insurance contract definition, security analysis, salary calculations, smart contracts and language-definition. In this paper, I illustrate the evolution of KernelF over the last two years. I discuss requirements on the language, and how those drove design decisions. I showcase a couple of the DSLs we built on top of KernelF to explain how MPS was used to enable the necessary language modularity. The paper also serves as a reference for KernelF.

Download the booklet PDF here.


An Overview of Program Analysis using Formal Methods (December 2017)

Static program analysis refers to determining properties of programs without executing it, relying on a range of formal methods. While these methods have been around for a long time, over the last couple of years, some of these methods started to scale to solve problems of interesting size. We have used advanced type systems, abstract interpretation, SMT solving, model checking and discrete event simulation (new in version 1.1) to answer relevant questions about programs written with various DSLs. In this booklet we introduce the methods, illustrate what we have done with them, and describe how we have integrated the analysis method and existing tools with languages and IDEs.

Note that this 50-page booklet documents the authors’ experience. This is not a scientific paper. There is no contribution. The aim is to explain and illustrate.

Download the booklet PDF here.


Generic Tools, Specific Languages (June 2014)

Generic Tools, Specific Languages (GTSL) is an approach for developing tools and applications in a way that supports easier and more meaningful adaptation to specific domains. To achieve this goal, GTSL generalizes programming language IDEs to domains traditionally not addressed by languages and IDEs. At its core, GTSL represents applications as documents/programs/models expressed with suitable languages. Application functionality is provided through an IDE that is aware of the languages and their semantics. The IDE provides editing support, and also directly integrates domain-specific analyses and execution services. Applications and their languages can be adapted to increasingly specific domains using language engineering; this includes developing incremental extensions to existing languages or creating additional, tightly integrated languages. Language workbenches act as the foundation on which such applications are built.

Download the book PDF here.

Buy the paperback at Amazon.com | Amazon.de


DSL Engineering (2013)

This book covers DSL Design, Implementation and Use of DSL in detail. It consists of four parts. Part 1 introduces DSLs in general and discusses their advantages and drawbacks. It also defines important terms and concepts and introduces the case studies used in the most of the re-mainder of the book. Part 2 discusses the design of DSLs – independent of implementation techniques. It discusses seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues. Part 3 provides details about the implementation of DSLs with lots of code. It uses three state-of-the-art but quite different language workbenches: Jet-Brains MPS, Eclipse Xtext and TU Delft’s Spoofax. Part 4 discusses the use of DSLs for requirements, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic.

Buy the paperback at Amazon.com | Amazon.de

Get the PDF version (and then please make a donation :-))

Slides: DSL Design | DSL Implementation

 
 

Outdated Books

 
 

Modellgetriebene Softwareentwicklung, 2. Auflage (2007)

Die modellgetriebene Softwareentwicklung oder Model Driven Software Development (MDSD) befasst sich mit der Automatisierung in der Software-Herstellung. Dies bedeutet, dass Infrastrukturcode, Subsysteme oder ganze Anwendungen generativ aus formalen Modellen abgeleitet werden.

Dieses Buch beleuchtet das Thema aus den Perspektiven Technik, Engineering und Management und ist in vier Teile und einen Anhang gegliedert: Teil I enthält eine Einführung in die Grundlagen von MDSD, klärt Begriffe sowie die Relation zur Model Driven Architecture (MDA) der OMG. Auch wird erörtert, wie MDSD und agile Ansätze harmonieren. Der folgende Teil erläutert Techniken der Metamodellierung und zeigt konstruktive MDSD-Merkmale von Ziel-, Plattform- und Transformations-Architekturen auf. Außerdem werden Konstruktions- und Auswahlkriterien für MDSD-Werkzeuge sowie Codegenerierungs-Techniken vermittelt. Teil III beleuchtet Engineering-Aspekte und Prozess-Bausteine. Dazu zählen insbesondere auch die Themen Test, Versionierung und Product Line Engineering. Zusätzlich wird gezeigt, wie sich objektorientierte Geschäftsprozessmodellierung und MDSD nahtlos verbinden lassen. Der vierte Teil befasst sich mit Management-Aspekten, darunter ökonomische und organisatorische Themen sowie Adaptionsstrategien für MDSD. Außerdem werden häufig gestellte, zum Teil kritische Fragen beantwortet.

Im Anhang wird der MDA-Standard der OMG behandelt. Abgerundet wird das Buch durch zwei ausführliche, begleitende Fallstudien sowie viele kleinere Beispiele.

Das Buch richtet sich an Software-Architekten, Entwickler, Projektleiter und IT-Verantworliche. Vorausgesetzt werden Kenntnisse in der Objektorientierung und UML sowie — für die technischen Teile — Java oder ähnlicher Programmiersprachen.

Das Buch bei Amazon.de kaufen.


Model-Driven Software Development (2006)

MDSD is currently a highly regarded development paradigm among developers and researchers. With the advent of OMG’s MDA and Microsoft’s Software Factories, the MDSD approach has moved to the centre of the programmer’s attention, becoming the focus of conferences such as OOPSLA, JAOO and OOP. MDSD is about using domain-specific languages to create models that express application structure or behaviour in an efficient and domain-specific way. These models are subsequently transformed into executable code by a sequence of model transformations.

This book is a practical guide for software architects and developers. It draws heavily on the extensive experience by the authors. Part one introduces the general idea of MDSD and relates it to industry standards such as MDA or Software Factories. Part two provides technical details on meta modelling, DSL construction, model-to-model and model-to-code transformations, and software architecture. Part three looks at the software development process as well as at engineering issues such as versioning, testing and product line engineering. Finally, part four takes on a management perspective and looks at economical and organizational topics. Many examples, as well as three extensive case studies illustrate the concepts throughout the book.

Buy the Book on Amazon.com | A Draft PDF is here.


Pattern Languages of Program Design 5 (Editor; 2006)

Design patterns have moved into the mainstream of professional software development as a highly effective means of improving the quality of software engineering, system design, and development, as well as the communication among the people building them. Patterns capture many of the best practices of software design, making them available to all software engineers. The fifth volume in a series of books documenting patterns for professional software developers, Pattern Languages of Program Design 5 covers current software development best practices distilled by the patterns community. The material presented in the nineteen chapters of this book distills first-rate patterns, which were workshopped at recent PLoP conferences and rigorously reviewed and enhanced by leading experts in attendance. Representing the best of the conferences, these patterns provide effective, tested, and versatile software design solutions for solving real-world problems in a variety of domains. Pattern Languages of Program Design 5 covers a wide range of topics, particularly the areas of object-oriented systems, programming techniques, temporal patterns, security, domain-oriented patterns, human-computer interaction, software management, and software patterns. Among them, you will find patterns addressing: Object-oriented systems, Middleware, Concurrency and resource management problems, Distributed systems, Mobile telephony, Web-based applications, Extensibility and reuse, Meta-patterns. As patterns continue to capture insight from many areas of practical software development, more and more developers are discovering that using patterns improves communication and helps them build better software.

Buy the Book on Amazon.com.


Modellgetriebene Softwareentwicklung (2006)

Die modellgetriebene Softwareentwicklung oder Model Driven Software Development (MDSD) befasst sich mit der Automatisierung in der Software-Herstellung. Dies bedeutet, dass Infrastrukturcode, Subsysteme oder ganze Anwendungen generativ aus formalen Modellen abgeleitet werden.

Dieses Buch beleuchtet das Thema aus den Perspektiven Technik, Engineering und Management und ist in vier Teile und einen Anhang gegliedert: Teil I enthält eine Einführung in die Grundlagen von MDSD, klärt Begriffe sowie die Relation zur Model Driven Architecture (MDA) der OMG. Auch wird erörtert, wie MDSD und agile Ansätze harmonieren. Der folgende Teil erläutert Techniken der Metamodellierung und zeigt konstruktive MDSD-Merkmale von Ziel-, Plattform- und Transformations-Architekturen auf. Außerdem werden Konstruktions- und Auswahlkriterien für MDSD-Werkzeuge sowie Codegenerierungs-Techniken vermittelt. Teil III beleuchtet Engineering-Aspekte und Prozess-Bausteine. Dazu zählen insbesondere auch die Themen Test, Versionierung und Product Line Engineering. Zusätzlich wird gezeigt, wie sich objektorientierte Geschäftsprozessmodellierung und MDSD nahtlos verbinden lassen. Der vierte Teil befasst sich mit Management-Aspekten, darunter ökonomische und organisatorische Themen sowie Adaptionsstrategien für MDSD. Außerdem werden häufig gestellte, zum Teil kritische Fragen beantwortet.

Im Anhang wird der MDA-Standard der OMG behandelt. Abgerundet wird das Buch durch zwei ausführliche, begleitende Fallstudien sowie viele kleinere Beispiele.

Das Buch richtet sich an Software-Architekten, Entwickler, Projektleiter und IT-Verantworliche. Vorausgesetzt werden Kenntnisse in der Objektorientierung und UML sowie — für die technischen Teile — Java oder ähnlicher Programmiersprachen.

Nicht mehr erhältlich. | Ein PDF der ersten Ausgabe gibt's hier.


Software-Architektur (2005)

Als Architekt arbeiten Sie in einem sehr vielfältigen und dynamischen Umfeld. Neue Technologien drängen auf den Markt, neue Werkzeuge versprechen Effizienz- und Produktivitätssteigerungen und neue Architekturkonzepte, wie Serviceorientierung und modellgetriebene Verfahren sollen Ihnen helfen, mit der inhärenten Komplexität von IT-Systemen umzugehen. All diese Entwicklungen und Neuerungen müssen Sie als Architekt verstehen, einordnen und letztlich beurteilen können, um die Spreu vom Weizen zu trennen und für Ihre konkrete Problemstellung die passende Lösung zu wählen.

Dieses Buch hilft Ihnen dabei, indem es das Thema Software-Architektur umfassend behandelt und mit Hilfe eines architektonischen Ordnungsrahmens strukturiert. Es stellt Sie als Architekten in den Mittelpunkt und bietet Ihnen langfristige Orientierung. Das Buch vermittelt hierzu essenzielles Architektur-Wissen und zeigt Ihnen, wie Sie dieses Wissen konkret und in entsprechenden Projekten einsetzen können. Zu diesem Zweck enthält das Buch Anwendungsszenarien und Fallstudien aus verschiedenen Industriezweigen und Anwendungsdomänen. Software-Entwickler und Studenten erhalten mit diesem Buch eine wertvolle Hilfestellung, um in das Thema Software-Architektur einzusteigen.

Diese erste Auflage ist nicht mehr erhältlich. (An späteren Auflagen war ich nicht beteiligt).


Remoting Patterns (2004)

Developing distributed applications, made simpler with the advent of distributed object middleware, succeeds best when it seamlessly integrates with the widely spread object-oriented and component-oriented paradigms used in today's applications. But extra requirements - performance, predictability, scalability - can increase complexity and the challenge of building robust distributed software. This is when details of the distributed object middleware suddenly become critical and must be understood thoroughly. And this is also when developers, consultants, and especially software architects, need to understand the inner workings of the middleware products they use - not just their APIs.

This book explains the internal structure and behaviour of distributed object middleware in an easily comprehensible form: patterns. Since practically all available distributed object middleware systems are built on the same set of patterns, understanding the patterns will provide developers with a thorough and deep understanding of how a particular middleware works. To illustrate the patterns, the book includes three technology projections for: CORBA, Web Services, and .NET Remoting,

The pattern language in this book addresses everything from basic and elementary aspects of lifecycle- and resource management to asynchronous invocations. The combination of patterns, their interactions, and the technology projections even enable you to create your own distributed object middleware, in case existing solutions fail to address your specific needs.

Buy on amazon.com | Here is a review version of the book for you to check out.


Server Component Patterns (2002)

Component technologies like Enterprise JavaBeans, COM+ and, in the near future, CORBA Components have become mainstream in many application domains. Many developers and architects use this technology in their everyday work. However, there is more to know about component infrastructures than the API's of the respective technology, and this book shows what.

The first part of the book introduces a pattern language that describes how server-side component infrastructures work internally. It does not only adress the basic building blocks and their interactions. It also provides details about the reasons and rationales for this kind of system architecture. For each pattern, the book provides short examples of how it is implemented in EJB, CCM and COM+. These examples thus also serve as a good comparison of those three mainstream component infrastructures.

The second part of the book uses the EJB technology to provide even more detailed examples for the patterns, including UML diagrams and extensive source code. The chapter also serves as a comprehensive overview of EJB, introducing the EJB from the architecture viewpoint, and not just on the API level.The focus is on highlighting the consequences of the EJB architecture for the developer.

Part three offers another approach to the material: a conversation between two people that describes how a concrete application has been built using component technology, focusing on the benefits of this approach.

After reading this book you will understand the principles and patterns of server-side component infrastructures, be able to design your own proprietary component infrastructures for specific projects, learn about the commonalities and differences between EJB, CCM and COM+, gain a comprehensive overview over the EJB technology and see how server-side component infrastructures can be used to great benefit in a real application.

Buy on amazon.com | Here is a draft version of the book for you to check out.