Blatt 2 Aufgabe 3 Function Point Analyse und
Blatt 2 Aufgabe 3 Function Point Analyse und Cocomo 81 Gruppe AIA 1 Besir Öztürk Georg Arnaoutis Imdat Salman Khoa Do Serhat Cinar Stefan Linke Protokollant Projektleiter Repräsentant Fachhochschule Köln Campus Gummersbach Projektmanagement SS 2003 Prof. Dr. Winter
Inhalt Aufgabenstellung Differenzierungen – Ausarbeiten der Punkte im Lastenheft n Funktionen n Komponenten n Schnittstellen n Dateien n Datenbanktabellen n (Eingabe-)Formulare Function-Point-Analyse n Roh-Function-Points aus Daten-Eingaben, Daten-Ausgaben, Externe Abfragen, Interne Dateien / Daten n System-Infrastruktur n Output: Function Points, Umrechnung in Aufwand: PM und LOC Cocomo 81 n Analysemodell n Projektmodus n Costdriver n Aufwand in PM Ergebnis und Interpretation 2
Aufgabenstellung Aufwandschätzung des Projekts Seminar. IS Faktoren der Function-Point-Analyse Durchführung der Function-Point-Analyse Überprüfung der Schätzung mit Cocomo 81 3
Differenzierungen Um die im Lastenheft genannten Funktionen besser bewerten zu können, muss eine Differenzierung durchgeführt werden. 4
Differenzierungen: Funktionen F 40 wird aufgeteilt in: F 40 A Ersterfassung, Änderung & Löschung von Seminarveranstaltungen F 40 B Ersterfassung, Änderung & Löschung von Seminartypen F 70 wird aufgeteilt in: F 70 A Teilnehmerliste F 70 AX Festlegen des Layouts für die Teilnehmerliste F 70 B Teilnahmebescheinigung F 70 BX Festlegen des Layouts für die Teilnahmebescheinigung F 70 C Umsatzliste F 70 CX Festlegen des Layouts für die Umsatzliste F 80 wird aufgeteilt in: F 80 A Seminartermine F 80 B Zahlungsverkehr F 80 C Wohnortstatistik 5
Differenzierungen: Komponenten, Schnittstellen & Dateien Wiederverwertbare Komponenten C 1 Liste zur Auswahl von Seminaren für F 10, F 20, F 30 2 Felder (DT 110 –Seminar ID, Name( C 2 Komponente für RTF-Text Frei editierbares RTF-Feld Schnittstellen S 2 Datenbank JDBC S 3 Fakturierung Buchhaltung, TCP / IP Dateien BK 10 Backup aller Daten 6
Differenzierungen: Datenbanktabellen DT 10 DT 20 DT 30 DT 50 DT 60 DT 70 DT 80 DT 90 DT 100 DT 110 DT 120 Personendaten (PK) Personen ID, Vorname, Nachname, Strasse, PLZ, Ort, Postfach, Kontonummer, BLZ, Telefonnummer, Mobilnummer, Email Personen-Seminare (PFK) Personen ID, (PFK) Seminar ID, besucht oder gehalten Personen-Zahlungen (Zahlungsposten) (PFK) Personen ID, (PFK) Seminar ID, Betrag, Datum, ausgezahlt / eingezahlt / Gutschrift Firmendaten (PK) Firmen ID, Firmenname, Strasse, PLZ, Ort, Postfach, Telefonnummer, Email, (FK) Branchen ID Branchen (PK) Branchen ID, Bezeichnung Firmen-Personen (PFK) Firmen ID, (PFK) Personen ID, Stellung Legende Dozentendaten PK: Primärschlüssel (PFK) Personen ID, Stundenlohn FK: Fremdschlüssel Fachgebiete PFK: Fremdschlüssel als Primärschlüssel (PK) Fach ID, Bezeichnung (identifizierende Beziehung) Dozenten-Fachgebiete (PFK) Personen ID, (PFK) Fach ID Seminardaten (PK) Seminar ID, Name, (FK) Fachgebiet, Begin, Ende, Preis pro Teilnehmer, Strasse, PLZ, Ort, Raum, Teilnehmerkapazität Benutzerdaten (PK) Username, Passwort, Letzter Login, Abteilung 7
Differenzierungen: Formulare (1) FR 10 FR 20 FR 30 FR 40 A FR 40 B FR 50 FR 60 AB FR 60 X FR 70 AX F 10: Eingabe, Änderung & Löschung von Personendaten 12 Felder (DT 10) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) F 20: Ersterfassung, Änderung und Löschung von Firmen 9 Felder (DT 50) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) F 30: Ersterfassung, Änderung und Löschung von Seminarbelegungen Benutzt C 1 + 1 Feld Eingabe (DT 10 - Personen ID) + Liste der Teilnehmer (DT 10 – Personen ID, Name) + 1 Feld (Anzeige Summe der Teilnehmer) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) Ersterfassung, Änderung und Löschung von Seminarveranstaltungen Benutzt C 1 + 11 Felder (DT 110) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) Ersterfassung, Änderung und Löschung von Seminartypen Benutzt C 1 + 2 Felder (DT 90) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) Ersterfassung, Änderung und Löschung von Dozenten sowie Zuordnung zu Seminarveranstaltungen und -typen. Benutzt C 1 + FR 10 + 2 Felder (DT 100) + 2 Felder (Anzeige bereits abgeschlossener Seminare – Seminar ID, Name) + 3 Felder (Auswahl Erfassen, Ändern, Löschen) Erstellen von Rechnungen und Gutschriften Benutzt C 1 + 4 Felder (Bestätigen von Eingaben, Erstellen von Gutschriften) + 1 Eingabefeld Personen ID Festlegen des Layouts für die Gutschriften - Benutzt C 2 Erstellung verschiedener Listen und Bescheinigungen – Teilnehmerliste Benutzt C 1 + 2 Felder (Speichern, Drucken) Festlegen des Layouts für die Teilnehmerliste - Benutzt C 2 8
Differenzierungen: Formulare (2) FR 70 BX FR 70 CX FR 80 A FR 80 B FR 80 C FR 90 FR 100 FR 110 Erstellung verschiedener Listen und Bescheinigungen – Teilnahmebescheinigungen Benutzt C 1 + 1 Feld Personen ID + 2 Felder (Speichern, Drucken) Festlegen des Layouts für die Teilnahmebescheinigung - Benutzt C 2 Erstellung verschiedener Listen und Bescheinigungen – Umsatzliste pro Jahr/Person/Firma 3 Felder (Jahr oder Personen ID oder Firma ID) + 1 Feld (Erzeugen) Festlegen des Layouts für die Umsatzliste - Benutzt C 2 Seminartermine - Benutzt C 1 Zahlungsverkehr Benutzt C 1 + 1 Feld (Personen ID) + 2 Felder (Auswahl Zahlungsverzug oder bezahlte Posten) Wohnortstatistik - 2 Felder (Wohnort, PLZ) Erstellen von Backups des kompletten Datenbestandes 1 Feld (Dateiauswahl) + 1 Feld (Speicherformat) Löschungen von Daten wie z. B. veraltete oder stornierte Seminare, Personendaten, etc. . Löschungen müssen aus Sicherheitsgründen protokolliert und genehmigt werden. 1 Liste (Liste der zu löschenden Daten mit Kontrollfeld zur Bestätigung). Einrichten und Ändern von Benutzern 4 Felder (DT 120) + 2 Felder (Auswahl Einrichten oder Ändern) 9
Ermitteln der Roh-Function-Points Die Roh-Function-Points werden durch die Bewertung der Komplexität der Funktionen gewonnen. Jedes Mitglied des Teams hat dafür die Komplexität eingeschätzt. 10
Bewertung: Daten-Eingaben Was Komplexität Punkte Begründung, Eingabekomponenten C 1 C 2 FR 10 FR 20 FR 30 Einfach Komplex Mittel-Komplex Mittel 3 6 6 5 4 FR 40 A FR 40 B FR 50 FR 60 AB FR 70 A FR 70 B FR 70 C FR 80 B FR 80 C FR 90 FR 100 FR 110 Komplex Einfach Mittel Einfach Sehr Einfach Mittel-Komplex Einfach 6 2, 5 4 3 Liste mit Einfach-Auswahl Freies RTF-Textfeld 12 Eingabefelder, 3 Buttons, teils Semantische Prüfungen 9 Eingabefelder, 3 Buttons, teils Semantische Prüfungen 1 Eingabefeld, 3 Buttons, 1 Semant. Prüfung, Liste der Teilnehmer mit Einfachauswahl 11 Eingabefelder, 3 Buttons, teils Semant. Prüfungen 2 Eingabefelder, 3 Buttons, Zusammen mit FR 10 1 Eingabefeld + 4 Buttons 2 2 Buttons 2 1 Eingabefeld, 2 Buttons 3 Eingabefelder, 1 Button 2 1 Eingabefeld, 2 Buttons 2 Eingabefelder, Semantische Prüfung 1 Auswahlfeld, 1 Eingabefeld Liste mit Mehrfachauswahl und Bestätigungen 4 Eingabefelder, 2 Buttons, eine semant. Prüfung Summe: 3 3 3 5 3, 5 62, 5 11
Bewertung: Daten-Ausgaben Was Komplexität Punkte Begründung, Ausgabekomponenten C 1 FR 30 FR 40 A FR 50 FR 60 A FR 60 B FR 70 A FR 70 B FR 70 C FR 80 A FR 80 B FR 80 C FR 90 FR 100 FR 110 Einfach-Mittel Sehr Einfach Mittel Einfach Mittel-Komplex Mittel Komplex Einfach-Mittel Komplex Einfach 3 3, 5 2, 5 3 5 5 5 4 6 5 7 4, 5 7 4 4 Liste mit 2 Attributen 1 Feld (Anzeige Summe der Teilnehmer), Liste Teilnehmer Liste der Seminartypen Anzeige bereits abgeschlossener Seminare Druckaufbereitung der Rechnung Druckaufbereitung der Gutschrift Druckaufbereitete Teilnehmerliste Druckaufbereitete Teilnahmebescheinigung pro Teilnehmer Druckaufbereitete Umsatzliste mit 3 Gruppenwechseln Seminarkalender, Seminartermine Liste Gruppierungen pro Person, Verzüge, Zahlungen etc. Diagramm der Wohnortverteilung Komplexes Dateiformat aller Datenbestände Liste der zu löschenden Daten mit Kontrollfeld Liste der vorhandenen Benutzer Summe: 68, 5 12
Bewertung: Externe Abfragen Was Komplexität Punkte Begründung, beteiligte Tabellen C 1 FR 10 FR 20 FR 30 FR 40 A Einfach Mittel Komplex 3 3 3 4 6 FR 40 B FR 50 FR 60 A FR 60 B FR 70 A FR 70 B FR 70 C Sehr Einfach Komplex Mittel Komplex 6 4 4 6 FR 80 A FR 80 B FR 80 C FR 90 FR 100 FR 110 Einfach Komplex Sehr Einfach Sehr Komplex Sehr Einfach Liste mit 2 Attributen aus einer Tabelle Person nach Personen ID suchen Firma nach Firma ID suchen Personendaten, Seminardaten, Personendaten, Personen-Zahlungen (für Gutschriften) 2 Alle Seminartypen Personendaten, Seminardaten, Personen-Zahlungen Personendaten, Seminardaten Personendaten, Seminardaten, Personen-Zahlungen, Firmendaten Seminardaten Personendaten, Personen-Zahlungen, Seminardaten 2 Personendaten nach Wohnort Alle Spalten und Tabellen Alle mögl. Spalten, Kontrollfreigaben 2, 5 Vorhandene Benutzer Summe: 3 6 8 7 77, 5 13
Bewertung: Interne Dateien / Daten Was Komplexität Punkte Begründung, Zusammensetzung BK 10 DT 20 DT 30 DT 50 DT 60 DT 70 DT 80 DT 90 DT 100 DT 110 DT 120 Komplex Mittel Einfach-Mittel-Komplex Einfach-Mittel Einfach-Mittel-Komplex Einfach 15 10 8, 5 9 12 7 8, 5 7 7 8, 5 12 7 Alle Spalten und Tabellen 1 PK, 1 FK (Orte/PLZ), 12 Spalten 2 PFK, 3 Spalten 2 PFK, 5 Spalten 1 PK, 3 FK, 9 Spalten 1 PK, 2 Spalten 2 PFK, 3 Spalten 1 FPK, 2 Spalten 2 FPK, 3 Spalten 1 PK, 2 FK, 11 Spalten 1 PFK, 4 Spalten Summe: 111, 5 14
Bewertung: Externe Schnittstellen Was Komplexität Punkte Begründung S 2 S 3 Komplex 10 10 Verschiedene Spaltenbreiten & Abfragetypen Verschiedene Kommunikationstypen Summe: 20 15
Roh-Function-Points Summe der Roh-Function-Points: 62, 5 + 68, 5 + 77, 5 + 111, 5 + 340 = 20 RFP 16
Bewertung der System-Infrastruktur Faktor Punkte Begründung COMmunication DIStributed RESponse STRess TRAnsactions ONLine EFFicience UPDatability KMPlexity REUsability PORtybility USAbility MANdant MAIntainability 5 3 3 4 5 5 4 4 3 4 2 5 1 4 Kommunikationen über Netzwerk, TCP/IP Verarbeitungsfunktionen haupts. beim Server, Formularlogik bei Clients Wegen Usability schnelle Antwortzeiten Anwendung soll Stabil sein Mehrere Bearbeiter können zugleich Arbeiten Alle Ein-/Ausgaben und Bewertungen geschehen online Endbenutzer steht im Vordergrund Echtzeit Update der Datenbestände Nicht sehr komplex Anwendungslogik Produkt soll später weiterentwickelt werden Produktplattform ist festgelegt auf WIN 32 und Oracle Endbenutzer steht im Vordergrund Anpassbarkeit ist so nicht wichtig Produkt soll später weiterentwickelt werden Summe: 52 SI 17
Function Points Berechnungen der Function Points aus den Roh-Function-Points FP SI(( = RFP * (0, 65 + (0, 01 * ((52 * 0, 01) + 0, 65) * 340 = 397, 8 =Function Points Umrechnung in LOC für Java (29 LOC/FP): 397, 8 * 29 = 11536, 2 LOC 18
Aufwand in PM Ermitteln der Personenmonate anhand des Diagramms 27 397 Function-Points ergeben nach dem Diagramm etwa 27 Personenmonate. 19
Cocomo Analysemodell Zuerst wird ein Analysemodell ausgewählt, je nach dem, wie genau die Schätzung sein soll. Es gibt: Basic Cocomo - Die Kostenfaktoren sind phasenunabhängig (grob( - Schnelle und frühe aber grobe Abschätzung der Softwarekosten - Ungenau, da Faktoren wie Unterschiede in der Hardware, Qualität des Personals und dessen Erfahrung, die Verwendung moderner Hilfsmittel und andere Projektattribute mit bekanntem Einfluss keine Berücksichtigung finden - Keine Berücksichtigung von besonderen Kostenfaktoren Intermediate Cocomo - Die Kostenfaktoren sind phasenunabhängig (grob( -Faktoren wie Unterschiede in der Hardware, Qualität des Personals und dessen Erfahrung, die Verwendung moderner Hilfsmittel und andere Projektattribute mit bekanntem Einfluss werden berücksichtigt - Die Berechnung bewertet jeden Kostenfaktor - Die Berechnung seperater Module möglich Detailed Cocomo - Kostenfaktoren Phasenabhängig separat (fein( -Beurteilt die Faktoren abhängig von den Projektphasen, für die sie von Bedeutung sind. - Verschiedene Gewichtungsfaktoren je Phase: - Analyse (Requirements (RQ(( - Entwurf (Product Design (PD(( - Feinentwurf (Detailed Design (DD(( - Implementierung und Modultest (Code & Unit Test (CT(( - Integration und Test (Integrate & Test (IT(( - Wartung (Maintenance (MN(( -Geeignet um verschiedene Entwicklungsstrategien zu vergleichen 20
Co. Mo Projektmodus Wahl eines Projektmodus abhängig von der Größe des Projekts Organic Mode - Kleines Projekt (kleiner als 50 000 DSI( -Stabile Entwicklungsumgebung - Jeder Mitarbeiter kennt das gesamte Projekt - Keine große Innovation Semidetached Mode - Mittelgroßes Projekt (zwischen 50 000 und 300 000 DSI( -Jeder Mitarbeiter besitzt Spezialwissen bezüglich der Entwicklung. -Spezialwissen ist verteilt Embedded Mode -Großes Projekt (über 300 000 DSI( - Starke Arbeitsaufteilung - Straffe und unflexible Strukturen - Änderungen der Software nur über Änderung der Spezifikation - Unbekanntes Terrain 21
Co. Mo Projektmodus Konstanten Die Auswahl des Analysemodells Intermediate Cocomo und die Einschätzung des Projekts als Semidetached ergibt folgende Konstanten a, b, c: a = 3. 0 b = 1. 12 c = 0. 35 22
Co. Mo Cost Driver Bewertung Cost Driver Khoa Imdat Georg Stefan Serhat Besir Ø Reliability 1. 40 1. 15 1. 00 1. 15 0. 88 1. 40 1. 16 Database Size 1. 16 1. 08 0. 94 1. 16 1. 08 Product Complexity 1. 00 1. 00 Execution Time Constraints 1. 66 1. 00 1. 66 1. 22 Main Storage Constraints 1. 00 1. 06 1. 00 1. 01 Virtual Machine Volatility 1. 00 0. 87 0. 94 Turn Around Time 1. 15 1. 07 1. 00 0. 84 1. 15 1. 06 Analyst Capability 0. 71 1. 00 1. 19 1. 00 0. 71 0. 94 Application Experience 1. 13 1. 00 0. 91 1. 00 1. 03 Programmer Capability 0. 70 0. 86 1. 00 1. 02 1. 00 0. 93 Virtual Machine Experience 0. 90 1. 00 0. 93 Language Experience 1. 00 0. 95 1. 00 0. 96 Modern Programming Practices 1. 00 0. 91 1. 00 0. 98 Use of Software Tools 1. 00 0. 91 1. 00 0. 96 Requ. Development Schedule 1. 00 1. 08 1. 00 1. 04 1. 03 23
Co. Mo Endergebnis Produktsumme der Costdriver 1. 16 * 1. 08 * 1. 00 * 1. 22 * 1. 01 * 0. 94 * 1. 06 * 0. 94 * 1. 03 * 0. 93 * 0. 96 * 0. 98 * 0. 96 * 1. 03 = 1, 198 Formel für Aufwand in Personenmonaten PM = Produktsumme der Costdriver * a * KLOC^b = 1, 198 * 3, 0 * 11, 5362^1, 12 = 55, 6 PM 24
Vergleich Function Point Analyse: 27 PM Co. Mo Analyse: 55, 6 PM Co. Mo berücksichtigt unsere persönliche Leistungskurve nicht, jedoch die Costdrivers und damit die Projektrahmenbedingungen (z. B. unerfahrenes Team). 25
- Slides: 25