Fragmente zu Softwaremessung“, Teil 2 ” (Version 1.0, 10.5.2010) Bestimmung der Function Points: 1. Systemgrenze bestimmen mit application boundary“ ist etwa das Kontextdiagramm bei SA oder das ” Use-Case-Diagramme in UML gemeint. 2. Datenflüsse identifizieren in Zusammenarbeit mit dem Benutzer Eingabedaten Informationen, die über die Grenze ins System geht und zu Änderung von Daten in internen Files führt bzw. den Ablauf beeinflusst. Es werden nicht Datenmengen sondern logische Daten gezählt. Ausgabedaten Informationen, die über die Grenze an den Benutzer gehen. Abfragen Anfragen und Antworten ohne weitere Änderungen (interne) Datenbestände Datenhaltung im System (Relationen und Files) externe Referenzdaten Datenhaltung, die nicht im System stattfindet. 3. Datenflüsse bewerten Hierbei wird die functional size“ bestimmt als einfach/mittel/schwierig ” (low/average/high) =⇒ unadjusted function points“ (UFP) ” 4. Die Anwendung bewerten Hierbei werden nach 14 Fragen Bewertungen mit 0-5 vergeben mit app” lication characteristic multipliern“ (ACM) =⇒ function points“ (FP) ” 1 Abbildung 1: (../Pictures.png/metrics012) 2 Bestimmung der Object Points 1. Bewertung des Klassenmodells (Basis für die Schätzung des Codier- und Unittest-Aufwands. Pro Klasse berechnet man ClassPoints = (#Basisattribute+2∗#Referenzattribute+3∗#Methoden)∗Neuheit Hierbei versucht Neuheit zu messen, zu welchem Prozentsatz die Klassenrealisierung nicht durch Vererbung erstellt wird, d.h. geerbte Member werden nicht gezählt. 2. Bewertung der Interaktion (Basis für die Schätzung der Integration und des Integrationstestaufwands.) Pro Operation (d.h. Methodengruppe) berechnet man MessagePoints = (#Parameter+2∗#Quellen+2∗#Ziele)∗Komplexitaet∗Neuheit Hierbei ist eine Quelle ein Aufrufpunkt und ein Ziel ist eine Klasse, in der die Methode definiert wurde. Die Komplexität misst die Kompliziertheit der Methode als hoch (1,25) mittel (1,0) niedrig (0,75) 3. Bewertung der Anwendungsprozesse (Basis für die Schätzung des Systemtestaufwands. Die Anwendungsprozesse entsprechen etwa den Use-Cases.) Pro Prozess berechnet man ProcessPoints = (Prozesstyp + #Varianten) ∗ Komplexitaet 3 Es werden vier Typen von Prozessen unterschieden Batch-Prozesse (2) geringe menschliche Eingriffe Online-Prozesse (4) wesentliche menschliche Eingriffe System-Prozesse (6) z.B. Backup, Recovery Realtime-Prozesse (8) gesteuert von externen Ereignissen Hierbei werden Prozesse ähnlicher Art zusammengefasst. 4. Berechnung einer Rohgröße Mit diesen Zahlen erhält man ObjectPoints = X ClassPoints + X MessagePoints + X ProcessPoints 5. Gewichtung nach den Qualitätsanforderungen Sneed schlägt vor, die berechnete Rohgröße nach den Qualitätsanforderungen zu gewichten (12 Kriterien), die durch Metriken bestimmt werden: Zuverlässigkeit Sicherheit Zeiteffizienz Speichereffizienz Benutzbarkeit Integrität Integrierbarkeit Portabilität Wartbarkeit Datenunabhängigkeit Testüberdeckung Konformität Jeder Faktor erhält einen Wert zwischen 0 und 2: minimaler Wert (0) Industriestandard (1) Maximaler Wert (2) Der Durchschnitt dieser Werte ergibt den Qualitätsfaktor QF QualityAdjustedObjectPoints = ObjectPoints ∗ QF 4 6. Gewichtung nach Eigenschaften des Projekts Dieser Wert wird aufgrund von Eigenschaften des gesamten Erstellungsprozesses noch ein weiteres Mal gewichtet (10 Aspekte): Verfügbarkeit von Groupware zur Unterstützung des Projektteams Qualität der Benutzeroberfläche der Entwicklungsumgebung Zuverlässigkeit des Netzes, in dem die Entwickler arbeiten Reife des zu entwicklenden Prozesses technische Unterstützung des Projektteams Anwendungsgrad objekt-orientierter Methoden objekt-orientiertes Niveau der verwendeten Sprache Verfügbarkeit von objekt-orientierten CASE-Tools Anwesenheit eines Objekt-Repositorys Grad der Testautomatisierung Jede dieser Eigenschaften wird bewertet mit nicht erfüllt (0) gering erfüllt (1) teilweise erfüllt (2) hoch erfüllt (3) vollständig erfüllt (4) Durch die Summe er hält man eine Bewertung des Technologiegrades (0.6 ≤ P EF = 1 − /100 ≤ 1.0) AdjustedObjectPoints = QualityAdjustedObjectPoints ∗ EF 5