Chapter 8. Component-Based Thinking
In Chapter 3, we introduced the concept of a module as a collection of related code. In this chapter, we dive much deeper into this concept, focusing on the architectural aspect of modularity in terms of logical components—the building blocks of a system.
Identifying and managing logical components is a part of architectural thinking (see Chapter 2), so much so that we call this activity component-based thinking. Component-based thinking is seeing the structure of a system as a set of logical components, all interacting to perform certain business functions. It’s at this level (not the class level) that an architect “sees” the system.
In this chapter, we define logical components within software architecture, how to identify them, and how to arrive at an appropriate level of granularity through analyzing what’s known as cohesion (we define what that means a little later on in this chapter). We also discuss coupling between components and how and why to create loosely coupled systems.
Defining Logical Components
Think about the floor plan of a typical Western house, as illustrated in Figure 8-1. Notice the floor plan is made up of various rooms (such as a kitchen, bedrooms, bathrooms, a living room, an office, and so on), each serving a different purpose. These rooms represent the building blocks—the components—of the house.
Figure 8-1. The ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access