Book Image

arc42 by Example

By : Dr. Gernot Starke, Michael Simons, Stefan Zörner, Ralf D. Müller
Book Image

arc42 by Example

By: Dr. Gernot Starke, Michael Simons, Stefan Zörner, Ralf D. Müller

Overview of this book

When developers document the architecture of their systems, they often invent their own specific ways of articulating structures, designs, concepts, and decisions. What they need is a template that enables simple and efficient software architecture documentation. arc42 by Example shows how it's done through several real-world examples. Each example in the book, whether it is a chess engine, a huge CRM system, or a cool web system, starts with a brief description of the problem domain and the quality requirements. Then, you'll discover the system context with all the external interfaces. You'll dive into an overview of the solution strategy to implement the building blocks and runtime scenarios. The later chapters also explain various cross-cutting concerns and how they affect other aspects of a program.
Table of Contents (9 chapters)
Free Chapter
1
Acknowledgements
8
VII - macOS Menu Bar Application

V.6 Runtime View

In contrast to the static building block view, this section visualizes dynamic aspects. How do the pieces work together?

6.1 Move Determination Walkthrough

After establishing the XBoard protocol, the client (white) starts a game by indicating a move. The following sequence diagram shows an example interaction at the subsystem level from the input, "e2e4" (white pawn e2-e4), to DokChess' response, which is the output "move b8c6" (black knight b8-c6, the "Nimzowitsch defense" (https://en.wikipedia.org/wiki/Nimzowitsch_Defence)):

Figure 5.30: Example interaction for move determination

First, the Text UI subsystem validates the input with the aid of the Rules subsystem (refer V 8.4, Plausibility Checks and Validation). The move in the example is recognized as legal and performed on the (stateful) Engine (the performMove message) afterward. Then, the Text UI subsystem asks the Engine to determine its move. Since move computation can...