สถาปัตยกรรมลำดับชั้น

สถาปัตยกรรมแบบลำดับชั้นมองทั้งระบบเป็นโครงสร้างลำดับชั้นซึ่งระบบซอฟต์แวร์จะถูกย่อยสลายเป็นโมดูลลอจิคัลหรือระบบย่อยที่ระดับต่างๆในลำดับชั้น โดยทั่วไปแนวทางนี้จะใช้ในการออกแบบซอฟต์แวร์ระบบเช่นโปรโตคอลเครือข่ายและระบบปฏิบัติการ

ในการออกแบบลำดับชั้นของซอฟต์แวร์ระบบระบบย่อยระดับต่ำจะให้บริการแก่ระบบย่อยระดับบนที่อยู่ติดกันซึ่งเรียกใช้วิธีการในระดับล่าง ชั้นล่างมีฟังก์ชันการทำงานที่เฉพาะเจาะจงมากขึ้นเช่นบริการ 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 ด้านล่างอย่างต่อเนื่อง

การใช้งาน

สไตล์ชั้นเหมาะสำหรับพื้นที่ต่อไปนี้ -

  • แอปพลิเคชันที่เกี่ยวข้องกับคลาสของบริการที่แตกต่างกันซึ่งสามารถจัดระเบียบตามลำดับชั้น

  • แอปพลิเคชันใด ๆ ที่สามารถแยกย่อยออกเป็นส่วนเฉพาะแอปพลิเคชันและเฉพาะแพลตฟอร์ม

  • แอปพลิเคชันที่มีการแบ่งส่วนที่ชัดเจนระหว่างบริการหลักบริการสำคัญและบริการอินเทอร์เฟซผู้ใช้ ฯลฯ

ข้อดี

  • การออกแบบตามระดับที่เพิ่มขึ้นของนามธรรม

  • ให้ความเป็นอิสระในการเพิ่มประสิทธิภาพเนื่องจากการเปลี่ยนแปลงฟังก์ชันของเลเยอร์หนึ่งจะส่งผลต่อเลเยอร์อื่น ๆ มากที่สุดสองเลเยอร์

  • การแยกอินเทอร์เฟซมาตรฐานและการใช้งาน

  • ดำเนินการโดยใช้เทคโนโลยีส่วนประกอบซึ่งทำให้ระบบอนุญาตให้ใช้ส่วนประกอบใหม่แบบพลักแอนด์เพลย์ได้ง่ายขึ้น

  • แต่ละเลเยอร์สามารถเป็นเครื่องจักรนามธรรมที่ปรับใช้อย่างอิสระซึ่งรองรับการพกพา

  • ง่ายต่อการย่อยสลายระบบตามคำจำกัดความของงานในลักษณะการปรับแต่งจากบนลงล่าง

  • การใช้งานที่แตกต่างกัน (ที่มีอินเทอร์เฟซเหมือนกัน) ของเลเยอร์เดียวกันสามารถใช้แทนกันได้

ข้อเสีย

  • แอปพลิเคชันหรือระบบจำนวนมากไม่ได้มีโครงสร้างเป็นชั้น ๆ อย่างง่ายดาย

  • ประสิทธิภาพรันไทม์ลดลงเนื่องจากคำขอของไคลเอ็นต์หรือการตอบกลับไปยังไคลเอนต์ต้องผ่านหลายชั้น

  • นอกจากนี้ยังมีข้อกังวลด้านประสิทธิภาพเกี่ยวกับค่าใช้จ่ายในการจัดเก็บข้อมูลและการบัฟเฟอร์ของแต่ละเลเยอร์

  • การเปิดการสื่อสารระหว่างชั้นอาจทำให้เกิดการหยุดชะงักและ "การเชื่อมต่อ" อาจทำให้เกิดการเชื่อมต่อที่แน่นหนา

  • ข้อยกเว้นและการจัดการข้อผิดพลาดเป็นปัญหาในสถาปัตยกรรมแบบเลเยอร์เนื่องจากข้อบกพร่องในเลเยอร์เดียวจะต้องกระจายขึ้นไปยังเลเยอร์การเรียกทั้งหมด