Dr. Houdek WS 2010/11 Abt. Programmiermethodik 10.01.2011 und Compilerbau 2. Übungsblatt zur Vorlesung Management von Softwareprojekten Aufgabe 1 Eine Funktion für ein Scheibenwischer-System in einem Pkw soll aus den folgenden 5 Teilfunktionen bestehen: - F1: Automatisches Wischen (mittels Regensensor) - F2: Intervall-Wischen (3 Stufen) - F3: Tipp-Wischen - F4: Waschen - F5: Wischmotor-Ansteuerung a) Die folgende Tabelle zeigt eine Experten-Einschätzung für die relativen Umfänge der 5 Funktionen nach der Methode des paarweisen Vergleichs (z.b. gilt damit F1 ist doppelt so groß wie F2 ). Prüfen Sie die Konsistenz der Tabelle. Lösen Sie ggf. Widersprüche auf, wobei Sie annehmen können, dass die erste Bewertungszeile (F1) korrekt ist. Funktion F1 F2 F3 F4 F5 F1 2 4 3 4 F2 2 2 2 F3 0.75 1.5 F4 1.33 F5 b) Die Waschen-Funktion (F4) hat einen Umfang von 20 KLOC. Berechnen Sie aus der konsistenten Tabelle die Umfänge der übrigen Funktionen sowie der Gesamtfunktion. Aufgabe 2 In Form eines Projektes soll ein interaktives System zum Erlernen der objektorientierten Softwareentwicklung erstellt werden (Projektname: ObjectLab). Folgende Vorgänge müssen durchgeführt werden: [1] Erstellung eines fachsystematischen Netzes (Objektorientierte Begriffe und ihre Abhängigkeiten) [2] Steuerung des Systems und Einbindung von Teilkomponenten (Einstiegsmenüs erstellen, Teilkomponenten aufrufen) [3] Grafik und Animation (Grundsätzlicher Bildschirmaufbau, Farbpalette erstellen, Layout der Interaktionssymbole, Design der Einstiegsmenüs) [4] Drehbuch (Drehbuch für geführte Tour erstellen) [5] Interaktivität (Klassifikation vorhandener Übungen, neue Aufgaben erstellen) [6] Sound (Musik und Töne auswählen) [7] Fallstudie Friseur (Drehbuch und Videoclip-Aufteilung) Beachten Sie folgende Abhängigkeiten: Der Starttermin ist der 31.1.2011.
Es wird an 5 Tagen in der Woche gearbeitet (40 h/woche). Feiertage werden nicht berücksichtigt. [1] ist nach 4 Wochen beendet. Für [3], [4], [5], [6] werden je 12 Wochen benötigt. Für [2] und [7] werden je 13 Wochen benötigt. [1] und [7] können sofort beginnen. [3], [4] und [6] beginnen mit einer Zeitverzögerung von 1 Woche nach [1]. [3] muß mindestens 2 Wochen vor dem Ende von [2] fertig sein [4] muß mindestens 3 Wochen vor dem Ende von [2] beendet sein [5] muß mindestens 2 Wochen vor dem Ende von [2] beendet sein [6] muß spätestens 1 Woche vor dem Projektende fertig sein [7] muß spätestens 2 Wochen vor dem Projektende fertig sein Erledigen Sie folgende Aufgaben: (a) Erstellen Sie für das Projekt einen Netzplan und ein GANTT Chart. (b) Welches ist der kritische Pfad und welches sind die kritischen Vorgänge? (c) Wann ist das Projekt fertig? (d) Weisen Sie jedem Vorgang einen unterschiedlichen Mitarbeiter zu (Stundensatz je 40 /Stunde). Wie teuer ist das Projekt? Aufgabe 3 (ehemalige Klausuraufgabe) Die Uni Ulm möchte in Zukunft (ca. in 2 Jahren) die gesamte Einschreibung elektronisch abwickeln. Das Land stellt für dieses Projekt 2 Millionen Euro zur Verfügung. Welche Organisationsform schlagen Sie für dieses Vorhaben vor? Begründen Sie kurz Ihre Entscheidung. Aufgabe 4 (ehemalige Klausuraufgabe) Gegeben sind die folgenden formalen Vorgangsbeziehungen zwischen den Vorgängen (1) bis (6). (1) EA + 2 (2) (1) AA + 4 (3) (1) AE - 2 (4) (1) EA (5) (1) EE + 5 (6) Zeichnen Sie die Vorgänge (Dauer jeweils 3 Tage) in den nachfolgenden GANTT-Chart-Rahmen ein. Die Gittergröße des Rahmens beträgt einen Tag. Wochenenden sind zu ignorieren. (1)
Aufgabe 5 Folgendes GANTT Chart beschreibt die Planung eines kleinen Projekts mit drei Arbeitspaketen und drei Meilensteinen. Jedes Arbeitspaket wird von einem anderen Mitarbeiter bearbeitet. Jeder Mitarbeiter arbeitet 8 Stunden pro Tag und kostet 40 /h. Die Auszahlung der Mitarbeiter erfolgt am Ende jedes Tages. Weitere Kosten fallen in dem Projekt nicht an. November 2010 Nr. Vorgang Dauer 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 Vorgang 1 10 Tage 2 Meilenstein 1 0 Tage 20.11. 3 Vorgang 2 5 Tage 4 Meilenstein 2 0 Tage 5 Vorgang 3 7 Tage 6 Meilenstein 3 0 Tage 18.11. Erstellen Sie zum Ende des 12.11.2010 einen Projektfortschrittsbericht nach dem Muster aus der Vorlesung (es gab keine vorhergehenden Projektfortschrittsberichte). Ihre Mitarbeiter melden Ihnen dazu folgende Informationen: Arbeitspaket 1: Benötigt noch 6 Tage bis zur Fertigstellung. Arbeitspaket 2: Wenn der Kunde die benötigten Angaben wie versprochenen am 15.11. liefert, dann wird das Arbeitspaket einen Tag früher abgeschlossen. Ansonsten verzögert sich die Fertigstellung entsprechend. Arbeitspaket 3: Fertigstellung wie geplant, allerdings wurden bereits am 10.11. fünf (Über-) Stunden mehr gearbeitet. Aufgabe 6 (ehemalige Klausuraufgabe) Gegeben sei die nachfolgende Meilensteintrendanalyse. AP6 AP5 AP4 AP3 AP2 AP1 25.11. 23.11. 21.11. 19.11. 15.11. 13.11. 11.11. 25.11. 23.11. 21.11. 19.11. 15.11. 13.11. 11.11.
Beantworten Sie die folgenden Fragen: (a) Welche Arbeitspakete sind noch offen? (b) Welche Arbeitspakete wurden früher als geplant beendet? (c) Welche Arbeitspakete wurden wie geplant beendet? (d) Welche Arbeitspakete wurden später als geplant beendet? Aufgabe 7 Nachfolgend finden Sie vier Meilenstein-Trendanalysen. Ordnen Sie die Charts den folgenden Projektcharakterisierungen zu: (a) Projekt nicht beherrscht (b) Idealer Projektverlauf (c) Unrealistische Bewertung des Arbeitsstandes (d) Projekt macht keinen Fortschritt (1) (2) (3) (4) Aufgabe 8 Ordnen Sie den folgenden Software-Maßen jeweils geeignete Maßskalen zu. (a) Entwicklungskosten (Euro) (b) Anzahl Fehler (Anzahl) (c)motivation der Mitarbeiter (gering, mittel, hoch) (d) Software-Anwendungsgebiet (Finanzen, Automotive, Medizintechnik, (e)verteidigung) (f) Integrationszeit (hh:mm)
Aufgabe 9 Gegeben sei die nachfolgende Prozedur. a) Zeichnen Sie den Programmstrukturgraph. b) Bestimmen Sie die zyklomatische Komplexität nach McCabe. procedure PurgeFiles (FileList: FILELIST_T; NumFilesToPurge: integer; var ErrorCode: ERRORCODE); var FileIdx: integer; FileHandle: FILEHANDLE_T; label END_PROC; begin ErrorCode := Success; FileIdx := 0; while (FileIdx < NumFilesToPurge) do begin FileIdx := FileIdx + 1; if not FileFind (FileList[FileIdx], FileHandle) then begin ErrorCode := FileFindError; if not OpenFile (FileHandle) then begin ErrorCode := FileOpenError; if not OverwriteFile (FileHandle) then begin ErrorCode := FileOverwriteError; if Erase (FileHandle) then begin ErrorCode := FileEraseError; {while} END_PROC: DeletePurgeFileList (FileList, NumFilestoPurge); {PrugeFiles}