ใน Chapter 3 เราได้แนะนำแนวคิดของ module ในฐานะกลุ่มของโค้ดที่เกี่ยวข้องกัน ในบทนี้เราจะเจาะลึกแนวคิดนี้มากขึ้น โดยโฟกัสที่แง่มุมเชิง architecture ของ modularity ในรูปของ logical components — หน่วยประกอบ (building block) ของระบบ
การระบุและจัดการ logical components เป็นส่วนหนึ่งของ architectural thinking (ดู Chapter 2 ) มากเสียจนเราเรียกกิจกรรมนี้ว่า component-based thinking Component-based thinking คือการมองโครงสร้างของระบบเป็นชุดของ logical components ที่ทำงานร่วมกันเพื่อทำหน้าที่ทางธุรกิจบางอย่าง สถาปนิกจะ "มองเห็น" ระบบที่ระดับนี้ (ไม่ใช่ระดับคลาส)
ในบทนี้เราจะนิยาม logical components ใน software architecture วิธีระบุมัน และวิธีหาระดับ granularity ที่เหมาะสมด้วยการวิเคราะห์สิ่งที่เรียกว่า cohesion (เราจะนิยามความหมายของมันในภายหลังของบทนี้) เรายังจะพูดถึง coupling ระหว่าง component และวิธีการรวมถึงเหตุผลในการสร้างระบบที่ loosely coupled