التنمية القائمة على السلوك
تطوير البرمجيات الموجه بالسلوك ( BDD ) هو منهجية تطوير برمجيات مرنة تتمحور حول التعاون بين متخصصي الأعمال وتكنولوجيا المعلومات الذين لديهم مصلحة في إيجاد حل لمشكلة معقدة. والهدف الأساسي هو تحقيق فهم مشترك للمشكلة. [ 1 ]
يتضمن تطوير البرمجيات القائم على السلوك استخدام لغة خاصة بالمجال (DSL) باستخدام تراكيب اللغة الطبيعية (مثل الجمل الشبيهة باللغة الإنجليزية) التي يمكنها التعبير عن السلوك والنتائج المتوقعة. [ 2 ]
يشجع منهج تطوير البرمجيات القائم على السلوك (BDD) التعاون بين المطورين وخبراء ضمان الجودة وممثلي العملاء في مشاريع البرمجيات. [ 3 ] [ 4 ] كما يشجع الفرق على استخدام الحوار والأمثلة الملموسة لترسيخ فهم مشترك لكيفية عمل التطبيق. [ 5 ] يُعتبر منهج BDD ممارسة فعالة، خاصةً عندما يكون نطاق المشكلة معقدًا. [ 6 ]
من المفاهيم الخاطئة الشائعة حول منهجية تطوير البرمجيات القائمة على السلوك (BDD) أنها تُعتبر تطويرًا مُحسّنًا لمنهجية تطوير البرمجيات القائمة على الاختبار (TDD). مع أن BDD مُشتقة في الأصل من ممارسات TDD، [ 7 ] إلا أن هدفها الأساسي هو التوصل إلى فهم مشترك لمجال المشكلة وإيجاد طريقة لتدوين هذا الفهم بلغة الأعمال، باستخدام بيانات حقيقية، مع مراعاة الوضوح والجوهر والتركيز (BRIEF). [ 8 ] تجمع BDD بين تقنيات TDD وأفكار من تصميم البرمجيات القائم على المجال وتحليل وتصميم البرمجيات الموجهة للكائنات لتزويد فرق تطوير البرمجيات وإدارتها بأدوات وعملية مشتركة للتعاون في تطوير البرمجيات. [ 3 ] [ 9 ]
بشكل عام، يُعدّ تطوير البرمجيات القائم على السلوك (BDD) فكرةً حول كيفية إدارة تطوير البرمجيات بما يتوافق مع المصالح التجارية والخبرات التقنية. وتتضمن ممارسته استخدام أدوات متخصصة. [ 10 ] يمكن استخدام بعض الأدوات المصممة خصيصًا لتطوير البرمجيات القائم على السلوك (BDD) في تطوير البرمجيات القائم على الاختبار (TDD). تعمل هذه الأدوات على أتمتة اللغة الشائعة .
ملخص
تُعدّ BDD عملية يتم من خلالها تحويل عبارات اللغة الطبيعية المهيكلة الخاصة بلغة المجال المحددة (DSL) إلى اختبارات قابلة للتنفيذ. والنتيجة هي مواصفات قابلة للتنفيذ تُشكّل في النهاية وثائق حية: متطلبات تُعدّ أيضًا اختبارات القبول الأولى التي تُوجّه عملية تطوير البرمجيات ( تطوير البرمجيات الموجه باختبارات القبول ).
يركز تطوير البرمجيات القائم على السلوك (BDD) على:
- التعاون بين رجال الأعمال والخبراء التقنيين
- خلق فهم مشترك للمشكلة التي تحتاج إلى حل وكيفية حلها (دون تضمين أي تفاصيل حول التنفيذ التقني المختار حتى الآن)
- كتابة هذا بطريقة واضحة ودقيقة بحيث يمكن أن تصبح مواصفات قابلة للتنفيذ [ 11 ]
انطلاقاً من هذه النقطة، قام العديد من الأشخاص بتطوير أطر عمل BDD على مدى سنوات، ليؤطروها في النهاية كإطار للتواصل والتعاون بين المطورين، ومختصي ضمان الجودة ، والمشاركين غير التقنيين أو التجاريين في مشروع برمجي. [ 12 ]
مبادئ
يقترح منهج تطوير البرمجيات القائم على السلوك (BDD) تسمية اختبارات البرمجيات بناءً على السلوك المرغوب . [ 10 ] [ 9 ] وبالاستناد إلى منهجية تطوير البرمجيات الرشيقة ، يتألف "السلوك المرغوب" في هذه الحالة من المتطلبات التي تحددها جهة العمل ، أي السلوك المرغوب الذي يحقق قيمة تجارية للجهة التي كلفت بتطوير وحدة البرمجيات قيد الإنشاء. [ 10 ] وفي ممارسة BDD، يُشار إلى هذا المنهج بأنه نشاط "من الخارج إلى الداخل".
لا يُميّز منهج تطوير البرمجيات القائم على الاختبار (TDD) بين الاختبارات من حيث متطلبات البرمجيات عالية المستوى، أو التفاصيل التقنية الدقيقة، أو أي شيء بينهما. ولذلك، يُمكن النظر إلى منهج تطوير البرمجيات القائم على السلوك (BDD) على أنه تطور لمنهج TDD، ولكنه يُتيح خيارات أكثر تحديدًا.
المواصفات السلوكية
يتعلق اقتراح آخر في منهجية تطوير البرمجيات القائمة على السلوك (BDD) بكيفية تحديد السلوك المطلوب. تقترح هذه المنهجية استخدام صيغة شبه رسمية لتحديد السلوك، مستوحاة من مواصفات قصص المستخدم في مجال تحليل وتصميم البرمجيات الموجهة للكائنات . ويمكن اعتبار جانب السيناريو في هذه الصيغة تطبيقًا لمنطق هوار على تحديد سلوك البرمجيات باستخدام لغة خاصة بالمجال.
يقترح منهج تطوير البرمجيات القائم على السلوك (BDD) أن يتعاون محللو الأعمال ومطورو البرمجيات في هذا المجال، وأن يحددوا السلوك من خلال قصص المستخدم، التي يتم توثيق كل منها بشكل صريح. وينبغي أن تتبع كل قصة مستخدم، إلى حد ما، الهيكل التالي: [ 10 ]
- عنوان
- عنوان واضح.
- رواية
- قسم تمهيدي قصير ذو بنية كالتالي:
- بصفته : الشخص أو الدور الذي سيستفيد من هذه الميزة؛
- أريد : الميزة؛
- بحيث : فائدة أو قيمة الميزة.
- معايير القبول
- وصف لكل سيناريو محدد من سيناريوهات السرد وفقًا للبنية التالية:
- بالنظر إلى : السياق الأولي في بداية السيناريو، في جملة واحدة أو أكثر؛
- متى : الحدث الذي يؤدي إلى حدوث السيناريو؛
- ثم : النتيجة المتوقعة، في جملة واحدة أو أكثر.
لا يشترط منهج تطوير البرمجيات القائم على السلوك (BDD) كيفية تنسيق هذه المعلومات، ولكنه يقترح أن يختار الفريق تنسيقًا بسيطًا وموحدًا نسبيًا يتضمن العناصر المذكورة أعلاه. [ 10 ] كما يقترح صياغة السيناريوهات بأسلوب تصريحي بدلًا من أسلوب إجرائي - أي بلغة الأعمال، دون الإشارة إلى عناصر واجهة المستخدم التي تتم من خلالها التفاعلات. [ 13 ] يُشار إلى هذا التنسيق في Cucumber باسم لغة Gherkin .
المواصفات كلغة منتشرة في كل مكان
يستعير منهج BDD مفهوم اللغة المشتركة من منهج تصميم البرمجيات الموجه بالمجال . [ 10 ] [ 9 ] اللغة المشتركة هي لغة (شبه) رسمية يتشاركها جميع أعضاء فريق تطوير البرمجيات ، سواءً كانوا مطوري برمجيات أو موظفين غير تقنيين. [ 14 ] تُستخدم هذه اللغة ويُطوّرها جميع أعضاء الفريق كوسيلة مشتركة لمناقشة مجال البرمجيات المعنية. [ 14 ] وبهذه الطريقة، يصبح منهج BDD وسيلة للتواصل بين جميع الأدوار المختلفة في مشروع البرمجيات. [ 10 ]
من المخاطر الشائعة في تطوير البرمجيات انقطاع التواصل بين المطورين وأصحاب المصلحة في العمل. [ 15 ] يستخدم منهج تطوير البرمجيات القائم على السلوك (BDD) مواصفات السلوك المطلوب كلغة مشتركة بين أعضاء فريق المشروع. لهذا السبب، يصرّ BDD على استخدام لغة شبه رسمية لمواصفات السلوك: فبعض الرسمية شرط أساسي لتكون اللغة مشتركة. [ 10 ] إضافةً إلى ذلك، يُسهم وجود هذه اللغة المشتركة في إنشاء نموذج مجال للمواصفات، مما يسمح بتحليلها بشكل رسمي. [ 16 ] ويُشكّل هذا النموذج أيضًا أساسًا لأدوات البرمجيات المختلفة الداعمة لـ BDD والمتاحة حاليًا.
يُقدّم المثال المذكور أعلاه قصة مستخدم لنظام برمجي قيد التطوير. تُحدّد هذه القصة جهة معنية، وتأثيرًا تجاريًا، وقيمة تجارية. كما تصف عدة سيناريوهات، لكل منها شرط مسبق، ومحفز، ونتيجة متوقعة. يتم تحديد كل جزء من هذه الأجزاء بدقة من خلال الجزء الرسمي من اللغة ( على سبيل المثال، قد يُعتبر مصطلح " Given " كلمة مفتاحية )، وبالتالي يمكن معالجته بطريقة ما بواسطة أداة تفهم الأجزاء الرسمية من اللغة الشائعة.
تستخدم معظم تطبيقات BDD لغات وصف المجال النصية وأساليب التوصيف. ومع ذلك، فقد تم تطبيق النمذجة الرسومية لسيناريوهات التكامل بنجاح في الممارسة العملية، على سبيل المثال، لأغراض الاختبار. [ 17 ]
أدوات متخصصة
على غرار اختبار البرمجيات القائم على التطوير (TDD)، قد يتضمن اختبار البرمجيات القائم على التطوير السلوكي (BDD) استخدام أدوات متخصصة.
لا يقتصر منهج تطوير البرمجيات القائم على السلوك (BDD) على كتابة كود الاختبار فحسب، كما هو الحال في منهج تطوير البرمجيات القائم على الاختبار (TDD)، بل يتطلب أيضًا وثيقة تصف السلوك بلغة أكثر وضوحًا وسهولة في الفهم. وهذا يستلزم عملية من خطوتين: الأولى هي قراءة وتحليل أوصاف الاختبارات، والثانية هي قراءة كود الاختبار وإيجاد تطبيق الاختبار المناسب لتنفيذه. هذه العملية تجعل منهج BDD أكثر صعوبة على المطورين. ويرى المؤيدون أن سهولة فهم هذه الوثائق تجعلها مفيدة لجمهور غير متخصص تقنيًا، وبالتالي يمكن استخدامها كوسيلة تواصل لوصف المتطلبات ("الميزات").
مبادئ الأدوات
من حيث المبدأ، تُعد أداة دعم BDD إطار عمل لاختبار البرمجيات، على غرار الأدوات التي تدعم TDD. مع ذلك، فبينما تميل أدوات TDD إلى أن تكون مرنة إلى حد كبير فيما يتعلق بتحديد الاختبارات، فإن أدوات BDD مرتبطة بتعريف اللغة الموحدة.
تتيح اللغة الموحدة لمحللي الأعمال توثيق المتطلبات السلوكية بطريقة يفهمها المطورون أيضًا. ويتمثل مبدأ أدوات دعم تطوير البرمجيات القائم على السلوك (BDD) في جعل وثائق المتطلبات هذه قابلة للتنفيذ مباشرةً كمجموعة من الاختبارات. إذا تعذر تحقيق ذلك لأسباب تتعلق بالأداة التقنية التي تُمكّن من تنفيذ المواصفات، فيجب إما تغيير أسلوب كتابة المتطلبات السلوكية أو تغيير الأداة نفسها. [ 18 ] يختلف التنفيذ الدقيق للمتطلبات السلوكية باختلاف الأداة، ولكن الممارسات الرشيقة توصلت إلى العملية العامة التالية:
- تقرأ الأدوات وثيقة المواصفات.
- تفهم الأداة بشكل مباشر الأجزاء الرسمية الكاملة للغة الشائعة (مثل الكلمة المفتاحية Given في المثال أعلاه). وبناءً على ذلك، تقسم الأداة كل سيناريو إلى عبارات ذات معنى.
- يتم تحويل كل بند من بنود السيناريو إلى نوع من المعايير لاختبار قصة المستخدم. ويتطلب هذا الجزء عملاً خاصاً بالمشروع من قبل مطوري البرامج.
- ثم يقوم الإطار بتنفيذ الاختبار لكل سيناريو، باستخدام المعلمات من ذلك السيناريو.
القصة مقابل المواصفات
تُشكّل الأدوات التي تستخدم المواصفات كلغة إدخال بدلاً من قصص المستخدم فئة فرعية مستقلة من تطوير البرمجيات الموجه بالسلوك. لا تستخدم أدوات المواصفات قصص المستخدم كصيغة إدخال لسيناريوهات الاختبار ، بل تستخدم المواصفات الوظيفية للوحدات التي يتم اختبارها. غالبًا ما تتسم هذه المواصفات بطابع تقني أكثر من قصص المستخدم، وعادةً ما تكون أقل ملاءمة للتواصل مع موظفي الأعمال مقارنةً بقصص المستخدم. [ 10 ] [ 19 ] مثال على مواصفات مجموعة برمجية قد يبدو كالتالي:
المواصفات: مكدس عند إنشاء مكدس جديد، يكون فارغًا. عند إضافة عنصر إلى المكدس، يصبح هذا العنصر في أعلى المكدس. عندما تحتوي مكدسة على N عنصرًا ، ويكون العنصر E في أعلى المكدسة، فإن عملية سحب عنصر منها تُعيد E ، ويكون حجم المكدسة الجديد N-1.
قد تُحدد هذه المواصفات بدقة سلوك المكون قيد الاختبار، لكنها أقل وضوحًا للمستخدم النهائي. ونتيجةً لذلك، يُنظر إلى الاختبار القائم على المواصفات في ممارسات تطوير البرمجيات القائمة على السلوك (BDD) على أنه مكمل للاختبار القائم على القصص، ويعمل على مستوى أدنى. غالبًا ما يُنظر إلى اختبار المواصفات على أنه بديل لاختبار الوحدات الحر. [ 19 ]
الأصدقاء الثلاثة
يُعرف اجتماع "الأصدقاء الثلاثة"، أو "ورشة تحديد المواصفات"، بأنه اجتماع يناقش فيه مالك المنتج المتطلبات في شكل مواصفات مع أمثلة توضيحية، وذلك مع مختلف أصحاب المصلحة، مثل فريق ضمان الجودة وفريق التطوير. والهدف الرئيسي من هذا النقاش هو بدء حوار وتحديد أي مواصفات ناقصة. كما يوفر هذا النقاش منصةً لفريق ضمان الجودة وفريق التطوير ومالك المنتج للالتقاء والاستماع إلى وجهات نظر بعضهم البعض لإثراء المتطلبات والتأكد من أنهم يبنون المنتج الصحيح. [ 20 ]
الأصدقاء الثلاثة هم:
- في مجال الأعمال - يقتصر دور مستخدم الأعمال على تحديد المشكلة فقط، وليس الخوض في اقتراح حل.
- التطوير - يتضمن دور المطورين اقتراح طرق لحل المشكلة
- الاختبار - يتمثل دور المختبرين في التشكيك في الحل، وطرح أكبر عدد ممكن من الاحتمالات المختلفة لتبادل الأفكار من خلال سيناريوهات "ماذا لو"، والمساعدة في جعل الحل أكثر دقة لإصلاح المشكلة.
انظر أيضاً
- التطوير القائم على المواصفات
- المواصفات من خلال المثال
- بيهات (إطار عمل PHP)
- إطار عمل ساينفين
- كونكورديون (إطار عمل جافا)
- RSpec
- كَيّل
- جاسمين (إطار عمل لاختبار جافا سكريبت)
- أداة اختبار واجهة المستخدم الرسومية Squish (أداة اختبار واجهة المستخدم الرسومية BDD للغات JavaScript و Python و Perl و Ruby و Tcl)
- حالة الاستخدام
- تم استخدام Fitnesse لتطبيق BDD [ 21 ]
- خيار (برنامج)
مراجع
- ↑ "دراسة حالة: التنمية القائمة على السلوك - الجزء الأول" . تم الاطلاع عليه بتاريخ 7 مايو 2026 .
- ↑ سيلفا، تياجو روشا (2023). "نحو لغة خاصة بالمجال لتطوير البرمجيات الموجهة بالسلوك". ندوة IEEE لعام 2023 حول اللغات المرئية والحوسبة المتمحورة حول الإنسان (VL/HCC) . IEEE. doi : 10.1109/VL-HCC57772.2023.00054 .
- 1 2 "التنمية القائمة على السلوك" . مؤرشف من الأصل في 1 سبتمبر 2015. تم الاطلاع عليه في 12 أغسطس 2012 .
- ↑ كيوغ، ليز (7 سبتمبر 2009). "مقدمة في التنمية القائمة على السلوك" . سكيلز ماتر . مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 1 مايو 2019 .
- ↑ جون فيرغسون سمارت (2014). تطوير البرمجيات الموجه بالسلوك عمليًا: تطوير البرمجيات الموجه بالسلوك لدورة حياة البرمجيات بأكملها . منشورات مانينغ. ISBN 9781617291654.
- ↑ ثارايل، رانجيث (15 فبراير 2016). "التطوير القائم على السلوك: تبسيط مساحة المشكلة المعقدة" . SolutionsIQ . تم الاطلاع عليه في 15 فبراير 2018 .
- ↑ "مقدمة في BDD" . تم الاطلاع عليه بتاريخ 2026-05-07 .
- ^ ناجي ، جاسبار. روز ، سيب (2026/03/31). التنمية الفعالة التي يحركها السلوك . نيويورك، الولايات المتحدة الأمريكية: مانينغ. ص. 83. ردمك 9781633435254.
- 1 2 3 بيلوير، سكوت (يونيو 2008). "التطوير الموجه بالسلوك" . مجلة البرمجة . مؤرشف من الأصل في 12 يوليو 2012. تم الاطلاع عليه في 1 مايو 2019 .
- 1 2 3 4 5 6 7 8 9 هارينغ، رونالد (فبراير 2011). دي رويتر، روبرت (محرر). "التطوير الموجه بالسلوك: أفضل من التطوير الموجه بالاختبار". مجلة جافا (باللغة الهولندية) (1). فين ماغازينز: 14-17 . ISSN 1571-6236 .
- ↑ توثيق متطلبات منهجية أجايل من خلال الأمثلة (CARE) (ملف PDF) . 1 أغسطس 2022. ص 11-12 . تاريخ الاطلاع: 7 مايو 2026 .
- ↑ "كتاب RSpec - سؤال حول الفصل 11: كتابة برامج ذات أهمية" . مؤرشف من الأصل بتاريخ 7 نوفمبر 2009. تم الاطلاع عليه بتاريخ 9 أغسطس 2009 .
- ↑ مابي، بن. "السيناريوهات الإجرائية مقابل السيناريوهات التصريحية في قصص المستخدم" . مؤرشف من الأصل في 3 يونيو 2010. تم الاسترجاع في 19 مايو 2008 .
- 1 2 إيفانز، إريك (2003). تصميم قائم على المجال: معالجة التعقيد في صميم البرمجيات . أديسون-ويسلي. ISBN 978-0-321-12521-7تم الاطلاع عليه بتاريخ 12 أغسطس 2012 .
- ↑ جينيكا (16 مارس 2011). "لماذا تفشل مشاريع البرمجيات" . تم الاطلاع عليه بتاريخ 16 مارس 2011 .
- ↑ محمود الحق آزاد (6 فبراير 2011). "مرحباً بالتطوير القائم على السلوك" . تم الاطلاع عليه بتاريخ 12 أغسطس 2012 .
- ↑ لوبكي، دانيال؛ فان ليسن، تامو (2016). "نمذجة حالات الاختبار في BPMN لتطوير البرمجيات الموجه بالسلوك". مجلة IEEE للبرمجيات . 33 (5): 15-21 . doi : 10.1109/MS.2016.117 . S2CID 14539297 .
- ↑ آدم كرافن (21 سبتمبر 2015). "أساسيات تطوير البرمجيات القائم على السلوك على مستوى المؤسسة (BDD)" . تم الاطلاع عليه في 14 يناير 2016 .
- 1 2 روي أوشيروف (4 أكتوبر 2008). "BDD: أطر السلوك مقابل أطر المواصفات" . تم الاسترجاع في 12 أغسطس 2012 .
- ↑ "ما هي العناصر الثلاثة الأساسية في منهجية أجايل؟" . تحالف أجايل . 16-06-2016 . تم الاطلاع عليه بتاريخ 10-06-2019 .
- ↑ كيتيل جنسن (13 ديسمبر 2009). "BDD مع جداول السيناريوهات في Fitnesse Slim" . تطبيق عملي . ووردبريس . تم الاطلاع عليه بتاريخ 12 أغسطس 2012 .
- تصميم البرمجيات
- فلسفات تطوير البرمجيات
