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

VI.8 Cross cutting Concepts

Because of the nature of docToolchain (as a locally used development tool), most of the standard cross cutting concepts (for example, security, monitoring, and so on) do not apply.

This is why this section is short.

Automated Testing

In an ideal world, we would have covered all code with unit tests. However, currently, the smallest unit of docToolchain is a Gradle task. Because of the dependencies on Gradle, we can't easily test these tasks in isolation.

The current solution for automated tests is to use the gradleTestKit (https://docs.gradle.org/4.9/userguide/userguide.html) and Spock (http://spockframework.org/).

Through the gradleTestKit, Gradle will start another Gradle instance with its own test configurations. The gradleTestKit ensures that all tasks can be integration-tested in an automated way.

Spock helps to define the tests in an easy-to-maintain, behavior-driven development (BDD, https://en.wikipedia.org/wiki/Behavior-driven_development) way.