سؤال

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

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

أي نوع من ارتكاب تحليل (ارتكاب التعليقات (المذكورة أدناه) أو الوقت بين يلزم) هو عادل البيانات إلى تطبيق ؟

تحديث: أعتقد الأبعاد تحليل ربما يكون على أساس السن.نسبة إلى أن يكون قليلا أكثر صعوبة.القانون القديم الفاسد.متوسط عمر كل سطر من التعليمات البرمجية لا تزال مجرد تدبير من الوقت.لا أكبر مصدر وحدة تعفن أسرع من أصغر وأكثر تعقيدا ؟

التحديث مدونة التغطية يتم قياسها في خطوط.تنفيذ التعليمات البرمجية في كثير من الأحيان يجب أن بالتعريف تكون أقل الفاسد من رمز لم يتم تنفيذها.لقياس بدقة bitrot سوف تحتاج تحليل التغطية بمثابة المثبط.

هل كانت مفيدة؟

المحلول 5

الجواب الواضح هو لا.BItrot ليس لديها أي قبول الأبعاد.

نصائح أخرى

مثيرة جدا للاهتمام قطار الفكر!

أول ما هو bitrot?على برنامج تعفن المقالة في ويكيبيديا بجمع بعض النقاط:

  • تغير البيئة:التغييرات في وقت التشغيل
  • رمز غير المستخدمة:التغيرات في أنماط الاستخدام
  • نادرا ما يتم تحديث التعليمات البرمجية:التغييرات من خلال الصيانة
  • إعادة بيع ديون:طريقة الجذعية bitrot

قبل قانون مور, delta(CPU)/delta(t) عامل ثابت اثنين من كل 18 إلى 24 شهرا.منذ البيئة يحتوي على أكثر من وحدة المعالجة المركزية ، وأود أن نفترض أن هذه النماذج فقط ضعيفة جدا الأدنى على التغيير الفعلي في البيئة. الوحدة:العمليات/$/s, تغيير في العمليات في الثانية الواحدة لكل دولار مع مرور الوقت

delta(users)/delta(t) من الصعب تحديد, ولكن الأدلة في تواتر حدوث عبارة "عصر المعرفة" في الأخبار ، أود أن أقول أن توقعات المستخدمين تنمو باطراد أيضا.من خلال النظر في تطوير $/flops الاقتصاد الأساسية يخبرنا أن العرض ينمو بوتيرة أسرع من الطلب ، مما يتيح قانون مور كما العلوية لا بد من تغيير المستخدم.سوف تستخدم نقاط مهمة ("مبلغ من الأعمال وظائف نظام معلومات يوفر على المستخدم") كإجراء من متطلبات. الوحدة:FP/s, تغيير في الوظيفة المطلوبة نقطة مرور الوقت

delta(maintenance)/delta(t) يعتمد تماما على المنظمة و عادة ما تكون عالية جدا على الفور قبل الإفراج عنهم ، عندما إصلاحات سريعة من خلال دفع و عند دمج تغييرات كبيرة.تغييرات على التدابير المختلفة مثل المعني ، خط التماس, Cyclomatic تعقيد أو تنفيذ النقاط المهمة مع مرور الوقت يمكن استخدامها باعتبارها تقف هنا.احتمال آخر أن يكون علة التغير في نظام التذاكر ، إذا كانت متوفرة.سأبقى مع تنفيذ النقاط الدالة على مر الزمن. الوحدة = FP/s, تغيير في تنفيذ النقاط الدالة على مر الزمن

delta(refactoring)/delta(t) ويمكن قياس الوقت المستغرق لا تنفيذ الميزات الجديدة. الوحدة = 1, الوقت الذي يقضيه إعادة بيع ديون مرور الوقت

حتى bitrot سيكون

             d(env)     d(users)     d(maint)        d(t)
bitrot(t) = -------- * ---------- * ---------- * ----------------
              d(t)        d(t)        d(t)        d(refactoring)

             d(env) * d(users) * d(maint)
          = ------------------------------
                d(t)² * d(refactoring)

جنبا إلى جنب مع وحدة OPS/$/s * FP/s * FP/s = (OPS*FP²) / ($*s³).

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

أنا أختلف مع تشارلي:ثانوية إعادة بيع ديون رمز املصدر يمكن أن يؤدي كبيرة جدا المبالغة المسافات, و لا مقياس درجة وقد رمز منطقيا تعديل.

وأود أن تنظر وتبحث في طول ارتكاب التعليقات.معين مبرمج, طويل نسبيا ارتكاب التعليق عادة ما يشير إلى أن جعلوا تغيير كبير على القانون.

ماذا عن أبسط ممكن الجواب ؟

foreach (file in source control){
  file.RotLevel = (Time.Now - file.LastTestedOrDeployed)
}

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

فقط لا لبس فيها عامل يمكنني التفكير به هو "كم مر من الوقت منذ آخر مرة تم التحقق من أن الملف عملت?"

أنا أتذكر الأدلة على أساس جدولة.تأتي مع مجموعة من المعقول المقاييس تشير إلى bitrot (كلا إنها القيمة الفعلية وكم كان بمقدار معين التغيير).ثم تحديد مدى دقة لأنها تستند إلى الوقت الذي يقضيه في وقت لاحق.تأتي مع الأرقام والقواعد وربما هذا هو معقد.

معكوس نسبة عدد وحدة الاختبارات إلى إجمالي خطوط من التعليمات البرمجية ؟

نفكر في اثنين من التدابير الممكنة:تحرير الاختلافات ، مثل المبالغة أو فاغنر بعد ؛ و المعلومات-نظرية الكون.

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

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

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

مشكلتي الوحيدة مع مدونة التغطية وحدة الاختبارات هو أن وحدة الاختبارات اختبار فقط ما أنها كانت مصممة أصلا لاختبار, وهم, بحكم التعريف, هي رمز عرضة نفس البرامج الفنية-التعفن الذي اصاب العادية رمز.(فهي جيدة فقط ما هي مكتوبة و بعد حين, هذا لا يكفي)

ولكن ذات جودة عالية وحدة الاختبارات سيكون من الواضح أن توفر بعض الحماية.

لذلك هذه هي العوامل الهامة للحصول على البرنامج تعفن:

  1. عدد من البيانات الخارجية واجهة نقطة (extDataIntfPts)
    • نوعية البيانات/معالجة الأخطاء ، وحدة الاختبارات (codeQuality)
    • الاعتماد على الأساسية تطبيقات مثل نظام التشغيل/VM.(osDep)
    • عدد من الخارجية تنفيذ واجهة نقطة مثل الإضافات.(extIntfPts)
    • تعقيد الكود/تخزين بسيطة من التعليمات البرمجية (linesOfCode)

كنظام حياة في الإنتاج ، فإنه يتعرض إلى أكبر مجموعة متنوعة من البيانات مدخلات البيانات التي جمعتها ينمو.هذا تعريف يعرض برنامج إلى عدد أكبر من الحالات الحافة و تسلسل.

هذا يمكن تخفيفها عن طريق نوعية معالجة البيانات ، معالجة الخطأ ، وحدة الاختبارات.

هناك أيضا الأهداف المتحركة الأساسية البيئة التي يعمل بها النظام في.طريقة واحدة أن هذا الاعتدال هو وضع التطبيق في VM.

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

التعليمات البرمجية المعقدة != كود أنيقة.إذا كانت أنيقة, ربما بسيطة.انا معك في نقطة بسيطة هنا أن أكثر هو أقل احتمالا أن يتم اختباره بشكل جيد, ولكن أعتقد أنه يمكن استدار.

حتى هنا هو بلدي المعادلة:

bitrot=((linesofcode/codeQuality)*(extDataInfPts+(osDep/change)+extIntfPts)*numberOfSecondsDeployed)

الحكم codeQuality قد تنطوي على قياس ما في المدونة التغطية في وحدة الاختبارات.هل يمكن تشغيل ثابت تحليل البرنامج ضدها لتحديد الخلل المحتملة و التي من المحتمل أن تكون بعض المساعدة أيضا.أعني في مرحلة ما ، فإنه من الصعب حقا أن النتيجة لأنه متعدد خيوط رمز يجب أن تكون مرجحة الكثير أثقل من POJO.ونعم إعادة بيع ديون يجب أن يكون أحسب ، حيث هناك أدلة من البرامج تعفن.

في النهاية هذا العلم الزائف.هنا هو بلدي مساهمة العلوم الزائفة.

الحقيقي bitrot (وليس البرامج تعفن) وقد الأبعاد المادية حجم التخزين * الوقت.

Bitrot بسبب الاضمحلال الإشعاعي من الشوائب في التخزين المتوسط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top