Function Points
Ziel:
Die Zählung von Function Points dient der Ermittlung des Produktumfangs und der Produktgröße basierend auf seiner Funktionalität. Ziel der Function-Point-Technik ist dabei Messung statt Abschätzung der Größe, Objektivität der Messung, frühe Anwendbarkeit im Entwicklungsprozess, die Möglichkeit, Ergebnisse zu vergleichen, sowie Unabhängigkeit von Implementierung und Architektur.
Beschreibung:
In Entwicklungsprojekten dient die Bestimmung der Größe des zu entwickelnden Objekts der Abschätzung des nötigen Aufwandes, der Erhebung der Produktivität sowie dem Nachweis von Verbesserungsmaßnahmen.
Grundlegende Konzepte
Die nachfolgende Beschreibung der grundlegenden Konzepte von Function-Points-basierten Methoden orientiert sich weitgehend am IFPUG Counting Practices Manual sowie am COSMIC FFP Measurement Manual . Auf weitere Function-Points-Modelle und -Messmethoden wird hier nicht eingegangen, jedoch finden sich hier einige Referenzen zu standardisierten Methoden.
Seit Release 4.1 der IFPUG basiert die gemessene Softwarefunktionalität auf einem transaktionsorientierten Stimulus-Response-Modell, welches im Wesentlichen aus Eingaben, Ausgaben und Abfragen von Funktionen besteht. Jegliche Softwarefunktionalität wird nun als einer dieser Transaktionstypen aufgefasst, wobei diese eine Eingabeseite, eine dazugehörige Verarbeitung und einer Ausgabeseite besitzen.
Vorgehen
Zur Zählung von Function Points müssen folgende Informationen zur Verfügung stehen (Quelle: Bundschuh, Fabry 2004):
- Die Ausgaben, die vom Anwendungssystem erstellt werden
- Die Eingaben, die über die Systemgrenzen hereinkommen
- Die internen logischen Dateien, die von der Anwendung gepflegt werden
- Die Entitäten und Relationen der internen Dateien
- Die Abfragen, die an das Anwendungssystem gestellt werden können
- Die Schnittstellen zwischen der Anwendung und anderen Anwendungssystemen
- Die Schlüsselprozesse des Anwendungssystems
Im Folgenden werden die Schritte der Methode beschrieben.
1. Zähltyp festlegen
In der Function-Point-Methode werden drei Zähltypen unterschieden:
- Neuentwicklungsprojekt: Hierbei wird ausschließlich Funktionalität hinzufügt.
- Weiterentwicklungsprojekt: Es kann Funktionalität hinzugefügt, geändert und entfernt werden, wobei ebenfalls nur neu hinzugefügte, geänderte und gelöschte Function Points gezählt werden.
- Anwendungssystem: Um den schleichenden Funktionszuwachs zu berücksichtigen, werden immer zwei Zählungen durchgeführt, eine zu Beginn und eine am Ende des Projekts. Dies ermöglicht den Vergleich von geplantem und realisiertem Funktionsumfang und erhöht somit die Produktivitäts- und Kostentransparenz.
2. Umfang der Zählung und Systemgrenzen festlegen
Der Umfang einer Zählung kann mehrere Anwendungssysteme beinhalten, welche aus Benutzersicht unterschiedliche Funktionalitäten besitzen. Diese Anwendungssysteme besitzen demnach auch eigene Systemgrenzen, die dadurch bestimmt werden, welche Funktionalität dem aktuellen Projekt und welche anderen Anwendungen zugerechnet werden. Die Systemgrenze muss (in IFPUG!) aus Benutzersicht festgelegt werden.
3. Durchführung der Zählung
Grundlage der Zählung ist die Unterscheidung von fünf Basis-Funktionstypen.
Data-Function-Points:
- Internal Logical Files (ILF): Daten, die innerhalb der Systemgrenzen gepflegt und verwaltet werden.
External Interface Files (EIF): Daten, die außerhalb der Anwendung gepflegt und verwaltet werden.Transaction-Function-Points:
- External Inputs (EI): Externe Eingabedaten (Datengruppen und Datenelemente)
- External Output (EO): Externe Ausgabedaten (Datengruppen und Datenelemente)
- External Inquiries (EI): Externe Abfragen (Datengruppen und Datenelemente)
Anhand einer Klassifikationsmatrix werden die Function Points (FP) klassifiziert:
Funktionstyp Komplexität FP Anzahl ILF Low 7 Average 10 High 15 EIF Low 5 Average 7 High 10 ...
Die Ermittlung der Komplexität ist für jeden Funktionstyp durch Regeln spezifiziert. Die Regeln geben detaillierte Anleitungen und können unter (IFPUG 2004) gefunden werden.
Der ermittelte Wert wird als unadjusted function points bezeichnet, welcher im Nachhinein durch weitere Einflussfaktoren korrigiert wird.4. Ermittlung der Einflussfaktoren
Zur Berechnung des Gesamteinflussfaktors TDI (Total Degree of Influence) werden verschiedene Merkmale des Systems auf einer Skala von 0 (kein Einfluss) bis 5 (starker Einfluss) bewertet. Mithilfe des Gesamteinflussfaktors TDI wird nun der Anpassungsfaktor VAF (value adjustment factor) ermittelt: VAF = (TDI * 0,01) + 0,65. Dies normiert den Wert auf das Intervall [0,65 ; 1,35].
5. Ermittlung der gewichteten Function Points
Je nach Zähltyp (siehe Schritt 1) wird der Wert der gewichteten Function Points anders berechnet.
Neuentwicklungsprojekt:
DFP = (UFP + CFP) * VAF
DFP: Function Points des Neuentwicklungsprojektes
UFP: Ungewichtete Function Points
CFP: Function Points aus Bestandsübernahmen von existierenden Altdaten
VAF: AnpassungsfaktorWeiterentwicklungsprojekt
EFP = [(ADD + CHGA + CFP) * VAFA] + (DEL * VAFB)
EFP: Function Points für Weiterentwicklungsprojekt
ADD: Dem System hinzugefügte Function Points
CHGA: Ungewichtete Function Points, welche durch Änderungen an bestehender Funktionalität entstehen (nach der Änderung gezählt)
CFP: Function Points aus Bestandsübernahmen von existierenden Altdaten
VAFA: Anpassungsfaktor nach der Erweiterung
DEL: Ungewichtete Function Points entstehend durch Löschung von bestehender Funktionalität
VAFB: Anpassungsfaktor vor der ErweiterungFunction Points für Anwendungssystem (Überprüfung der Schätzung)
AFP = ADD * VAF (Neuentwicklungsprojekte)
ADD: Ungewichtete Function Points des Neuentwicklungsprojektes
VAL: Anpassungsfaktor
AFP = [(UFPB + ADD + CHGA) - (CHGB + DEL)] * VAFA (Weiterentwicklungsprojekt)
UFPB: Ungewichtete Function Points der Anwendung vor der Weiterentwicklung
ADD: Ungewichtete, dem Produkt hinzugefügte Function Points
CHGA: Ungewichtete Function Points von durchgeführten Änderungen
CHGB: Ungewichtete Function Points von geänderten Funktionen, bevor Änderungen durchgeführt wurden
DEL: Ungewichtete Function Points von gelöschten Funktionen6. Dokumentation der Zählung
Die Dokumentation von Function-Points-Zählungen wird als kritischer Punkt betrachtet, zumal eine erneute Zählung nach Projektende vorgeschlagen (vorgeschrieben) wird. Die Dokumentation sollte unter anderem beinhalten:
- Zähltyp
- Systemgrenzen
- Datenbestände und Transaktionen
- Bewertung der 14 Einflussfaktoren (Anpassungs- oder Einflussfaktor)
- Gewichtete und ungewichtete Function Points
- Getroffene Annahmen mit Einfluss auf die Zählung
7. Qualitätssicherung
Mithilfe einer Checkliste werden drei wesentliche Punkte der Zählung bewertet:
- Voraussetzungen: z.B. sind die Zähler ausreichend geschult, ist eine fundierte Systemkenntnis vorhanden, …
- Vorgehen: z.B. Stichproben der Konsistenz, Übersicht über Transaktionen, …
- Dokumentation: z.B. entspricht der Informationsgehalt der Dokumentation dem geforderten Niveau.
Diese Technik erfüllt folgende Praktiken:
Kosten und Zeit schätzenLiteraturverweis:
IFPUG
COSMIC Full
Function Points
Mark II
Function Points
NESMA Funstion Points
