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.10 Quality Scenarios

The following are the various quality scenarios that need to be taken care of while building the application.

10.1 Quality Tree

Figure 4.36: Quality tree

10.2 Evaluation Scenarios

Testability/Coverage

Using JaCoCo during development and the build process (https://info.michael-simons.eu/2014/05/22/jacoco-maven-and-netbeans-8-integration/) ensures that we get at least 95% code coverage.

Testability/Independent from External Services

The architecture should be designed in such a way that algorithms that depend on external services can be tested without having the external service available; that is, all the external dependencies should be mockable.

For example, FetchBikingPicturesJob needs a resource containing an RSS feed. Retrieving the resource and parsing it are at least two different tasks. Fetching the resource through a separate class, DailyFratzeProvider, makes testing the actual parsing independent from an HTTP connection and thus relatively simple.