พื้นฐานการพัฒนาคอมโพเนนต์ อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)
การพัฒนาซอฟต์แวร์ด้วยคอมโพเนนต์ วิศวกรรมซอฟต์แวร์เชิงคอมโพเนนต์ (CBSE) หรือ การพัฒนาซอฟต์แวร์เชิงคอมโพเนนต์ (CBD) สาขาวิศวกรรมซอฟต์แวร์เน้นการแยกส่วนย่อยหรือฟังก์ชันการทำงานที่ครอบคลุมทั้งซอฟต์แวร์ https://en.wikipedia.org/wiki/Component-based_software_engineering http://www.rijsenbrij.net/archive1/progx/eng/chapter8.htm
คอมโพเนนต์และแนวคิดการใช้งานคอมโพเนนต์ เทคนิคของการแบ่งแยกส่วนประกอบ (Decomposition-Dividing) Component-Based Development (CBD) Component-Based Software Engineering (CBSE). แต่ละชิ้นส่วนเรียกว่า “คอมโพเนนต์” https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm
การนำกลับมาใช้ใหม่ได้ คอมโพเนนต์เป็นส่วนหนึ่งของโปรแกรม ทำหน้าที่อย่างอิสระในระบบ เป็นโมดูลขนาดเล็กหรือระบบย่อย ๆ การนำกลับมาใช้ซ้ำแบ่งได้ 3 ระดับ Application level ใช้ทั้งหมดเป็นระบบย่อยของโปรแกรมใหม่ Component level ใช้เป็นระบบย่อยหนึ่งของแอปพลิเคชัน Modules level โมดูลการทำงานที่ใช้ซ้ำ https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm http://article.sapub.org/10.5923.j.se.20120204.07.html
หัวข้อที่สนใจ บทนำ เป้าหมายของการพัฒนาเชิงคอมโพเนนต์ ทำไมต้องพัฒนาเชิงคอมโพเนนต์ คอมโพเนนต์คืออะไร การพัฒนาแอปพลิเคชันด้วยคอมโพเนนต์ แนวทางการพัฒนาแอปพลิเคชันด้วยคอมโพเนนต์ สรุปท้ายบท http://canacopegdl.com/synonym/issue.html
เป้าหมายของการพัฒนาเชิงคอมโพเนนต์ การสร้างชิ้นส่วนประกอบซอฟต์แวร์ที่สามารถนำกลับมาใช้ใหม่ได้ การนำชิ้นส่วนมาใช้เป็นส่วนประกอบได้อย่างเหมาะสม องค์ประกอบที่สำคัญ การพัฒนาคอมโพเนนต์ (ชิ้นส่วน) การสร้างอินเทอร์เฟซ (ส่วนต่อประสาน) การทำงานในรูปแบบโมดูล (module) การออกแบบที่มีโครงสร้าง (structure) และเชิงวัตถุ (object oriented) เทคนิคการออกแบบอินเทอร์เฟซ http://th.gofreedownload.net/free-icon/icons/target-107833/#.WnhmWK5l_IU
ทำไมจึงต้องพัฒนาเชิงคอมโพเนนต์ ช่วยลดความซับซ้อน ช่วยลดเวลาในการจัดส่งซอฟต์แวร์ ทำให้สามารถปรับปรุงได้อย่างสม่ำเสมอ สามารถใช้ประโยชน์จากสิ่งที่ดีที่สุดของคลาส ช่วยเพิ่มผลผลิต ช่วยในการปรับปรุงคุณภาพ ช่วยเพิ่มความสามารถในการติดตามโครงการ ช่วยสนับสนุนการพัฒนาแบบคู่ขนานและแบบกระจาย ช่วยลดต้นทุนการบำรุงรักษา https://promotions.co.th/promopedia/ 5-เหตุผลที่คุณใช้-คูปองส.html
คอมโพเนนต์ การสร้างบล็อก (building blocks) พื้นฐานของโซลูชัน ชิ้นส่วนประกอบของซอฟต์แวร์ องค์ประกอบพื้นฐานที่ใช้ประกอบเป็นซอฟต์แวร์ คอมโพเนนต์ มีมากกว่าโปรแกรมย่อยในวิธีการเขียนโปรแกรมแบบโมดูลาร์ วัตถุหรือคลาสในระบบเชิงวัตถุหรือแพ็กเกจ ใช้เป็นพื้นฐานสำหรับการออกแบบการใช้งานและบำรุงรักษา ชิ้นงานที่สามารถทำงานได้อย่างอิสระ และเข้าถึงบริการผ่านอินเทอร์เฟซ http://www.psdgraphics.com/3d/single-jigsaw-puzzle-piece-3d-symbol/
ออบเจ็กต์และคอมโพเนนต์ กำหนดส่วนประกอบเป็นหน่วยที่สามารถส่งมอบได้ ประการที่หนึ่ง คอมโพเนนต์มีลักษณะเป็นชุดคำสั่งคอมพิวเตอร์ ประการที่สอง คอมโพเนนต์ประกอบด้วยฟังก์ชันที่มีประโยชน์ ประการที่สามคอมโพเนนต์ให้บริการผ่านอินเทอร์เฟซ https://www.cs.umd.edu/~pugh/com/
พื้นฐานเกี่ยวกับแนวคิดเชิงวัตถุ Brown, A. W. (2000). Component-Based Development.
หลักการพื้นฐานของแนวคิดเชิงวัตถุ ออบเจ็กต์ (Objects) การห่อหุ้ม (Encapsulation) ระบุคุณลักษณะ (Identity) การดำเนินการให้เกิดผลลัพธ์ (Implementation) ส่วนต่อประสานของซอฟต์แวร์ (Interface) วัตถุที่นำมาใช้แทนสิ่งสนใจ (Substitutability) https://www.mdsoft.co.th/ความรู้/223-oop-object-oriented-programming.html
ความสัมพันธ์ระหว่างคอมโพเนนต์และออบเจ็กต์ Brown, A. W. (2000). Component-Based Development.
คอมโพเนนต์และการทำงานแบบกระจาย ฮาร์ดแวร์ที่มีประสิทธิภาพควบคู่ไปกับเทคโนโลยีเครือข่ายราคาถูก การกระจายโครงสร้างพื้นฐานด้านคอมพิวเตอร์ในองค์กร องค์กรสร้างระบบเครือข่ายแบบกระจายที่ซับซ้อน จำเป็นต้องพัฒนาภาษาและวิธีการต่าง ๆ ที่รองรับโครงสร้างพื้นฐาน แนวทางในการพัฒนาระบบแอปพลิเคชันมากมาย การสร้างระบบแบบกระจายด้วยวิธีนามธรรมต้องอาศัยการเขียนโปรแกรม
ความแตกต่างของการทำงานของระบบแต่ละชั้น Brown, A. W. (2000). Component-Based Development.
ส่วนประกอบของคอมโพเนนต์ องค์ประกอบของคอมโพเนนต์สามารถสื่อสารกันได้ การสร้างคอมโพเนนต์ด้วยแนวคิดเชิงวัตถุและกระจายการทำงาน ผู้ออกแบบและวิศวกรระบบมีความคุ้นเคยวิธีการใช้คอมโพเนนต์
คอมโพเนนต์คืออะไร Brown, A. W. (2000). Component-Based Development.
องค์ประกอบหลักของคอมโพเนนต์ การจัดการข้อกำหนดที่ชัดเจน (specification) อิมพลีเมนต์ได้อย่างน้อย 1 วิธี (One or more implementations) ข้อกำหนดที่เป็นมาตรฐานของคอมโพเนนต์ (component standard) วิธีการแพ็กเกจ (packaging approach) วิธีการติดตั้ง (deployment approach)
แอปพลิเคชันที่ประกอบด้วยคอมโพเนนต์ วิธีการเชิงคอมโพเนนต์ (component-oriented approach) ประสิทธิภาพในการออกแบบโซลูชันตามที่กำหนด (effectively design) สนับสนุนการพัฒนาระบบแบบกระจาย โดยใช้ระบบเดิมและแพ็กเกจใหม่ http://slideplayer.com/slide/9101702/
การพัฒนาระบบขององค์กรจากคอมโพเนนต์ Rational's Unified Process ทำแต่ละงานในแต่ละขั้นตอนให้สมบูรณ์ มุมมองการเลือกใช้คอมโพเนนต์ (Select Perspective Method) การพัฒนาซอฟต์แวร์ในองค์กรด้วยคอมโพเนนต์ที่ใช้ร่วมกันได้ https://ispying.blogspot.com/2013/10/rational-unified-process-rup.html
กระบวนการพัฒนาซอฟต์แวร์เชิงคอมโพเนนต์ Brown, A. W. (2000). Component-Based Development.
แหล่งที่มาของคอมโพเนนต์ คอมโพเนนต์เป็นฟังก์ชันที่มีความอิสระ สามารถเข้าถึงผ่านอินเทอร์เฟซได้ คอมโพเนนต์ เป็นแพ็กเกจที่พัฒนาตามความต้องการทางธุรกิจ คอมโพเนนต์ของบุคคลที่สาม ที่พัฒนาแยกจากกัน และนำมาใช้งาน CBD มุ่งเน้นที่เทคนิคการแบ่งส่วน เพื่อให้เข้าถึงแพ็กเกจได้ในอนาคต มุมมองของ CBD เป็นพื้นฐานสำหรับรวมแอปพลิเคชันใหม่ ๆ
แหล่งที่มาของคอมโพเนนต์ (ต่อ) การใช้ชิ้นส่วนที่เป็นมาตรฐานเพื่อให้คอมโพเนนต์ทั้งหมดใช้งานได้ การจัดการคอมโพเนนต์ โดยใช้เครื่องมือในการจัดเก็บ ค้นหาและเรียกค้นคอมโพเนนต์ตามความต้องการได้ วิธีการออกแบบที่ช่วยให้โซลูชันนำคอมโพเนนต์มาใช้ได้ ผ่านฟังก์ชันการทำงานตามที่คิดและใช้งานลักษณะเฉพาะได้ https://www.saikou.construction/house-building/ปทุมธานี/
การออกแบบที่เน้นส่วนเชื่อมต่อ อินเทอร์เฟซเป็นกลไกที่คอมโพเนนต์เพื่อใช้อธิบายสิ่งที่ทำและการเข้าถึง อธิบายการเชื่อมต่อของคอมโพเนนต์นั้น การใช้งานจะถูกซ่อนไว้ภายใน การออกแบบตามอินเตอร์เฟซ เป็นสิ่งสำคัญในการออกแบบที่ยืดหยุ่น ส่วนสำคัญของการจัดเตรียมแอปพลิเคชันใหม่ ๆ ในยุคอินเทอร์เน็ต การออกแบบซึ่งสามารถเปลี่ยนแปลงได้เมื่อเทคโนโลยีมีการเปลี่ยนแปลง วิธีการออกแบบที่ใช้อินเทอร์เฟซ ช่วยลดต้นทุนในการบำรุงรักษาระบบ
สถาปัตยกรรมคอมโพเนนต์และแอปพลิเคชัน http://www.rijsenbrij.net/archive1/progx/eng/chapter8.htm
สถาปัตยกรรมคอมโพเนนต์และแอปพลิเคชัน การออกแบบอินเตอร์เฟซของคอมโพเนนต์แต่ละชิ้นส่วน มุมมองการประกอบชิ้นส่วนของโซลูชันที่ใช้มากขึ้น คอมโพเนนต์เกี่ยวกับการออกแบบและสร้างแอปพลิเคชัน แอปพลิเคชันประกอบด้วยคอมโพเนนต์ที่ทำงานร่วมกัน สถาปัตยกรรมคอมโพเนนต์ (component architecture) คอมโพเนนต์และการปฏิสัมพันธ์ การโต้ตอบของออบเจ็กต์ที่ใช้พัฒนา https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
แนวทางในการปฏิบัติของ CBD การใช้ส่วนประกอบจากเทคโนโลยีที่หลากหลาย ทำได้หลายวิธี โดยเฉพาะการพัฒนาแอปพลิเคชันบนแพลตฟอร์มต่าง ๆ แอปพลิเคชันขนาดใหญ่ที่มีฟังก์ชันทางธุรกิจจำนวนมาก ขึ้นอยู่กับความหลากหลายและเทคโนโลยีที่เข้ากันได้ ค่าใช้จ่ายในการพัฒนาคอมโพเนนต์และการจัดการใช้คอมโพเนนต์ร่วมกัน
กลุ่มของผู้เกี่ยวข้อง กลุ่มผลประโยชน์พิเศษ (Special Interest Groups) กลุ่มผู้ขาย (Vendor-Led User Groups) กลุ่มผู้ให้บริการคอมโพเนนต์ (Specialist Component Service Providers) ผู้ให้คำแนะนำและรายงานผล (Experience Reports and Advice)
ความพิเศษของคอมโพเนนต์ ส่วนประกอบในการพัฒนา (developers) ส่วนประกอบในการเป็นตัวแทน (brokers) ส่วนประกอบในการศึกษา (educators) พื้นฐานของการให้คำปรึกษา (Component-based consultants)
สรุปท้ายบท การพัฒนาซอฟต์แวร์ด้วยคอมโพเนนต์ เป็นพื้นฐานของการพัฒนาซอฟต์แวร์ในกระบวนการทางวิศวกรรมซอฟต์แวร์ที่เป็นมาตรฐาน เน้นการออกแบบคอมโพเนนต์หรือส่วนประกอบที่ใช้ร่วมกันได้ ใช้อินเทอร์เฟซเป็นส่วนต่อประสานระหว่างคอมโพเนนต์ การแบ่งแยกส่วนประกอบในการเขียนโปรแกรม เพื่อกระจายการทำงานและเชื่อมต่อการทำงานผ่านออบเจ็กต์ของคอมโพเนนต์ การนำไปใช้ต้องเข้าใจโครงสร้างการทำงานของคอมโพเนนต์นั้น ๆ การนำเครื่องมือที่มีอยู่มาช่วยในการนำมาใช้งาน