Metriken - Übersicht und Beschreibung

Spaltenabkürzung in der Ansicht „Standard-Metriken“

Beschreibung

Codegröße

Codegröße [Anzahl Bytes] ("Codegröße")

Variablengröße

Variablengröße [Anzahl Bytes] ("Variablengröße")

Stack-Größe

Stack-Größe [Anzahl Bytes] ("Stack-Größe")

Aufrufe

Anzahl Aufrufe ("Aufrufe")

Tasks

Anzahl der Aufrufe aus Tasks ("Tasks")

Globale

Unterschiedliche globale Variablen verwendet ("Globale")

EAs

Anzahl direkter Adresszugriffe ("EAs")

Lokale

Anzahl lokaler Variablen ("Lokale")

Eingänge

Anzahl Eingabevariablen ("Eingänge")

Ausgänge

Anzahl Ausgabevariablen ("Ausgänge")

NOS

Anzahl Anweisungen ("NOS")

Kommentare

Prozentsatz Kommentare ("Kommentare")

McCabe

Komplexität (McCabe) ("McCabe")

Prather

Verschachtelungskomplexität (Prather) ("Prather")

DIT

DIT - Tiefe des Vererbungsbaums ("DIT")

NOC

NOC - Anzahl Kindobjekte ("NOC")

RFC

RFC- Reaktion auf Klasse ("RFC")

CBO

CBO - Koppeln zwischen Objekten ("CBO")

Elshof

Referenzierungskomplexität (Elshof) ("Elshof")

LCOM

Mangelnder Zusammenhalt in Methoden (LCOM) ("LCOM")

n1 (Halstead)

Halstead – Anzahl unterschiedlicher verwendeter Operatoren (n1)

N1 (Halstead)

Halstead – Anzahl Operatoren (N1)

n2 (Halstead)

Halstead – Anzahl unterschiedlicher verwendeter Operanden (n2)

N2 (Halstead)

Halstead – Anzahl Operanden (N2)

HL (Halstead)

Halstead – Länge (HL)

HV (Halstead)

Halstead – Volumen (HV)

D (Halstead)

Halstead – Schwierigkeit (D)

AS-Verzweigungen (englisch: "SFC Branches")

Anzahl AS-Verzweigungen

AS-Schritte (englisch: "SFC Steps")

Anzahl AS-Schritte

 

Detaillierte Beschreibung

Codegröße [Anzahl Bytes] ("Codegröße")

Codegröße als Anzahl an Bytes.

Variablengröße [Anzahl Bytes] ("Variablengröße")

Variablengröße als Anzahl an Bytes.

Stack-Größe [Anzahl Bytes] ("Stack-Größe")

Stack-Größe als Anzahl an Bytes.

Anzahl Aufrufe ("Aufrufe")

Anzahl der Aufrufe des Bausteins innerhalb der Applikation.

Anzahl der Aufrufe aus Tasks ("Tasks")

Anzahl der Tasks, die den Baustein aufrufen.

Unterschiedliche globale Variablen verwendet ("Globale")

Anzahl der unterschiedlichen globalen Variablen, die im Baustein verwendet werden.

Anzahl direkter Adresszugriffe ("EAs")

Anzahl der Zugriffe auf EAs im Baustein = Anzahl aller lesenden und schreibenden Zugriffe auf eine direkte Adresse.

Beispiel:

Die Anzahl direkter Adresszugriffe für das Programm MAIN beträgt 2.

PROGRAM MAIN
VAR
    OnOutput AT%QB1 : INT;
    nVar            : INT;
END_VAR
OnOutput := 123;
nVar     := OnOutput;

Anzahl lokaler Variablen ("Lokale")

Anzahl der lokalen Variablen im Baustein (VAR).

Anzahl Eingabevariablen ("Eingänge")

Anzahl der Eingangsvariablen des Bausteins (VAR_INPUT).

Anzahl Ausgabevariablen ("Ausgänge")

Anzahl der Ausgangsvariablen des Bausteins (VAR_OUTPUT).

Anzahl Anweisungen ("NOS")

NOS: Number Of executable Statements

NOS = Anzahl der ausführbaren Anweisungen im Baustein

Prozentsatz Kommentare ("Kommentare")

Kommentaranteil = Anzahl der Kommentare / Anzahl der Anweisungen im Baustein

Zu den Anweisungen gehören an dieser Stelle beispielsweise auch Deklarationsanweisungen.

Komplexität (McCabe) ("McCabe")

Komplexität = Anzahl der Binärverzweigungen im Kontrollflussgraphen für den Baustein (beispielsweise die Anzahl an Verzweigungen bei IF- und CASE-Anweisungen sowie Schleifen)

Verschachtelungskomplexität (Prather) ("Prather")

Verschachtelungsgewicht = Anweisungen * Verschachtelungstiefe

Verschachtelungskomplexität = Verschachtelungsgewicht / Anzahl Anweisungen

Verschachtelung beispielsweise durch IF/ELSEIF- oder CASE/ELSE-Anweisungen.

Tiefe des Vererbungsbaums ("DIT")

DIT: Depth of Inheritance Tree

DIT = Vererbungstiefe bzw. maximale Pfadlänge von der Wurzel bis zur betrachteten Klasse

Anzahl Kindobjekte ("NOC")

NOC: Number Of Children

NOC = Anzahl der Kinderklassen bzw. Anzahl der direkten Spezialisierungen einer Klasse

Reaktion auf Klasse ("RFC")

RFC: Response For Class

RFC = Anzahl der Methoden, die potenziell ausgeführt werden können, wenn ein Objekt der betrachteten Klasse auf eine eingegangene Nachricht reagiert

Der Wert dient der Messung der Komplexität (im Hinblick auf Testbarkeit und Wartbarkeit). Dabei werden alle möglichen direkten und indirekten über Assoziationen erreichbaren Methodenaufrufe gewertet.

Koppeln zwischen Objekten ("CBO")

CBO: Coupling Between Objects

CBO = Anzahl der mit der betrachteten Klasse gekoppelten Klasse(n)

Der Wert dient der Angabe der Kopplung zwischen Objektklassen. Dabei bezieht sich die Kopplung darauf, dass eine Klasse Instanzvariablen (Variablen einer instanzierten Klasse) und die Methoden einer anderen Klasse verwendet.

Referenzierungskomplexität (Elshof) ("Elshof")

Referenzkomplexität = Referenzierte Daten (Anzahl Variablen) / Anzahl der Datenreferenzen

Mangelnder Zusammenhalt in Methoden (LCOM) ("LCOM")

Zusammenhalt = Paare von Methoden ohne gemeinsame Instanzvariablen abzüglich Paare von Methoden mit gemeinsamen Instanzvariablen

Dieser Zusammenhaltswert ist ein Maß für die Kapselung einer Klasse. Je höher der Wert, desto schlechter die Kapselung. Es werden hierbei auch die gegenseitigen Methoden- und Property-Aufrufe (ohne Init und Exit) berücksichtigt.

Halstead ("n1","N1","n2","N2", "HL", "HV", "D")

Die folgenden Metriken gehören zu dem Bereich "Halstead":

- Anzahl unterschiedlicher verwendeter Operatoren - Halstead (n1)

- Anzahl Operatoren - Halstead (N1)

- Anzahl unterschiedlicher verwendeter Operanden - Halstead (n2)

- Anzahl Operanden - Halstead (N2)

- Länge - Halstead (HL)

- Volumen - Halstead (HV)

- Schwierigkeit - Halstead (D)

 

Hintergrundinformationen:

 

Für jedes Programm werden die folgenden Basismaße gebildet:

 

Hieraus werden dann die Größen Halstead-Länge (HL) und Halstead-Volumen (HV) errechnet:

 

Aus den Basisgrößen kann man verschiedene Kennzahlen berechnen:

Die Kennzahlen stimmen meist sehr gut mit tatsächlich gemessenen Werten überein. Der Nachteil ist, dass die Methode nur einzelne Funktionen betrifft und ausschließlich lexikalische/textuelle Komplexität misst.

Anzahl AS-Verzweigungen

Wenn der Funktionsbaustein in Ablaufsprache (AS, englisch: SFC) implementiert ist, gibt diese Codemetrik die Anzahl an Verzeigungen im Funktionsbaustein an.

Anzahl AS-Schritte

Wenn der Funktionsbaustein in Ablaufsprache (AS, englisch: SFC) implementiert ist, gibt diese Codemetrik die Anzahl an Schritten im Funktionsbaustein an.