منذ فترة دار بيني وبين صديق عزيز لي حوار سمعت فيه العبارات التالية:
- سوف ينمو عدد المبرمجين باستمرار - لأن كمية التعليمات البرمجية تتزايد، ويطلب المزيد والمزيد من المطورين دعمها باستمرار.
— لكن الكود أصبح قديمًا، وبعضه لم يعد مدعومًا. بل من الممكن أن يكون هناك نوع من التوازن.
عندما تذكرتها بعد بضعة أيام، تساءلت عما إذا كانت صيانة التعليمات البرمجية، التي تتطلب المزيد والمزيد من الموارد بمرور الوقت، يمكن أن تؤدي في النهاية إلى شل تطوير وظائف جديدة، أم أنها ستتطلب زيادة غير محدودة في عدد المبرمجين؟ ساعد التحليل الرياضي والمعادلات التفاضلية في إجراء تقييم نوعي لمدى اعتماد مقدار الدعم على التطوير والعثور على إجابات للأسئلة.
سؤال واحد. هل يمكن للدعم أن "يلتهم" جميع موارد التنمية؟
فكر في فريق من المبرمجين يكون عدد المشاركين فيه ثابتًا. حصة من وقت عملهم () يتم إنفاقه على تطوير كود جديد، والحصة المتبقية من الوقت يذهب لدعم. ضمن فرضيات النموذج، نفترض أن النوع الأول من النشاط يهدف إلى زيادة حجم الكود، والثاني يهدف إلى تغييره (تصحيح الأخطاء) وليس له تأثير كبير على حجم الكود.
دعونا نشير كامل كمية التعليمات البرمجية المكتوبة حتى تلك النقطة الزمنية . بافتراض أن سرعة كتابة التعليمات البرمجية متناسبة حصلنا على:
من الطبيعي أن نفترض أن تكاليف العمالة لصيانة الكود تتناسب مع حجمه:
أو
من أين
نحصل على معادلة تفاضلية يمكن دمجها بسهولة. إذا كان مقدار الكود في اللحظة الأولى من الزمن صفرًا، إذن
في وظيفة و . وهذا يعني التخفيض التدريجي بمرور الوقت في تطوير الوظائف الجديدة إلى الصفر ونقل جميع الموارد للدعم.
ومع ذلك، إذا كان خلال ذلك الوقت يصبح الكود قديمًا ويتوقف دعمه، ثم مقدار الكود الذي يتطلب الدعم في كل مرة يساوي بالفعل ثم
а هو حل لمعادلة تفاضلية ذات وسيطة متخلفة [1]:
يتم تحديد حل هذه المعادلة بشكل فريد من خلال تحديد القيم "قبل بداية الوقت" . نظرًا لأن الكود لم يتم كتابته بعد قبل اللحظة الأولى من الزمن، في حالتنا في .
دعونا نلقي نظرة على بعض الأمثلة. سنقيس الوقت بالسنوات، وكمية التعليمات البرمجية بآلاف الأسطر. ثم ل قيم ترتيب العشرات مقبولة، وسوف نأخذ 50 و 100. أي أنه في غضون عام سيكتب فريق التطوير خمسين ومائة ألف سطر من التعليمات البرمجية، على التوالي. ل القيم المقبولة قد تكون: , , . وهذا يعني أن فريق التطوير يمكنه دعم كمية التعليمات البرمجية التي يكتبها خلال عام، سواء كان ذلك لمدة ربع سنة أو نصف أو بدوام كامل. كمتوسط عمر الكود، سنضع القيم التالية: 1، 2، 4 سنوات. وبحل المعادلة عدديا نحصل على أمثلة لسلوك الدالة لبعض مجموعات المعلمات .
سلوك الوظيفة مع تقدم الكود، فقد تغير. ولم تعد الوظيفة رتيبة، بل "تهدأ" التقلبات مع مرور الوقت، وهناك ميل إلى إلى بعض القيمة الثابتة. تظهر الرسوم البيانية: أكثر , и أي أنه كلما كان عمر التعليمات البرمجية أبطأ، كلما كان تطوير تعليمات برمجية جديدة أسرع، وانخفضت جودة التعليمات البرمجية، وقل عدد الموارد المتبقية لتطوير وظائف جديدة. وكانت هناك رغبة في إعطاء مثال واحد على الأقل فيه "متحاضن" بالقرب من الصفر. لكن هذا يتطلب اختيار مؤشرات جودة تطوير سيئة للغاية ورمز لا يتقادم لفترة طويلة. وحتى في الرسم البياني السفلي الأيسر، يظل هناك قدر كبير من الموارد للوظيفة الجديدة. لذلك، فإن الإجابة الصحيحة على السؤال الأول هي بالأحرى: من الناحية النظرية - نعم، من الممكن؛ عمليا - بالكاد.
أسئلة لم أستطع الإجابة عليها:
- هل صحيح أن يميل إلى حد ما في للجميع ؟ إذا لم يكن للجميع، إذن لأي منهم؟
- إذا كان هناك حد، فكيف تعتمد قيمته ?
السؤال الثاني. هل يمكن أن تؤدي صيانة الكود إلى نمو غير محدود في عدد المبرمجين؟
دعونا نشير عدد المبرمجين المشاركين في تطوير التعليمات البرمجية الجديدة. على النحو الوارد أعلاه، — مقدار التعليمات البرمجية المكتوبة حتى نقطة زمنية معينة . ثم
اجعل دعم التعليمات البرمجية مشغولاً المبرمجين. مع الأخذ في الاعتبار رمز الشيخوخة،
من أين
إذا ثم
وبالتالي، فإن الإجابة على السؤال الثاني سلبية: إذا كان عدد مطوري التعليمات البرمجية الجديدة محدودا، فعندئذ في ظروف شيخوخة التعليمات البرمجية، لا يمكن أن يتسبب الدعم في زيادة غير محدودة في عدد المبرمجين.
اختتام
النماذج التي تم النظر فيها هي نماذج رياضية "ناعمة" [2]. إنها بسيطة جدًا. ومع ذلك فإن اعتماد نتائج المحاكاة على قيم المعلمات يتوافق مع ما هو متوقع للأنظمة الحقيقية، وهذا يتحدث لصالح كفاية النماذج والدقة الكافية للحصول على تقديرات عالية الجودة.
مراجع
1. إلسجولتس إل إي، نوركين إس.بي. مقدمة لنظرية المعادلات التفاضلية ذات الحجج المنحرفة. موسكو. دار النشر "العلم". 1971.
2. أرنولد ف. النماذج الرياضية "الصعبة" و"الناعمة". موسكو. دار النشر MCNMO. 2004.
المصدر: www.habr.com