สถาปัตยกรรมตามส่วนประกอบ
สถาปัตยกรรมที่ใช้ส่วนประกอบมุ่งเน้นไปที่การย่อยสลายของการออกแบบให้เป็นส่วนประกอบเชิงหน้าที่หรือเชิงตรรกะซึ่งแสดงถึงส่วนต่อประสานการสื่อสารที่กำหนดไว้อย่างดีซึ่งประกอบด้วยวิธีการเหตุการณ์และคุณสมบัติ ให้นามธรรมในระดับที่สูงขึ้นและแบ่งปัญหาออกเป็นปัญหาย่อยซึ่งแต่ละปัญหาจะเกี่ยวข้องกับพาร์ติชันส่วนประกอบ
วัตถุประสงค์หลักของสถาปัตยกรรมตามส่วนประกอบคือเพื่อให้แน่ใจว่า component reusability. ส่วนประกอบจะห่อหุ้มฟังก์ชันการทำงานและลักษณะการทำงานขององค์ประกอบซอฟต์แวร์ไว้ในหน่วยไบนารีที่ใช้ซ้ำได้และปรับใช้เองได้ มีกรอบคอมโพเนนต์มาตรฐานมากมายเช่น COM / DCOM, JavaBean, EJB, CORBA, .NET, บริการเว็บและบริการกริด เทคโนโลยีเหล่านี้ใช้กันอย่างแพร่หลายในการออกแบบแอปพลิเคชัน GUI บนเดสก์ท็อปเฉพาะที่เช่นคอมโพเนนต์ JavaBean กราฟิกคอมโพเนนต์ MS ActiveX และคอมโพเนนต์ COM ซึ่งสามารถใช้ซ้ำได้โดยการลากและวาง
การออกแบบซอฟต์แวร์เชิงองค์ประกอบมีข้อดีหลายประการเหนือวิธีเชิงวัตถุแบบเดิมเช่น -
ลดเวลาในตลาดและต้นทุนการพัฒนาโดยการนำส่วนประกอบที่มีอยู่กลับมาใช้ใหม่
เพิ่มความน่าเชื่อถือด้วยการนำส่วนประกอบที่มีอยู่กลับมาใช้ใหม่
ส่วนประกอบคืออะไร?
ส่วนประกอบคือชุดฟังก์ชันแบบแยกส่วนแบบพกพาถอดเปลี่ยนได้และนำกลับมาใช้ใหม่ได้ซึ่งจะห่อหุ้มการนำไปใช้งานและส่งออกเป็นอินเทอร์เฟซระดับสูงกว่า
ส่วนประกอบคือออบเจ็กต์ซอฟต์แวร์ซึ่งมีวัตถุประสงค์เพื่อโต้ตอบกับส่วนประกอบอื่น ๆ การห่อหุ้มฟังก์ชันการทำงานบางอย่างหรือชุดฟังก์ชันการทำงาน มีอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจนและสอดคล้องกับลักษณะการทำงานที่แนะนำโดยทั่วไปสำหรับส่วนประกอบทั้งหมดภายในสถาปัตยกรรม
ส่วนประกอบซอฟต์แวร์สามารถกำหนดเป็นหน่วยขององค์ประกอบที่มีอินเทอร์เฟซที่ระบุตามสัญญาและการอ้างอิงบริบทอย่างชัดเจนเท่านั้น นั่นคือส่วนประกอบซอฟต์แวร์สามารถใช้งานได้โดยอิสระและอยู่ภายใต้การจัดองค์ประกอบโดยบุคคลที่สาม
มุมมองของส่วนประกอบ
ส่วนประกอบสามารถมีมุมมองที่แตกต่างกันได้สามมุมมอง - มุมมองเชิงวัตถุมุมมองทั่วไปและมุมมองที่เกี่ยวข้องกับกระบวนการ
Object-oriented view
องค์ประกอบถูกมองว่าเป็นชุดของคลาสที่ทำงานร่วมกันอย่างน้อยหนึ่งคลาส แต่ละระดับโดเมนของปัญหา (การวิเคราะห์) และคลาสโครงสร้างพื้นฐาน (การออกแบบ) ได้รับการอธิบายเพื่อระบุคุณลักษณะและการดำเนินการทั้งหมดที่ใช้กับการนำไปใช้งาน นอกจากนี้ยังเกี่ยวข้องกับการกำหนดอินเทอร์เฟซที่ช่วยให้คลาสสามารถสื่อสารและร่วมมือกันได้
Conventional view
มันถูกมองว่าเป็นองค์ประกอบที่ใช้งานได้หรือโมดูลของโปรแกรมที่รวมตรรกะการประมวลผลโครงสร้างข้อมูลภายในที่จำเป็นในการใช้ตรรกะการประมวลผลและอินเทอร์เฟซที่ทำให้สามารถเรียกส่วนประกอบและข้อมูลที่จะส่งผ่านไป
Process-related view
ในมุมมองนี้แทนที่จะสร้างแต่ละองค์ประกอบตั้งแต่เริ่มต้นระบบจะสร้างจากส่วนประกอบที่มีอยู่ที่ดูแลในไลบรารี เนื่องจากสถาปัตยกรรมซอฟต์แวร์ถูกกำหนดองค์ประกอบจะถูกเลือกจากไลบรารีและใช้เพื่อเติมข้อมูลสถาปัตยกรรม
คอมโพเนนต์อินเทอร์เฟซผู้ใช้ (UI) ประกอบด้วยกริดปุ่มที่เรียกว่าคอนโทรลและส่วนประกอบยูทิลิตี้จะแสดงฟังก์ชันย่อยเฉพาะที่ใช้ในคอมโพเนนต์อื่น ๆ
คอมโพเนนต์ทั่วไปประเภทอื่น ๆ คือส่วนประกอบที่ใช้ทรัพยากรมากไม่ได้เข้าถึงบ่อยและต้องเปิดใช้งานโดยใช้วิธีการแบบทันเวลา (JIT)
ส่วนประกอบจำนวนมากมองไม่เห็นซึ่งกระจายอยู่ในแอปพลิเคชันทางธุรกิจขององค์กรและเว็บแอปพลิเคชันทางอินเทอร์เน็ตเช่น Enterprise JavaBean (EJB) ส่วนประกอบ. NET และส่วนประกอบ CORBA
ลักษณะของส่วนประกอบ
Reusability- ส่วนประกอบมักได้รับการออกแบบมาเพื่อใช้ซ้ำในสถานการณ์ที่แตกต่างกันในการใช้งานที่แตกต่างกัน อย่างไรก็ตามส่วนประกอบบางอย่างอาจได้รับการออกแบบมาสำหรับงานเฉพาะ
Replaceable - ส่วนประกอบสามารถทดแทนได้อย่างอิสระด้วยส่วนประกอบอื่น ๆ ที่คล้ายคลึงกัน
Not context specific - ส่วนประกอบได้รับการออกแบบให้ทำงานในสภาพแวดล้อมและบริบทที่แตกต่างกัน
Extensible - ส่วนประกอบสามารถขยายจากส่วนประกอบที่มีอยู่เพื่อให้เกิดพฤติกรรมใหม่
Encapsulated - ส่วนประกอบ AA แสดงถึงอินเทอร์เฟซซึ่งอนุญาตให้ผู้โทรใช้ฟังก์ชันการทำงานและไม่เปิดเผยรายละเอียดของกระบวนการภายในหรือตัวแปรหรือสถานะภายในใด ๆ
Independent - ส่วนประกอบได้รับการออกแบบให้มีการพึ่งพาส่วนประกอบอื่น ๆ น้อยที่สุด
หลักการออกแบบตามส่วนประกอบ −
การออกแบบระดับส่วนประกอบสามารถแสดงโดยใช้การแสดงตัวกลางบางอย่าง (เช่นกราฟิกตารางหรือตามข้อความ) ที่สามารถแปลเป็นซอร์สโค้ดได้ การออกแบบโครงสร้างข้อมูลอินเทอร์เฟซและอัลกอริทึมควรเป็นไปตามแนวทางที่กำหนดไว้อย่างดีเพื่อช่วยให้เราหลีกเลี่ยงข้อผิดพลาด
ระบบซอฟต์แวร์ถูกย่อยสลายเป็นหน่วยส่วนประกอบที่ใช้ซ้ำได้เหนียวและห่อหุ้ม
แต่ละองค์ประกอบมีอินเทอร์เฟซของตัวเองที่ระบุพอร์ตที่ต้องการและพอร์ตที่จัดเตรียมไว้ แต่ละองค์ประกอบซ่อนการใช้งานโดยละเอียด
ควรขยายส่วนประกอบโดยไม่จำเป็นต้องสร้างโค้ดภายในหรือปรับเปลี่ยนการออกแบบกับชิ้นส่วนที่มีอยู่ของส่วนประกอบ
ขึ้นอยู่กับองค์ประกอบนามธรรมไม่ได้ขึ้นอยู่กับส่วนประกอบคอนกรีตอื่น ๆ ซึ่งเพิ่มความยากลำบากในการใช้จ่าย
ตัวเชื่อมต่อส่วนประกอบที่เชื่อมต่อการระบุและการพิจารณาการโต้ตอบระหว่างส่วนประกอบ ประเภทการโต้ตอบถูกระบุโดยอินเทอร์เฟซของคอมโพเนนต์
การโต้ตอบของคอมโพเนนต์สามารถอยู่ในรูปแบบของการเรียกใช้เมธอดการเรียกใช้แบบอะซิงโครนัสการแพร่ภาพการโต้ตอบที่ขับเคลื่อนด้วยข้อความการสื่อสารสตรีมข้อมูลและการโต้ตอบเฉพาะโปรโตคอลอื่น ๆ
สำหรับคลาสเซิร์ฟเวอร์ควรสร้างอินเทอร์เฟซเฉพาะเพื่อรองรับลูกค้าประเภทหลัก ๆ ควรระบุเฉพาะการดำเนินการที่เกี่ยวข้องกับไคลเอ็นต์ประเภทใดประเภทหนึ่งในอินเทอร์เฟซ
ส่วนประกอบสามารถขยายไปยังส่วนประกอบอื่น ๆ และยังคงมีจุดต่อขยายของตัวเอง เป็นแนวคิดของสถาปัตยกรรมที่ใช้ปลั๊กอิน สิ่งนี้ช่วยให้ปลั๊กอินสามารถเสนอปลั๊กอิน API อื่นได้
แนวทางการออกแบบระดับส่วนประกอบ
สร้างรูปแบบการตั้งชื่อสำหรับส่วนประกอบที่ระบุไว้เป็นส่วนหนึ่งของแบบจำลองสถาปัตยกรรมจากนั้นปรับแต่งหรือทำให้ละเอียดเป็นส่วนหนึ่งของโมเดลระดับส่วนประกอบ
รับชื่อส่วนประกอบทางสถาปัตยกรรมจากโดเมนปัญหาและรับรองว่ามีความหมายต่อผู้มีส่วนได้ส่วนเสียทั้งหมดที่ดูแบบจำลองสถาปัตยกรรม
แยกเอนทิตีกระบวนการทางธุรกิจที่สามารถดำรงอยู่อย่างอิสระโดยไม่มีการพึ่งพาที่เกี่ยวข้องกับเอนทิตีอื่น
รับรู้และค้นพบเอนทิตีอิสระเหล่านี้เป็นส่วนประกอบใหม่
ใช้ชื่อองค์ประกอบโครงสร้างพื้นฐานที่แสดงถึงความหมายเฉพาะการนำไปใช้งาน
จำลองการอ้างอิงใด ๆ จากซ้ายไปขวาและการสืบทอดจากบนสุด (คลาสพื้นฐาน) ไปยังด้านล่าง (คลาสที่ได้รับ)
สร้างโมเดลการอ้างอิงคอมโพเนนต์ใด ๆ เป็นอินเทอร์เฟซแทนที่จะแสดงว่าเป็นการพึ่งพาคอมโพเนนต์โดยตรง
การดำเนินการออกแบบระดับส่วนประกอบ
รับรู้คลาสการออกแบบทั้งหมดที่สอดคล้องกับโดเมนปัญหาตามที่กำหนดไว้ในโมเดลการวิเคราะห์และโมเดลสถาปัตยกรรม
รับรู้คลาสการออกแบบทั้งหมดที่สอดคล้องกับโดเมนโครงสร้างพื้นฐาน
อธิบายคลาสการออกแบบทั้งหมดที่ไม่ได้รับเป็นส่วนประกอบที่ใช้ซ้ำได้และระบุรายละเอียดข้อความ
ระบุอินเทอร์เฟซที่เหมาะสมสำหรับแต่ละองค์ประกอบและอธิบายแอตทริบิวต์อย่างละเอียดและกำหนดชนิดข้อมูลและโครงสร้างข้อมูลที่จำเป็นในการใช้งาน
อธิบายขั้นตอนการประมวลผลภายในแต่ละการดำเนินการโดยละเอียดโดยใช้รหัสหลอกหรือแผนภาพกิจกรรม UML
อธิบายแหล่งข้อมูลถาวร (ฐานข้อมูลและไฟล์) และระบุคลาสที่จำเป็นในการจัดการ
พัฒนาและอธิบายการแสดงพฤติกรรมสำหรับชั้นเรียนหรือองค์ประกอบอย่างละเอียด สิ่งนี้สามารถทำได้โดยการอธิบายแผนภาพสถานะ UML ที่สร้างขึ้นสำหรับโมเดลการวิเคราะห์อย่างละเอียดและโดยการตรวจสอบกรณีการใช้งานทั้งหมดที่เกี่ยวข้องกับคลาสการออกแบบ
ทำแผนภาพการปรับใช้อย่างละเอียดเพื่อให้รายละเอียดการใช้งานเพิ่มเติม
แสดงตำแหน่งของแพ็กเกจคีย์หรือคลาสของคอมโพเนนต์ในระบบโดยใช้คลาสอินสแตนซ์และกำหนดฮาร์ดแวร์และสภาพแวดล้อมระบบปฏิบัติการเฉพาะ
การตัดสินใจขั้นสุดท้ายสามารถทำได้โดยใช้หลักการและแนวทางการออกแบบที่กำหนดไว้ นักออกแบบที่มีประสบการณ์จะพิจารณาโซลูชันการออกแบบทางเลือกทั้งหมด (หรือส่วนใหญ่) ก่อนที่จะเลือกรูปแบบการออกแบบขั้นสุดท้าย
ข้อดี
Ease of deployment - เมื่อมีเวอร์ชันที่เข้ากันได้ใหม่ ๆ การเปลี่ยนเวอร์ชันที่มีอยู่แล้วจึงง่ายขึ้นโดยไม่มีผลกระทบต่อส่วนประกอบอื่น ๆ หรือระบบโดยรวม
Reduced cost - การใช้ส่วนประกอบของบุคคลที่สามช่วยให้คุณสามารถกระจายต้นทุนในการพัฒนาและบำรุงรักษาได้
Ease of development - ส่วนประกอบใช้อินเทอร์เฟซที่รู้จักกันดีเพื่อจัดเตรียมฟังก์ชันการทำงานที่กำหนดไว้ทำให้สามารถพัฒนาได้โดยไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของระบบ
Reusable - การใช้ส่วนประกอบที่ใช้ซ้ำได้หมายความว่าสามารถใช้เพื่อกระจายต้นทุนการพัฒนาและการบำรุงรักษาไปยังแอพพลิเคชั่นหรือระบบต่างๆ
Modification of technical complexity - ส่วนประกอบปรับเปลี่ยนความซับซ้อนผ่านการใช้คอนเทนเนอร์ส่วนประกอบและบริการต่างๆ
Reliability - ความน่าเชื่อถือของระบบโดยรวมเพิ่มขึ้นเนื่องจากความน่าเชื่อถือของแต่ละองค์ประกอบช่วยเพิ่มความน่าเชื่อถือของทั้งระบบผ่านการใช้ซ้ำ
System maintenance and evolution - ง่ายต่อการเปลี่ยนแปลงและอัปเดตการใช้งานโดยไม่ส่งผลกระทบต่อส่วนที่เหลือของระบบ
Independent- ความเป็นอิสระและการเชื่อมต่อที่ยืดหยุ่นของส่วนประกอบ การพัฒนาส่วนประกอบที่เป็นอิสระตามกลุ่มต่างๆแบบขนาน ผลผลิตสำหรับการพัฒนาซอฟต์แวร์และการพัฒนาซอฟต์แวร์ในอนาคต