รูปแบบสถาปัตยกรรมซอฟต์แวร์
รูปแบบสถาปัตยกรรมซอฟต์แวร์คือแผนผังการจัดระเบียบที่ถูกตั้งชื่อและสามารถนำกลับมาใช้ใหม่ได้ ซึ่งกำหนดประเภทของส่วนประกอบ (components) และตัวเชื่อมต่อ (connectors) ที่ระบบใช้ รวมถึงข้อจำกัดในการรวมกันของส่วนประกอบและตัวเชื่อมต่อเหล่านั้น
Definition
รูปแบบสถาปัตยกรรมคือกลุ่มของสถาปัตยกรรมที่โดดเด่นด้วยคำศัพท์ของประเภทส่วนประกอบและตัวเชื่อมต่อ และชุดของข้อจำกัดเกี่ยวกับวิธีการกำหนดค่าอินสแตนซ์ของประเภทเหล่านั้น
Scope
หัวข้อนี้ครอบคลุมรูปแบบคลาสสิก เช่น แบบชั้น (layered), ไคลเอนต์-เซิร์ฟเวอร์ (client-server), ท่อและตัวกรอง (pipe-and-filter), คลังข้อมูล (repository หรือ data-centered), ขับเคลื่อนด้วยเหตุการณ์ (event-driven) และเผยแพร่-สมัครสมาชิก (publish-subscribe), ไมโครเคอร์เนล (microkernel), และสถาปัตยกรรมเชิงบริการ (service-oriented) และไมโครเซอร์วิส (microservice); รูปแบบสถาปัตยกรรม REST สำหรับระบบเครือข่าย; และการแลกเปลี่ยนคุณสมบัติ (quality-attribute trade-offs) ที่เป็นแรงจูงใจในการเลือกรูปแบบหนึ่งเหนืออีกรูปแบบหนึ่ง
Core questions
- คำศัพท์ของส่วนประกอบและตัวเชื่อมต่อใดที่กำหนดแต่ละรูปแบบ?
- รูปแบบที่กำหนดส่งเสริมหรือยับยั้งคุณสมบัติคุณภาพใดบ้าง?
- รูปแบบต่างๆ ถูกรวมเข้าด้วยกันในระบบเดียวได้อย่างไร?
- รูปแบบเครือข่ายและแบบกระจาย เช่น REST และไมโครเซอร์วิส แตกต่างจากรูปแบบคลาสสิกอย่างไร?
Key theories
- รูปแบบในฐานะคำศัพท์ของส่วนประกอบ-ตัวเชื่อมต่อ
- Shaw และ Garlan ได้อธิบายสถาปัตยกรรมโดยใช้รูปแบบที่เกิดขึ้นซ้ำๆ ของส่วนประกอบและตัวเชื่อมต่อพร้อมข้อจำกัดที่เกี่ยวข้อง ทำให้สาขาวิชานี้มีคำศัพท์ของรูปแบบต่างๆ เช่น ท่อและตัวกรอง, แบบชั้น, และคลังข้อมูล
- รูปแบบสถาปัตยกรรม REST
- Fielding ได้พัฒนา REST ขึ้นมาเป็นชุดของข้อจำกัด — การไร้สถานะ (statelessness), อินเทอร์เฟซที่เป็นหนึ่งเดียว (uniform interface), ความสามารถในการแคช (cacheability), ระบบแบบชั้น (layered system) — ซึ่งอธิบายถึงความสามารถในการปรับขนาดและความสามารถในการพัฒนาของเว็บ และเป็นแนวทางในการออกแบบบริการบนเครือข่าย
Clinical relevance
การเลือกรูปแบบที่เหมาะสมตั้งแต่เนิ่นๆ จะช่วยให้โครงสร้างระบบสอดคล้องกับข้อกำหนดด้านคุณภาพที่สำคัญ การเลือกรูปแบบที่ไม่เหมาะสมกับความต้องการอาจเป็นเรื่องยากและมีค่าใช้จ่ายสูงในการแก้ไขเมื่อการพัฒนาได้เริ่มต้นขึ้นแล้ว
Evidence & guidelines
ISO/IEC/IEEE 42010 กำหนดกรอบการอธิบายสถาปัตยกรรมในแง่ของมุมมอง (viewpoints) และทัศนะ (views) ซึ่งเป็นที่ที่รูปแบบต่างๆ ได้รับการบันทึกและวิเคราะห์
History
การจัดหมวดหมู่รูปแบบสถาปัตยกรรมเริ่มต้นโดย Shaw และ Garlan ในช่วงกลางทศวรรษ 1990 เมื่อสถาปัตยกรรมซอฟต์แวร์กลายเป็นสาขาวิชาที่เป็นที่ยอมรับ; วิทยานิพนธ์ของ Fielding ในปี 2000 ได้ทำให้ REST เป็นทางการ และทศวรรษ 2010 ได้เห็นการเพิ่มขึ้นของรูปแบบไมโครเซอร์วิสและรูปแบบที่ขับเคลื่อนด้วยเหตุการณ์สำหรับระบบขนาดคลาวด์
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- ความแตกต่างระหว่างรูปแบบสถาปัตยกรรม (architectural style) และรูปแบบการออกแบบ (design pattern) คืออะไร?
- รูปแบบสถาปัตยกรรมอธิบายถึงการจัดระเบียบทั้งระบบ — ประเภทของส่วนประกอบและตัวเชื่อมต่อ และกฎสำหรับการรวมเข้าด้วยกัน — ในขณะที่รูปแบบการออกแบบแก้ปัญหาการออกแบบที่เฉพาะเจาะจงมากขึ้นภายในส่วนประกอบ; รูปแบบสถาปัตยกรรมทำงานในระดับความละเอียดที่สูงกว่า
- ระบบสามารถใช้รูปแบบได้มากกว่าหนึ่งรูปแบบหรือไม่?
- ได้ ระบบจริงโดยทั่วไปมีความหลากหลาย โดยรวมรูปแบบต่างๆ เข้าด้วยกัน — ตัวอย่างเช่น สถาปัตยกรรมแบบชั้นที่ชั้นการนำเสนอ (presentation tier) ถูกขับเคลื่อนด้วยเหตุการณ์ และบริการต่างๆ สื่อสารกันผ่าน REST — โดยแต่ละรูปแบบจะถูกนำไปใช้ในจุดที่การแลกเปลี่ยนคุณสมบัติของมันเหมาะสมที่สุด