ABC Software Metric - ABC Software Metric

ABC dasturiy metrikasi Jerri Fitspatrik tomonidan 1997 yilda LOCning kamchiliklarini bartaraf etish uchun kiritilgan.[1] Metrik ABC balini manba kodlari to'plamlari hajmini ifodalovchi qiymatlarning uchligi sifatida belgilaydi. ABC ballari sonini hisoblash orqali hisoblanadi topshiriqlar (A), soni filiallar (B) va soni shartli (C) dasturda. ABC balli individual uchun qo'llanilishi mumkin usullari, funktsiyalari, sinflar, modullar yoki fayllar dastur doirasida.

ABC ballari a bilan ifodalanadi 3-o'lchovli vektor . Bundan tashqari, a sifatida ifodalanishi mumkin skalar qiymati, ya'ni kattalik vektorning va quyidagicha hisoblanadi:

Konventsiya bo'yicha ABC kattaligi o'ndan bir qismigacha yaxlitlanadi.

Tarix

Dasturiy ta'minot hajmini o'lchash kontseptsiyasi birinchi marta Moris Xolstid tomonidan kiritilgan[2] 1975 yilda Purdue Universitetidan. U har bir kompyuter dasturi asosan quyidagilardan iborat bo'lishini taklif qildi nishonlar: operatorlar va operandlar. U noyob operatorlar va operandlar sonini hisoblash bizga dastur hajmini o'lchash imkonini beradi degan xulosaga keldi. Biroq, bu dastur hajmining o'lchovi sifatida qabul qilinmadi.

Kod satrlari (LOC) dastur hajmining yana bir mashhur o'lchovi edi. LOC dastur hajmining aniq o'lchovi deb hisoblanmadi, chunki hattoki bir xil funktsionallikka ega dastur ham kodlash uslubiga qarab har xil satrlarga ega bo'lishi mumkin.[3]

Boshqa bir metrik Funktsiya nuqtasi (FP) metrikasi foydalanuvchi kiritish va chiqarish operatsiyalari sonini hisoblash uchun kiritilgan. Funktsional nuqta hisob-kitoblari na dasturning funktsional imkoniyatlari, na dasturda ishtirok etgan muntazam ishlar haqida ma'lumot bermadi.[4]

ABC metrikasi LOC, FP va token (operatsiya va operand) hisoblashning kamchiliklarini bartaraf etishga mo'ljallangan. Shu bilan birga, FP balidan ABC balini to'ldirish uchun ham foydalanish mumkin.

Muallif ABC metrikasi o'lchovni o'lchaydi deb da'vo qilsa ham, ba'zilari bu murakkablikni o'lchaydi, deb hisoblashadi.[5] ABC metrikasining murakkablikni o'lchash qobiliyati murakkablik qanday aniqlanganiga bog'liq.

Ta'rif

ABC balining uchta komponenti quyidagicha aniqlanadi:

C, C ++, Java va boshqalar kabi asosiy tillarda o'zgaruvchilarni tayinlash, funktsiyalarni chaqirish va sinov shartlari kabi operatsiyalar mavjud bo'lgani uchun, ABC skorida ushbu uchta komponent mavjud.[1]

Agar ABC vektori a uchun <5,11,9> deb belgilansa subroutine, demak, subroutinada 5 ta topshiriq, 11 ta filial va 9 ta shart mavjud. Standartlashtirish maqsadida hisoblar burchakli qavs ichiga olinishi va yozuvlari bo'yicha bir xil tartibda yozilishi kerak.

Skaler qiymatidan foydalanib, manba kodi o'lchamlarini solishtirish ko'pincha qulayroqdir. ABC-ning individual soni aniq, shuning uchun Jerri Fitspatrik uchun biz uchta komponentni ko'rib chiqamiz ortogonal, skaler ABC kattaligini yuqorida ko'rsatilgan tarzda hisoblashga imkon beradi.

Skalyar ABC ballari vektorning ba'zi afzalliklarini yo'qotadi. Vektor kattaligini hisoblash o'rniga tortilgan summa vektorlarning o'lchamlarini aniqroq taqqoslashni qo'llab-quvvatlashi mumkin. ABC skaler ballari ABC vektorlarisiz berilmasligi kerak, chunki skalar qiymatlari o'lchamning to'liq vakili emas.

Nazariya

ABC vektor qiymatlarini hisoblashning o'ziga xos qoidalari tufayli turli tillarda turlicha talqin qilinishi kerak semantik ular orasidagi farqlar.

Shuning uchun ABC vektorini hisoblash qoidalari tilga qarab bir oz farq qiladi. Biz C, C ++ va Java uchun ABC metrikasini hisoblash qoidalarini quyida aniqlaymiz. Ushbu qoidalar asosida boshqa imperativ tillar uchun qoidalar talqin qilinishi mumkin.[1]

C uchun ABC qoidalari

Quyidagi qoidalar ABC metrikasidagi Assignments, Branch, Conditionals sonini beradi C:

  1. Quyidagi hollarda topshiriq soniga bittasini qo'shing.
  2. Filiallar soniga bittasini qo'shing:
    • A ning paydo bo'lishi funktsiya chaqiruvi.
    • Har qanday narsaning paydo bo'lishi bordi yanada chuqurroq maqsadga ega bo'lgan bayonot uyalash goto darajasidan.
  3. Shartlarni hisoblash uchun bittasini qo'shing:
    • A ning paydo bo'lishi shartli operator (<, >, <=, >=, ==, !=).
    • Quyidagilar paydo bo'lishi kalit so'zlar (‘boshqa’, ‘ish’, ‘sukut bo'yicha’, ‘?’).
    • A ning paydo bo'lishi unary shartli operator.

C ++ uchun ABC qoidalari

Quyidagi qoidalar ABC metrikasidagi Assignments, Branch, Conditionals sonini beradi C ++:

  1. Quyidagi hollarda topshiriq soniga bittasini qo'shing.
    • Topshiriq operatorining paydo bo'lishi (bundan mustasno) doimiy deklaratsiyalar va sukut bo'yicha parametrlarni belgilash ) (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=).
    • O'sish yoki kamayish operatorining paydo bo'lishi (prefiks yoki postfiks) (++, --).
    • O'zgaruvchini yoki doimiy bo'lmaganni initsializatsiya qilish sinf a'zosi.
  2. Filiallar soniga bittasini qo'shing:
    • Funktsiya chaqiruvi yoki sinf usuli chaqiruvi paydo bo'lishi.
    • Goo darajasiga qaraganda chuqurroq uyalash maqsadiga ega bo'lgan har qanday goto bayonotining paydo bo'lishi.
    • "Yangi" yoki "o'chirish" operatorlarining paydo bo'lishi.
  3. Shartlarni hisoblash uchun bittasini qo'shing:
    • Shartli operatorning paydo bo'lishi (<, >, <=, >=, ==, !=).
    • Quyidagi kalit so'zlarning paydo bo'lishi (‘boshqa’, ‘ish’, ‘sukut bo'yicha’, ‘?’, ‘harakat qilib ko'ring’, ‘ushlamoq’).
    • Unary shartli operatorning paydo bo'lishi.

Java uchun ABC qoidalari

Quyidagi qoidalar ABC metrikasidagi Assignments, Branch, Conditionals sonini beradi Java:

  1. Quyidagi hollarda topshiriq soniga bittasini qo'shing.
    • Topshiriq operatorining paydo bo'lishi (doimiy deklaratsiyalar va standart parametrlarni belgilash bundan mustasno) (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=, >>>=).
    • O'sish yoki kamayish operatorining paydo bo'lishi (prefiks yoki postfiks) (++, --).
  2. Qachon filial soniga bittasini qo'shing
    • Funktsiya chaqiruvi yoki sinf usuli chaqiruvi paydo bo'lishi.
    • "Yangi" operatorning paydo bo'lishi.
  3. Shartlarni hisoblash uchun biriga quyidagilarni qo'shing:
    • Shartli operatorning paydo bo'lishi (<, >, <=, >=, ==, !=).
    • Quyidagi kalit so'zlarning paydo bo'lishi (‘boshqa’, ‘ish’, ‘sukut bo'yicha’, ‘?’, ‘harakat qilib ko'ring’, ‘ushlamoq’).
    • Unary shartli operatorning paydo bo'lishi.

Ilovalar

[1]

Kodlash uslubidan mustaqil

ABC ball metrikasi ma'lumotlar saqlash, tarmoqlanish va shartli kabi vazifalar degan fikrga asoslanib qurilganligi sababli sinov, ushbu metrik foydalanuvchi kodlash uslubidan mustaqil.

Loyiha vaqtini taxmin qilish

ABC balini hisoblash loyihani bajarish uchun zarur bo'lgan vaqtni taxmin qilishga yordam beradi. Buni taxminan loyiha bo'yicha ABC balini taxmin qilish va ma'lum bir kunda dasturning ABC balini hisoblash orqali amalga oshirish mumkin. Loyihani bajarish uchun sarflangan vaqt miqdorini loyihaning ABC balini bir kunda erishilgan ABC baliga bo'lish orqali olish mumkin.

Xatolarni hisoblash

The xato stavkasi dastlab quyidagicha hisoblanadi Xatolar soni / LOC. Biroq, LOC dastur hajmining ishonchli o'lchovi emas, chunki bu kodlash uslubiga bog'liq. Xatoliklarni aniqroq o'lchash usuli - Xatolar soni / ABC ballari.

Dasturni taqqoslash

Turli tillarda yozilgan dasturlarni ABC ballari yordamida taqqoslash mumkin, chunki aksariyat tillarda topshiriqlar, filiallar va shartli bayonotlar qo'llaniladi.

Ayrim parametrlarni hisoblash bo'yicha ma'lumotlar (topshiriqlar soni, filiallar va shartlar) dasturni "ma'lumotlar kuchli" yoki "funktsiya kuchli" yoki "mantiq kuchli" deb tasniflashga yordam beradi. ABC balining vektorli shakli orqada harakatlanish tamoyillari to'g'risida tushuncha berishi mumkin dastur, tafsilotlar skalyar shaklida yo'qoladi.

Lineer metrik

ABC ballari chiziqli, shuning uchun har qanday fayl, modul, sinf, funktsiya yoki usulni kiritish mumkin. Masalan, modul uchun (vektorli) ABC ko'rsatkichi uning pastki modullari yig'indisidir. Skalyar ABC ballari chiziqli emas.

Shuningdek qarang

Adabiyotlar

  1. ^ a b v d Fitspatrik, Jerri (1997). "ABC metrikasini C, C ++ va Java-ga qo'llash" (PDF). C ++ hisoboti.
  2. ^ Halstead, Maurice (1977). Dastur ilmi elementlari. Shimoliy Gollandiya: Elsevier.
  3. ^ Fenton, Norman E. (1991). "Dasturiy ta'minot ko'rsatkichlari: muvaffaqiyatlar, muvaffaqiyatsizliklar va yangi yo'nalishlar" (PDF). Chapman va Xoll.
  4. ^ Kitchenham, Barbara (1995 yil dekabr). "Dasturiy ta'minotni o'lchashni tasdiqlash doirasiga". Dasturiy injiniring bo'yicha IEEE operatsiyalari. 21 (12): 929–944. doi:10.1109/32.489070. S2CID  8608582.
  5. ^ Fitspatrik, Jerri (2017). "A ilova". Dasturiy ta'minotni ishlab chiqishning abadiy qonunlari. Dasturlarni yangilash korporatsiyasi. ISBN  978-0999335604.

Tashqi havolalar