قابلية لإعادة الاستخدام

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

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

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

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

وتشير قابلية إعادة استخدام البرمجيات مرة أخرى إلى سمات التصميم لعنصر من عناصر البرنامج بشكل خاص (أو مجموعة من عناصر البرامج) التي تعزز ملاءمته لإعادة الاستخدام.

وقد تم تطوير العديد من مبادئ تصميم إعادة الاستخدام في ورش عمل WISR:
http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html
سمات التصميم المرشحة لإعادة استخدام البرمجيات تتضمن:
 القابلية على التكيف
 الاختصار: الحجم الصغير
 المرونة
 تمثيل وسيطي
 الشمولية
 سرعة
 البساطة: قلة التعقيدات
 توطين افتراضات التصاميم غير المستقر (القابلة للتغير) (ديفيد بارناس)
 البرمجة التركيبية
 الاستقرار في أجواء المتطلبات المتغيرة
 القابلية للتمدد والتوسع
 الثبات
 التصحيح
 تعامد (جبر خطي)

ولم يتم التوصل إلى أي إجماع حول هذه القائمة بعد شأن الأهمية النسبية للمدخلات أو للموضوعات التي تجعل كل واحدة من هذه العناصر هامة بالنسبة لفئة محددة من التطبيقات.

مراجع

وصلات خارجية 
 http://frakes.cs.vt.edu/renews.html
 http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html
 http://www.soamag.com/I28/0430-1.asp

جودة البرمجيات
كود مصدري
هندسة البرمجيات