System component modeling

As the first step in mapping the project's architecture, we will begin by creating a UML component diagram. The main goal here is to identify and describe the structural connections between the various components that comprise our system.

A component is defined as an encapsulated standalone unit that constitutes an integral part of a system or a sub-system. Components communicate with each other by exposing and consuming one or several interfaces.

One key point of component-based design is that components should always be considered as abstract, logical entities that expose a particular behavior. This design approach is closely aligned with the SOLID principles and offers us the flexibility to freely change or even swap component implementations at any point throughout the project's development.

The following diagram breaks down the Links 'R' Us project into high-level components and visually illustrates the interfaces exposed and consumed by each one of them:

Figure 1: The UML component diagram for the Links 'R' Us project

In case you are not familiar with the symbols used by this type of diagram, here is a quick explanation of what each symbol represents:

Now that we have mapped out a high-level view of the system components required for constructing our project, we need to spend some time and examine each one in a bit more detail.