Feature creepคือการขยายหรือเพิ่มฟีเจอร์ ใหม่ๆ อย่างต่อเนื่องมากเกินไป ในผลิตภัณฑ์โดยเฉพาะอย่างยิ่งในซอฟต์แวร์คอมพิวเตอร์วิดีโอเกม (ซึ่งไม่ควรสับสนกับPower Creep ) และอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภคและธุรกิจคุณสมบัติพิเศษเหล่านี้มีมากกว่าฟังก์ชันพื้นฐานของผลิตภัณฑ์ และอาจส่งผลให้ซอฟต์แวร์มีขนาดใหญ่ขึ้นและซับซ้อนเกินไป แทนที่จะออกแบบให้เรียบง่าย
คำจำกัดความของสิ่งที่เข้าข่าย "ฟีเจอร์ล้น" นั้นแตกต่างกันไปในแต่ละผู้ใช้ปลายทางโดยสิ่งที่ผู้ใช้บางรายมองว่าเป็นเช่นนั้น อาจถือได้ว่าเป็นฟังก์ชันการใช้งานจริงสำหรับผู้ใช้รายอื่นก็ได้ฟีเจอร์ล้นถือเป็นแหล่งที่มาของต้นทุนและกำหนดการที่เกิน กำหนดที่พบได้บ่อยที่สุด ดังนั้นจึงก่อให้เกิดอันตรายและอาจถึงขั้นทำให้ผลิตภัณฑ์และโครงการต้องหยุดดำเนินการได้
สาเหตุ
การเพิ่มคุณสมบัติ (feature creep) อาจเกิดจากความต้องการที่จะนำเสนอผลิตภัณฑ์ที่มีประโยชน์หรือเป็นที่ต้องการมากขึ้นแก่ผู้บริโภค เพื่อเพิ่มยอดขายหรือการกระจายสินค้า เมื่อผลิตภัณฑ์มีคุณสมบัติครบถ้วนตามที่ออกแบบไว้ ผู้ผลิตอาจเพิ่มฟังก์ชันที่ผู้ใช้บางคนอาจมองว่าไม่จำเป็น (บางครั้งอาจต้องแลกมาด้วยประสิทธิภาพ) หรือยังคงใช้เวอร์ชันเดิม (โดยแลกมาด้วยการรับรู้ว่าไม่ได้พัฒนา)
การเพิ่มคุณสมบัติใหม่อาจเกิดขึ้นได้จากการประนีประนอมจากคณะกรรมการที่นำมุมมองหรือกรณีการใช้งาน ที่แตกต่างกันหลายกรณีมาใช้ ในผลิตภัณฑ์เดียวกัน แม้จะด้วยเหตุผลที่ฉวยโอกาสก็ตามเมื่อมีการเพิ่มคุณสมบัติใหม่เพื่อรองรับแต่ละแนวทาง การแปลงคุณสมบัติใหม่ระหว่างกระบวนทัศน์ต่างๆ อาจทำให้คุณสมบัติโดยรวมมีความซับซ้อนมากขึ้น
ควบคุม
มีหลายวิธีในการควบคุมการเพิ่มคุณสมบัติ เช่น การกำหนดขีดจำกัดที่เข้มงวดสำหรับคุณสมบัติที่อนุญาต การเปลี่ยนแปลงหลายรูปแบบ และการตัดแต่งคุณสมบัติที่เกินความจำเป็น
การแยกกัน
การลดคุณสมบัติที่ไม่จำเป็นในภายหลังสามารถหลีกเลี่ยงได้โดยการออกแบบเบื้องต้นโดยอิงตามพื้นฐานของซอฟต์แวร์ที่แข็งแกร่ง เช่น การแยกฟังก์ชันการทำงานและการเข้าถึงข้อมูลออกจากกันอย่างมีเหตุผล เช่น การใช้เมนูย่อยที่ผู้ใช้ระดับสูงสามารถเข้าถึงได้โดยอิสระซึ่งต้องการฟังก์ชันการทำงานที่มากขึ้นและข้อมูลที่ละเอียดมากขึ้น สามารถควบคุมได้อย่างมีประสิทธิภาพด้วยการจัดการการเปลี่ยนแปลง ที่เข้มงวด และการเลื่อนการเปลี่ยนแปลงไปยังขั้นตอนการส่งมอบในภายหลังของโครงการ
เนื่องจากการเพิ่มฟีเจอร์ใหม่ๆ อย่างต่อเนื่องและขยายตัวอย่างต่อเนื่องอาจเกินทรัพยากรที่มีอยู่ จึงสามารถดูแลผลิตภัณฑ์เวอร์ชันพื้นฐานขั้นต่ำ (Minimum Core "Basic") แยกต่างหากได้ เพื่อให้มั่นใจว่าสามารถใช้งานได้ในสภาพแวดล้อมการทำงานขนาดเล็ก การใช้ "กฎ 80/20" ทำให้ผลิตภัณฑ์เวอร์ชันพื้นฐานกว่าสามารถตอบสนองความต้องการของผู้ใช้ส่วนใหญ่ (เช่น ~80%) ได้ จึงไม่ต้องพบกับความซับซ้อน (หรือค่าใช้จ่ายเพิ่มเติม) ของฟีเจอร์ที่ผู้ใช้ขั้นสูง 20% ร้องขอ ฟีเจอร์เสริมยังคงมีอยู่ แต่เป็นเพียงทางเลือกและพร้อมใช้งานสำหรับผู้ที่ร้องขอ แต่ยังไม่ได้ถูกนำไปใช้ในผลิตภัณฑ์เวอร์ชันพื้นฐาน
รูปแบบและตัวเลือก
อีกวิธีหนึ่งในการควบคุมการเพิ่มคุณสมบัติ (Feature Creep) คือการรักษาผลิตภัณฑ์หลายรุ่น ซึ่งคุณสมบัติต่างๆ จะถูกจำกัดและลดจำนวนลงในรุ่นพื้นฐาน เช่น รุ่น Microsoft Windowsสำหรับอินเทอร์เฟซผู้ใช้ ซอฟต์แวร์ สามารถใช้โหมดการดูหรือโหมดการทำงาน (เช่น โหมดพื้นฐานหรือโหมดผู้เชี่ยวชาญ) ซึ่งผู้ใช้สามารถเลือกโหมดเหล่านี้ให้ตรงกับความต้องการของตนเองได้
ทั้งในอินเทอร์เฟซผู้ใช้แบบกราฟิกและอินเทอร์เฟซบรรทัดคำสั่ง จำนวนมาก ผู้ใช้สามารถเลือกใช้ความละเอียดที่มากขึ้นได้ด้วยตนเอง ในกรณีหลังนี้ ในโปรแกรมบรรทัดคำสั่งจำนวนมาก การเพิ่ม ตัวเลือก -vหรือ--verboseด้วยตนเอง จะแสดงข้อมูลที่มีรายละเอียดมากขึ้น ซึ่งอาจไม่เกี่ยวข้องกับผู้ใช้ระดับล่าง แต่มีประโยชน์สำหรับผู้ใช้ระดับสูง หรือเพื่อวัตถุประสงค์ในการดีบักและแก้ไขปัญหา
ความเป็นโมดูลาร์
อีกวิธีหนึ่งสำหรับปัญหาการเพิ่มฟีเจอร์คือการสร้างโมดูลาร์ ผู้ใช้ระดับสูงที่ต้องการฟังก์ชันการทำงานเพิ่มเติมสามารถปรับเปลี่ยนฟีเจอร์ที่จำเป็นได้โดยการดาวน์โหลดโมดูลซอฟต์แวร์ปลั๊กอิน ส่วนเสริม (หรือที่เรียกว่า Add-in) และธีมที่ปรับแต่งให้ตรงกับความต้องการส่วนบุคคล
การตัดแต่งกิ่ง
ในบางจุด ค่าใช้จ่ายในการบำรุงรักษาฟีเจอร์ย่อยเฉพาะบางอย่างอาจสูงเกินไป และอาจต้องมีการตัดแต่งฟีเจอร์ออก เวอร์ชันผลิตภัณฑ์ใหม่อาจตัดฟีเจอร์เสริมออกไป หรืออาจใช้ช่วงเปลี่ยนผ่าน ซึ่งฟีเจอร์เก่าๆ จะถูกยกเลิกก่อนที่จะถูกลบออกจากระบบในที่สุด หากมีผลิตภัณฑ์หลายรุ่น บางรุ่นอาจถูกยกเลิกการใช้งาน ตัวอย่างที่สำคัญคือSamsung Galaxy S6ที่เปิดตัวในเดือนมีนาคม 2015 ซึ่งมีฟีเจอร์ซอฟต์แวร์/เมนูจำนวนมาก รวมถึงฟีเจอร์ฮาร์ดแวร์บางส่วนถูกตัดออกไป ยังไม่มีการเปิดตัวเวอร์ชันที่ "ใช้งานได้จริง" มากขึ้น
ผลที่ตามมา
การขยายขอบเขต
บางครั้ง การเพิ่มคุณสมบัติ (feature creep) ที่ไม่สามารถควบคุมได้อาจนำไปสู่ผลิตภัณฑ์ที่เกินขอบเขตที่ตั้งใจไว้ในตอนแรก ซึ่งเรียกว่าscope creepผลที่ตามมาของการเพิ่มคุณสมบัติ (feature creep) ที่พบบ่อยคือความล่าช้าหรือการยกเลิกผลิตภัณฑ์ ซึ่งอาจมีราคาแพงกว่าที่ตั้งใจไว้ในตอนแรก
ความล่าช้า
บ่อยครั้งที่โครงการซอฟต์แวร์ที่มีฟีเจอร์ครบถ้วนสมบูรณ์ หรือโครงการที่มีการเพิ่มฟีเจอร์ใหม่ๆ ในระดับปานกลาง สามารถอยู่รอดและเติบโตได้แม้จะผ่านการพัฒนาซ้ำหลายครั้ง แต่การเปิดตัวรุ่นต่อๆ มาอาจล่าช้าอย่างมากเมื่อมีการตัดสินใจที่จะเขียนโค้ดฐานใหม่ทั้งหมด นอกเหนือจากการนำเทคโนโลยีใหม่ๆ มาใช้ ยกตัวอย่างเช่นWindows Vista ของ Microsoft เดิมทีวางแผนไว้ว่าจะเป็นรุ่นย่อยระหว่างWindows XPและWindows รุ่นต่อๆ มาที่มีชื่อรหัสว่า "Blackcomb" (เปิดตัวในชื่อ Windows 7) แต่หลังจากปรับใช้ฟีเจอร์ต่างๆ จาก Blackcomb มากขึ้นเรื่อยๆ (ซึ่งหลายฟีเจอร์ถูกยกเลิกไปในที่สุด) Vista กลับกลายเป็นรุ่นใหญ่ที่ใช้เวลาพัฒนาถึงห้าปี
Netscape 6ก็ประสบชะตากรรมเดียวกันซึ่งเดิมทีควรจะเป็นNetscape 5การตัดสินใจในปี 1998 ของ Netscape Communications ที่จะโอเพนซอร์สเบราว์เซอร์ Netscape Navigator และชุดโปรแกรม Communicator Internet (ทั้งสองชื่อรหัสว่า Mozilla) ทำให้เห็นได้ชัดในไม่ช้าว่าโค้ดพื้นฐานนั้นยากเกินไป และจำเป็นต้องเขียน Mozilla ใหม่ทั้งหมด ซึ่งส่งเสริมการสร้างเฟรมเวิร์กแอปพลิเคชัน Mozillaทำให้เกิดความล่าช้าอย่างมาก Netscape 5 จึงถูกข้ามไป และบริษัทถูกซื้อโดย AOL การเปิดตัว Netscape 6.00 ที่ตามมาในปี 2000 ได้รับการวิพากษ์วิจารณ์อย่างกว้างขวางว่าเป็นโค้ดระดับอัลฟ่า และโครงการนี้มีเสถียรภาพโดย Netscape 6.1 ในปี 2001 สามปีหลังจากการตัดสินใจปรับปรุงชุดโปรแกรม Internet เมื่อถึงเวลานั้น เบราว์เซอร์ Internet Explorer ของ Microsoft ได้แซงหน้า Netscape ในด้านส่วนแบ่งการใช้งานมาเป็นเวลานาน ซึ่งลดลงเหลือเพียงหลักเดียว
แม้จะเสถียรขึ้นและมีฟีเจอร์ใหม่ๆ ที่จำเป็นบ้างแล้ว แต่Mozilla Application Suite แบบโอเพนซอร์ส (ในตอนนั้นใช้ชื่อว่า Mozilla) ซึ่ง AOL ใช้สร้าง Netscape ขึ้นมา กลับถูกมองว่า " ใหญ่เกินไป " เพียงหนึ่งปีต่อมา กลุ่มนักพัฒนา Mozilla ได้ตัดสินใจแยกส่วนประกอบของเบราว์เซอร์ออก ซึ่งต่อมาได้กลายเป็น Firefox
โครงการBroken Ageของ Double Fine Adventures ในโครงการ Kickstarterก็เป็นอีกตัวอย่างหนึ่งที่โครงการนี้ล่าช้าเนื่องจากปัญหาฟีเจอร์ล้นเกิน เดิมทีมีกำหนดวางจำหน่ายในเดือนตุลาคม 2012 แต่ครึ่งแรกของเกมวางจำหน่ายในเดือนมกราคม 2014 ส่วนครึ่งหลังวางจำหน่ายปลายเดือนเมษายน 2015 และต้องระดมทุนแยกกันสองรอบจึงจะเสร็จสมบูรณ์
สิ่งมีชีวิตที่หิวโหย
การเพิ่มฟีเจอร์ที่มากเกินไปประกอบกับกำหนดเวลาที่สั้น มักจะนำไปสู่"โซลูชันที่ยุ่งยากซับซ้อน"การเปลี่ยนแปลงที่ต้องการอาจมีมากพอที่จะรับประกันการออกแบบรากฐานโครงการเดิมใหม่ แต่แรงกดดันจากกำหนดเวลากลับทำให้ผู้พัฒนาต้องเร่งรีบและปล่อยผลิตภัณฑ์ที่ยังด้อยคุณภาพออกมาแนวคิดแบบ "feeping creaturism" ถูกสร้างขึ้นเพื่อเน้นย้ำถึงความไม่ชอบของนักพัฒนาต่อสถานการณ์นี้โดยเปรียบผลิตภัณฑ์ที่ค่อยๆ ขยายขอบเขตเป็น "สิ่งมีชีวิตที่ไร้รูปร่างของเหล่าแฮ็กเกอร์ ... คอยเดินเตร่ในความมืด" และเป็นสัญลักษณ์ของการคืบคลานที่จะเกิดขึ้นอีก ("Feeping" เป็นศัพท์แสงที่มีความหมายเหมือนกับ "beeping")
ดูเพิ่มเติม
- โรคอ้วน
- เอกสารการออกแบบ
- การกักตุนข้อมูลดิจิทัล
- Emacsโปรแกรมแก้ไขข้อความที่ได้รับการขยายให้ทำหน้าที่อื่นๆ มากมาย
- กฎข้อที่สิบของกรีนสปัน
- หลักการจูบ
- ความเรียบง่ายในการประมวลผล
- ภารกิจคืบคลาน
- วิศวกรรมมากเกินไป
- ขอบเขตการคืบคลาน
- ผลกระทบระบบที่สอง
- ซอฟต์แวร์บวม
- ปลั๊กอิน (การคำนวณ)
- ปรัชญายูนิกซ์
- กฎการห่อหุ้มซอฟต์แวร์ของซาวินสกี
- Enshittificationซึ่งคุณสมบัติที่เพิ่มขึ้นอาจเป็นส่วนประกอบ
ลิงค์ภายนอก
- Creeping Featuritis, ContentCreationWiki (ลงทะเบียนเมื่อวันที่ 23 ตุลาคม 1995 เป็นอย่างช้าที่สุด)