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

IV.4 Solution Strategy

At the core of biking2 is a simple yet powerful domain model based on a few entities, of which a "Bike" and its "Milage" are the most important.

Although data-centric, the application refrains from using too much SQL to create reports, summaries, and so on, but tries to achieve that with new Java 8 features related to streams, lambdas, and map/reduce functions.

Building the application with Spring Boot is an obvious choice as one of the main quality goals is learning about it. Furthermore, using Spring Boot as a "framework" for Spring Framework allows us to concentrate on the business logic. On the one hand, there is no need to understand a complex XML configuration, while on the other, all of the building blocks are still put together using dependency injection.

Regarding dependency injection and testability, all injection should be done via constructor injection; setter injection is only allowed when there's no other technical way...