موضوع مقاله: معیار نرم‌افزار ای‌بی‌سی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # معیار نرم‌افزار ای‌بی‌سی | مقدمه: معیار نرم‌افزار ای‌بی‌سی توسط جری فیتزپاتریک در سال ۱۹۹۷ برای غلبه بر کاستی‌های LOC معرفی شد. | ## بخش 1: معیار نرم‌افزار ای‌بی‌سی | این معیار نمرهٔ ای‌بی‌سی را به عنوان یک متغیر سه‌گانه تعریف می‌کند که اندازهٔ مجموعه ای از دستورهای کد منبع (source code) را نشان می‌دهد. نمرهٔ ای‌بی‌سی با شمارش تعداد انتساب‌ها (حرف اِی (A ، تعداد تکالیف (حرف بی (B و تعداد شرطی‌ها (حرف سی (C در یک برنامه محاسبه می‌شود. نمرهٔ ای‌بی‌سی را می‌توان برای روش‌ها، توابع، کلاس‌ها، ماژول‌ها یا پرونده‌های جداگانه در یک برنامه اعمال کرد. نمرهٔ ای‌بی‌سی با بردار سه بعدی <تکالیف (A)، شاخه‌ها (B)، شرطی‌ها (C)> نشان داده می‌شود. همچنین می‌تواند به عنوان یک متغیر اسکالر (scalar) معرفی شود، که اندازه ای برداری است، و به صورت زیر محاسبه می‌شود: طبق قرارداد، مقدار ای‌بی‌سی به نزدیکترین دهم گرد می‌شود. تاریخچه مفهوم اندازه‌گیری حجم یک نرم‌افزار برای اولین بار توسط موریس هالستید از دانشگاه پردو در سال ۱۹۷۵ مطرح شد. او به این نتیجه رسید که تعداد عملگر و عملوندهای منحصر به فرد می‌تواند ابزاری برای اندازه‌گیری حجم برنامه باشد. تعداد خطوط کد (Lines of code) یا LOC یکی دیگر از معیارهای محبوب حجم برنامه بود ولی به عنوان اندازه‌گیری دقیق اندازه برنامه در نظر گرفته نشده بود، زیرا وابسته به نوع و سبک نگارش کدزنی بود. اما محاسبات این روش نه در مورد عملکرد برنامه و نه در مورد روال‌هایی که در برنامه دخیل بودند اطلاعاتی ارائه نمی‌داد. با این حال، از نمره معیار عملکرد می‌توان برای تکمیل نمره ای‌بی‌سی نیز استفاده کرد. گرچه مؤلف ادعا می‌کند که این معیار حجم را اندازه‌گیری می‌کند، برخی معتقدند که معیاری برای سنجش پیچیدگی است. البته توانایی معیار ای‌بی‌سی برای سنجش پیچیدگی وابسته به تعریف ما از پیچیدگی دارد. تعریف سه بخش زیر نمرهٔ معیار ای‌بی‌سی را تعریف می‌کنند: انتساب: ذخیره یا انتقال داده‌ها به یک متغیر. | ## بخش 2: معیار نرم‌افزار ای‌بی‌سی | از آنجا که زبانهای پایه مانند java ,C++ ،C و غیره فقط عملیاتی مانند انتساب متغیرها، فراخوانی توابع و شرایط آزمایش دارند، نمرهٔ ای‌بی‌سی با این مولفه تعیین می‌شود. اگر برای یک زیرروال بردار ای‌بی‌سی به عنوان <۵٬۱۱٬۹> نشان داده شود، به این معنی است که زیرروال دارای ۵ انتساب، ۱۱ شاخه و ۹ شرط است. برای استانداردسازی، شمارش‌ها باید در براکت‌های زاویه ای یا <> محصور شده و با همان ترتیب در نمادهای <A, B, C> نوشته شوند. تعداد هر معیار ای‌بی‌سی مشخص است، بنابراین طبق سخن جری فیتزپاتریک ما این سه بخش را متعامد می‌دانیم که اجازه می‌دهد اندازه ای‌بی‌سی مقیاسی همان‌طور که در بالا نشان داده شده محاسبه شود. به جای محاسبهٔ اندازهٔ بردار، مجموع وزن بردارها می‌تواند مقایسه دقیق تری از حجم برنامه ارائه دهد. با این حال نمرات مقیاس ای‌بی‌سی نباید بدون بردارهای همراه ای‌بی‌سی ارائه شود، زیرا مقادیر اسکالر نمایانگر اندازه نیستند. نظریه قواعد خاص برای شمارش مقادیر بردار ای‌بی‌سی به دلیل تفاوت معنایی بین آنها، باید برای زبانهای مختلف متفاوت تفسیر شود. قواعد ای‌بی‌سی برای C قواعد زیر تعداد انتساب‌ها، شاخه‌ها و شرایط را در معیار ای‌بی‌سی برای زبان C نشان می‌دهد: افزایش شمارندهٔ انتساب هنگام: وقوع یک اپراتور انتساب (=، * =، / =، ٪ =، + =، <<=،>> =، & = ، =، ^ =). افزایش شمارندهٔ شاخه هنگام: وقوع فراخوانی عملکرد وقوع هر عبارت goto که در سطح لانه سازی یا nesting هدفی عمیق‌تر از سطحی که به آن ارجاع شده داشته باشد. قواعد ای‌بی‌سی برای ++C قواعد زیر تعداد انتساب‌ها، شاخه‌ها، شرایط را در معیار ای‌بی‌سی برای زبان C++ نشان می‌دهد: افزایش شمارندهٔ انتساب هنگام: وقوع یک اپراتور انتساب (منحصر کردن تعریف یک متغیر ثابت و انتساب پارامترها پیش فرض) (=، * =، / =، ٪ =، + =، <<=،>> =، & = ، =، ^ =). افزایش شمارندهٔ شرطی هنگام: وقوع یک عملگر شرطی (<،>، <= ،> = == =) وقوع کلمات کلیدی زیر («دیگری»، «مورد»، «پیش فرض»، «؟»، «سعی کنید»، «گرفتن»). قواعد ای‌بی‌سی برای Java قواعد زیر تعداد انتساب‌ها، شاخه‌ها و شرط‌ها را در معیار ای‌بی‌سی برای زبان جاوا نشان می‌دهد: افزایش شمارندهٔ انتساب هنگام: وقوع یک اپراتور انتساب (منحصر کردن تعریف یک متغیر ثابت و انتساب پارامترهای پیش فرض) (=، * =، / =، ٪ =، + =، <<=،>> =، & = ، =، ^ =،>>> =). افزایش شمارندهٔ شرطی هنگام: وقوع یک عملگر شرطی (<،>، <= ،> = == =) وقوع کلمات کلیدی زیر («دیگری»، «مورد»، «پیش فرض»، «؟»، «سعی کنید»، «گرفتن»). | ## بخش 3: معیار نرم‌افزار ای‌بی‌سی | برنامه‌های کاربردی استقلال از سبک کدزنی از آنجا که معیار نمره ای‌بی‌سی بر اساس این ایده ساخته شده‌است که وظایفی مانند ذخیره داده، انشعاب و آزمایش شرطی در آن موجود باشند، این معیار مستقل از سبک برنامه‌نویسی کاربر است. تخمین زمان پروژه محاسبهٔ نمرهٔ ای‌بی‌سی در تخمین زمان مورد نیاز برای تکمیل پروژه کمک می‌کند. این می‌تواند با تخمین تقریبی نمره ای‌بی‌سی برای پروژه و با محاسبهٔ نمرهٔ ای‌بی‌سی برنامه در یک روز خاص انجام شود. با تقسیم نمرهٔ ای‌بی‌سی پروژه بر نمرهٔ ای‌بی‌سی حاصل در یک روز، می‌توان مدت زمان لازم برای اتمام پروژه را بدست آورد. محاسبهٔ نرخ اشکال نرخ اشکال در ابتدا به صورت تعداد مشکل تفسیم بر خطوط کد محاسبه می‌شد. با این حال، LOC معیار قابل اعتمادی برای اندازه برنامه نیست زیرا به سبک کدگذاری بستگی دارد. یک روش دقیق تر برای اندازه‌گیری میزان اشکال و شمارش تعداد اشکال تقسیم بر نمرهٔ ای‌بی‌سی است. مقایسهٔ برنامه برنامه‌های نوشته شده به زبان‌های مختلف را می‌توان با کمک نمرات ای‌بی‌سی مقایسه کرد زیرا بیشتر زبان‌ها از انتساب‌ها، شاخه‌ها و عبارات شرطی استفاده می‌کنند. اطلاعات مربوط به شمارش پارامترهای منفرد (تعداد تخصیص‌ها، شاخه‌ها و شرایط) می‌تواند به طبقه‌بندی برنامه به عنوان «داده قوی» یا «عملکرد قوی» یا «منطق قوی» کمک کند. فرم برداری از نمره ای‌بی‌سی می‌تواند بینشی در مورد اصول رانندگی در پشت برنامه ایجاد کند، در حالی که جزئیات در فرم اسکالر نمره گم می‌شوند. معیار خطی نمرات ای‌بی‌سی خطی هستند، بنابراین می‌توان هر پرونده، ماژول، کلاس و عملکرد یا روش را نمره گذاری کرد. | ## جمع‌بندی | به عنوان مثال، نمرهٔ ای‌بی‌سی (حالت برداری) برای یک ماژول مجموع نمرات زیر ماژول‌های آن است.