cd Blatt 3

Risikomanagement in der Softwareentwicklung

Risikomanagement

Risikomanagement ist ein kritischer Aspekt der Softwareprojektplanung, der die Identifikation und Bewältigung potenzieller Risiken umfasst, um negative Auswirkungen auf den Projektzeitplan, die Softwarequalität und das Unternehmen zu minimieren. Es beinhaltet die Erkennung, Analyse, Planung und Überwachung von Risiken.

  • Drei Arten des Risikos

    • Projektrisiken: Betreffen den Projektzeitplan oder Ressourcen.
      Beispiel: Verlust eines erfahrenen Systemarchitekten, was zu Verzögerungen führen kann.
    • Produktrisiken: Beeinflussen Qualität oder Leistung der Software.
      Beispiel: Eine erworbene Komponente bringt nicht die erwartete Leistung und verlangsamt das Gesamtsystem.
    • Geschäftsrisiken: Betreffen das Unternehmen, das das Projekt entwickelt.
      Beispiel: Die Markteinführung eines Konkurrenzprodukts kann die Verkaufszahlen beeinflussen.
    • Risikomanagement in der Softwareentwicklung:Risikomanagement adressiert die Ungewissheiten in Softwareprojekten, die durch wechselnde Anforderungen und Ressourcenplanung entstehen. Es ist wichtig, Risiken frühzeitig zu identifizieren, deren Auswirkungen zu bewerten und durch Planung und Überwachung präventive Maßnahmen zu ergreifen.
    • Schritte des Risikomanagements:
      • Risikoerkennung:Identifizierung möglicher Risiken in den Bereichen Projekt, Produkt und Geschäft.
      • Risikoanalyse:Beurteilung der Wahrscheinlichkeit und Folgen der Risiken.
      • Risikoplanung:Erstellung von Plänen zur Risikovermeidung und -minderung.
      • Risikoüberwachung:Regelmäßige Bewertung der Risiken und Anpassung der Pläne bei neuen Informationen.
    • Kurz gesagt: Risikomanagement in der Softwareentwicklung befasst sich mit der Identifizierung, Analyse und Minderung von Projektrisiken, Produktrisiken und Geschäftsrisiken, um unerwünschte Auswirkungen auf Zeitpläne, Qualität und betriebliche Ziele zu vermeiden.
  • Risikoerkennung

    • Risikoerkennung: Der erste Schritt im Risikomanagement, fokussiert auf das Identifizieren von Risiken, die den Softwareentwicklungsprozess, das Produkt oder das Unternehmen beeinflussen könnten.
      Methoden:Team-Brainstorming oder Erfahrungen aus früheren Projekten.
    • Risikokategorien:
      • Technologische Risiken:Aus Hard- und Softwaretechnologien.
      • Personenbezogene Risiken:Verbunden mit Teammitgliedern.
      • Unternehmensbezogene Risiken:Aus dem Unternehmensumfeld.
      • Werkzeugrisiken:Aus Softwarewerkzeugen und Hilfssoftware.
      • Anforderungsrisiken:Durch geänderte Kundenanforderungen.
      • Schätzrisiken:Aus Ressourcen- und Zeitschätzungen.
    • Prozess der Risikoerkennung:Erstellung einer Liste potenzieller Risiken, gefolgt von einer Reduktion auf eine handhabbare Größe für effektive Überwachung und Management.
    • Kurz gesagt: Identifikation verschiedener Risikoarten
  • Risikoanalyse

    • Risikoanalyse: Bewertung von Eintrittswahrscheinlichkeiten und Konsequenzen, basierend auf Erfahrungen und Urteilsvermögen.
      Bewertung: Risiken werden nach ihrer Wahrscheinlichkeit und Auswirkungen eingestuft.
      KategorieAusprägungen
      Risiken
      • Sehr gering
      • Niedrig
      • Mittel
      • Hoch
      • Sehr hoch
      Auswirkungen
      • Unwesentlich
      • Geringfügig
      • Kritisch
      • Katastrophal
    • Ergebnisse der Risikoanalyse:Die Resultate der Analyse werden tabellarisch angeordnet, um die Risiken nach ihrer Schwere zu ordnen. Die Auswahl der wichtigsten Risiken basiert auf einer Kombination von Eintrittswahrscheinlichkeit und Auswirkungen.
    • Kurz gesagt: Die Risikoanalyse im Risikomanagement umfasst die systematische Bewertung von Risiken, um fundierte Entscheidungen über die zu überwachenden und zu minimierenden Risiken zu treffen, basierend auf Wahrscheinlichkeit und potenziellen Auswirkungen.
  • Risikoplanung

    • Risikoplanung: Der Prozess umfasst die Entwicklung von Strategien zur Handhabung von Hauptrisiken im Projekt. Jedes identifizierte Risiko erfordert spezifische Maßnahmen zur Minimierung seiner Auswirkungen und die Erstellung von Notfallplänen.
      Ansätze: "Was, wenn"-Fragen zur Berücksichtigung individueller und kombinierter Risiken sowie externer Einflüsse.
    • Strategiekategorien:
      • Vermeidungsstrategien:Ziel ist die Reduktion der Eintrittswahrscheinlichkeit von Risiken.
      • Minimierungsstrategien:Fokussiert auf die Reduktion der Auswirkungen von Risiken.
      • Notfallpläne:Bereithalten von Lösungen für den schlimmsten Fall.
    • Bedeutung der Planung:Effektive Risikoplanung ermöglicht es, potenzielle Probleme frühzeitig zu erkennen und zu bewältigen, um das Projekt vor ernsthaften Auswirkungen zu schützen.
    • Kurz gesagt: Risikoplanung im Softwareprojektmanagement involviert die Entwicklung und Anwendung gezielter Strategien, um Risiken zu vermeiden, zu minimieren und darauf vorbereitet zu sein.
  • Risikoüberwachung

    • Risikoüberwachung: Dieser Prozess überprüft fortlaufend die Annahmen zu Risiken in Bezug auf Produkt, Prozess und Wirtschaftlichkeit. Regelmäßige Bewertungen der Wahrscheinlichkeit und Auswirkungen von Risiken sind entscheidend.
      Indikatoren:Überwachung spezifischer Faktoren wie:
      • Lieferverzögerungen
      • Mitarbeitermoral
      • Unternehmensgerüchte
      • Werkzeugnutzung
      • Anforderungsänderungen
      • Zeitplanabweichungen
    • Überwachungsstrategie:Regelmäßiges Monitoring und Management-Reviews, um die Eintrittswahrscheinlichkeit und Schwere der Risiken zu bewerten und bei Bedarf Anpassungen vorzunehmen.
    • Kurz gesagt: Die Risikoüberwachung umfasst eine ständige Bewertung von Risiken in Softwareprojekten und die Anpassung von Strategien, um potenziellen Änderungen proaktiv zu begegnen.

Zeitplanung

Was ist das?

Prozess, die Projektarbeit in mehrere voneinander unabhängige Aufgaben zu zerlegen und zu entscheiden, wann und wie diese Aufgaben auszuführen sind. Sie schätzen, wie viele Kalendertage für jede Aufgabe eingeplant werden müssen und wie hoch der Aufwand ist und machen Vorschläge, wer an welchen Aufgaben arbeitet. Außerdem müssen Sie die Hardware- und Softwareressourcen abschätzen, die für jede Aufgabe benötigt werden.

  • Die Projektzeitplanung

    • Aktivitäten ermitteln:  Zerlegung der Projektarbeit in unabhängige Aufgaben.
    • Aktivitätenabhängigkeiten ermitteln: Koordination paralleler Aufgaben und Vermeidung unnötiger Abhängigkeiten.
    • Ressourcen schätzen: Abschätzung der benötigten Hardware- und Software-Ressourcen für die Aufgaben.
    • Mitarbeiterzuordnung: Festlegung, welche Mitarbeiter an welchen Aufgaben arbeiten.
    • Projektdiagramme erstellen: Visualisierung des Zeitplans durch Balkendiagramme oder andere Methoden.
    • Notwendigkeit der Zeitplanaktualisierung: Schätzungen neigen dazu, zu optimistisch zu sein und sollten regelmäßig basierend auf neuen Erkenntnissen angepasst werden. Erfahrungen aus ähnlichen Projekten sind wertvoll, erfordern aber oft Anpassungen aufgrund unterschiedlicher Methoden und Sprachen. Unvorhergesehene Ereignisse wie Krankheiten oder Lieferverzögerungen müssen einbezogen werden, um flexible und realistische Zeitpläne zu gewährleisten. Es wird empfohlen, einen Risikozuschlag einzuplanen, der die Schätzungen um 30–50% erhöht, um unerwartete Probleme zu berücksichtigen.

Agile Planung

Was ist das?

Agile Methoden der Softwareentwicklung sind iterative Ansätze, bei denen die Software in Inkrementen entwickelt und an den Kunden ausgeliefert wird. Im Gegensatz zu plangesteuerten Ansätzen ist die Funktionalität dieser Inkremente nicht im Voraus geplant, sondern wird während der Entwicklung beschlossen.


Die Entscheidung, was genau ein Inkrement umfasst, hängt vom Fortschritt und den Prioritäten des Kunden ab. Dieser Ansatz wird damit begründet, dass sich die Anforderungen und Prioritäten des Kunden ändern und es deshalb sinnvoll ist, diesen Änderungen mit einem flexiblen Plan zu begegnen

  • Zweistufiger Planungsansatz

    • Releaseplanung:Monate vorausschauend, entscheidet welche Merkmale Teil eines systemreleases sein sollten.
    • Iterationsplanung:kürzerer Zeitabschnitt, konzentriert sich auf die Planung des nächsten Inkrements eines Systems.

      → umfasst zwei - vier Wochen Teamarbeit

  • Planungsspiel

    • Planungsspiel: Gemeinsam mit Kunden entwickelte User-Storys  für die Funktionalität des Endsystems.
    • Story-Schätzung: Ordnen der Storys nach Aufwand, größere Storys werden in kleinere aufgeteilt.
    • Geschwindigkeit & Iteration: Schätzung des Teamfortschritts in Aufwandspunkten, Anpassung nach jeder Iteration.
    • Aufgabenplanung: Zerlegung der Storys in Aufgaben, Entwickler wählen Aufgaben basierend auf eigener Geschwindigkeit.
    • Kundenbeteiligung: Kunde ist involviert in Releaseplanung und Iterationsanpassungen, essentiell für agiles Vorgehen.
  • Vor und Nachteile

    1. + Das Team kennt die Aufgaben einer Iteration und wer was macht. Sie wissen, wen sie bei Aufgabenabhängigkeiten kontaktieren müssen.
    2. + Entwickler wählen ihre Aufgaben selbst aus, anstatt sie von einem Projektmanager zugewiesen zu bekommen. Dies fördert ein Gefühl der Eigenverantwortung und Motivation, die Aufgaben abzuschließen.
    3. + Fördert Transparenz und Zusammenarbeit im Team.
    4. + Stärkt die Eigenverantwortung und Motivation der Entwickler.
    5. - Kann zu Herausforderungen führen, wenn Aufgaben nicht wie geplant abgeschlossen werden.
    6. - Erfordert regelmäßige Überprüfung und mögliche Anpassungen der Ziele.
  • Kurz gesagt: Agile Planung ist kundenorientiert, adaptiv und iterativ, mit Fokus auf Teamgeschwindigkeit und flexiblem Scope für kontinuierliche Softwarelieferung.

Schätztechniken

Was ist das?

Es gibt so viele Unwägbarkeiten, dass es in den Anfängen eines Projekts quasi unmöglich ist, genaue Angaben zu den Entwicklungskosten zu machen. Nichtsdestotrotz müssen Unternehmen den Aufwand und die Kosten der Softwareentwicklung abschätzen. Hierfür können zwei Arten von Techniken eingesetzt werden

  • Erfahrungsbasierte Techniken:

    • Die Schätzung der zukünftigen Aufwandsanforderungen basiert auf den Erfahrungen des Managers, die er im Fachbereich und in vorherigen Projekten gesammelt hat. Im Prinzip fällt er ein fundiertes Urteil über die zu erwartenden Arbeitsanforderungen.
  • Aufwandsschätzung mithilfe eines Algorithmus

    • In diesem Ansatz wird eine mathematische Formel verwendet, um den Projektaufwand anhand von Schätzungen der Projektattribute (wie Größe) und Prozessmerkmale (wie die Erfahrung der Mitarbeiter) zu berechnen.
  • Beim Schätzen des Aufwands für Softwareprojekte müssen zwischen direkten Schätzungen und der Analyse von Projekt- und Produktmerkmalen wählen. Anfangsschätzungen sind oft ungenau, die Genauigkeit verbessert sich mit der Zeit und erfahrung aus anderen Projekten.
  • Vor und Nachteile von Schätztechniken

    1. + Basiert auf realen Daten und Erfahrungen, was zu fundierteren Schätzungen führen kann.
    2. + Algorithmische Modelle bieten einen standardisierten Ansatz für Schätzungen.
    3. - Erfahrungsbasierte Techniken können subjektiv und inkonsistent sein.
    4. - Algorithmische Schätzungen erfordern genaue Eingabedaten und können bei innovativen Projekten ungenau sein.
    5. - Beide Techniken können bei einzigartigen oder sich schnell ändernden Projekten unzureichend sein.
    6. - Anfangsschätzungen haben oft eine hohe Fehlermarge und müssen im Projektverlauf angepasst werden.
  • Kurz gesagt: Schätztechniken variieren in ihrer Genauigkeit und sollten unter Berücksichtigung der Projektbesonderheiten und des Entwicklungsfortschritts angewendet werden.

1. Projektmanagement

  1. a) Erläutern Sie, warum der Prozess der Projektplanung iterativ ist und warum ein Plan während eines Softwareprojekts ständig überarbeitet werden muss.

    • Die Planung eines Projekts hängt maßgeblich von der aktuellen Informationslage ab. Zu Projektbeginn sind viele Informationen noch nicht verfügbar oder mit Unsicherheiten behaftet. Im Zuge des Projektfortschritts klären sich diese Unsicherheiten zunehmend, und es werden mehr Informationen zugänglich. Deshalb ist es erforderlich, den Projektplan kontinuierlich zu überprüfen und zu aktualisieren, um sich an die sich stetig wandelnde Situation anzupassen.

  2. b) Unabhängig vom verwendeten Schätzverfahren sind Kostenschätzungen immer mit Risiken behaftet. Schlagen Sie vier Möglichkeiten vor, das Risiko bei einer Kostenschätzung zu verringern.

    1. Mehrere unabhängige Schätzungen unter Verwendung unterschiedlicher Schätztech- niken. Wenn diese stark voneinander abweichen, sollten weitere Kostenschätzungen durchgeführt und wiederholt werden, bis die Schätzungen konvergieren.

    2. Für diejenigen Teile des Systems, die schwer zu schätzen sind, sollte ein Prototyp entwickelt werden, um herauszufinden, welche Probleme wahrscheinlich auftreten werden.

    3. Wiederverwendung von Software, um den Aufwand für Schätzungen zu reduzieren und Gesamtkosten zu senken.

    4. Anwendung eines kostenorientierten Entwurfsansatzes, bei dem die Systemfunktio- nalität an eine feste Kostenbasis angepasst wird.

    5. Aufteilung der Softwareanforderungen in kritische, wünschenswerte und überflüs- sige Elemente (’gold plating’).

2 Risikomanagement

  1. An einem Lehrstuhl einer Universität gibt es in der Regel drei Typen von Personen: die verantwortliche Professor:in, einige Mitarbeitende und mehrere Studierende, quasi eine typische Lehrstuhlhierarchie. Der Lehrstuhl führt über mehrere Jahre ein größeres Forschungs- bzw. Softwareprojekt durch, an dem alle Personen beteiligt sind.


    Zeigen sie anhand von zwei konkreten Beispielen auf, welche Risiken bestehen, die eine Fortführung des Projektes gefährden können. Sie können hierbei auch allgemeine Risiken als Basis verwenden und diese auf den Lehrstuhl konkretisieren. Welche vorbeugenden Maßnahmen könnte man dagegen anwenden? Welche Maßnahme ist bei welcher Person sinnvoll?

    • hohe Fluktuation der Studierenden

      → langfristige Bindung, kleine Teilprojekte
    • Versetzung der Professor:in

      → Projekt zieht i.d.R. mit um, ansonsten Vertretung
    • Inkorrekte Aufwandsschätzung (unberechenbare Forschung)

      → mehr Personal, Zeit, Budget
    • Hardwareausfall

      → externer Dienstleister → Backups, redundante Geräte

U PERT Chart

  1. Bitte beachtet, dass die hier gezeigten Lösungen für Übungs- und Klausuraufgaben mithilfe von GPT-4 erstellt wurden und Ich daher keine absolute Genauigkeit garantieren kann. Ich schätze euer Verständnis und freue mich über jegliches Feedback oder eingereichte Lösungen.

  2. Wir werden in der Übung besprechen, was ein PERT Chart ist. Sie könne vorab einen Blick in das Extrakapitel werfen:  https://software-engineering-book.com/web/planning-activities/ Erstellen Sie ein PERT-Chart für die Arbeitspakete in Tabelle 1. Achten Sie darauf, dass Start und Endzeitpunkt jedes Paketes ersichtlich ist


    PERTChartPERTChart

K Risikomanagement

  1. Lösungsanatz 1:

  2. Kreuzen Sie für die folgenden Szenarien an, zu welcher Art von Risiko sie gehören


    a) Erstellen Sie einen Gantt-Chart für die Arbeitspakete aus Tabelle 1.

    GanttChart
  3. Lösungsanatz 2:

  4. K3