مقياس برمجيات ABC  تم تقديم مقياس برمجيات ABC بواسطة جيري فيتزباتريك في عام 1997 للتغلب على عيوب LOC. يحدد المقياس درجة ABC على أنها ثلاثية القيم التي تمثل حجم مجموعة من عبارات التعليمات البرمجية المصدر. يتم حساب درجة ABC عن طريق حساب عدد التعيينات (A)، وعدد الفروع (B)، وعدد الشروط (C) في البرنامج. يمكن تطبيق درجة ABC على الطرق أو الوظائف أو الدالات أو الأصناف أو البرمجة التركيبية داخل البرنامج.  يتم تمثيل نقاط ABC بواسطة متجه ثلاثي الأبعاد <التعيينات (A)، الفروع (B)، الشروط (C)>. يمكن أيضًا تمثيلها كمقدار تدريجي، وهي حجم المتجه <التعيينات (A)، الفروع (B)، الشروط (C)>، ويتم حسابها على النحو التالي:  formula_1  حسب التقاليد، يتم تقريب قيمة حجم ABC إلى أقرب عشر.  تم تقديم مفهوم قياس حجم البرمجيات لأول مرة من قبل موريس هالستيد من جامعة بوردو في عام 1975. واقترح أن كل برنامج حاسوب يتكون بشكل رئيسي من الرموز: المشغلين والمعاملات. وخلص إلى أن إحصاء عدد المشغلين والمعاملات الفريدة يعطينا قياسًا لحجم البرنامج. ومع ذلك، لم يتم اعتماد هذا كمقياس لحجم البرنامج. كانت عدد أسطر الشيفرة مقياسًا شائعًا آخر لحجم البرنامج. لم يتم اعتبار عدد أسطر الشيفرة مقياسًا دقيقًا لحجم البرنامج لأنه حتى البرنامج ذي الوظائف المتطابقة قد يحتوي على عدد مختلف من الأسطر اعتمادًا على أسلوب الترميز.   يهدف مقياس برمجيات ABC إلى التغلب على عيوب عدد أسطر الشيفرة ونقطة الوظيفة والرموز المميزة (التشغيل والمعامل). ومع ذلك، يمكن أيضًا استخدام درجة نقطة الوظيفة لتكملة درجة ABC.  على الرغم من أن المؤلف يؤكد أن مقياس ABC يقيس الحجم، يعتقد البعض أنه يقيس التعقيد. تعتمد قدرة مقياس ABC على قياس التعقيد على كيفية تعريف التعقيد.  يتم تعريف المكونات الثلاثة لدرجة ABC على النحو التالي:   نظرًا لأن اللغات الأساسية مثل سي وسي++ وجافا وما إلى ذلك. عمليات مثل تعيينات المتغيرات واستدعاءات الوظائف وظروف الاختبار فقط، درجة ABC لديها هذه المكونات الثلاثة.  إذا تم تحديد متجه ABC كـ <5، 11، 9> للدالة الفرعية، فهذا يعني أن الدالة الفرعية تحتوي على 5 تعييينات و11 فرعاً و9 شروط. لأغراض التوحيد القياسي، يجب وضع الأعداد في أقواس زاوية وكتابتها بنفس الترتيب وفقًا للرمز <C ،B ،A>.  غالبًا ما يكون من الأسهل مقارنة أحجام شيفرة المصدر باستخدام قيمة قياسية. تعداد ABC الفردي مميز لذلك، وفقًا لجيري فيتزباتريك، نعتبر المكونات الثلاثة متعامدة، مما يسمح بحساب حجم ABC العددي كما هو موضح أعلاه.  تخسر عشرات مدرجات ABC بعض فوائد الناقل. بدلاً من حساب حجم المتجه، قد يدعم المجموع المرجح للمتجهات مقارنة أكثر دقة للحجم. لا يجب تقديم نتائج ABC العددية بدون ناقلات ABC المصاحبة، لأن القيم العددية ليست التمثيل الكامل للحجم.  يجب تفسير القواعد المحددة لحساب قيم متجه ABC بشكل مختلف للغات المختلفة بسبب الاختلافات الدلالية بينها.  لذلك، تختلف قواعد حساب متجه ABC قليلاً بناءً على اللغة. نحدد قواعد حساب مقياس ABC لسي وسي++ وجافا أدناه. وبناءً على هذه القواعد، يمكن تفسير قواعد اللغات الحتمية الأخرى.  توضح القواعد التالية عدد التعيينات والفروع والشروطات في مقياس ABC لـسي:   توضح القواعد التالية عدد التعيينات والفروع والشروطات في مقياس ABC لسي++:   توضح القواعد التالية عدد التعيينات والفروع والشروط في مقياس ABC لجافا:   نظرًا لأن مقياس نقاط ABC مبني على فكرة أن مهام مثل تخزين البيانات والتفرع والاختبار المشروط، فإن هذا المقياس مستقل عن نمط الترميز الخاص بالمستخدم.  يساعد حساب نقاط ABC في تقدير مقدار الوقت اللازم لإكمال المشروع. يمكن القيام بذلك عن طريق تقدير درجة ABC للمشروع تقريبًا، وحساب درجة ABC للبرنامج في يوم معين. يمكن الحصول على مقدار الوقت المستغرق لإنجاز المشروع عن طريق قسمة درجة ABC للمشروع على درجة ABC التي تحققت في يوم واحد.  تم حساب معدل الخطأ في الأصل على أنه عدد الأخطاء / LOC. ومع ذلك، فإن LOC ليس مقياسًا موثوقًا لحجم البرنامج لأنه يعتمد على أسلوب الترميز. طريقة أكثر دقة لقياس معدل الأخطاء هي حساب عدد الأخطاء / درجة ABC.  يمكن مقارنة البرامج المكتوبة بلغات مختلفة بمساعدة درجات ABC لأن معظم اللغات تستخدم التعيينات والفروع والبيانات الشرطية.  معلومات عن عدد المعلمات الفردية (عدد التعيينات والفروع والشروط) يمكن أن يساعد في تصنيف البرنامج على أنه «بيانات قوية» أو «وظائف قوية» أو «قوية المنطق». يمكن أن يوفر الشكل المتجهي لدرجة ABC نظرة ثاقبة على مبادئ القيادة وراء التطبيق، في حين يتم فقدان التفاصيل في الشكل القياسي للنتيجة.  درجات ABC خطية، لذلك يمكن تسجيل أي ملف أو وحدة أو فئة أو وظيفة أو طريقة. على سبيل المثال، درجة ABC (المتجه) للوحدة النمطية هي مجموع درجات وحداتها الفرعية. درجات ABC العددية، مع ذلك، غير خطية.