Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:softwarequalitaet

**Dies ist eine alte Version des Dokuments!**

Software-Qualität

Mögliche Klausurthemen

  • Inspection
  • Zuverlässigkeitsmetriken
  • Wartungsmetriken
  • Fahlertoleranzmaßnahmen
    • Maßnahmen?
  • COCOMO
  • Halstead
    • Volumen, Difficulty, Abstraktionsniveau (Herleitung)
      * OO-Metriken
  • Qualitätsmodelle
    • Prozessmtriken
  • CMM Grundprinzip
  • Anforderungen → Volere
  • Function Points
  • Anforderungsanalyse

Qualitätssysteme

  • Wann ist ein System zuverlässig? Was macht die Qualität eines Systems aus?
    • Qualität ist die Übereinstimmung mit den Anforderungen
    • Nur auf Basis bekannter Anforderungen kann eine Aussage über Qualität getroffen werden, da sie sonst nur subjektiv bewertbar ist.
    • Unzuverlässigkeit entsteht durch Ausfälle. Diese sind zu definieren und Maßstäbe zu finden, anhand derer die Schwere der Ausfälle bewertet werden kann.
    • Ein System bietet system services (in der Anforderungsddefinition festgelegt) an und zwar mit einer gewissen quality of service.
  • Wie macht man ein System zuverlässig? Wie stellt man die Qualität eines Systems sicher?
    • Konstruktive Maßnahmen (Methoden, Techniken)
  • Organisatorische Maßnahmen (Vorgehensweisen)
  • Analytische Maßnahmen (Test, Review)
  • Zusammenfassung: Konzeptionelles Vorgehen (Bild S.78)
    • Anforderungen <> Unzulänglichkeiten (Bewertungsmaßstäbe für Nichterfüllung, Maßnahmen zur Verbesserung)
    • Unzulänglichkeiten können nicht abgestellt, aber beherrscht werden
      * Bewertungsmaßstäbe müssen anforderungsbezogen eingesetzt werden
      * Maßnahmen müssen zielgerichtet eingesetzt werden

Systemunzulänglichkeiten

  • Defekt: Jegliche Abweichung von den Anforderungen
    • nicht akzeptables Systemverhalten (tatsächliche Mängel des Systems)
      • Ausfall: Beendigung der Fähigkeit eine Leistung zu erbringen.
      • Störung: Unfähigkeit des Systems eine Leistung zu erbringen (ohne Wartung etc.). Störungen können aufgrund von Ausfällen entstehen.
        • latente Störung: Hat noch nicht zu einem Fehler geführt.
        • Aktivierung: Latente Störung führt zu Fehler (etwa bei Benutzung des gestörten Systemteils).
      • Fehler: Unterschied zwischen dem berechneten und dem tatsächlichen Wert. Fehler sind Symptome von Störungen.
        • fehlerhafter Zustandsübergang: Systeminterner Zustandsübergang, der zu einem Systemausfall führen kann.
        • fehlerhafter Zustand: Systeminterner Zustand, der zu einem Systemausfall führen kann (auch bei weiteren korrekten Zustandsübergängen).
    • nicht zufriedenstellendes Systemverhalten (Missverständnis des Benutzers)

Bewertungsmaßstäbe

  • Funktionsprofil: up/down (Reaktion: Reparatur ja/nein)
  • degradiertes System: nur Teile des Systems funktionieren
  • Anwendungsdauer: Zeitspanne des Einsatzes eines Systems unter vorgegebenen Bedingungen.
  • Lebensdauer: Zeitraum von Betriebsbeginn bis -ausfall bei nicht-reparierbaren Systemen.
  • Brauchbarkeitsdauer (technische Lebensdauer): Zeitraum von Betriebsbeginn bis zum Zeitpunkt, an dem eine Instandsetzung nicht mehr rentabel möglich ist.
  • MTTFF (mean time to first failure): Zeitraum von Systemstart bis zum ersten Ausfall.
  • MTBF (mean time between failure): Zeitraum zwischen zwei Ausfällen.
    • MDT (mean down time): Zeitraum, während dessen das System nicht zur Verfügung steht (Instandsetzung).
      • MTTR (mean time to restoration): Zeitraum, während dessen das System instandgesetzt wird.
        • datection time: Benötigte Zeit um den Fehler zu entdecken.
        • diagnosis time: Benötigte Zeit um die Ursache des Fehlers zu entdecken.
        • time for reconfiguration: Zeit für Rekonfiguration des Systems.
        • recovery time: Zeit für das Bereitstellen des reparierten/ersetzten Teils.
        • time for reintegration: Zeit für das Integrieren des reparierten/ersetzten Teils.
      • präventive Wartungsaktivitäten
    • MUT (mean up time) / MTTF (mean time to failure): Zeitraum, während dessen das System zur Verfügung steht.
  • weitere Begriffe der ITU
    • required time: Zeit, während der das System zur Verfügung stehen muss.
    • non-required time: Zeit, während der das System nicht zur Verfügung stehen muss.
    • up time: Zeit, in der das System funktionsfähig ist.
    • disabled time: Ziet, in der das System nicht funktionsfähig ist.
      • down time (internal down time): Zeit, in der das System ausfallen ist.
      • external disabled time (external loss time, external down time): Zeit, in der das System nicht zur Verfügung steht, weil externe Ressourcen nicht genutzt werden können.
    • undetected fault time: Zeit zwischen Ausfall und Erkennen der Störung.
    • administrative delay: Zeit, während der keine Wartung durchgeführt werden kann.
    • maintenance time: Zeit, während der Wartung durchgeführt wird.
      • active maintenance time: Zeit, während der aktiv Wartung betrieben wird (ohne logistische Wartezeiten).
      • preventive maintenance time: Zeit, während der präventive Wartung betrieben wird (inkl. logistische Wartezeiten).
        • logistic delay time: Zeit, während der aufgrund von fehlenden Ressourcen keine Wartung betrieben werden kann.
        • active preventive maintenance time: Zeit, die für präventive Wartung verwendet wird.
      • corrective maintenance time:
        • logistic delay time
        • repair time: Zeit, in der korrektive Wartung betrieben wird (inkl. logistische Wartezeiten).
          • active repair time (active corrective maintenance time)
            • fault localization time (fault diagnosis time): Benötigte Zeit zur Fehlersuche.
            • technical delay: Zeit für zusätzlich notwendige technische Maßnahmen.
            • fault correction time: Zeit für die Störungsbeseitigung.
            • check out time: Zeit zum Nachweis der Funktionsfähigkeit.
  • Überlebenswahrscheinlichkeit (reliability, reliability performance) R(t): System ist funktionstüchtig in [0;t] (exponentiell monoton fallend)
  • Kumulative Ausfall- / Fehlerwahrscheinlichkeit (cumulative failure distribution) F(t): System fällt in [0;t] aus: F(t) = 1 - R(t)
  • Ausfall- / Fehlerdichte (probability density function, PDF) f(t): Zeitableitung von F(t)
  • Ausfallrate delta(t): umgekehrt proportional zur MTTFF
    • Badewannenkurve: Frühausfälle, useful operating life, Spätausfälle
  • Verfügbarkeit (availability) A(t): Wahrscheinlichtkeit, dass das System zum Zeitpunkt t funktionstüchtig ist.
    • steady state availability: MUT / (MUT + MDT)
  • Wartbarkeit (maintainability) M(t): Wahrscheinlichkeit, dass das System innerhalb der Zeitspanne t wieder instandgesetzt werden kann.
  • Reparaturrate (repair rate): entspricht Ausfallrate
  • Sicherheit (safety): Das System hat keine kritischen Ausfälle (kritische Funktionen). Zusammenhang zur Überlebenswahrscheinlichkeit (Leistung des Systems betreffende Funktionen)
  • Vertraulichkeit (security): Das System verhindert unerlaubten Zugriff (vertrauensrelevante Funktionen).
  • Performance: Beispiele sind Durchsatz oder Antwortzeit → Benchmarks
  • Qualitative Kenngrößen
    • Verlässlichkeit (dependability): Vertrauenswürdigkeit in die Leistung des Systems.
      • Verfügbarkeit (availability performance): Fähigkeit des Systems, eine Leistung zu einem bestimmten Zeitpunkt zu erbringen.
      • Zuverlässigkiet (reliability performance): Fähigkeit des Systems, eine Leistung für einen vorgegebenen Zeitabschnitt zu erbringen.
      • Instandsetzbarkeit (maintainability performance): Fähigkeit des Systems, durch Wartung instandgehalten oder repariert werden zu können.
      • Wartungsunterstützung (maintenance support performance): Fähigkeit der Wartungsorganisation, die benötigten Ressourcen für die Instandsetzung bereitzustellen.
    • Quality of Service
      • servicability performance
        • service accessability performance
        • service retainability performance
        • service integrity performance
      • service support performance
      • service operability performance
      • service security performance
      • trafficability performance
        • resources and facilities
        • transmission performance
        • dependability
          • reliability performance
          • maintainability performance
          • maintenance support performance

Qualitätsanforderungen

Arten von Anforderungen

  • Basisanforderung / primitive Anforderung: elementare Aussage, Satz mit Verb und Objekt (<> komplexer Text)
    • funktional: beschreiben den Funktionsumfang des Systems (Aufgaben, Dienstleistungen)
    • Rand-/Zusatzbedingung: beeinflusst die Umsetzung der funktionalen Anforderungen
      • physical (Abmessungen)
      • environmental (Sahara <> Sibirien)
      • product assurance (MUT > 6000h)
      • development (Programmiersprache)
        • implementation
        • test
          * Leistungsanforderungen: werden Basisanforderungen zugewiesen

Anforderungsdefinitionsprozess

  • Grafik S. 64
  • Aufnahme der Bedürfnisse/Vorstellungen der Stakeholder
  • WICHTIG: verdeckte Anforderungen ermitteln
  • (iteratives) Extrahieren von Basisanforderungen aus den vorhandenen Anforderungsbeschreibungen
    • ursprüngliche Texte aufbewahren!
      * funktionale Anforderungen → Systemanalyse
  • nicht-funktionale Anforderungen → Systemarchitektur

Maßnahmen

  • Fehlerverhütung
    • Fehlervermeidung
    • Fehlerbeseitigung
  • Fehlertoleranz
  • Wartung

Fehlertoleranz

  • Phasen
    • error detection
    • damage confinement
    • error recovery
    • fault treatment / continued service
      * Methoden
    • error processing
      • error compensation
        • error correction
        • fault masking
      • error recovery
        • backward error recovery
        • forward error recovery
    • reconfiguration
      • gestörte Komponente deaktivieren
      • gestörte Komponente ausgliedern
      • Ersatzkomponente eingliedern
  • Redundanz
    • Systemaspekt
        * strukturell
        * funktional
        * Informationsredundanz
        * Zeitredundanz			  	  	        
      * Aktivierung
        * statisch
        * dynamisch
      * Fehlerart
        * homogene Redundanz / Replikation -> Alterungsfehler
        * diversitäre Redundanz / Diversität -> Designfehler    

      * Beispiele

    • Fehlerkorrektur (Prüfsummenbildung)
      • Informationsredundanz (Prüfsumme)
      • strukturelle Redundanz (Speicherung von Nutzdaten und Prüfsumme)
      • funktionale Redundanz (Funktionen codieren/decodieren)
      • Zeitredundanz (Zeit für codieren/decodieren)
    • Fehlermaskierung (TMR-System)
      • strukturelle Redundanz (drei Komponenten)
      • Informationsredundanz (Verteilung der Information auf drei Komponenten)
      • funktionale Redundanz (Voter)
    • Rückwärtsfehlerbehebung (recovery points)
      • strukturelle/Informationsredundanz (Speichern der alten Zustände)
      • funktionale Redundanz (Verwaltung der Zustände)
      • Zeitredundanz (Wiederholung bereits durchlaufener Schritte)
    • Vorwärtsfehlerbehebung
      • funktionale Redundanz (Funktionen zum Bestimmen des Folgezustands)
    • Rekonfiguration (TMR mit zwei Ersatzkomponenten)
      • strukturelle Redundanz (Ersatzkomponenten)
      • funktionale Redundanz (Austauschprozess)

Produktmetriken

  • Flesh-Kincaid-Verständlichkeitsgrad
  • Flesh-Kincaid-Lesbarkeitsgrad
  • Fog-Index
  • COCOMO
    • Entwicklungsaufwand in Mann-Monaten: PM (personal month)
      * Entwicklungsaufwand in Monaten: TDEV (time of development)
      * Entwicklungsaufwand in Personen: N (number of programmers)

      * Function Point Verfahren (Albrechts-Metrik)

    • Festlegen der Systemgrenzen
    • Unadjusted Function Points ermitteln
      • Kategorisierung von Funktionen
      • Bestimmung des Komplexitätsgrades einer Funktion
      • Bestimmung des Funktionspunktwertes für eine Funktion der entsprechenden Kategorie mit vorgegebenem Komplexitätsgrad
      • Bestimmung des Funktionspunktewertes der gesamten Anwendung durch Analyse aller relevanten Funktionen
    • Adjusted Function Points ermitteln
    • Funktionskategorien (Datenbestände/Transaktionen)
      • externe Eingaben (external input EI)
          * externe Ausgaben (external output EO) 
          * interne Dateizugriffe (internal logical file ILF)
          * externe Dateizugriffe (external interface file EIF)
          *	externe Anfragen (external inquiry EQ)
        * Elementarprozess / Transaktion
          * Kleinste für den Benutzer bedeutende Verarbeitungseinheit.
          * Eigenständig und in sich abgeschlossen.
          * Hinterlässt konsistenten Systemzustand.	  	      

        * Entwurfsstrukturmetriken von Blaschek

    • Höhenmaß, Breitenmaß, rel. Breitenmaß, Maß der Baumähnlichkeit
  • Modul-Bindungsmetrik
    • Bindung (cohesion)
    • Kopplung (coupling)
    • Bindungstypen: zufällig, logisch, zeitlich, prozedural, kommunikativ, sequentiell, informal, funktional
  • LOC-Maß
  • Software-Science / Halstead-Metriken
    • Vokabular
    • Programmlänge
    • Programmumfang
    • Schwierigkeitsgrad
    • Abstraktionsniveau
    • Programmieraufwand
    • Intellektueller Gehalt
    • Programmierzeit
    • mittlere Fehlermenge
  • McCabe-Metrik

ToDo

  • Volere Template lesen
  • IEEE Testdokument lesen
  • Beispielaufgabe Function Points
  • Formelsammlung ausdrucken und durchgehen

Lernziele

  • Verstehen, warum eine Betrachtung von (IT-)Systemen unter Qualitätsgesichtspunkten Voraussetzung für die Beschäftigung mit dem Thema Softwarequalität ist.
  • Verstehen des konzeptionellen Ansatzes zur Beantwortung der Fragen:
    • Wann bezeichnet man ein System als verlässlich oder zuverlässig? Was macht die Qualität eines Systems aus?
    • Wie macht man ein System verlässlich bzw. zuverlässig? Wie stellt man die Qualität eines Systems sicher?
  • Wissen wie Anforderungen ermittelt werden.
  • Wissen wie Defekte beschrieben werden.
  • Wissen wie Defekte bewertet werden können.
  • Wissen welche Maßnahmenkategorien und welche Maßnahmen zur Erreichung der geforderten Qualität eingesetzt werden können.
  • Anwenden der vorgestellten Methoden und Techniken zur Ermittlung von Anforderungen.
  • Anwenden der vorgestellten Methoden und Techniken zur Ermittlung von Bewertungsgrößen.
  • Wissen wie Systemunzulänglichkeiten beschrieben werden.
  • Wissen wie Systemunzulänglichkeiten bewertet werden können.
  • Verständnis, warum Produktmetriken für den Softwareentwicklungsprozess bedeutsam sind.
  • Kenntnis über vorgestellte im Softwareentwicklungsprozess einsetzbare Metriken. Wissen um den Beispielcharakter der vorgestellten Produktmetriken.
  • Anwenden der Metriken.

Aufgaben

Kapitel 1

  • Grenzen Sie die Begriffe "Fehler", "Ausfall" und "Störung gegeneinander ab!
    • Ein Ausfall bezeichnet die Beendigung eines Elements, eine angeforderte Leistung zu erbringen (z.B. Hardware geht kaputt).
    • Eine Störung bezeichnet die Unfähigkeit eines Elements, eine angeforderte Leistung zu erbringen. Störungen können durch Ausfälle verursacht werden (müssen es aber nicht, Bsp. Programmierfehler).
    • Ein Fehler ist jegliche Abweichung von berechneten, beobachteten oder gemessenen Werten von den tatsächlich gültigen (Grundlage: Theorie, Spezifikation). Fehler sind auf Störungen zurückzuführen (Indikatoren für Störungen).
  • Altert Software?
    • Software wird zwar mit der Zeit (wie alle Dinge) älter, verursacht aber keine altersbedingten Fehler, wie Hardware es tut. Daher müssen für Software keine Vorkehrungen getroffen werden, um Altersfehlern vorzubeugen (sofern das Soft-/Hardwarekonstrukt gleich bleibt).
      * Wie ist die Ausfallrate gamma definiert? Geben Sie die mathematische Formulierung an!
    • Siehe Kapitel 1.3.5 im Skript.
      * Die Zuverlässigkeitsfunktion eines Systems ist: <latex>R(t) = 2e^{-0.1t\frac{1}{y}}-e^{-0.2t\frac{1}{y}}</latex>. Geben Sie die kumulative Fehlerverteilung F(t) an und berechnen Sie den MTTFF-Wert!
    • <latex>F(t) = 1 - R(t) = 1 - 2e^{-0.1t\frac{1}{y}} + e^{-0.2t\frac{1}{y}}</latex>
    • <latex>

\mbox{MTTFF} = \overline{T} = \int_{0}^\infty \mathrm R(t)\,\mathrm dt

\int{0}^\infty \mathrm R(t)\,\mathrm dt = \int{0}^\infty \mathrm 2e^{-0.1t\frac{1}{y}}-e^{-0.2t\frac{1}{y}}\,\mathrm dt

= \int{0}^\infty \mathrm 2e^{-0.1t\frac{1}{y}}\,\mathrm dt - \int{0}^\infty e^{-0.2t\frac{1}{y}}\,\mathrm dt

= [-20ye^{-0.1t\frac{1}{y}}]0^\infty - [-5ye^{-0.2t\frac{1}{y}}]0^\infty

= \left[\lim{t \to \infty}(-20ye^{-0.1t\frac{1}{y}}) - (-20ye^{\frac{0}{y}})\right] - \left[\lim{t \to \infty}(-5ye^{-0.2t\frac{1}{y}}) - (-5ye^{\frac{0}{y}})\right]

= \left[0 + 20y\right] - \left[0 + 5y\right]

= 20y - 5y

= 15y

</latex>

  • Für ein System ist gegeben: MDT = 2 Tage, MTBF = 365 Tage. Geben Sie die Verfügbarkeit für das System an!
    • MUT + MDT = MTBF → MUT = 365 - 2 = 363
    • A = MUT / MTBF = 363 / 365 = 99,452%
      * Was ist ein "required constraint"?
    • Eine Basisanforderung, die keine funktionale Anforderung ist, wird als required constraint bezeichnet. RQs stellen Randbedingungen dar und wirken sich auf die Architektur des Systems aus. Sie lassen sich kategorisieren in physical, environmental, development und product assurance.
  • Wie ermitteln Sie aus Kundenwünschen Anforderungen? Beschreiben Sie den Prozess der Anforderungsermittlung!
    • In Gesprächen, Beobachtungen usw. werden initiale Anforderungen der Stakeholder erfasst und zu Papier gebracht (→ ablegen).
    • Diese Anforderungen werden nun genauer untersucht und Basisanforderungen abgeleitet (→ getrennt ablegen).
    • Die Basisanforderungen werden in funktionale Anforderungen und Randbedingungen aufgeteilt.
    • Funktionale Anforderungen werden (wenn sie nicht mehr weiter unterteilbar sind) in die Systemanalyse übernommen (→ getrennt ablegen).
    • Randbedingungen werden in die Systemarchitektur übernommen.
      * Was ist Fehlertoleranz?
    • Fehlertoleranz bezeichnet die Fähigkeit eines Systems auch im Fehlerfall weiter seine Funktionalität anzubieten.
    • Phasen und Methoden siehe Skript S.68
      * Welche Redundanzformen werden bei einem fehlerkorrigierenden Code (error correcting code) eingesetzt?
    • Informationsredundanz (Nutzdaten und Prüfsumme)
    • strukturelle Redundanz (Speicherung von Nutzdaten und Prüfsumme)
    • funktionale Redundanz (Funktion zum Codieren und Decodieren)
    • Zeitredundanz (Zeit zum Codieren und Decodieren)
  • Wie können Sie sich vor Design-Fehlern schützen?
    • Designfehlern lässt sich nur durch redundante Entwicklung von Systemkomponenten entgegenwirken (z.B. N-Version Programming)
se/softwarequalitaet.1207228735.txt.gz · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)