อ่าน 3 นาที
เฟรมเวิร์กซอฟต์แวร์
เฟรมเวิร์กซอฟต์แวร์คือซอฟต์แวร์ที่ให้ฟังก์ชันการทำงานทั่วไปที่สามารถนำกลับมาใช้ใหม่ได้ ซึ่งนักพัฒนาสามารถขยายหรือปรับแต่งเพื่อสร้างโซลูชันที่สมบูรณ์ได้...
เฟรมเวิร์กซอฟต์แวร์
เฟรมเวิร์กซอฟต์แวร์คือซอฟต์แวร์ที่ให้ฟังก์ชันการทำงานทั่วไปที่สามารถนำกลับมาใช้ใหม่ได้ ซึ่งนักพัฒนาสามารถขยายหรือปรับแต่งเพื่อสร้างโซลูชันที่สมบูรณ์ได้ เฟรมเวิร์กนี้มีเลเยอร์นามธรรมเหนือโค้ดและโครงสร้างพื้นฐานระดับล่าง ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่การใช้งานตรรกะทางธุรกิจแทนที่จะสร้างฟังก์ชันการทำงานทั่วไปตั้งแต่เริ่มต้น โดยทั่วไปแล้ว เฟรมเวิร์กมีจุดประสงค์เพื่อเพิ่มผลผลิตโดยอนุญาตให้นักพัฒนามุ่งเน้นไปที่การตอบสนองความต้องการทางธุรกิจแทนที่จะเขียนฟังก์ชันการทำงานทั่วไปขึ้นมาใหม่[ 1 ]เฟรมเวิร์กมักจะรวมถึงโปรแกรมสนับสนุนคอมไพเลอร์ชุดพัฒนาซอฟต์แวร์ไลบรารีโค้ดชุดเครื่องมือ และAPIที่รวมส่วนประกอบ ต่างๆ เข้าไว้ ใน แพลตฟอร์ม หรือสภาพแวดล้อม ซอฟต์แวร์ ขนาดใหญ่
แตกต่างจากไลบรารี ที่โค้ดของผู้ใช้ควบคุม การไหลของโปรแกรมเฟรมเวิร์กจะใช้ หลักการ ควบคุมแบบกลับด้าน (inversion of control ) โดยกำหนดโครงสร้างโดยรวมและเรียกใช้โค้ดของผู้ใช้ ณ จุดขยายที่กำหนดไว้ล่วงหน้า (เช่น ผ่านเมธอดเทมเพลตหรือฮุก ) เฟรมเวิร์กยังให้พฤติกรรมเริ่มต้นที่ใช้งานได้ทันที กลไกที่มีโครงสร้างสำหรับการขยายและแกนหลักที่คงที่ซึ่งยอมรับส่วนขยาย (เช่น ปลั๊กอินหรือคลาสย่อย) โดยไม่ต้องแก้ไขโดยตรง
เฟรมเวิร์กแตกต่างจากแอปพลิเคชันที่สามารถขยายได้ เช่นเว็บเบราว์เซอร์ผ่านส่วนขยายหรือวิดีโอเกมผ่านม็อดตรงที่เฟรมเวิร์กเป็นโครงสร้างพื้นฐานที่ตั้งใจให้ไม่สมบูรณ์ ออกแบบมาเพื่อให้เติมเต็มผ่านจุดขยายต่างๆ โดยต้องปฏิบัติตามรูปแบบสถาปัตยกรรมเฉพาะ ตัวอย่างเช่น ทีมที่ใช้เฟรมเวิร์กเว็บในการพัฒนาเว็บไซต์ธนาคาร สามารถมุ่งเน้นไปที่การเขียนตรรกะทางธุรกิจของธนาคาร แทนที่จะจัดการรายละเอียดระดับต่ำ เช่น การประมวล ผลคำขอเว็บหรือ การ จัดการ สถานะ
การเปรียบเทียบกับห้องสมุด
เฟรมเวิร์กซอฟต์แวร์แตกต่างจากไลบรารีมาตรฐานในหลายประเด็นสำคัญ:
- การควบคุมแบบกลับด้าน (Inversion of control ): ในไลบรารี โค้ดของผู้ใช้จะควบคุมการไหลของโปรแกรมและเรียกใช้ฟังก์ชันของไลบรารีตามความจำเป็น ในเฟรมเวิร์ก เฟรมเวิร์กจะควบคุมการไหลและเรียกใช้โค้ดของผู้ใช้ในจุดที่เฉพาะเจาะจง ซึ่งมักจะผ่านรูปแบบTemplate Method Pattern
- พฤติกรรมเริ่มต้น: เฟรมเวิร์กจะให้ฟังก์ชันการทำงานที่ถูกนำมาใช้ล่วงหน้า (เช่น คุณสมบัติมาตรฐานหรือเวิร์กโฟลว์) ซึ่งสามารถใช้งานได้ทันทีหรือปรับแต่งภายในโครงสร้างที่กำหนดไว้ล่วงหน้า ในทางตรงกันข้าม ไลบรารีต้องการโค้ดจากผู้ใช้เพื่อประกอบและกำหนดค่าฟังก์ชันการทำงาน
- ความสามารถในการขยายแบบมีโครงสร้าง: เฟรมเวิร์กช่วยให้สามารถเพิ่มคุณสมบัติใหม่หรือเปลี่ยนแปลงพฤติกรรมได้ผ่านกลไกที่มีโครงสร้าง เช่น ฮุก คอลแบ็ก หรือ API ในขณะที่ไลบรารีช่วยให้สามารถขยายได้ แต่ไม่มีจุดเชื่อมต่อที่กำหนดไว้ล่วงหน้า ต้องอาศัยโค้ดของผู้ใช้ในการเชื่อมต่อ
- หลักการเปิด-ปิด : ตรรกะหลักของเฟรมเวิร์กโดยทั่วไปจะคงที่ อนุญาตให้มีการต่อเติม (เช่น ปลั๊กอินหรือคลาสย่อย) แต่ไม่อนุญาตให้แก้ไขตัวเฟรมเวิร์กเอง
ลวดลาย
ตามที่ Pree กล่าวไว้[ 2 ]เฟรมเวิร์กซอฟต์แวร์ประกอบด้วยจุดที่หยุดนิ่งและจุดที่ร้อนจุดที่หยุดนิ่งกำหนดสถาปัตยกรรมโดยรวมของระบบซอฟต์แวร์ กล่าวคือส่วนประกอบพื้นฐานและความสัมพันธ์ระหว่างส่วนประกอบเหล่านั้น สิ่งเหล่านี้ยังคงไม่เปลี่ยนแปลง (หยุดนิ่ง) ในทุกอินสแตนซ์ของเฟรมเวิร์กแอปพลิเคชันจุดที่ร้อนแสดงถึงส่วนที่โปรแกรมเมอร์ที่ใช้เฟรมเวิร์กเพิ่มโค้ดของตนเองเพื่อเพิ่มฟังก์ชันการทำงานเฉพาะสำหรับโครงการของตนเอง
ฟังก์ชันการทำงานที่จำเป็นสามารถนำไปใช้ได้โดยใช้รูปแบบ Template Method Patternซึ่งจุดที่คงที่เรียกว่าเมธอดที่ไม่เปลี่ยนแปลง (invariant methods) และจุดที่เปลี่ยนแปลงบ่อยเรียกว่าเมธอดแบบแปรผัน (variant or hook methods) เมธอดที่ไม่เปลี่ยนแปลงในคลาสแม่จะให้พฤติกรรมเริ่มต้น ในขณะที่เมธอดแบบผันผันในแต่ละคลาสย่อยจะให้พฤติกรรมที่กำหนดเอง
เมื่อพัฒนาระบบซอฟต์แวร์ที่เป็นรูปธรรมด้วยเฟรมเวิร์กซอฟต์แวร์ นักพัฒนาจะใช้ฮอตสปอตตามความต้องการและข้อกำหนดเฉพาะของระบบ เฟรมเวิร์กซอฟต์แวร์อาศัยหลักการฮอลลีวูดที่ว่า "อย่าโทรหาเรา เราจะโทรหาคุณเอง" [ 3 ] [ 4 ]ซึ่งหมายความว่าคลาสที่ผู้ใช้กำหนด (เช่น คลาสย่อยใหม่) จะได้รับข้อความจากคลาสเฟรมเวิร์กที่กำหนดไว้ล่วงหน้า นักพัฒนามักจะจัดการเรื่องนี้โดยการใช้เมธอดนามธรรมของ คลาสแม่
ข้อแลกเปลี่ยน
ข้อเสียเปรียบอย่างหนึ่งของการใช้เฟรมเวิร์กคือมันทำให้ขนาดของโปรแกรมเพิ่มขึ้น ซึ่งเป็นปรากฏการณ์ที่เรียกว่า " โค้ดบวม" (code bloat ) ปัญหานี้อาจรุนแรงขึ้นได้หากใช้เฟรมเวิร์กหลายตัว หรือบางครั้งอาจเป็นเฟรมเวิร์กที่แข่งขันกันเอง ในโค้ดเบสเดียวกัน
การเรียนรู้วิธีการใช้เฟรมเวิร์กอาจต้องใช้เวลามาก ประสิทธิภาพที่คาดหวังจากการใช้เฟรมเวิร์กอาจถูกหักล้างด้วยต้นทุนในการเรียนรู้ โดยเฉพาะอย่างยิ่งสำหรับเฟรมเวิร์กที่ทีมพัฒนาไม่คุ้นเคย[ 5 ]อย่างไรก็ตาม เมื่อเรียนรู้เฟรมเวิร์กแล้ว ความเร็วของทีมพัฒนาอาจเพิ่มขึ้นสำหรับงานในอนาคต
บางคนอ้างว่าเฟรมเวิร์กที่มีประสิทธิภาพมากที่สุดนั้นพัฒนามาจากการปรับปรุงแก้ไขโซลูชันที่มีอยู่แล้ว เช่น เฟรมเวิร์กแบบสำเร็จรูปที่พัฒนาโดยบุคคลที่สามเพื่อวัตถุประสงค์ทั่วไป มากกว่าการพัฒนาตั้งแต่เริ่มต้นใหม่ทั้งหมด
ตัวอย่าง
โดยทั่วไปแล้ว กรอบแนวคิดจะมุ่งเน้นไปที่ขอบเขตปัญหาเฉพาะด้าน ซึ่งรวมถึง:
- การวาดภาพศิลปะ การแต่งเพลง และCAD เชิงกล [ 6 ] [ 7 ]
- การประยุกต์ใช้แบบจำลองทางการเงิน[ 8 ]
- การประยุกต์ใช้แบบจำลองระบบโลก[ 9 ]
- ระบบสนับสนุนการตัดสินใจ[ 10 ]
- การเล่นและการสร้างสื่อ
- เฟรมเวิร์กเว็บ
- มิดเดิลแวร์
- กรอบงานแอปพลิเคชัน – แอปพลิเคชัน GUI ทั่วไป
- กรอบสถาปัตยกรรมองค์กร
กรอบการทำงานที่น่าสนใจบางส่วน:
- Cactus Framework – การประมวลผลทางวิทยาศาสตร์ประสิทธิภาพสูง
- เฟรมเวิร์กการพัฒนาแอปพลิเคชัน Oracle
- Laravel (เฟรมเวิร์ก PHP)
- ไพพ์ดรีม
- พีพี4เดลฟี
- OpenSilver - ช่วยให้แอปพลิเคชันเดิมที่ใช้ Microsoft Silverlight , WPFและLightSwitchสามารถแปลงเป็นแอปพลิเคชันWebAssembly ได้
ดูเพิ่มเติม
- คลาส (การเขียนโปรแกรมคอมพิวเตอร์) – การเขียนโปรแกรมที่วัตถุทั้งหมดถูกสร้างขึ้นโดยใช้คลาส
- อย่าทำซ้ำสิ่งเดิมๆ – หลักการพัฒนาซอฟต์แวร์
- การเรียกใช้โดยปริยาย
- รูปแบบการออกแบบซอฟต์แวร์ – แม่แบบโซลูชันที่นำกลับมาใช้ซ้ำได้สำหรับพฤติกรรมซอฟต์แวร์ที่จำเป็นทั่วไป
- เอนจินซอฟต์แวร์ – ส่วนประกอบหลักของระบบซอฟต์แวร์ที่ซับซ้อน
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เฟรมเวิร์กซอฟต์แวร์
เฟรมเวิร์กซอฟต์แวร์คือซอฟต์แวร์ที่ให้ฟังก์ชันการทำงานทั่วไปที่สามารถนำกลับมาใช้ใหม่ได้ ซึ่งนักพัฒนาสามารถขยายหรือปรับแต่งเพื่อสร้างโซลูชันที่สมบูรณ์ได้...
การเปรียบเทียบกับห้องสมุด
เฟรมเวิร์กซอฟต์แวร์แตกต่างจากไลบรารีมาตรฐานในหลายประเด็นสำคัญ:
ลวดลาย
ตามที่ Pree กล่าวไว้ [ 2 ] เฟรมเวิร์กซอฟต์แวร์ประกอบด้วย จุดที่หยุดนิ่ง และ จุดที่ร้อน จุดที่หยุดนิ่ง กำหนดสถาปัตยกรรมโดยรวมของระบบซอฟต์แวร์ กล่าวคือส่วนประกอบพื้นฐานและความสัมพันธ์ระหว่างส่วนประกอบเหล่านั้น สิ่งเหล่านี้ยังคงไม่เปลี่ยนแปลง (หยุดนิ่ง)...
ข้อแลกเปลี่ยน
ข้อเสียเปรียบอย่างหนึ่งของการใช้เฟรมเวิร์กคือมันทำให้ขนาดของโปรแกรมเพิ่มขึ้น ซึ่งเป็นปรากฏการณ์ที่เรียกว่า " โค้ดบวม" (code bloat ) ปัญหานี้อาจรุนแรงขึ้นได้หากใช้เฟรมเวิร์กหลายตัว หรือบางครั้งอาจเป็นเฟรมเวิร์กที่แข่งขันกันเอง ในโค้ดเบสเดียวกัน