Softwarová metrika ABC - ABC Software Metric
Softwarovou metriku ABC představil Jerry Fitzpatrick v roce 1997, aby překonal nevýhody LOC.[1] Metrika definuje skóre ABC jako triplet hodnot, které představují velikost sady příkazů zdrojového kódu. Skóre ABC se vypočítá spočítáním počtu úkoly (Počet větve (B) a počet podmíněné (C) v programu. Skóre ABC lze aplikovat na jednotlivce metody, funkce, třídy, moduly nebo soubory v rámci programu.
Skóre ABC je reprezentováno a 3D vektor
. Může být také reprezentován jako skalární hodnota, což je velikost vektoru
a počítá se takto:
Podle konvence se hodnota velikosti ABC zaokrouhlí na nejbližší desetinu.
Dějiny
Koncept měření velikosti softwaru poprvé představil Maurice Halstead[2] z Purdue University v roce 1975. Navrhl, aby každý počítačový program sestával hlavně z žetony: operátory a operandy. Došel k závěru, že počet jedinečných operátorů a operandů nám poskytuje měřítko velikosti programu. To však nebylo přijato jako měřítko rozsahu programu.
Řádky kódu (LOC) byl další populární měřítko velikosti programu. LOC nebyl považován za přesné měřítko velikosti programu, protože i program se stejnou funkčností může mít různý počet řádků v závislosti na stylu kódování.[3]
Další metrika se jmenovala Funkční bod Byla zavedena metrika (FP) pro výpočet počtu vstupních a výstupních transakcí uživatele. Výpočty funkčních bodů neposkytly informace o funkčnosti programu ani o rutinách, které byly do programu zapojeny.[4]
Metrika ABC je určena k překonání nevýhod počtů LOC, FP a tokenů (operace a operand). Skóre FP však lze použít také k doplnění skóre ABC.
Ačkoli autor tvrdí, že metrika ABC měří velikost, někteří věří, že měří složitost.[5] Schopnost metriky ABC měřit složitost závisí na tom, jak je složitost definována.
Definice
Tři složky skóre ABC jsou definovány takto:
- Přiřazení: uložení nebo přenos dat do a proměnná.
- Branches: an explicit forward program branch out of rozsah.
- Podmínky: Booleovský nebo logický test.
Protože základní jazyky jako C, C ++, Java atd. Mají pouze operace jako přiřazení proměnných, volání funkcí a testovací podmínky, skóre ABC má tyto tři komponenty.[1]
Pokud je vektor ABC označen jako <5,11,9> pro a podprogram, to znamená, že podprogram má 5 přiřazení, 11 větví a 9 podmíněných. Pro účely standardizace by počty měly být uzavřeny v lomených závorkách a zapsány ve stejném pořadí podle notace .
Často je pohodlnější porovnávat velikosti zdrojového kódu pomocí skalární hodnoty. Jednotlivé počty ABC jsou odlišné, takže podle Jerryho Fitzpatricka považujeme tyto tři komponenty za ortogonální, což umožňuje vypočítat skalární velikost ABC, jak je uvedeno výše.
Skalární skóre ABC ztrácí některé výhody vektoru. Místo výpočtu velikosti vektoru je vážený součet vektorů může podporovat přesnější srovnání velikostí. Skalární skóre ABC by nemělo být prezentováno bez doprovodných vektorů ABC, protože skalární hodnoty nejsou úplnou reprezentací velikosti.
Teorie
Zvláštní pravidla pro počítání vektorových hodnot ABC by měla být interpretována odlišně pro různé jazyky kvůli sémantický rozdíly mezi nimi.
Proto se pravidla pro výpočet vektoru ABC mírně liší podle jazyka. Níže definujeme pravidla výpočtu metrických ABC pro C, C ++ a Javu. Na základě těchto pravidel lze interpretovat pravidla pro jiné imperativní jazyky.[1]
Pravidla ABC pro C.
Následující pravidla udávají počet přiřazení, větví, podmíněných v metrice ABC pro C:
- Přidejte jeden do počtu přiřazení, když:
- Výskyt operátora přiřazení (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=).
- Výskyt přírůstek nebo operátor úbytku (++, --).
- Přidejte jeden do počtu větví, když:
- Výskyt a volání funkce.
- Výskyt jakékoli jít do prohlášení, které má cíl na hlubší úrovni hnízdění než úroveň do goto.
- Přidejte jednu do počtu podmínek, když:
- Výskyt a podmíněný operátor (<, >, <=, >=, ==, !=).
- Výskyt následujícího klíčová slova (‘jiný’, ‘případ’, ‘výchozí’, ‘?’).
- Výskyt a unární podmíněný operátor.
Pravidla ABC pro C ++
Následující pravidla udávají počet přiřazení, větví, podmíněných v metrice ABC pro C ++:
- Přidejte jeden do počtu přiřazení, když:
- Výskyt operátora přiřazení (vyloučit konstantní deklarace a výchozí přiřazení parametrů ) (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=).
- Výskyt operátoru přírůstku nebo dekrementu (prefix nebo postfix) (++, --).
- Inicializace proměnné nebo nekonstantní člen třídy.
- Přidejte jeden do počtu větví, když:
- Výskyt volání funkce nebo volání metody třídy.
- Výskyt jakéhokoli příkazu goto, který má cíl na hlubší úrovni vnoření než na úroveň goto.
- Výskyt operátorů „nový“ nebo „smazat“.
- Přidejte jednu do počtu podmínek, když:
- Výskyt podmíněného operátora (<, >, <=, >=, ==, !=).
- Výskyt následujících klíčových slov („jiný’, ‘případ’, ‘výchozí’, ‘?’, ‘Snaž se’, ‘chytit’).
- Výskyt unárního podmíněného operátoru.
Pravidla ABC pro Javu
Následující pravidla udávají počet přiřazení, větví, podmíněných v metrice ABC pro Jáva:
- Přidejte jeden do počtu přiřazení, když:
- Výskyt operátoru přiřazení (vyloučit konstantní deklarace a výchozí přiřazení parametrů) (=, *=, /=, %=, +=, <<=, >>=, &=, !=, ^=, >>>=).
- Výskyt operátoru přírůstku nebo dekrementu (prefix nebo postfix) (++, --).
- Přidejte jednu do počtu větví, když
- Výskyt volání funkce nebo volání metody třídy.
- Výskyt „nového“ operátora.
- Přidejte jednu do počtu podmínek, když:
- Výskyt podmíněného operátora (<, >, <=, >=, ==, !=).
- Výskyt následujících klíčových slov („jiný’, ‘případ’, ‘výchozí’, ‘?’, ‘Snaž se’, ‘chytit’).
- Výskyt unárního podmíněného operátoru.
Aplikace
Nezávisle na stylu kódování
Protože metrika skóre ABC je postavena na myšlence, že úkoly jako ukládání dat, větvení a podmíněnost testování, tato metrika je nezávislá na stylu kódování uživatele.
Odhad času projektu
Výpočet skóre ABC pomáhá odhadnout dobu potřebnou k dokončení projektu. Toho lze dosáhnout zhruba odhadem skóre ABC pro projekt a výpočtem skóre ABC programu v konkrétní den. Čas potřebný k dokončení projektu lze získat vydělením skóre ABC projektu a skóre ABC dosaženého za jeden den.
Výpočet míry chyb
The Chyba sazba byla původně vypočtena jako Počet chyb / LOC. LOC však není spolehlivým měřítkem velikosti programu, protože závisí na stylu kódování. Přesnějším způsobem měření rychlosti chyb je počítání - Počet chyb / skóre ABC.
Porovnání programu
Programy napsané v různých jazycích lze srovnávat pomocí skóre ABC, protože většina jazyků používá úkoly, větve a podmíněné příkazy.
Informace o počtu jednotlivých parametrů (počet úkolů, větví a podmínek) mohou pomoci klasifikovat program jako „silný na data“ nebo „silný na funkce“ nebo „silný na logiku“. Vektorová forma skóre ABC může poskytnout pohled na principy řízení za aplikace, zatímco podrobnosti jsou ztraceny ve skalární podobě skóre.
Lineární metrika
Výsledky ABC jsou lineární, takže lze zaznamenat jakýkoli soubor, modul, třídu, funkci nebo metodu. Například (vektorové) skóre ABC pro modul je součtem skóre jeho dílčích modulů. Skalární skóre ABC jsou však nelineární.
Viz také
- Složitost softwaru
- Měření složitosti Halstead
- Cyklomatická složitost
- Složitost synchronizace
- Softwarová metrika
Reference
- ^ A b C d Fitzpatrick, Jerry (1997). „Applying the ABC metric to C, C ++ and Java“ (PDF). Zpráva v C ++.
- ^ Halstead, Maurice (1977). Prvky softwarové vědy. Severní Holandsko: Elsevier.
- ^ Fenton, Norman E. (1991). „Softwarové metriky: úspěchy, selhání a nové směry“ (PDF). Chapman & Hall.
- ^ Kitchenham, Barbara (prosinec 1995). "Směrem k rámci pro validaci měření softwaru". Transakce IEEE v softwarovém inženýrství. 21 (12): 929–944. doi:10.1109/32.489070. S2CID 8608582.
- ^ Fitzpatrick, Jerry (2017). "Příloha A". Nadčasové zákony vývoje softwaru. Software Renovation Corporation. ISBN 978-0999335604.