دين تقني

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

1) تأجيل مهام صيانة البرامج (على سبيل المثال: تأجيل إصلاح الأعطال bugs، تأجيل المهام المتعلقة باختبار البرنامج، تأجيل مهمة تحديث الوثائق، تأجيل مهمة إعادة هيكلة البرنامج، الخ...). أو

2) استخدام تصاميم أو تعليمات برمجية غير مطابقة لمعايير وممارسات الجودة. هذه المهام المؤجلة أو غير المطابقة لمعايير الجودة تمثل ديناُ تقنياُ على البرنامج.

فكرة الديون التقنية مشتقه من مفهوم الديون المالية Ward Cunningham (1992). "The WyCash Portfolio Management System".in Addendum
to the proceedings on object-oriented programming systems, languages, and applications, 1992, pp. 29-30. Allman, Eric (2012). "Managing Technical Debt". Communications of the ACM. 55 (5): 50–55. ، حيث أن المقترض يستفيد من الدين في تحقيق بعض الأهداف قصيرة الأجل مثل الاستثمار أو شراء سلعة. ولكن هذا الدين يجلب تكاليف إضافية عن طريق سعر الفائدة. نفس الفكرة بالنسبة للديون التقنية، حيث يمكن للمطورين تحميل بعض الديون التقنية لتحقيق أهداف قصيرة الأجل مثل إصدار نسخة من البرنامج بأقل وقت وجهد ممكن. ولكن إبقاء الديون التقنية لفترة طويلة يتسبب في تعقيد البرنامج وبالتالي زيادة في تكلفة صيانة البرنامج على المدى البعيد. حيث أن أي برنامج أو تطبيق يتغير وينمو بشكل متسارع. وبالتالي المواصلة في تأجيل مهام الصيانة سيزيد من تكلفتها مستقبلاٌ Lehman, M (1996). "Laws of Software Evolution Revisited". EWSPT '96 Proceedings of the 5th European Workshop on Software Process Technology: 108–124. Retrieved 19 November2014. ، لإن البرنامج أصبح أكبر من حيث الحجم وعدد المميزات.

مجموعة من الباحثين والمطورين وضعوا تعريفًا محددًا للديون التقنية وهو «مجموعة من التصاميم و التعليمات البرمجية المناسبة في الوقت الحالي، ولكن تجعل التغييرات المستقبلية للبرنامج أكثر صعوبة. الديون التقنية تمثل مسؤولية والذي تأثيرها يقتصر على الجودة الداخلية للبرنامج وبالتحديد سهولة الصيانة والتطوير».P. Avgeriou, P. Kruchten, I. Ozkaya, and C. Seaman, “Managing Technical Debt in Software Engineering (Dagstuhl Seminar 16162),” Dagstuhl Reports, vol. 6, no. 4, pp. 110--138, 2016. 

 مراجع 

تصنيف:استعارات
تصنيف:معمارية البرمجيات
تصنيف:صيانة البرمجيات
تصنيف:مصطلحات هندسة البرمجيات