สถาปัตยกรรมลำดับชั้น
สถาปัตยกรรมแบบลำดับชั้นมองทั้งระบบเป็นโครงสร้างลำดับชั้นซึ่งระบบซอฟต์แวร์จะถูกย่อยสลายเป็นโมดูลลอจิคัลหรือระบบย่อยที่ระดับต่างๆในลำดับชั้น โดยทั่วไปแนวทางนี้จะใช้ในการออกแบบซอฟต์แวร์ระบบเช่นโปรโตคอลเครือข่ายและระบบปฏิบัติการ
ในการออกแบบลำดับชั้นของซอฟต์แวร์ระบบระบบย่อยระดับต่ำจะให้บริการแก่ระบบย่อยระดับบนที่อยู่ติดกันซึ่งเรียกใช้วิธีการในระดับล่าง ชั้นล่างมีฟังก์ชันการทำงานที่เฉพาะเจาะจงมากขึ้นเช่นบริการ I / O ธุรกรรมการตั้งเวลาบริการรักษาความปลอดภัยเป็นต้นชั้นกลางมีฟังก์ชันที่ขึ้นกับโดเมนมากขึ้นเช่นตรรกะทางธุรกิจและบริการประมวลผลหลัก และชั้นบนมีฟังก์ชันการทำงานที่เป็นนามธรรมมากขึ้นในรูปแบบของอินเทอร์เฟซผู้ใช้เช่น GUI สิ่งอำนวยความสะดวกการเขียนโปรแกรมเชลล์เป็นต้น
นอกจากนี้ยังใช้ในการจัดระเบียบไลบรารีคลาสเช่นไลบรารีคลาส. NET ในลำดับชั้นเนมสเปซ การออกแบบทุกประเภทสามารถใช้สถาปัตยกรรมลำดับชั้นนี้และมักจะรวมกับรูปแบบสถาปัตยกรรมอื่น ๆ
รูปแบบสถาปัตยกรรมตามลำดับชั้นแบ่งออกเป็น -
- Main-subroutine
- Master-slave
- เครื่องเสมือน
รูทีนย่อยหลัก
จุดมุ่งหมายของสไตล์นี้คือการนำโมดูลกลับมาใช้ใหม่และพัฒนาโมดูลหรือรูทีนย่อยแต่ละโมดูลได้อย่างอิสระ ในลักษณะนี้ระบบซอฟต์แวร์จะแบ่งออกเป็นรูทีนย่อยโดยใช้การปรับแต่งจากบนลงล่างตามการทำงานที่ต้องการของระบบ
การปรับแต่งเหล่านี้นำไปสู่แนวตั้งจนกว่าโมดูลที่ย่อยสลายจะง่ายพอที่จะมีความรับผิดชอบที่เป็นอิสระ แต่เพียงผู้เดียว ฟังก์ชันการทำงานอาจถูกใช้ซ้ำและใช้ร่วมกันโดยผู้โทรหลายคนในชั้นบน
มีสองวิธีในการส่งผ่านข้อมูลเป็นพารามิเตอร์ไปยังรูทีนย่อย ได้แก่ -
Pass by Value - รูทีนย่อยใช้เฉพาะข้อมูลในอดีต แต่ไม่สามารถแก้ไขได้
Pass by Reference - รูทีนย่อยใช้เช่นเดียวกับการเปลี่ยนแปลงค่าของข้อมูลที่อ้างอิงโดยพารามิเตอร์
ข้อดี
ง่ายต่อการย่อยสลายระบบตามการปรับแต่งลำดับชั้น
สามารถใช้ในระบบย่อยของการออกแบบเชิงวัตถุ
ข้อเสีย
มีช่องโหว่เนื่องจากมีข้อมูลที่แชร์ทั่วโลก
การมีเพศสัมพันธ์อย่างแน่นหนาอาจทำให้เกิดการเปลี่ยนแปลงที่กระเพื่อมมากขึ้น
มาสเตอร์ - ทาส
แนวทางนี้ใช้หลักการ 'แบ่งและพิชิต' และสนับสนุนการคำนวณผิดพลาดและความแม่นยำในการคำนวณ เป็นการปรับเปลี่ยนสถาปัตยกรรมรูทีนย่อยหลักที่ให้ความน่าเชื่อถือของระบบและความทนทานต่อข้อผิดพลาด
ในสถาปัตยกรรมนี้ทาสจะให้บริการที่ซ้ำกันกับมาสเตอร์และมาสเตอร์จะเลือกผลลัพธ์เฉพาะในหมู่ทาสโดยใช้กลยุทธ์การเลือกบางอย่าง ทาสอาจทำภารกิจการทำงานเดียวกันโดยใช้อัลกอริทึมและวิธีการที่แตกต่างกันหรือฟังก์ชันการทำงานที่แตกต่างกันโดยสิ้นเชิง รวมถึงการประมวลผลแบบขนานซึ่งทาสทั้งหมดสามารถทำงานแบบขนานได้
การใช้รูปแบบ Master-Slave เป็นไปตามห้าขั้นตอน -
ระบุวิธีการคำนวณของงานที่สามารถแบ่งออกเป็นชุดของงานย่อยที่เท่ากันและระบุบริการย่อยที่จำเป็นในการประมวลผลงานย่อย
ระบุวิธีการคำนวณผลลัพธ์สุดท้ายของบริการทั้งหมดด้วยความช่วยเหลือของผลลัพธ์ที่ได้รับจากการประมวลผลงานย่อยแต่ละงาน
กำหนดอินเทอร์เฟซสำหรับบริการย่อยที่ระบุในขั้นตอนที่ 1 ซึ่งจะถูกนำไปใช้งานโดย Slave และใช้โดย Master เพื่อมอบหมายการประมวลผลของแต่ละงานย่อย
ใช้ส่วนประกอบ Slave ตามข้อกำหนดที่พัฒนาในขั้นตอนก่อนหน้า
ใช้งานต้นแบบตามข้อกำหนดที่พัฒนาในขั้นตอนที่ 1 ถึง 3
การใช้งาน
เหมาะสำหรับการใช้งานที่ความน่าเชื่อถือของซอฟต์แวร์เป็นปัญหาสำคัญ
ใช้กันอย่างแพร่หลายในด้านการคำนวณแบบขนานและแบบกระจาย
ข้อดี
คำนวณได้เร็วขึ้นและปรับขนาดได้ง่าย
ให้ความแข็งแกร่งเนื่องจากทาสสามารถทำซ้ำได้
Slave สามารถใช้งานได้แตกต่างกันเพื่อลดข้อผิดพลาดทางความหมาย
ข้อเสีย
ค่าใช้จ่ายในการสื่อสาร
ปัญหาทั้งหมดไม่สามารถแบ่งออกได้
ใช้งานยากและปัญหาการพกพา
สถาปัตยกรรมเครื่องเสมือน
สถาปัตยกรรมเครื่องเสมือนจะแสร้งทำเป็นฟังก์ชันการทำงานบางอย่างซึ่งไม่ได้มาจากฮาร์ดแวร์และ / หรือซอฟต์แวร์ที่ใช้งาน เครื่องเสมือนถูกสร้างขึ้นจากระบบที่มีอยู่และจัดเตรียมสิ่งที่เป็นนามธรรมเสมือนชุดของคุณลักษณะและการดำเนินการ
ในสถาปัตยกรรมเครื่องเสมือนต้นแบบใช้ 'บริการย่อย' เดียวกันจากทาสและทำหน้าที่ต่างๆเช่นแยกงานเรียกทาสและรวมผลลัพธ์ ช่วยให้นักพัฒนาสามารถจำลองและทดสอบแพลตฟอร์มที่ยังไม่ได้สร้างขึ้นและจำลองโหมด "ภัยพิบัติ" ที่ซับซ้อนเกินไปมีค่าใช้จ่ายสูงหรือเป็นอันตรายต่อการทดสอบกับระบบจริง
ในกรณีส่วนใหญ่เครื่องเสมือนจะแยกภาษาโปรแกรมหรือสภาพแวดล้อมของแอปพลิเคชันออกจากแพลตฟอร์มการดำเนินการ วัตถุประสงค์หลักคือการให้portability. การตีความโมดูลเฉพาะผ่านเครื่องเสมือนอาจถูกมองว่า -
กลไกการตีความจะเลือกคำสั่งจากโมดูลที่กำลังตีความ
ตามคำสั่งเครื่องยนต์จะอัปเดตสถานะภายในของเครื่องเสมือนและกระบวนการข้างต้นจะทำซ้ำ
รูปต่อไปนี้แสดงสถาปัตยกรรมของโครงสร้างพื้นฐาน VM มาตรฐานบนเครื่องจริงเครื่องเดียว
hypervisor, เรียกอีกอย่างว่า virtual machine monitorรันบนโฮสต์ OS และจัดสรรทรัพยากรที่ตรงกันให้กับระบบปฏิบัติการของแขกแต่ละคน เมื่อแขกทำการโทรระบบไฮเปอร์ไวเซอร์จะสกัดกั้นและแปลเป็นการเรียกระบบที่สอดคล้องกันที่โฮสต์ OS สนับสนุน ไฮเปอร์ไวเซอร์ควบคุมการเข้าถึงเครื่องเสมือนแต่ละเครื่องไปยัง CPU หน่วยความจำหน่วยเก็บข้อมูลถาวรอุปกรณ์ I / O และเครือข่าย
การใช้งาน
สถาปัตยกรรมเครื่องเสมือนเหมาะในโดเมนต่อไปนี้ -
เหมาะสำหรับการแก้ปัญหาโดยการจำลองหรือการแปลหากไม่มีวิธีแก้ปัญหาโดยตรง
แอปพลิเคชันตัวอย่าง ได้แก่ ล่ามของไมโครโปรแกรมการประมวลผล XML การเรียกใช้ภาษาคำสั่งสคริปต์การเรียกใช้ระบบตามกฎ Smalltalk และ Java ล่ามภาษาการเขียนโปรแกรมที่พิมพ์
ตัวอย่างทั่วไปของเครื่องเสมือน ได้แก่ ตัวแปลระบบอิงกฎไวยากรณ์เชลล์และตัวประมวลผลภาษาคำสั่ง
ข้อดี
ความเป็นอิสระในการพกพาและแพลตฟอร์มเครื่องจักร
ความเรียบง่ายของการพัฒนาซอฟต์แวร์
ให้ความยืดหยุ่นผ่านความสามารถในการขัดจังหวะและสอบถามโปรแกรม
การจำลองแบบจำลองการทำงานในภัยพิบัติ
แนะนำการปรับเปลี่ยนที่รันไทม์
ข้อเสีย
การดำเนินการของล่ามช้าเนื่องจากลักษณะของล่าม
มีต้นทุนประสิทธิภาพเนื่องจากการคำนวณเพิ่มเติมที่เกี่ยวข้องกับการดำเนินการ
สไตล์ชั้น
ด้วยวิธีนี้ระบบจะถูกย่อยสลายเป็นชั้นที่สูงขึ้นและต่ำลงตามลำดับชั้นและแต่ละชั้นมีหน้าที่รับผิดชอบของตัวเอง แต่เพียงผู้เดียวในระบบ
แต่ละเลเยอร์ประกอบด้วยกลุ่มของคลาสที่เกี่ยวข้องซึ่งถูกห่อหุ้มในแพ็คเกจในคอมโพเนนต์ที่ปรับใช้หรือเป็นกลุ่มของรูทีนย่อยในรูปแบบของไลบรารีเมธอดหรือไฟล์ส่วนหัว
แต่ละเลเยอร์จะให้บริการแก่เลเยอร์ที่อยู่ด้านบนและทำหน้าที่เป็นไคลเอนต์ไปยังเลเยอร์ด้านล่างเช่นการร้องขอเลเยอร์ i +1 จะเรียกใช้บริการที่เลเยอร์ i จัดเตรียมไว้ผ่านอินเทอร์เฟซของเลเยอร์ i การตอบสนองอาจกลับไปที่เลเยอร์ i +1 หากงานเสร็จสมบูรณ์ มิฉะนั้นเลเยอร์ฉันจะเรียกใช้บริการจากเลเยอร์ i -1 ด้านล่างอย่างต่อเนื่อง
การใช้งาน
สไตล์ชั้นเหมาะสำหรับพื้นที่ต่อไปนี้ -
แอปพลิเคชันที่เกี่ยวข้องกับคลาสของบริการที่แตกต่างกันซึ่งสามารถจัดระเบียบตามลำดับชั้น
แอปพลิเคชันใด ๆ ที่สามารถแยกย่อยออกเป็นส่วนเฉพาะแอปพลิเคชันและเฉพาะแพลตฟอร์ม
แอปพลิเคชันที่มีการแบ่งส่วนที่ชัดเจนระหว่างบริการหลักบริการสำคัญและบริการอินเทอร์เฟซผู้ใช้ ฯลฯ
ข้อดี
การออกแบบตามระดับที่เพิ่มขึ้นของนามธรรม
ให้ความเป็นอิสระในการเพิ่มประสิทธิภาพเนื่องจากการเปลี่ยนแปลงฟังก์ชันของเลเยอร์หนึ่งจะส่งผลต่อเลเยอร์อื่น ๆ มากที่สุดสองเลเยอร์
การแยกอินเทอร์เฟซมาตรฐานและการใช้งาน
ดำเนินการโดยใช้เทคโนโลยีส่วนประกอบซึ่งทำให้ระบบอนุญาตให้ใช้ส่วนประกอบใหม่แบบพลักแอนด์เพลย์ได้ง่ายขึ้น
แต่ละเลเยอร์สามารถเป็นเครื่องจักรนามธรรมที่ปรับใช้อย่างอิสระซึ่งรองรับการพกพา
ง่ายต่อการย่อยสลายระบบตามคำจำกัดความของงานในลักษณะการปรับแต่งจากบนลงล่าง
การใช้งานที่แตกต่างกัน (ที่มีอินเทอร์เฟซเหมือนกัน) ของเลเยอร์เดียวกันสามารถใช้แทนกันได้
ข้อเสีย
แอปพลิเคชันหรือระบบจำนวนมากไม่ได้มีโครงสร้างเป็นชั้น ๆ อย่างง่ายดาย
ประสิทธิภาพรันไทม์ลดลงเนื่องจากคำขอของไคลเอ็นต์หรือการตอบกลับไปยังไคลเอนต์ต้องผ่านหลายชั้น
นอกจากนี้ยังมีข้อกังวลด้านประสิทธิภาพเกี่ยวกับค่าใช้จ่ายในการจัดเก็บข้อมูลและการบัฟเฟอร์ของแต่ละเลเยอร์
การเปิดการสื่อสารระหว่างชั้นอาจทำให้เกิดการหยุดชะงักและ "การเชื่อมต่อ" อาจทำให้เกิดการเชื่อมต่อที่แน่นหนา
ข้อยกเว้นและการจัดการข้อผิดพลาดเป็นปัญหาในสถาปัตยกรรมแบบเลเยอร์เนื่องจากข้อบกพร่องในเลเยอร์เดียวจะต้องกระจายขึ้นไปยังเลเยอร์การเรียกทั้งหมด