DAY 1: นิยามสถาปัตยกรรม &
4 ศัพท์รากฐานของสถาปนิก
เอกสารชุดแบบเรียนสมบูรณ์แบบประจำ Day 1 ที่รวมทั้ง บทเรียนเนื้อหาเชิงลึก ตามมาตรฐาน SEI, คำศัพท์รากฐาน 4 คำ พร้อม ควิซทดสอบความรู้ 20 ข้อ และเฉลยวิเคราะห์เหตุผลอย่างละเอียดในที่เดียว
4 ศัพท์รากฐานของสถาปนิก (Architect's Foundations)
ก่อนจะมองระบบในภาพใหญ่ สถาปนิกซอฟต์แวร์ต้องแยกแยะและเข้าใจคำศัพท์รากฐาน 4 คำนี้อย่างเด็ดขาด 100%:
ฟังก์ชันการทำงาน
คำนิยาม: สิ่งที่ระบบ "ทำ" (What the system does) เมื่อได้รับ Input หรือการกระตุ้นจากผู้ใช้ ทำงานถูกต้องตาม Use Case
ปุ่มกดบันทึกข้อมูล, ระบบคำนวณภาษี, การตัดเงินผ่านบัตรเครดิต, การส่งอีเมลยืนยันตัวตน
ฟังก์ชันการทำงานสามารถต่อเติมหรือเขียนเพิ่มได้เรื่อยๆ โดยตัวมันเองไม่ใช่ตัวตัดสินว่าสถาปัตยกรรมนั้นดีหรือเลว
คุณลักษณะเชิงคุณภาพ
คำนิยาม: ระบบทำฟังก์ชันนั้นได้ "ดีแค่ไหน" (How well the system does its function) เป็นคุณสมบัติที่วัดผลหรือทดสอบได้เชิงปริมาณ
ระบบตอบสนองไวภายใน 100 ms (Performance), ทำงานต่อเนื่องได้ 99.99% โดยไม่ล่ม (Availability), การแก้ไขโค้ดทำได้ง่ายโดยไม่กระทบส่วนอื่น (Modifiability)
คุณลักษณะเชิงคุณภาพคือ "หัวใจจริง" ของสถาปัตยกรรมซอฟต์แวร์ เป็นสิ่งที่ขับเคลื่อนและบังคับรูปร่างโครงสร้างของระบบ
การแลกเปลี่ยนเชิงออกแบบ
คำนิยาม: การตัดสินใจยอมลดทอนคุณลักษณะด้านหนึ่ง เพื่อให้ได้คุณลักษณะอีกด้านหนึ่งที่ดีขึ้น เนื่องจากข้อจำกัดทางวิศวกรรม
การเพิ่มขั้นตอนเข้ารหัส Audit Logging เพื่อเพิ่ม Security ส่งผลให้ Performance ช้าลง และใช้พื้นที่ฮาร์ดดิสก์เพิ่มขึ้น
ในโลกความเป็นจริง ไม่มีสถาปัตยกรรมที่ "สมบูรณ์แบบทุกด้าน" หน้าที่ของสถาปนิกคือการบาลานซ์ Tradeoffs ให้ตรงกับ Business Goals
การซ่อนรายละเอียด
คำนิยาม: การมองระบบผ่านโครงสร้างภาพรวมโดย ละเว้นรายละเอียดโค้ดภายใน (Private Implementation Details) ที่ไม่จำเป็นต่อการวิเคราะห์ออกไป
การดูเฉพาะ Interface สัญญาการเชื่อมต่อ (Public APIs) ระหว่างโมดูล โดยไม่สนใจว่าข้างในโมดูลนั้นเขียนวนลูปด้วยคำสั่งอะไร
ซอฟต์แวร์ระดับองค์กรมีโค้ดเป็นล้านบรรทัด Abstraction คืออาวุธเดียว ที่ช่วยลดภาระสมองเพื่อให้สถาปนิกวิเคราะห์ระบบได้
นิยามสถาปัตยกรรมซอฟต์แวร์ตามมาตรฐาน SEI
Software Architecture in Practice (4th Edition) โดย Bass, Clements, Kazman (สถาบัน SEI)
"สถาปัตยกรรมซอฟต์แวร์ของระบบ คือ ชุดของโครงสร้าง (Set of Structures) ที่จำเป็นต่อการวิเคราะห์และทำความเข้าใจระบบ โครงสร้างเหล่านี้ประกอบด้วย องค์ประกอบซอฟต์แวร์ (Software Elements), ความสัมพันธ์ระหว่างองค์ประกอบ (Relations) และ คุณสมบัติของทั้งสองสิ่ง (Properties)"
3 แก่นความคิดสำคัญที่แยก "สถาปนิก" ออกจาก "Coder ทั่วไป":
เน้นที่ "Structures" มีอยู่จริง
สถาปัตยกรรมไม่ใช่แค่กล่องภาพวาดบนไวท์บอร์ด แต่เป็น Reasoning-enabling structures ที่ช่วยให้วิศวกรวิเคราะห์ ทำนาย และคิดหาเหตุผลเกี่ยวกับพฤติกรรมของระบบล่วงหน้าได้
พฤติกรรมและการปฏิสัมพันธ์ (Runtime)
สถาปัตยกรรมครอบคลุมถึงสิ่งที่เกิดขึ้นในขณะรัน (Dynamic Behavior) ไม่ใช่แค่โค้ดนิ่งบนดิสก์ แต่มองถึงลำดับการคุยกัน การส่งข้อความ และโปรโตคอลระหว่าง Elements
Every System Has an Architecture
ไม่ว่าระบบนั้นจะออกแบบมาประณีต หรือเขียนโค้ดมั่วซั่วโดยไม่มีการวางแผนมาก่อน ระบบนั้นย่อมมีสถาปัตยกรรมในตัวเองเสมอ และมักส่งผลผูกมัดประสิทธิภาพไว้ถาวร
ควิซทดสอบความรู้ 20 ข้อ (Day 1 Comprehensive Quiz)
ทำโจทย์เพื่อประเมินความแม่นยำทางทฤษฎี ระบบจะตรวจให้ทันทีพร้อมบันทึกคะแนนรวม
สารบัญเฉลยเร็ว (Fast Answer Key Matrix)
ตารางตรวจสอบคำตอบที่ถูกต้องรวดเร็วทั้ง 20 ข้อ