Defining Logical Components (การนิยาม Logical Components)
ลองนึกถึงผังบ้านแบบตะวันตกทั่วไป ดังแสดงใน Figure 8-1 สังเกตว่าผังบ้านประกอบด้วยห้องต่าง ๆ (เช่น ห้องครัว ห้องนอน ห้องน้ำ ห้องนั่งเล่น ห้องทำงาน และอื่น ๆ) แต่ละห้องทำหน้าที่ต่างกัน ห้องเหล่านี้แทน building block — หรือ component — ของบ้าน
Figure 8-1. The various rooms represent the components of the house
ในทำนองเดียวกัน ฟังก์ชันหลักที่ระบบทำก็แทน component ของระบบนั้น ดังแสดงใน Figure 8-2 เหมือนกับห้องต่าง ๆ ในบ้าน แต่ละ component ทำหน้าที่เฉพาะอย่าง เช่น จัดการสินค้าคงคลัง จัดส่งคำสั่งซื้อ หรือประมวลผลการชำระเงิน เมื่อรวมกันแล้วก็ประกอบขึ้นเป็นระบบ แต่ละ component มีซอร์สโค้ดที่ implement ฟังก์ชันทางธุรกิจเฉพาะนั้น
Figure 8-2. The various major functions represent the components of the system
Logical components ใน software architecture มักปรากฏในรูปของ namespace หรือโครงสร้างไดเรกทอรีที่บรรจุซอร์สโค้ดซึ่ง implement ฟังก์ชันการทำงานนั้น โดยทั่วไป leaf node ของโครงสร้างไดเรกทอรีหรือ namespace ที่บรรจุซอร์สโค้ดจะแทน logical component ใน architecture ส่วนไดเรกทอรีหรือ namespace node ระดับสูงกว่าจะแทน domain และ subdomain ของระบบ ในโครงสร้างไดเรกทอรีที่แสดงใน Figure 8-3 พาธไดเรกทอรี order_entry/ordering/payment แทน component Payment Processing และพาธ order_entry/processing/fulfillment แทน component Order Fulfillment ซอร์สโค้ดที่อยู่ภายใต้ไดเรกทอรีเหล่านี้คือสิ่งที่ implement logical component เหล่านี้
Figure 8-3. The leaf nodes of the directory represent the components of the system
สถาปนิกสามารถวิเคราะห์โครงสร้างไดเรกทอรีหรือ namespace ของระบบซอฟต์แวร์เพื่อเข้าใจโครงสร้างภายในของมัน — กล่าวคือ logical architecture ของมัน เราจะอธิบายความแตกต่างระหว่าง logical และ physical architecture ในหัวข้อถัดไป