6.1 การสลายตัว

แม้จะมีเกณฑ์ที่หลากหลาย แต่งานหลักในการพัฒนาระบบขนาดใหญ่คืองานลดความซับซ้อนของระบบ เพื่อลดความซับซ้อน ยังไม่มีการคิดค้นสิ่งใดนอกจากการแบ่งออกเป็นส่วนๆ

บางครั้งเพื่อความเรียบง่ายสิ่งนี้เรียกว่าหลักการของ "การแบ่งแยกและพิชิต" แต่จากมุมมองของสถาปนิกซอฟต์แวร์ เรากำลังพูดถึงการสลายตัวแบบลำดับชั้น .

ระบบที่ซับซ้อนต้องสร้างจากระบบย่อยที่เรียบง่ายกว่าจำนวนเล็กน้อย ซึ่งแต่ละระบบจะสร้างจากส่วนที่เล็กกว่าและต่อไปเรื่อยๆ จนกว่าส่วนที่เล็กที่สุดจะเรียบง่ายพอที่จะเข้าใจและสร้างได้โดยตรง

การสลายตัว

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

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

และสิ่งที่มีค่าที่สุดในที่นี่คือ: ยิ่งระบบย่อยเป็นอิสระมากเท่าไหร่ ก็ยิ่งปลอดภัยมากขึ้นเท่านั้นที่จะมุ่งเน้นไปที่การพัฒนาของแต่ละระบบแยกจากกัน ณ เวลาใดเวลาหนึ่ง และไม่ต้องกังวลกับส่วนอื่นๆ ทั้งหมด

6.2 ประโยชน์ของสถาปัตยกรรมโมดูลาร์

การใช้หลักการของการสลายตัวแบบลำดับชั้นช่วยให้คุณกำจัดความสับสนวุ่นวายในรหัสของคุณนับพันคลาส โปรดจำไว้ว่ารหัสของคุณแบ่งออกเป็นแพ็คเกจ (แพ็คเกจ) และแพ็คเกจย่อย? นี่เป็นหนึ่งในนิพจน์สำหรับการแยกส่วนแบบลำดับชั้น

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

นี่คือสิ่งพื้นฐานที่สุด:

  • ความสามารถในการปรับขนาด - ความสามารถในการขยายระบบและเพิ่มประสิทธิภาพโดยการเพิ่มโมดูลใหม่
  • การบำรุงรักษา - การเปลี่ยนโมดูลหนึ่งไม่จำเป็นต้องเปลี่ยนโมดูลอื่น
  • ความสามารถในการสลับโมดูล (ความสามารถในการสลับ) - โมดูลสามารถเปลี่ยนได้อย่างง่ายดายด้วยโมดูลอื่น
  • การทดสอบหน่วย – หน่วยสามารถแยกออกจากหน่วยอื่น ๆ ทั้งหมดและทดสอบ/ ซ่อมแซม
  • ใช้ซ้ำได้ - โมดูลนี้สามารถนำมาใช้ซ้ำได้ในโปรแกรมอื่นและสภาพแวดล้อมอื่นๆ
  • การบำรุงรักษา - โปรแกรมที่แบ่งออกเป็นโมดูลนั้นง่ายต่อการเข้าใจและบำรุงรักษา

อาจกล่าวได้ว่า การแบ่งปัญหาที่ซับซ้อนออกเป็น ชิ้นเล็กๆ เป็นเป้าหมายของเทคนิคการออกแบบทั้งหมด และคำว่า "สถาปัตยกรรม" ในกรณีส่วนใหญ่หมายถึงผลลัพธ์ของการแบ่งส่วนดังกล่าวบวกกับ"การตัดสินใจด้านการออกแบบบางอย่างที่เมื่อนำมาใช้แล้วก็ยากที่จะเปลี่ยนแปลง" (Martin Fowler "Architecture of Enterprise Software Applications")

ดังนั้น คำจำกัดความส่วนใหญ่ในรูปแบบใดรูปแบบหนึ่งจึงมีลักษณะดังต่อไปนี้:

" สถาปัตยกรรมระบุองค์ประกอบหลักของระบบและวิธีการโต้ตอบ นอกจากนี้ยังเป็นทางเลือกของการตัดสินใจดังกล่าวซึ่งตีความว่าเป็นพื้นฐานและไม่อยู่ภายใต้การเปลี่ยนแปลงในอนาคต "

" สถาปัตยกรรมเป็นองค์กรของระบบ รวมอยู่ในองค์ประกอบ ความสัมพันธ์ระหว่างกันและกับสิ่งแวดล้อม ระบบคือชุดของส่วนประกอบที่รวมกันเพื่อทำหน้าที่เฉพาะ "

ดังนั้น สถาปัตยกรรมที่ ดีประการแรกคือ สถาปัตยกรรมโมดูลาร์ / บล็อก เพื่อให้ได้สถาปัตยกรรมที่ดี คุณจำเป็นต้องรู้วิธีการแยกย่อยระบบอย่างเหมาะสม ซึ่งหมายความว่าจำเป็นต้องเข้าใจว่าการสลายตัวแบบใดที่ถือว่า "ถูกต้อง" และวิธีที่ดีที่สุดในการดำเนินการ