تبديل الميزة
يُتيح مفتاح تبديل الميزات في تطوير البرمجيات بديلاً عن إدارة فروع متعددة للميزات في شفرة المصدر . حيث يُفعّل شرطٌ داخل الشفرة ميزةً أو يُعطّلها أثناء التشغيل . في بيئات التطوير الرشيقة، يُستخدم مفتاح التبديل في بيئة الإنتاج لتفعيل الميزة عند الطلب، لبعض المستخدمين أو جميعهم. وبالتالي، يُسهّل مفتاح تبديل الميزات عملية الإصدار المتكرر. كما يُسهّل التعامل مع استراتيجيات النشر المتقدمة، مثل النشر التدريجي واختبار A/B . [ 1 ] [ 2 ]
يدعم نظام التسليم المستمر مفاتيح تفعيل الميزات، حتى في حال عدم نشر الإصدارات الجديدة في بيئة الإنتاج بشكل متواصل . تُدمج الميزة في الفرع الرئيسي حتى قبل اكتمالها. يُنشر الإصدار في بيئة اختبار مرة واحدة، ويتيح مفتاح التفعيل تشغيل الميزة واختبارها . تصبح دورات تكامل البرمجيات أقصر، ويمكن توفير إصدار جاهز للإنتاج. [ 3 ]
يتمثل الاستخدام الثالث لهذه التقنية في تمكين المطورين من إصدار نسخة من المنتج تحتوي على ميزات غير مكتملة. تُخفى هذه الميزات غير المكتملة (أو تُفعّل/تُعطّل) بحيث لا تظهر في واجهة المستخدم . يُقلل هذا من الجهد المبذول في دمج الميزات من وإلى الفرع الإنتاجي، مما يسمح بإصدار العديد من النسخ الصغيرة والمتزايدة من البرنامج . [ 4 ]
يُطلق على مفتاح تبديل الميزة أيضًا اسم مفتاح الميزة ، أو علامة الميزة ، أو بوابة الميزة ، أو مفتاح تبديل الميزة ، أو الميزة الشرطية .
تطبيق
تُعدّ مفاتيح الميزات متغيرات تُستخدم داخل العبارات الشرطية . وبالتالي، يمكن تفعيل أو تعطيل أجزاء التعليمات البرمجية داخل هذه العبارات الشرطية بناءً على قيمة مفتاح الميزة. يتيح هذا للمطورين التحكم في مسار برامجهم وتجاوز الميزات غير الجاهزة للنشر. عادةً ما يكون جزء التعليمات البرمجية الموجود خلف متغير وقت التشغيل موجودًا ويمكن تنفيذه بشكل مشروط، أحيانًا ضمن دورة حياة التطبيق نفسها؛ بينما لا يمكن تنفيذ جزء التعليمات البرمجية الموجود خلف توجيه المعالج المسبق أو المُعلّق . يمكن لنهج علامات الميزات استخدام أي من هذه الطرق لفصل مسارات التعليمات البرمجية في مراحل التطوير المختلفة.
يُستخدم مفتاحا تبديل الميزات بشكل أساسي لتجنب التعارضات التي قد تنشأ عند دمج التغييرات في البرمجيات في اللحظات الأخيرة قبل الإصدار، مع العلم أن هذا قد يؤدي إلى تراكم التعليمات البرمجية غير المستخدمة بعد تفعيل ميزة ما بشكل دائم، مما يُسبب عبئًا إضافيًا على النظام. لذا، يجب إزالة هذا الجزء من التعليمات البرمجية بعناية فائقة لتجنب التأثير على أجزاء أخرى من البرنامج.
الإدارة والصيانة
تتطلب مفاتيح الميزات عادةً إدارة دورة حياة تتجاوز مجرد العبارات الشرطية المستخدمة لتنفيذها. وقد حددت دراسةٌ شملت موادّ عملية ومطورين من 38 شركة 17 ممارسةً لاستخدام مفاتيح الميزات، مصنفةً ضمن ممارسات الإدارة والتهيئة والتنفيذ والتنظيف. وشملت الممارسات الشائعة تسجيل البيانات الوصفية لكل مفتاح، وتحديد قيمة افتراضية، وتسجيل التغييرات التي تُجرى على المفاتيح، واستخدام أدوات مخصصة لإدارتها. [ 5 ]
أظهرت الأبحاث التي أُجريت على متصفح جوجل كروم أن مفاتيح الميزات تدعم الإصدارات السريعة، والتطوير القائم على الفرع الرئيسي، واختبار A/B، ولكنها تتطلب أيضًا صيانة إضافية عندما تبقى هذه المفاتيح في قاعدة التعليمات البرمجية لفترات طويلة. [ 6 ] وأشارت دراسات لاحقة حول بنية مفاتيح الميزات إلى أن هذه المفاتيح قد تزيد من تعقيد التعليمات البرمجية، وتُدخل تعليمات برمجية غير مستخدمة، وتقلل من سهولة الصيانة إذا لم تتم إزالتها أو تنظيمها بعد انتهاء الغرض منها. [ 7 ]
يوجد نوعان رئيسيان من مفاتيح تبديل الميزات. الأول هو مفتاح تبديل الإصدار، الذي يقرر المطور الاحتفاظ به أو إزالته قبل إصدار المنتج بناءً على أدائه. أما الثاني فهو مفتاح تبديل الأعمال، الذي يُحتفظ به لأنه يلبي استخدامًا مختلفًا عن استخدام الكود القديم.
يمكن استخدام مفاتيح تبديل الميزات في السيناريوهات التالية: [ 1 ]
- إضافة ميزة جديدة إلى تطبيق.
- تحسين ميزة موجودة في التطبيق.
- إخفاء أو تعطيل ميزة ما.
- توسيع واجهة المستخدم.
يمكن تخزين مفاتيح تبديل الميزات على النحو التالي: [ 8 ]
- إدخالات الصفوف في قاعدة البيانات
- خاصية في ملف التكوين
- إدخال في خدمة علامات الميزات الخارجية.
مجموعات الميزات
تتألف مجموعات الميزات من مفاتيح تبديل الميزات التي تعمل معًا. وهذا يسمح للمطور بإدارة مجموعة من مفاتيح التبديل ذات الصلة بسهولة. [ 9 ]
إطلاق الكناري
يُتيح الإصدار التجريبي (أو إطلاق الإصدار التجريبي أو نشر الإصدار التجريبي) للمطورين اختبار الميزات تدريجيًا من قِبل مجموعة صغيرة من المستخدمين. تُعدّ علامات الميزات طريقة بديلة لإطلاق الإصدارات التجريبية [ 10 ] ، وتُتيح الاستهداف حسب المواقع الجغرافية أو حتى سمات المستخدم. [ 11 ] إذا لم يكن أداء الميزة مُرضيًا، فيمكن التراجع عنها دون أي آثار سلبية. [ 12 ] سُمّي هذا النوع من الإصدارات بهذا الاسم نسبةً إلى استخدام طيور الكناري لتحذير عمال المناجم من الغازات السامة .
التبني
يذكر مارتن فاولر أن مفتاح الإصدار، وهو نوع محدد من مفاتيح الميزات، "يجب أن يكون خيارك الأخير عند التعامل مع طرح الميزات في بيئة الإنتاج". بدلاً من ذلك، من الأفضل تقسيم الميزة إلى أجزاء أصغر يمكن تنفيذ كل منها وإدخالها بأمان في المنتج النهائي دون التسبب في مشاكل أخرى. [ 2 ]
تُستخدم خاصية تبديل الميزات في العديد من المواقع الإلكترونية الكبيرة، بما في ذلك فليكر [ 13 ] ، وديسكوس [ 14 ] ، وإتسي [ 15 ] ، وريديت [ 16 ] ، وجيميل [ 17 ] ، ونتفليكس [ 18 ] ، بالإضافة إلى برامج مثل جوجل كروم كاناري أو مايكروسوفت أوفيس [ 19 ] .
انظر أيضاً
مراجع
- 1 2 "مستكشفو إدارة دورة حياة التطبيقات - تطوير البرمجيات باستخدام مفاتيح تبديل الميزات" . msdn.microsoft.com . يوليو 2015.
- 1 2 مارتن فاولر (29 أكتوبر 2010). "FeatureFlag" . Martinfowler.com . تم الاسترجاع في 6 مارس 2026 .
- ↑ كيف يستفيد GitHub من ميزة العلامات للشحن بسرعة وأمان ، infoq، 2021-05-09.
- ↑ برمجة تطبيقات جافا سكريبت . مؤرشف من الأصل بتاريخ 15-09-2016 . تم الاطلاع عليه بتاريخ 14-09-2016 .
- ↑ مهدوي-هيزافه، رضوان؛ دريمان، يعقوب؛ ويليامز، لوري (2021). "تطوير البرمجيات باستخدام مفاتيح تبديل الميزات: الممارسات المستخدمة من قبل الممارسين". هندسة البرمجيات التجريبية . 26 (1). doi : 10.1007/s10664-020-09901-z .
- ↑ رحمن، محمد تاجملور؛ كويريل، لويس فيليب؛ ريغبي، بيتر سي؛ آدامز، برام (2016). مفاتيح تبديل الميزات: ممارسات الممارسين ودراسة حالة . وقائع المؤتمر الدولي الثالث عشر حول استخراج البيانات من مستودعات البرمجيات. ACM. ص 201-211 . doi : 10.1145/2901739.2901745 .
- ↑ مهدوي-هيزاف، رضوان؛ أجميري، نيرف؛ غروندي، جون؛ ويليامز، لوري (2022). "الأساليب الاستدلالية والمقاييس لهيكلة مفاتيح تبديل الميزات". تكنولوجيا المعلومات والبرمجيات . doi : 10.1016/j.infsof.2021.106804 .
- ^ إيشاغوي، باتو (2014). إدارة أعلام الميزات . أورايلي وسائل الإعلام. رقم ISBN 9781492028598.
- ↑ إليوت، إريك (2018). برمجة تطبيقات جافا سكريبت . دار نشر أورايلي.
- ↑ "كيفية تنفيذ إصدار Canary / التسليم التدريجي باستخدام ConfigCat | مدونة ConfigCat" . configcat.com . 2022-02-09 . تم الاطلاع عليه بتاريخ 2022-12-22 .
- ↑ "اختبار الكناري - استخدام عمليات النشر الأزرق والأخضر وعلامات الميزات" . unlaunch.io . 26 فبراير 2021. تم الاطلاع عليه في 14 أغسطس 2021 .
- ↑ "إطلاق تجريبي - كيف ولماذا يتم الإطلاق التجريبي" . launchdarkly.com . 7 أبريل 2015. تم الاطلاع عليه في 9 يناير 2017 .
- ↑ هارمز، روس. "الجنون - code.flickr.com" . flickr.net . تم الاطلاع عليه بتاريخ 9 يناير 2017 .
- ↑ ديكرامر (9 يوليو 2010). "النشر الجزئي مع تبديل الميزات" . مؤرشف من الأصل في 5 نوفمبر 2013. تم الاطلاع عليه في 10 أكتوبر 2013 .
- ↑ "كيف تدير إتسي عمليات التطوير والتشغيل؟" . codeascraft.com . 4 فبراير 2011. تم الاطلاع عليه في 9 يناير 2017 .
- ↑ "reddit/reddit" . github.com . تم الاطلاع عليه بتاريخ 9 يناير 2017 .
- ↑ "تطوير الشكل الجديد لبريد Gmail" . googleblog.com . تم الاطلاع عليه بتاريخ 9 يناير 2017 .
- ↑ "إعداد واجهة برمجة تطبيقات نتفليكس للنشر" . netflix.com . تم الاطلاع عليه بتاريخ 9 يناير 2017 .
- ↑ وولف، مايك (30 مايو 2022). "ثغرات ميزات أوفيس: كيف يمكن لمايكروسوفت تعطيل تطبيقاتها وإصلاحها في أقل من 24 ساعة" . nolongerset.com . تم الاطلاع عليه بتاريخ 27 أغسطس 2024 .
- عملية تطوير البرمجيات
- برمجة الحاسوب
