Autoren: Lubomira Stantcheva, Vladimir Stantchev
28. Juni 2001
Date of measurement: Wed Jun 28 13:07:23 2001
Project: Source.proj
Fokus-Set: TGenericDevice, TMain, TVektor, TMatrizenListe, TBitmapSource, TSteering, TAdjustmentParameter, TTopography, TScan, TAreaScanCCD, TAreaScan, TransformationClass, TDList, TEncoder, TRadicon, Testdev, TStoe_Psd, TBraun_Psd, TCurveShowParam, TCurveFreeScal, TCounterShowParam, TCommonDevParam, TScsParameters, TMeasurementParam, TExecuteCmd, TAngleControl, TGetData, TAutomaticAngleControl, TPosControl, TMotorParam, TCalibrate, TOptimizeDC_832, TOptimizeDC_812, TSetAdjustmentParam, TAdjustmentExecute, TTopographyExecute, TTopographySetParam, TSetupAreaScanCCD, TSetupAreaScan, TAquisition, TSetupContinuousScan, TSetupStepScan, TCalibratePsd, TPsdRemoteSync, TCrossTableControl, TAbout, TPsdParameters, TMacroExecute, TChooseScan, TMList, TC_832, TC_812GPIB, TC_812ISA, TDataBase, TCurve, TMSimStatus, TAdjustmentWindow, TCurveFreeScalColor, TCounterWindow, TEditWindow, TOffLineScan, TInquireCmd, TShowValueCmd, TSaveDataCmd, TSetFileNameCmd, TChooseDeviceCmd, TMoveToPointCmd, TLoadPointCmd, TCalculateCmd, TSetWidthCmd, TChooseAxisCmd, TSetupScanCmd, TScanCmd, TControlFlankCmd, TGotoIntensityCmd, TGotoPeakCmd, TAreaScanCmd, TScanArea
Inheriting-Context:
Using-Context:
Metric-File: C:\Programme\sniff\Crocodile\quality_model_cpp31.txt
Metrics
3D Visualizations (WRML Browser Plug-In needed)
Die Paketmetrik efferent calls to packages (P_eff_call_P) bestimmt für ein Subsystem die Anzahl anderer Subsysteme, von denen etwas verwendet wird. Als Verwendung wird ein Methodenaufruf betrachtet, wobei die aufgerufene Methode in einem anderen Subsystem als dem gerade betrachteten definiert ist. Eine bloße Import-Beziehung zu anderen Subsystemen ohne irgendeine Verwendung daraus wird nicht als Benutzung betrachtet.
P_aff_call_P (0)
P_aff_call_P_Inh (0)
P_aff_call_P_Poly (0)
P_aff_call_P_Cpl (0)
P_aff_call_P_leapt (0)
P_aff_call_P_Inh_leapt (0)
P_aff_call_P_Poly_leapt
(0)
P_aff_call_P_Cpl_leapt (0)
Die Paketmetrik afferent calls from packages (P_aff_call_P) bestimmt für ein Subsystem die Anzahl fremder Subsysteme, die eine Methode aus dem gerade betrachteten Subsystem verwenden. Als Verwendung wird ein Methodenaufruf des eigenen Subsystems betrachtet, bei denen die aufrufende bzw. benutzende Methode in einem anderen Subsystem definiert sind. Eine bloße Import-Beziehung von anderen Subsystemen ohne irgendeine Verwendung wird nicht als Benutzung betrachtet.
P_eff_use_P (keine)
P_eff_use_P_Inh (keine)
P_eff_use_P_Poly (keine)
P_eff_use_P_Cpl (keine)
P_eff_use_P_leapt (0)
P_eff_use_P_Inh_leapt (0)
P_eff_use_P_Poly_leapt (0)
P_eff_use_P_Cpl_leapt (0)
Die Paketmetrik efferent usages to packages (P_eff_use_P) bestimmt für ein Subsystem die Anzahl anderer Subsysteme, von denen Attribute durch Methoden des gerade betrachteten Subsystems benutzt werden. Als Attribute werden normale Objekt-Attribute, Klassenattribute als auch die für Konstanten üblichen static final Variablen betrachtet.
P_aff_use_P (0)
P_aff_use_P_Inh (0)
P_aff_use_P_Poly (0)
P_aff_use_P_Cpl (0)
P_aff_use_P_leapt (0)
P_aff_use_P_Inh_leapt (0)
P_aff_use_P_Poly_leapt (0)
P_aff_use_P_Cpl_leapt (0)
Die Paketmetrik afferent usages from packages (P_aff_use_P) bestimmt für ein Subsystem A die Anzahl anderer Subsysteme, die auf Attribute des Subsystems A zugreifen. Als Attribute werden normale Objekt-Attribute, Klassenattribute als auch die für Konstanten üblichen static final Variablen betrachtet.
P_eff_inh_P (0)
P_eff_inh_P_leapt (0)
Die Paketmetrik efferent inheritings to other packages (P_eff_inh_P) bestimmt für ein Subsystem die Anzahl anderer Subsysteme, von denen etwas geerbt wird. Als Vererbung wird sowohl die Klassenerweiterung (extends) als auch die Schnittstellenimplementierung (implements) betrachtet. Das Flatten hat keinerlei Auswirkungen auf diese Metrik.
P_aff_inh_P (0)
P_aff_inh_P_leapt (0)
Die Paketmetrik afferent inheritings from other packages (P_aff_inh_P) bestimmt für ein Subsystem die Anzahl anderer Subsysteme, die etwas vom aktuell betrachteten Subsystem erben. Als Vererbung wird sowohl die Klassenerweiterung (extends) als auch die Schnittstellenimplementierung (implements) betrachtet. Das Flatten hat keinerlei Auswirkungen auf diese Metrik.
Die Paketmetrik Number of Classes within a Package (P_NoC) bestimmt für ein Subsystem die Anzahl der darin deklarierten Klassen. Mitgezählt werden Interfaces, abstrakte Klassen sowie nested classes.
C_eff_call_C
C_eff_call_C_Inh
C_eff_call_C_Poly
C_eff_call_C_Cpl
Die Klassenmetrik efferent calls to classes (C_eff_call_C) zählt für eine Klasse, von wieviel anderen Klassen etwas verwendet wird. Als Verwendung wird ein Methodenaufruf betrachtet, bei denen die aufgerufene Methode in einer anderen Klasse definiert ist. Eine bloße Import-Beziehung zu anderen Subsystemen ohne irgendeine Verwendung daraus wird nicht als Benutzung betrachtet.
C_aff_call_C
C_aff_call_C_Inh
C_aff_call_C_Poly
C_aff_call_C_Cpl
Die Klassenmetrik afferent calls from other classes (C_aff_call_C) zählt für eine Klasse, wieviel andere Klassen etwas von ihr verwenden. Als Verwendung wird ein Methodenaufruf betrachtet, bei der die aufrufende Methode in einer anderen Klasse definiert ist Da das Flatten Einfluß auf diese Metrik hat, werden die in Anmerkung 1 genannten vier Werte dargestellt.
M_eff_call_M
M_eff_call_M_Poly
M_aff_call_M
M_aff_call_M_Poly
C_eff_use_A
Benutzung fremder Attribute
C_eff_use_A_Inh
Benutzung fremder Attribute (mit Vererbung)
C_eff_use_A_Poly
Benutzung fremder Attribute (mit Polymorphismus)
C_eff_use_A_Cpl
Die Klassenmetrik efferent usages to classes (C_eff_use_C) zählt für eine Klasse, von wieviel anderen Klassen etwas verwendet wird. Als Verwendung wird eine Attributsbenutzung betrachtet, bei denen das benutzte Attribut in einer anderen Klasse definiert ist. Eine bloße Import-Beziehung zu anderen Subsystemen ohne irgendeine Verwendung daraus wird nicht als Benutzung betrachtet. Da das Flatten Einfluß auf diese Metrik hat, werden die in Anmerkung 1 genannten vier Werte dargestellt.
C_aff_use_A
von anderen Klassen benutzte Attribute
C_aff_use_A_Inh
von anderen Klassen benutzte Attribute (mit Vererbung)
C_aff_use_A_Poly
von anderen Klassen benutzte Attribute (mit Polymorphismus)
C_aff_use_A_Cpl
Die Klassenmetrik afferent usages from other classes (C_aff_use_C) zählt für eine Klasse, wieviel andere Klassen etwas von ihr verwenden. Als Verwendung wird eine Attributsbenutzung betrachtet, bei der das verwendete Attribut innerhalb und die verwendende Methode außerhalb der betrachteten Klasse liegt. Da das Flatten Einfluß auf diese Metrik hat, werden die in Anmerkung 1 genannten vier Werte dargestellt.
A_aff_use_foreign_M
von anderen Klassen benutzte Methoden
A_aff_use_M
C_No_Super
Anzahl von Oberklassen
C_No_Sub
Anzahl von Subklassen
C_Nopub_A
Anzahl öffentlicher Attribute
C_Nopub_A_Inh
Anzahl öffentlicher Attribute mit Vererbung
Die Klassenmetrik number of public attributes (C_NoPubA) bestimmt für eine Klasse die Anzahl öffentlich deklarierter Attribute. Es werden ebenfalls die in JAVA als const Ersatz üblichen static final Attribute mitgezählt. Da das Flatten-Konzept Auswirkungen auf diese Metrik hat, werden die Werte der geflatteten Version (d.h. geerbte Attribute werden mit berücksichtigt) mit denen der ungeflatteten Version (d.h. nur die neu definierten Attribute werden berücksichtigt) kontrastiert.
Die Klassenmetrik Number of public methods (C_NoPubM) bestimmt für eine Klasse, wieviele öffentliche Methoden sie definiert oder implementiert. Nicht betrachtet werden nicht überschriebene Standardkonstruktoren und Standarddestruktoren. Da das Flatten-Konzept Auswirkungen auf diese Metrik hat, werden zwei Werte gegenübergestellt: Zum einen die Metrikwerte für die nicht geflatteten Klassenversionen und zum anderen die Anzahl die Metrikwerte für die geflatteten Versionen, in denen innerhalb einer Klasse auch die geerbten Methoden mitgezählt werden.
Die Klassenmetrik weighted method count (C_WMC) zählt für eine Klasse die Zeichen, die für die Definition aller ihrer Methoden nötig sind. Gezählt werden alle Zeichen (inkl. Kommentare innerhalb der Methoden). Da das Flatten-Konzept Auswirkungen auf diese Metrik hat, werden die Werte der geflatteten Version (d.h. geerbte Methoden werden mit berücksichtigt) mit denen der ungeflatteten Version (d.h. nur die neu definierten und implementierten Methoden werden berücksichtigt) kontrastiert.
NuComm
Author
LOC
NoDel
CyC
NuIncl
NoAuthor
Attributbenutzung (Grösse der Klassen nach Anzahl aller Methoden):
berlin_allusagesAttributes.wrl
Methodenbenutzung (Grösse der Klassen nach Anzahl aller Methoden):
berlin_allusagesMethod.wrl
Bidirektionale Methodenbenutzung:
berlin_bidirektional_mUsage.wrl
Vererbungsstruktrur:
berlin_vererbungsstruktur.wrl
Benutzung öffentlicher Attribute und Methoden für TMain (Grösse der Klassen nach
Anzahl öffentlicher Attributen):
berlin_example_pubA_usageA_M.wrl
Benutzung öffentlicher Attribute und Methoden (flattened):
berlin_example_pubA_usageA_M_flatten.wrl
Methoden- und Attributbenutzung für TMain (Grösse der Klassen nach Anzahl
öffentlicher Methoden):
berlin_TMain_MethodAttributeUsage.wrl
Methodenbenutzung (mögliche Aufteilung des Systems in Subsysteme):
berlin_usageMethod_packageBuildingExample.wrl
Vererbungsstruktur und Methodenbenutzung für TAreaScanParameters: Inheritance1.wrl