สถาปัตยกรรมระบบ
UAT 493 โครงงานเทคโนโลยีระบบอากาศยานไร้คนขับและระบบอัตโนมัติ 1
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- แยกสถาปัตยกรรมเชิงหน้าที่ (ระบบต้องทำอะไร) ออกจากสถาปัตยกรรมเชิงกายภาพ (ใช้อะไรทำ)
- จัดสรรหน้าที่ลงองค์ประกอบ และตรวจว่าทุกหน้าที่มีเจ้าของ
- ใช้ตาราง N² หาอินเทอร์เฟซและองค์ประกอบที่เชื่อมมากที่สุด
- ทำเมทริกซ์ตรวจย้อนกลับจากข้อกำหนดสู่องค์ประกอบ
ทำไมต้องรู้
ปัญหาของโครงงานส่วนใหญ่ไม่ได้อยู่ในชิ้นส่วนแต่ละชิ้น แต่อยู่ที่ รอยต่อ ระหว่างชิ้นส่วน กล้องส่งภาพได้ คอมพิวเตอร์บนลำรันโมเดลได้ แต่เมื่อต่อกันกลับพบว่ารูปแบบภาพไม่ตรง เวลาไม่ตรง หรือไฟไม่พอ สถาปัตยกรรมที่ออกแบบก่อนสร้างทำให้เห็นรอยต่อทั้งหมดตั้งแต่บนกระดาษ ซึ่งแก้ง่ายและถูกกว่าแก้บนลำจริงมาก
จากหน้าที่สู่องค์ประกอบ
สถาปัตยกรรมเชิงหน้าที่ บอกว่าระบบต้องทำอะไร โดยยังไม่บอกว่าใช้อะไร ส่วน สถาปัตยกรรมเชิงกายภาพ บอกว่าองค์ประกอบใดทำหน้าที่นั้น การแยกสองชั้นนี้ช่วยให้เปลี่ยนฮาร์ดแวร์ได้โดยไม่ต้องคิดหน้าที่ใหม่
ตาราง N²
ตาราง N² วางองค์ประกอบบนเส้นทแยง ช่องแถว คอลัมน์ แสดงว่ามีข้อมูลหรือพลังงานไหลจากองค์ประกอบ ไป หรือไม่ คู่มือวิศวกรรมระบบของ NASA กล่าวถึงแผนภาพนี้เป็นเครื่องมือจัดการอินเทอร์เฟซ
ตัวอย่างที่ 1 วิเคราะห์ตาราง N² และตรวจการจัดสรร
parts = ["GCS", "FC", "Companion", "Camera", "Gimbal", "GNSS", "Cloud"]
links = [("GCS", "FC"), ("FC", "GCS"), ("FC", "Companion"), ("Companion", "FC"), ("Companion", "Camera"),
("Camera", "Companion"), ("FC", "Gimbal"), ("GNSS", "FC"), ("Companion", "GCS"), ("GCS", "Cloud")]
n = len(parts)
print(f"{len(links)} interfaces of {n * (n - 1)} possible")
degree = {p: sum(p in link for link in links) for p in parts}
for p, d in sorted(degree.items(), key=lambda kv: -kv[1]):
print(f" {p:<9} {d} links")
functions = ["plan route", "fly route", "capture images", "detect defects", "transmit data", "produce report",
"log flight data"]
allocation = {"plan route": ["GCS"], "fly route": ["FC"], "capture images": ["Camera"],
"detect defects": ["Companion"], "transmit data": ["GCS", "Companion"], "produce report": ["Cloud"]}
missing = [f for f in functions if f not in allocation]
print("functions with no component:", missing or "none")
10 interfaces of 42 possible
FC 6 links
Companion 5 links
GCS 4 links
Camera 2 links
Gimbal 1 links
GNSS 1 links
Cloud 1 links
functions with no component: ['log flight data']
FC และ Companion มีอินเทอร์เฟซมากที่สุด เป็นจุดที่ต้องทดสอบการบูรณาการก่อน และเป็นจุดที่ถ้าเสียจะกระทบหลายส่วน หน้าที่ “บันทึกข้อมูลการบิน” ยังไม่มีองค์ประกอบใดรับผิดชอบ ต้องจัดสรรก่อนออกแบบต่อ (เช่น ให้ FC บันทึก log)
ตรวจย้อนกลับ
การตรวจย้อนกลับแบบสองทาง (bidirectional traceability) เป็นส่วนหนึ่งของการจัดการข้อกำหนดตามคู่มือของ NASA ข้อกำหนดทุกข้อต้องชี้ไปที่องค์ประกอบที่รับผิดชอบ และองค์ประกอบทุกชิ้นต้องชี้กลับไปหาข้อกำหนดที่ทำให้ต้องมี องค์ประกอบที่ไม่มีข้อกำหนดรองรับอาจเป็นสิ่งเกินจำเป็น ส่วนข้อกำหนดที่ไม่มีองค์ประกอบรับคือช่องว่างที่ต้องแก้
แต่ละอินเทอร์เฟซควรมีรายละเอียดในรายการอินเทอร์เฟซ (interface control) เช่น ชนิดสัญญาณ โพรโทคอล อัตราข้อมูล แรงดัน ขั้วต่อ และผู้รับผิดชอบทั้งสองฝั่ง ตามที่เรียนใน UAT 321 และ UAT 204
ปฏิบัติการประจำโมดูล
ชิ้นงานโครงงาน: เอกสารสถาปัตยกรรม
- เขียนรายการหน้าที่ของระบบจากข้อกำหนดในโมดูล 2 โดยยังไม่ระบุฮาร์ดแวร์
- จัดสรรหน้าที่ลงองค์ประกอบของแนวคิดที่เลือกในโมดูล 3 ตรวจด้วยโค้ดตัวอย่างที่ 1 ว่าไม่มีหน้าที่ตกหล่น
- ทำตาราง N² ของระบบ ระบุองค์ประกอบที่เชื่อมมากที่สุด และวางแผนทดสอบรอยต่อนั้นก่อน
- ทำรายการอินเทอร์เฟซ: ชนิดสัญญาณ โพรโทคอล อัตราข้อมูล แรงดัน ขั้วต่อ และผู้รับผิดชอบ
- ทำเมทริกซ์ตรวจย้อนกลับจากข้อกำหนดสู่องค์ประกอบ และแก้ช่องว่างที่พบ
ข้อผิดพลาดที่พบบ่อย
ระวัง
- เริ่มจากรายการซื้ออุปกรณ์ โดยไม่มีสถาปัตยกรรมเชิงหน้าที่
- มีหน้าที่ที่ไม่มีเจ้าของ เช่น การบันทึก log หรือการจัดการเหตุผิดปกติ
- มองข้ามอินเทอร์เฟซของพลังงานและเวลา นับแต่สายข้อมูล
- ไม่มีผู้รับผิดชอบอินเทอร์เฟซทั้งสองฝั่ง
- มีองค์ประกอบที่ไม่มีข้อกำหนดรองรับ เพราะอยากลองของใหม่
สรุป
- สถาปัตยกรรมเชิงหน้าที่บอกว่าทำอะไร เชิงกายภาพบอกว่าใช้อะไรทำ
- ทุกหน้าที่ต้องจัดสรรให้องค์ประกอบ
- ตาราง N² แสดงอินเทอร์เฟซทั้งหมด และชี้องค์ประกอบที่เชื่อมมากซึ่งต้องทดสอบก่อน
- การตรวจย้อนกลับสองทางเชื่อมข้อกำหนดกับองค์ประกอบ และหาช่องว่างหรือส่วนเกิน
แบบฝึกตรวจความเข้าใจ
- ระบบมี 5 องค์ประกอบ มีอินเทอร์เฟซแบบมีทิศทางได้สูงสุดกี่ทาง
- ในตาราง N² ช่องแถว FC คอลัมน์ Gimbal หมายความว่าอะไร
- หน้าที่ที่ไม่มีองค์ประกอบใดรับผิดชอบ ควรทำอย่างไร
- องค์ประกอบที่ไม่มีข้อกำหนดรองรับอาจบอกอะไร
- ทำไมจึงควรทดสอบรอยต่อขององค์ประกอบที่เชื่อมมากที่สุดก่อน
เฉลย
- มีข้อมูลหรือคำสั่งไหลจาก FC ไปยัง gimbal
- จัดสรรให้องค์ประกอบใดองค์ประกอบหนึ่งก่อนออกแบบต่อ
- อาจเป็นสิ่งเกินจำเป็น หรือข้อกำหนดตกหล่น ต้องตรวจ
- ถ้ารอยต่อนั้นมีปัญหาจะกระทบหลายส่วนของระบบ
สรุปสูตรสำคัญ
| จำนวนอินเทอร์เฟซที่เป็นไปได้สูงสุดของ n องค์ประกอบ |
แหล่งอ้างอิงหลัก
- National Aeronautics and Space Administration. (2016). NASA systems engineering handbook (NASA/SP-2016-6105 Rev 2). link
- INCOSE. (2023). INCOSE systems engineering handbook: A guide for system life cycle processes and activities (5th ed.). Wiley. link
- International Organization for Standardization. (2023). Systems and software engineering — System life cycle processes (ISO/IEC/IEEE 15288:2023). link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
พัฒนาโครงงานเป็นทีม ประชุมที่ปรึกษา และนำเสนอความก้าวหน้า
หลักฐานการเรียนรู้: ผลงานตามจุดตรวจของโครงงาน