هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها

نموذج مضاد

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث

في هندسة البرمجيات، النموذج المضاد (أو antipattern) هو أحد نماذج التصميم من الشائع استخدامه ولكنه غير فعال و/ أو يؤدي إلى نتائج عكسية في الممارسة العملية.[1][2]

وقد وضع هذا المصطلح في عام 1995 من قبل أندرو كونيغ،[3] وهو مستوحى من كتاب عصابة الأربعة ديزاين باترنز، التي طورت مفهوم نماذج التصميم في مجال البرمجيات. وشاع المصطلح على نطاق واسع بعد ثلاث سنوات من خلال كتاب انتي باترن، الذي مدد استخدام المصطلح إلى ما وراء مجال تصميم البرمجيات وإلى التفاعل الاجتماعي العام. ووفقا للمؤلفين الكتاب، يجب أن يكون هناك ما لا يقل عن اثنين من العناصر الرئيسية الحالية لتمييز الفعلي بين النموذج المضاد وبين عادة سيئة بسيطة، أو ممارسة سيئة، أو فكرة سيئة:

  • نموذج متكرر لحركة، أو لعملية أو لهيكل يبدو في البداية أنه مفيد، ولكن في نهاية المطاف تنتج عواقب سيئة أكثر من النتائج مفيدة، و
  • وحل إعادة هيكلة الكود تم توثيقه بوضوح، وثبت في الممارسة الفعلية وتكرارها.

كثيرا ما يستخدم بشكل سئ مع ألفاظ محدثة ذات تناقض ظاهري، وكثير من الأفكار المضادة للنموذج تصل إلى ما هو أكثر قليلا من الأخطاء، أو التشدق، أو المشاكل القابلة للحل، أو الممارسات السيئة التي يجب تجنبها إذا كان ذلك ممكنا. وأحيانا تُعرف باسم أغوية أو النماذج المظلمة، وهذا الاستخدام غير الرسمي لهذا المصطلح يشير إلى فئات اعادت اختراع حلول سيئة للمشاكل. وبالتالي، فالعديد من المرشحات كنماذج مضادات قيد المناقشة لا تعتبر رسميا مضادة للنماذج. ومن خلال وصف الأخطاء المتكررة رسميا، يمكن للمرء أن يتعرف على القوى التي تؤدي إلى تكرارها ومعرفة كيف قام الآخرون بإعادة هيكلة تلك النماذج المكسورة.

نماذج مضادات معروفة[عدل]

قالب:Examplefarm

نماذج مضادات تنظيمية[عدل]

  • شلل التحليل: تكريس جهد لا يتناسب مع مرحلة التحليل للمشروع
  • Cash Cow: منتج ذي ربح غالبا ما يؤدي إلى الشعور بالرضا عن منتجات جديدة
  • تصميم من قبل لجنة: نتيجة وجود العديد من المساهمين في التصميم، ولكن بلا رؤية موحدة
  • تصعيد التزامي: فشل في إلغاء قرار عندما يثبت خطأ
  • Management by perkele: أسلوبه إداري استبدادي بدون التسامح مع المعارضة
  • إدارة المصفوفة: هيكل تنظيمي غير مركز ينتج في تقسيم الولاءات وعدم وجود اتجاه
  • خطر أخلاقي: عزل صانع القرار عن عواقب قراره
  • فطر الإدارة: إبقاء الموظفين في جهل وتضليل (يبقى في الظلام ويتم تسميده)، يترك ليغلي، وأخيرا يعبأ
  • المدخنة أو الصوامع: هيكل يدعم معظم تدفق البيانات الأعلى – الأسفل ولكن يمنع الاتصال التنظيمي المتبادل
  • قبضة الباعة: اعتماد نظام بشكل مفرط على مكون مورد من الخارج[4]

نماذج مضادات لإدارة المشاريع[عدل]

  • زحف الموت: يعرف الجميع أن المشروع سيكون بمثابة كارثة—ما عدا الرئيس التنفيذي—لذا يتم إخفاء الحقيقة لمنع الإلغاء الفوري للمشروع -- (على الرغم من أن الرئيس التنفيذي غالبا ما يكون على دراية ولكنه يتجاهل لتعظيم الربح). ومع ذلك، تظل الحقيقة مخفية، ويتم الاحتفاظ بشكل مصطنع بالمشروع حتى يأتي اليوم الأخيرا ("الانفجار الكبير"). تعريف بديل: يتم وضع الموظفين تحت ضغوط للعمل إلى وقت متأخر من الليل وعطلات نهاية الأسبوع على مشروع مع مهلة غير معقولة.
  • تفكير القطيع: خلال التفكير الجماعي، يتجنب أعضاء الفريق تعزيز وجهات النظر خارج منطقة إجماع الأراء المريحة
  • الدخان والمرايا: لإظهار صعوبة تنفيذ الوظائف أو كيفية عدم تنفيذها
  • سخام البرمجيات: السماح لإصدارات متعاقبة لنظام ما لطلب المزيد من الموارد
  • نموذج الشلال: طريقة قديمة لتطوير البرمجيات التي تتعامل بصورة كافية مع التغيير الغير متوقع

نماذج مضادات تحليلية[عدل]

  • لامبالاة المارة: عند اتخاذ قرار شرط أو تصميم خطأ، ولكن الناس الذين لاحظوا هذا الخطأ لا يفعلون شيئا لأنه يؤثر على عدد أكبر من الناس

نماذج مضادات تصميم البرمجيات[عدل]

نماذج مضادات تصميم كائنية التوجه[عدل]

  • Anemic Domain Model: استخدام نموذج المجال دون أيمنطق تجاري. لا يمكن لكائنات نموذج المجال أن تضمن صحتها في أي لحظة، لأن منطق صحتها وتحولها في مكان ما بالخارج (على الأرجح في أماكن متعددة).
  • BaseBean: وراثة وظائف من فئة الأداة بدلا من تفويض إليها
  • Call super: طلب فئات فرعية للاتصال بأسلوب فائق التجاوز
  • مشكلة قطع الدائرة: تفريع أنواع متغيرة، على أساس القيمة الفرعية
  • الاعتماد الدائري: تقديم تبعيات متبادلة مباشرة أو غير مباشرة لا لزوم لها بين كائنات أو وحدات البرمجيات
  • واجهة ثابتة: استخدام الواجهات لتعريف الثوابت
  • كائن الله: تركيز وظائف كثيرة جدا في جزء واحد من التصميم (فئة)
  • Object cesspool: إعادة استخدام الكائنات التي لا تتوافق حالتها مع عقد (ربما ضمني) عدم إعادة استخدامها
  • كائن القصف: الفشل في تغليف الكائنات بشكل صحيح وبذلك السماح بدخول غير مقيد إلى دواخلهم
  • الأشباح: كائنات غرضها الوحيد هو تمرير المعلومات إلى كائن آخر
  • اقتران تسلسلي: فئة تتطلب أن تُسمى أساليبها في ترتيب معين
  • مشكلة يو يو: هيكل (على سبيل المثال، ميراثي) من الصعب فهمه بسبب التجزئة المفرطة

نماذج مضادات برمجية[عدل]

نماذج مضادات منهجية[عدل]

  • برمجة القص والنسخ : نسخ وتعديل الكود البرمجي الموجود عوضاً عن إيجاد حلول جديدة شاملة.
  • قانون الأداة : يفترض أن حلاً مفضلاً قابل للتطبيق عالمياً
  • عامل احتمال الحدوث: يفترض أنه من المتوقع حدوث خطأ معلوم
  • متلازمة لم يخترع هنا : التوجه لإعادة اختراع العجلة (الفشل في انتهاج حل موجود ومناسب)
  • التحسين المبكر : البرمجة المبكرة من أجل الوصول للكفائة والتصميم الجيد والقابلية للصيانة وأحياناً من أجل كفاءة واقعية أكثر
  • البرمجة بالتبديل (أو البرمجة بالمصادفة): محاولة الوصول لحل عن طريق تعديل الكود البرمجي لرؤية ما إذا كان يعمل
  • إعادة اختراع العجلة : الفشل في انتهاج حل موجود ومناسب
  • إعادة اختراع العجلة المربعة : الفشل في انتهاج حل موجود ومناسب وانتهاج حل مُعدل آخر ذو مساوئ وعيوب أكثر من الحل الأول
  • الرصاصة الفضية: افتراض أن أسلوب برمجي مفضل قد يقوم بحل عملية أو مشكلة أكبر
  • تطوير الفاحص المُسير: مشروعات برمجية محدد بها متطلبات جديدة لتقارير الأخطاء البرمجية

نماذج مضادات إدارة التهيئة[عدل]

أنظر أيضا[عدل]

المراجع[عدل]

  1. ^ Budgen, D. Software design. Harlow, Eng.: Addison-Wesley. صفحة 225. ISBN 0-201-72219-4.  "As described in Long (2001), design anti-patterns are 'obvious, but wrong, solutions to recurring problems'."
  2. ^ Scott W. Ambler. Process patterns: building large-scale systems using object technology. Cambridge, UK: Cambridge University Press. صفحة 4. ISBN 0-521-64568-9.  "...common approaches to solving recurring problems that prove to be ineffective. These approaches are called antipatterns."
  3. ^ Koenig، Andrew (March/April 1995). "Patterns and Antipatterns". Journal of Object-Oriented Programming 8 (1): 46–48.  ; was later re-printed in the: Rising, Linda. The patterns handbook: techniques, strategies, and applications. Cambridge, U.K.: Cambridge University Press. صفحة 387. ISBN 0-521-64818-1.  "Anti-pattern is just like pattern, except that instead of solution it gives something thats looks superficially like a solution, but isn't one."
  4. ^ Vendor Lock-In at antipatterns.com
  5. ^ Lava Flow at antipatterns.com
  6. ^ "Undocumented 'lava flow' antipatterns complicate process". Icmgworld.com. 2002-01-14. اطلع عليه بتاريخ 2010-05-03. 
  7. ^ Papadimoulis، Alex (2007-04-10). "Soft Coding". Worsethanfailure.com. اطلع عليه بتاريخ 2010-05-03. 

لمزيد من القراءة[عدل]

  1. Laplante، Phillip A.؛ Colin J. Neill (2005). Antipatterns: Identification, Refactoring and Management. Auerbach Publications. ISBN 0-8493-2994-9. 
  2. Brown، William J.؛ Raphael C. Malveau, Hays W. "Skip" McCormick, Scott W. Thomas, Theresa Hudson (ed). (2000). Anti-Patterns in Project Management. John Wiley & Sons, ltd. ISBN 0-471-36366-9. 

وصلات خارجية[عدل]