Podcast
Questions and Answers
Welche Aussage beschreibt am besten die Rolle von Softwaremetriken im Kontext der Softwarequalität?
Welche Aussage beschreibt am besten die Rolle von Softwaremetriken im Kontext der Softwarequalität?
- Softwaremetriken bieten eine subjektive Grundlage für die Bewertung von Softwareprodukten, basierend auf der Erfahrung der Entwickler.
- Softwaremetriken werden hauptsächlich dazu verwendet, die Einhaltung von Programmierstandards zu überprüfen.
- Softwaremetriken dienen ausschließlich der Dokumentation des Fortschritts im Softwareentwicklungsprozess.
- Softwaremetriken bieten eine objektive, quantifizierbare Grundlage für die Bewertung verschiedener Aspekte eines Softwareprodukts oder -projekts. (correct)
Wie unterstützen Softwaremetriken Teams und Stakeholder?
Wie unterstützen Softwaremetriken Teams und Stakeholder?
- Indem sie die Notwendigkeit von manuellen Code-Reviews vollständig ersetzen.
- Indem sie es ermöglichen, schnell den aktuellen Zustand eines Projektes zu erfassen und kritische Qualitätsattribute zu messen und überwachen. (correct)
- Indem sie automatisch Fehler im Code beheben.
- Indem sie eine detaillierte Analyse einzelner Codezeilen ermöglichen.
Was ist das primäre Ziel bei der Überführung abstrakter Qualitätsziele in messbare Größen?
Was ist das primäre Ziel bei der Überführung abstrakter Qualitätsziele in messbare Größen?
- Die Reduzierung der Anzahl der am Projekt beteiligten Entwickler.
- Die Erstellung einer umfassenden Dokumentation aller Code-Bestandteile.
- Die Automatisierung des Testprozesses.
- Die Definition konkreter Merkmale und Indikatoren, um Qualitätsziele quantitativ bewerten zu können. (correct)
Welche der folgenden Aussagen beschreibt am besten, warum das Messen von Softwarequalität als eine analytische Qualitätsmaßnahme betrachtet wird?
Welche der folgenden Aussagen beschreibt am besten, warum das Messen von Softwarequalität als eine analytische Qualitätsmaßnahme betrachtet wird?
Was ist der Hauptvorteil der Verwendung von Softwaremetriken bei der Entscheidungsfindung in der Softwareentwicklung und -wartung?
Was ist der Hauptvorteil der Verwendung von Softwaremetriken bei der Entscheidungsfindung in der Softwareentwicklung und -wartung?
Welche der folgenden Metriken wäre am wenigsten geeignet, um die Qualität eines Softwareprojekts zu beurteilen?
Welche der folgenden Metriken wäre am wenigsten geeignet, um die Qualität eines Softwareprojekts zu beurteilen?
In welcher Weise tragen Softwaremetriken zur Risikobewertung in Softwareprojekten bei?
In welcher Weise tragen Softwaremetriken zur Risikobewertung in Softwareprojekten bei?
Warum ist es wichtig, bei der Verwendung von Softwaremetriken sowohl traditionelle als auch objektorientierte Metriken zu berücksichtigen?
Warum ist es wichtig, bei der Verwendung von Softwaremetriken sowohl traditionelle als auch objektorientierte Metriken zu berücksichtigen?
Welche Aussage beschreibt am besten den Hauptzweck von Komponentenmetriken in der Softwareentwicklung?
Welche Aussage beschreibt am besten den Hauptzweck von Komponentenmetriken in der Softwareentwicklung?
Welche der genannten Metriken fällt nicht direkt in die Kategorie der Umfangsmetriken zur Messung der Größe von Softwarekomponenten?
Welche der genannten Metriken fällt nicht direkt in die Kategorie der Umfangsmetriken zur Messung der Größe von Softwarekomponenten?
Was messen die Metriken OV, CV und NOA hauptsächlich?
Was messen die Metriken OV, CV und NOA hauptsächlich?
Welche der folgenden Aussagen beschreibt am besten den Nutzen der Metriken DOL (Depth of Inheritance) und NOD (Number of Descendants)?
Welche der folgenden Aussagen beschreibt am besten den Nutzen der Metriken DOL (Depth of Inheritance) und NOD (Number of Descendants)?
Was ist das Hauptproblem, das durch lange Vererbungsketten in einer Softwarearchitektur entstehen kann?
Was ist das Hauptproblem, das durch lange Vererbungsketten in einer Softwarearchitektur entstehen kann?
Die Metrik NORM („Number of Redefined Methods“) zählt zu welcher Kategorie von Komponentenmetriken und was misst sie?
Die Metrik NORM („Number of Redefined Methods“) zählt zu welcher Kategorie von Komponentenmetriken und was misst sie?
Wie können Komponentenmetriken während eines Refactorings-Prozesses eingesetzt werden?
Wie können Komponentenmetriken während eines Refactorings-Prozesses eingesetzt werden?
Was ist ein Indikator dafür, dass Komponentenmetriken effektiv eingesetzt werden?
Was ist ein Indikator dafür, dass Komponentenmetriken effektiv eingesetzt werden?
Was stellt die Variable 'E' in der Formel zur Berechnung der zyklomatischen Komplexität $V(G) = E – N + 2P$ dar?
Was stellt die Variable 'E' in der Formel zur Berechnung der zyklomatischen Komplexität $V(G) = E – N + 2P$ dar?
Welche Aussage beschreibt am besten, wie sich eine hohe zyklomatische Komplexität auf den Code auswirkt?
Welche Aussage beschreibt am besten, wie sich eine hohe zyklomatische Komplexität auf den Code auswirkt?
In welchem Zusammenhang steht die zyklomatische Komplexität mit Entscheidungspunkten im Code?
In welchem Zusammenhang steht die zyklomatische Komplexität mit Entscheidungspunkten im Code?
Welche der folgenden Maßnahmen wird typischerweise empfohlen, wenn die zyklomatische Komplexität einer Methode einen bestimmten Schwellenwert überschreitet?
Welche der folgenden Maßnahmen wird typischerweise empfohlen, wenn die zyklomatische Komplexität einer Methode einen bestimmten Schwellenwert überschreitet?
Was gibt die zyklomatische Komplexität primär an?
Was gibt die zyklomatische Komplexität primär an?
Wie wirkt sich die Anzahl der zusammenhängenden Komponenten (P) in der Formel $V(G) = E - N + 2P$ auf die zyklomatische Komplexität aus?
Wie wirkt sich die Anzahl der zusammenhängenden Komponenten (P) in der Formel $V(G) = E - N + 2P$ auf die zyklomatische Komplexität aus?
Welchen Vorteil bietet die Verwendung der zyklomatischen Komplexität bei der Softwareentwicklung?
Welchen Vorteil bietet die Verwendung der zyklomatischen Komplexität bei der Softwareentwicklung?
Was sind typische Beispiele für Entscheidungspunkte in einem Programm, die die zyklomatische Komplexität beeinflussen?
Was sind typische Beispiele für Entscheidungspunkte in einem Programm, die die zyklomatische Komplexität beeinflussen?
Angenommen, ein Programm hat einen Kontrollflussgraph mit 10 Kanten und 8 Knoten und besteht aus einer zusammenhängenden Komponente. Was ist die zyklomatische Komplexität dieses Programms?
Angenommen, ein Programm hat einen Kontrollflussgraph mit 10 Kanten und 8 Knoten und besteht aus einer zusammenhängenden Komponente. Was ist die zyklomatische Komplexität dieses Programms?
Warum ist es wichtig, die zyklomatische Komplexität bei der Entwicklung von Software zu berücksichtigen?
Warum ist es wichtig, die zyklomatische Komplexität bei der Entwicklung von Software zu berücksichtigen?
Wie wird die Kohäsion innerhalb einer Klasse, eines Pakets oder einer Bibliothek gemessen?
Wie wird die Kohäsion innerhalb einer Klasse, eines Pakets oder einer Bibliothek gemessen?
Was unterscheidet Strukturmetriken von Komponentenmetriken in der Softwarequalitätsbewertung?
Was unterscheidet Strukturmetriken von Komponentenmetriken in der Softwarequalitätsbewertung?
Was bedeutet ein hoher Fan-In Wert für eine Klasse C (Fin(C)) typischerweise im Kontext einer Softwarearchitektur?
Was bedeutet ein hoher Fan-In Wert für eine Klasse C (Fin(C)) typischerweise im Kontext einer Softwarearchitektur?
Was impliziert ein hoher Fan-Out Wert (Fou(C)) für eine Klasse C bezüglich ihrer Position in der Softwarearchitektur?
Was impliziert ein hoher Fan-Out Wert (Fou(C)) für eine Klasse C bezüglich ihrer Position in der Softwarearchitektur?
Welche Aussage beschreibt am besten die Beziehung zwischen Fan-In und Fan-Out einer Klasse und ihrer Position in der Softwarearchitektur?
Welche Aussage beschreibt am besten die Beziehung zwischen Fan-In und Fan-Out einer Klasse und ihrer Position in der Softwarearchitektur?
Warum sind Kopplungsmetriken wie Fan-In und Fan-Out besonders wichtig im Kontext von Vererbungsbeziehungen?
Warum sind Kopplungsmetriken wie Fan-In und Fan-Out besonders wichtig im Kontext von Vererbungsbeziehungen?
Die LCOM-Metrik hat in ihrer ursprünglichen Form gewisse Einschränkungen. Was wurde vorgeschlagen, um diese Defizite zu beheben?
Die LCOM-Metrik hat in ihrer ursprünglichen Form gewisse Einschränkungen. Was wurde vorgeschlagen, um diese Defizite zu beheben?
Was sind die Hauptvorteile der Verwendung von Strukturmetriken in der Softwareentwicklung?
Was sind die Hauptvorteile der Verwendung von Strukturmetriken in der Softwareentwicklung?
Welche Aussage beschreibt am besten den Unterschied zwischen funktionalen Anforderungen und Qualitätsanforderungen?
Welche Aussage beschreibt am besten den Unterschied zwischen funktionalen Anforderungen und Qualitätsanforderungen?
Warum ist es wichtig, Qualitätsanforderungen in der Softwareentwicklung zu berücksichtigen?
Warum ist es wichtig, Qualitätsanforderungen in der Softwareentwicklung zu berücksichtigen?
Was ist der Zweck von Qualitätsmetriken im Kontext von Qualitätszielen?
Was ist der Zweck von Qualitätsmetriken im Kontext von Qualitätszielen?
Wie hängen Qualitätsanforderungen, Qualitätsziele und Qualitätsmetriken zusammen?
Wie hängen Qualitätsanforderungen, Qualitätsziele und Qualitätsmetriken zusammen?
Was ist das Hauptproblem, wenn Qualitätsaspekte, -merkmale, -eigenschaften, -attribute und -ziele synonym verwendet werden?
Was ist das Hauptproblem, wenn Qualitätsaspekte, -merkmale, -eigenschaften, -attribute und -ziele synonym verwendet werden?
Angenommen, ein Kunde fordert eine 'hohe Benutzerfreundlichkeit' für eine Softwareanwendung. Wie könnte dieses Qualitätsziel operationalisiert werden?
Angenommen, ein Kunde fordert eine 'hohe Benutzerfreundlichkeit' für eine Softwareanwendung. Wie könnte dieses Qualitätsziel operationalisiert werden?
Welche der folgenden Metriken wäre am besten geeignet, um die 'Robustheit' einer Software zu messen?
Welche der folgenden Metriken wäre am besten geeignet, um die 'Robustheit' einer Software zu messen?
Ein Entwicklungsteam stellt fest, dass die Anzahl der Qualitätsanforderungen die Anzahl der funktionalen Anforderungen übersteigt. Was bedeutet das?
Ein Entwicklungsteam stellt fest, dass die Anzahl der Qualitätsanforderungen die Anzahl der funktionalen Anforderungen übersteigt. Was bedeutet das?
Wie kann das Verständnis der Beziehungen zwischen Qualitätsanforderungen, -zielen und -metriken einem Projektmanager helfen?
Wie kann das Verständnis der Beziehungen zwischen Qualitätsanforderungen, -zielen und -metriken einem Projektmanager helfen?
Welche der folgenden Aussagen beschreibt am besten den Einfluss von Qualitätsanforderungen auf das Systemverhalten?
Welche der folgenden Aussagen beschreibt am besten den Einfluss von Qualitätsanforderungen auf das Systemverhalten?
Welche der folgenden Aktivitäten gehört NICHT zu Schneiders (2012) dreistufigem Vorgehen zur Erstellung eines Qualitätsmodells?
Welche der folgenden Aktivitäten gehört NICHT zu Schneiders (2012) dreistufigem Vorgehen zur Erstellung eines Qualitätsmodells?
Welche der folgenden Aussagen über Softwaremetriken ist gemäß Schneider (2012) korrekt?
Welche der folgenden Aussagen über Softwaremetriken ist gemäß Schneider (2012) korrekt?
Was misst die zyklomatische Komplexität nach Thomas J. McCabe?
Was misst die zyklomatische Komplexität nach Thomas J. McCabe?
Warum bilden klassische Software-Metriken wie die McCabe- und Halstead-Metriken die Komplexität objektorientierter Programme nicht vollständig ab?
Warum bilden klassische Software-Metriken wie die McCabe- und Halstead-Metriken die Komplexität objektorientierter Programme nicht vollständig ab?
Welche Aussage beschreibt am besten, wie Softwaremetriken zur Qualitätsverbesserung beitragen können?
Welche Aussage beschreibt am besten, wie Softwaremetriken zur Qualitätsverbesserung beitragen können?
Was ist ein wesentlicher Nachteil bei der ausschließlichen Verwendung von Code-Metriken zur Bewertung der Softwarequalität?
Was ist ein wesentlicher Nachteil bei der ausschließlichen Verwendung von Code-Metriken zur Bewertung der Softwarequalität?
In welchem Kontext ist die Verwendung von Softwaremetriken am sinnvollsten?
In welchem Kontext ist die Verwendung von Softwaremetriken am sinnvollsten?
Welches Ziel sollte man bei der Definition von Metriken für ein Softwareprojekt verfolgen?
Welches Ziel sollte man bei der Definition von Metriken für ein Softwareprojekt verfolgen?
Flashcards
Was sind Softwaremetriken?
Was sind Softwaremetriken?
Softwaremetriken bewerten quantitativ Softwareprodukte oder -projekte.
Wozu dienen Softwaremetriken?
Wozu dienen Softwaremetriken?
Softwaremetriken helfen, den Zustand eines Projekts schnell zu erfassen.
Art der Qualitätsmaßnahme?
Art der Qualitätsmaßnahme?
Das Messen von Softwarequalität ist eine analytische Qualitätsmaßnahme.
Was bieten Metriken?
Was bieten Metriken?
Signup and view all the flashcards
Was kann man messen?
Was kann man messen?
Signup and view all the flashcards
Was erleichtern Metriken?
Was erleichtern Metriken?
Signup and view all the flashcards
Wie unterstützen Metriken?
Wie unterstützen Metriken?
Signup and view all the flashcards
Wo findet man Qualitätsaspekte?
Wo findet man Qualitätsaspekte?
Signup and view all the flashcards
Qualitätsaspekt, -merkmal, -eigenschaft, -attribut, -ziel
Qualitätsaspekt, -merkmal, -eigenschaft, -attribut, -ziel
Signup and view all the flashcards
Funktionale Anforderungen
Funktionale Anforderungen
Signup and view all the flashcards
Rahmenbedingungen
Rahmenbedingungen
Signup and view all the flashcards
Qualitätsanforderungen
Qualitätsanforderungen
Signup and view all the flashcards
Qualitätsziel / Qualitätsaspekt
Qualitätsziel / Qualitätsaspekt
Signup and view all the flashcards
Qualitätsmetriken
Qualitätsmetriken
Signup and view all the flashcards
Kundenwunsch (Qualitätsanforderung)
Kundenwunsch (Qualitätsanforderung)
Signup and view all the flashcards
Qualitätsziele (Robustheit, Geschwindigkeit, einfache Benutzeroberfläche)
Qualitätsziele (Robustheit, Geschwindigkeit, einfache Benutzeroberfläche)
Signup and view all the flashcards
Qualitätsmetriken
Qualitätsmetriken
Signup and view all the flashcards
Qualitätenbaum
Qualitätenbaum
Signup and view all the flashcards
Komponentenmetriken
Komponentenmetriken
Signup and view all the flashcards
Einsatz von Komponentenmetriken
Einsatz von Komponentenmetriken
Signup and view all the flashcards
Umfangsmetriken (Komponenten)
Umfangsmetriken (Komponenten)
Signup and view all the flashcards
Beispiele für Umfangsmetriken
Beispiele für Umfangsmetriken
Signup and view all the flashcards
WAC und WMC
WAC und WMC
Signup and view all the flashcards
Vererbungsmetriken
Vererbungsmetriken
Signup and view all the flashcards
Tiefe der Vererbung (DOL)
Tiefe der Vererbung (DOL)
Signup and view all the flashcards
Anzahl der reimplementierten Methoden (NORM)
Anzahl der reimplementierten Methoden (NORM)
Signup and view all the flashcards
Programm-Pfade
Programm-Pfade
Signup and view all the flashcards
Zyklomatische Komplexität
Zyklomatische Komplexität
Signup and view all the flashcards
Entscheidungspunkte
Entscheidungspunkte
Signup and view all the flashcards
Kontrollflussgraph
Kontrollflussgraph
Signup and view all the flashcards
Formel zur Berechnung der zyklomatischen Komplexität
Formel zur Berechnung der zyklomatischen Komplexität
Signup and view all the flashcards
Kanten (im Kontrollflussgraph)
Kanten (im Kontrollflussgraph)
Signup and view all the flashcards
Knoten (im Kontrollflussgraph)
Knoten (im Kontrollflussgraph)
Signup and view all the flashcards
Zusammenhängende Komponente
Zusammenhängende Komponente
Signup and view all the flashcards
Bedeutung hoher zyklomatische Komplexität
Bedeutung hoher zyklomatische Komplexität
Signup and view all the flashcards
Zyklomatische Komplexität > 10
Zyklomatische Komplexität > 10
Signup and view all the flashcards
Was ist Kohäsion (LCOM)?
Was ist Kohäsion (LCOM)?
Signup and view all the flashcards
Wie wird LCOM berechnet?
Wie wird LCOM berechnet?
Signup and view all the flashcards
Was sind Strukturmetriken?
Was sind Strukturmetriken?
Signup and view all the flashcards
Was bedeutet Fan-In (Fin)?
Was bedeutet Fan-In (Fin)?
Signup and view all the flashcards
Was bedeutet Fan-Out (Fou)?
Was bedeutet Fan-Out (Fou)?
Signup and view all the flashcards
Hoher Fan-In: Wo in der Architektur?
Hoher Fan-In: Wo in der Architektur?
Signup and view all the flashcards
Hoher Fan-Out: Wo in der Architektur?
Hoher Fan-Out: Wo in der Architektur?
Signup and view all the flashcards
Warum sind Strukturmetriken wichtig?
Warum sind Strukturmetriken wichtig?
Signup and view all the flashcards
3-stufiges Vorgehen nach Schneider
3-stufiges Vorgehen nach Schneider
Signup and view all the flashcards
Was messen Softwaremetriken?
Was messen Softwaremetriken?
Signup and view all the flashcards
Was misst die zyklomatische Komplexität?
Was misst die zyklomatische Komplexität?
Signup and view all the flashcards
Warum sind klassische Metriken unvollständig?
Warum sind klassische Metriken unvollständig?
Signup and view all the flashcards
Was gehört NICHT zum Vorgehen nach Schneider?
Was gehört NICHT zum Vorgehen nach Schneider?
Signup and view all the flashcards
Was sind die Ergebnisse von Softwaremetriken?
Was sind die Ergebnisse von Softwaremetriken?
Signup and view all the flashcards
Was messen McCabe- & Halstead-Metriken?
Was messen McCabe- & Halstead-Metriken?
Signup and view all the flashcards
Was misst die McCabe-Metrik?
Was misst die McCabe-Metrik?
Signup and view all the flashcards
Study Notes
Konzepte der Softwarequalität
- Softwaremetriken bewerten quantitativ Aspekte von Softwareprodukten oder -projekten.
- Sie schaffen objektive Grundlagen zur Beurteilung von Codekomplexität, Wartbarkeit und Leistung.
- Die Messung von Softwarequalität unterstützt Entscheidungen in Entwicklung und Wartung.
- Sie hilft, schnell den Zustand eines Projekts zu erfassen.
- Das Messen von Softwarequalität ist wichtig für analytische Qualitätsmaßnahmen.
Lernziele
- Qualitätsmodelle werden verständlich.
- Abstrakte Qualitätsziele können mithilfe konkreter Merkmale und Indikatoren in messbare Größen umgewandelt werden.
- Traditionelle Softwaremetriken wie "Lines of Code" und "zyklomatische Komplexität" werden bekannt, sowie objektorientierte Metriken.
- Ein Einblick in Strukturen und Eigenschaften von Softwaresystemen wird ermöglicht.
Aufgabe von Metriken
- Metriken bieten eine objektive, quantifizierbare Grundlage zur Bewertung verschiedener Aspekte eines Softwareprodukts oder -projekts.
- Sie ermöglichen es, durch einen schnellen Blick auf relevante Zahlen den aktuellen Projektzustand zu erfassen und zu beschreiben.
- Softwaremetriken helfen Teams und Stakeholdern, die Komplexität, Wartbarkeit, Leistung und andere Qualitätsattribute effizient zu messen und zu überwachen.
- Die Identifizierung potenzieller Problembereiche und Risiken wird erleichtert.
- Die Entscheidungsfindung und Prioritätensetzung in der Softwareentwicklung und -wartung wird unterstützt.
Qualitätsanforderungen
- Qualitätsaspekte sind in der Literatur vielfältig zu finden.
- Der englischsprachige Wikipedia-Eintrag zu „Qualitätsattributen“ enthält eine umfangreiche (aber nicht umfassende) Liste mit Qualitätsaspekten: accessibility, accountability, accuracy, adaptability, administrability, afford-ability, agility, auditability, autonomy, availability, compatibility, composability, confidentiality, configurability, correctness, credibility, customizability, debuggability, degradability, determinability, demonstrability, dependability, deployability, discoverability, distributability, durability, effectiveness, efficiency, evolvability, extensibility, failure transparency, fault-tolerance, fidelity, flexibility, inspectability, installability, integrity, interchangeability, interoperability, learnability, localizability, maintainability, manageability, mobility, modifiability, modularity, observability, operability, orthogonality, portability, precision, predictability, process capabilities, producibility, provability, recoverability, redundancy, relevance, reliability, repeatability, reproducibility, resilience, responsiveness, reusability, robustness, safety, scalability, seamlessness, self-sustainability, serviceability, securability, simplicity, stability, standards compliance, survivability, sustainability, tailorability, testability, timeliness, traceability, transparency, ubiquity, understandability, upgradability, usability, vulnerability.
- Der „Qualitätenbaum“ von Boehm zeigt, dass Qualitätsaspekte oft in Gruppen angeordnet sind oder eine Hierarchie bilden.
- "Zuverlässigkeit" setzt sich aus "Genauigkeit", "Konsistenz" und "Vollständigkeit" zusammen.
- Für die Eigenschaften auf der untersten Ebene existiert eine Reihe von Qualitätsmetriken, um den Erfüllungsgrad zu bestimmen.
Begriffsbestimmungen
- Qualitätsaspekt, Qualitätsmerkmal, Qualitätseigenschaft, Qualitätsattribut und Qualitätsziel werden oft synonym verwendet.
- Anforderungen werden unterteilt in "Funktionale Anforderungen", "Qualitätsanforderungen" und "Rahmenbedingungen".
- Funktionale Anforderungen definieren, was das System tun soll.
- Rahmenbedingungen spannen den Rahmen auf, innerhalb dessen das Verhalten erreicht werden muss.
- Qualitätsanforderungen spezifizieren, wie sich dieses Verhalten genau darstellen soll.
- Qualitätsanforderungen sind anteilsmäßig den Funktionalen Anforderungen überlegen und ihr Einfluss auf das Systemverhalten kann nicht überschätzt werden.
Qualitätsmodelle
- Eine Qualitätsanforderung besteht aus einem oder mehreren Qualitätsaspekten, die als Qualitätsziele bezeichnet werden.
- Um das Erreichen dieser Ziele messbar zu machen, werden Qualitätsmetriken herangezogen.
- Anforderungen und deren Beschreibung müssen zusammen mit dem Kunden erarbeitet werden.
- Stakeholder legen die in Abbildung 9 genannten Begriffe oft auf ihre eigene Weise aus.
- Selbst die normierten Qualitätsaspekte sind untereinander verwoben.
- Das Ziel aus Sicht der Softwarequalität ist es, sich schrittweise an messbare Indikatoren heranzuarbeiten.
- Wenn messbare Indikatoren vorliegen ist es möglich die Qualität der Software, den Projektfortschritt und generelle Güte der Entwicklungsprozesse innerhalb eines Unternehmens objektiv zu monitoren.
- Schneider (2012) empfiehlt ein "Qualitätsmodell" zu erstellen, bei welchem vom Abstrakten über das Konkrete bis hin zum Messbaren gearbeitet wird.
Schritte zur Erstellung eines Qualitätsmodells (Schneider)
- Abstrakte Qualitätsziele: Definition der allgemeinsten messbaren Ziele auf höchster Ebene.
- Konkrete Qualitätsmerkmale: Konkretisierung der abstrakten Ziele auf die spezifische Kundensituation und das Projekt.
- Indikatoren und Metriken: Festlegung von Messgrößen und Indikatoren zur Messung der konkreten Merkmale.
- Ziel: Erstellung eines maßgeschneiderten Modells, das das individuelle Verständnis der Kunden zu ihren Qualitätszielen abbildet und als Richtlinie für die Entwicklung und Bewertung dient.
Sprache
- Bei der Erstellung des Qualitätsmodells soll die Sprache der Auftraggeberinnen verwendet werden.
- Durch Abbildung der wichtigsten Qualitätsanforderungen samt individueller Indikatoren kann ist es möglich die Projektabwicklung mit Hilfe von Metriken kontrolliert zu steuern.
Softwaremetriken
- Durch die Ausbuchstabierung eines Qualitätsmodells werden die Ziele greifbar.
- Das Erfassen der Zeit, die benötigt wird, um eine Suche zu starten und die Ergebnisse zu erhalten, dient zum Messen der Laufzeiteffizienz.
- Eine Softwaremetrik wird im Allgemeinen als eine Funktion definiert, die eine Softwarekomponente in einen messbaren Wert überführt.
- Dieser Wert lässt sich als Maß für das Erreichen eines bestimmten Qualitätsziels für die betreffende Softwarekomponente interpretieren.
- Metriken sollen alle relevanten Aspekte der Softwareentwicklung abdecken und neben numerischen Werten auch Zeichen und Symbole als mögliche Ergebnisse berücksichtigen.
- Da die Entwicklung einen beträchtlichen Einfluss auf die Produktqualität hat, müssen auch Metriken zur Messung des Softwareentwicklungsprozesses existieren.
Definition Softwaremetrik (erweitert)
- Eine Funktion, die entweder eine Softwarekomponente oder ihren Entstehungsprozess in einen messbaren Wert oder in Zeichen, eventuell mit einer zugehörigen Maßeinheit, überführt.
- Und anzeigt, inwiefern ein entsprechendes Qualitätsziel erreicht wird.
Klassifizierung von Metriken nach Aspekten
- Produktmaße: Kenngrößen, die sich auf Charakteristika des Softwareprodukts beziehen und Dimensionen erfassen, die eine solche Eigenschaft quantifizieren (z.B. Zuverlässigkeit oder Wartbarkeit).
- Prozessmaße: Metriken, die den Herstellungsprozess der Softwarekomponente ins Visier nehmen und bspw. einem Prozess eine Bewertungszahl zuweisen (CMMI, SPICE).
- Projektmaße: Metriken, die die Entwicklung eines Projekts widerspiegeln, insbesondere im Abgleich mit den Planvorgaben (Aufwand, Kosten).
- Im Berufsalltag genügen wenige, ausgewählte Metriken, wichtiger ist, das Konzept des zielgerichteten Messens zu verstehen.
Klassische Metriken
- Länge des Codes („Lines of Code“)
- Zyklomatische Komplexität (McCabe): Maß für die Schwierigkeit von Code
- Halstead Software Science: Komplettes Set an Metriken und Formeln
Lines of Code (LOC) Metrik
- Die "Lines of Code" (LOC) Metrik (manchmal auch "Source Lines of Code" (SLOC)) misst die Größe eines Softwareprodukts anhand der Anzahl der Zeilen im Quellcode.
- Die "Total Lines of Code" (TLOC) zählt auch Kommentare und Leerzeilen, während sich die SLOC-Messung ausschließlich auf Code-Zeilen fokussiert.
- LOC wird genutzt, um Größe und Komplexität eines Projekts abzuschätzen, die Produktivität zu messen und Kosten zu schätzen.
- Sie kann für Qualitätsbewertungen herangezogen werden, wobei weniger Codezeilen manchmal als geringere Fehleranfälligkeit interpretiert werden.
- Kritiker bemängeln, dass LOC nicht unbedingt die Qualität oder Funktionalität des Codes reflektiert und anfällig für inflationäre Taktiken ist.
- Trotzdem bleibt LOC ein gängiges Werkzeug.
Zyklomatische Komplexität
- Die zyklomatische Komplexität (McCabe, 1976) misst die Komplexität eines Programms anhand der Anzahl der linear unabhängigen Pfade durch den Quellcode.
- Sie hängt direkt mit der Anzahl der Entscheidungspunkte (If-Anweisungen, Schleifen, Fallunterscheidungen) zusammen.
- Eine höhere Anzahl von Entscheidungspunkten bedeutet mehr Pfade und damit mehr Komplexität.
- In der Praxis deutet eine höhere zyklomatische Komplexität oft darauf hin, dass der Code schwieriger zu verstehen, zu testen und zu warten ist.
- Es wird empfohlen, Methoden oder Funktionen mit einer zyklomatischen Komplexität über 10 zu überarbeiten.
Zyklomatische Komplexität - Berechnung
- V(G) = E - N + 2P
- E = Anzahl der Kanten im Graphen
- N = Anzahl der Knoten im Graphen
- P = Anzahl der zusammenhängenden Komponenten
- Die zyklomatische Komplexität ist ein Maß für die Verständlichkeit und Wartbarkeit von Code und gibt Einblick in die strukturelle Komplexität des Programms.
Halstead-Metriken
- Reihe zusammengehöriger Softwaremetriken (Maurice Halstead, 1970er).
- Versuch, die Softwareentwicklung und ihre Komplexität quantitativ zu charakterisieren.
- Halstead-Metriken basieren auf tokenisierten Darstellungen von Software und zielen darauf ab, verschiedene Aspekte der Softwarekomplexität zu messen, indem sie Operatoren und Operanden im Quellcode analysieren.
- In Bezug auf die Halstead-Metriken repräsentieren diese Tokens die Operatoren und Operanden im Code.
- Operatoren sind die Teile des Codes, die Aktionen ausführen, während Operanden die Objekte sind, auf die diese Aktionen angewendet werden. Halsteads Metriken berechnen die Komplexität von Software, indem sie zählen, wie oft verschiedene Operatoren und Operanden im Code vorkommen und wie diese verwendet werden.
Grundlegende Maße
- n1: Anzahl der einzigartigen Operatoren
- n2: Anzahl der einzigartigen Operanden
- N1: Gesamtanzahl der Operatoren
- N2: Gesamtanzahl der Operanden
Abgeleitete Metriken
- Programmlänge: N = N1 + N2
- Programm-Vokabular: n = n1 + n2
- Programm-Umfang: V = N * log2(n)
- Schwierigkeitsgrad: D = (n1/2) * (N2/n2)
- Programmieraufwand: E = D * V
- Zeitaufwand: T = E / 18
- Anzahl der ausgelieferten Bugs: B = V / 3000
- Die Halstead-Metriken sollen Einblicke in die Merkmale der Software geben (Komplexität, Lesbarkeit, Wartbarkeit) und ermöglichen, den Testaufwand oder die Codequalität zu beurteilen.
- Die Halstead-Metriken haben Grenzen und bilden nicht alle Aspekte der Softwarequalität/Komplexität ab.
Objektorientierte Metriken
- Etablierte Metriken (McCabe, Halstead) basieren primär auf imperativer Programmierung
- Sie betrachten Programme als Abfolgen von Befehlen und berücksichtigen die Strukturierung durch Prozeduren/Funktionen.
- Imperative Metriken sind auch auf objektorientierte Sprachen anwendbar, da objektorientierte Ansätze in der Implementierung von Klassen/Methoden dem imperativen Paradigma folgen.
- Die Komplexität objektorientierter Programme lässt sich daher durch klassische Metriken auf Methodenebene zwar erfassen, allerdings nicht vollständig.
- Objektorientierte Metriken erweitern die prozeduralen Metriken, um spezifische Merkmale objektorientierter Programmiersprachen zu berücksichtigen.
- Unterschiedliche Ansätze werden vorgeschlagen, die in Komponenten- und Strukturmetriken unterteilt werden können.
Komponentenmetriken
- Die Bewertung einzelner Bestandteile eines Softwaresystems wird vorgenommen, typischerweise Klassen, in einigen Fällen auch Verbünde von Klassen.
- Komponentenmetriken werden eingesetzt, um Teilkomponenten vergleichend zu analysieren (z.B. beim Refactoring zur Bestimmung der nächsten zu überarbeitenden Klasse).
Gängige Komponentenmetriken (Umfang)
- OV („Objektvariablen“)
- CV ("Klassenvariablen")
- NOA ("Number of Attributes")
- WAC ("Weighted Attributes per Class")
- WMC ("Weighted Methods per Class")
- Diese Kennzahlen eignen sich, um Klassen zu identifizieren, die aufgrund ihrer Größe oder Komplexität ihrer Implementierung hervorstechen.
Vererbungsmetriken
- DOL ("Depth of Inheritance"): Bewertung einer Komponente anhand ihrer Position in der Klassenhierarchie
- NOD ("Number of Descendants"): Anzahl der Unterklassen einer Komponente
- NORM ("Number of Redifined Methods"): Anzahl der reimplementierten Methoden
- Eine gut strukturierte Softwarearchitektur zeichnet sich durch eine ausgewogene Vererbungshierarchie aus.
Kohäsion
- Die Kohäsion wird durch die LCOM-Metrik („Lack of Cohesion in Methods“) bewertet.
- Empirische Studien haben die Bedeutung von Vererbungs-/Umfangsmetriken unterstrichen und die Aussagekraft der Metrik LCOM wurde hinterfragt.
Strukturmetriken
- Strukturmetriken konzentrieren sich auf die übergeordnete Architektur und das Zusammenspiel der verschiedenen Komponenten innerhalb eines Systems.
- Sie sind entscheidend für das Verständnis der Komplexität, Wartbarkeit und Erweiterbarkeit eines Softwaresystems.
- Kopplungsmetriken nehmen eine Schlüsselposition ein, da sie das Zusammenspiel und die Interaktionsmuster zwischen den einzelnen Klassen durchleuchten.
Begriffe
- Fan-In: Anzahl der Klassen, die auf C zugreifen (Fin(C)). Klassen mit hohem Fan-In sind gewöhnlich am unteren Ende der Software-Architektur zu finden.
- Fan-Out: Anzahl der Klassen, auf die C selbst direkt zugreift (Fou(C)). Klassen mit hohem Fan-Out befinden sich üblicherweise am oberen Ende der Software-Architektur.
Exkurs: Struktur und Eigenschaften von Softwaresystemen
- Struktur und Architektur eines Softwaresystems bestimmen die Zusammenwirkung der Teile, um Gesamtfunktionalität zu gewährleisten.
- Eine gute Struktur macht ein System modulierbar, erweiterbar und wartbar, Metriken zielen darauf ab, dies in Zahlen zu fassen.
Komponenten
- Eine Komponente ist ein selbstständiges Modul, das eine Gruppe von verwandten Funktionen oder Daten kapselt.
- Sie hat eine klar definierte Schnittstelle und verborgene Implementierungsdetails.
Eigenschaften
- Austauschbarkeit
- Nicht sichtbarer Zustand
- Wiederverwendbarkeit
Schnittstellen
- Die Schnittstelle einer Komponente definiert, wie andere Teile des Systems mit ihr kommunizieren können, ohne ihr inneres Funktionieren zu kennen.
- Sie beschreibt die Methoden, die andere Komponenten aufrufen können und die Art der Daten, die übermittelt werden können.
Eigenschaften
- Abstraktion
- Konsistenz
- Vertrag
Grundlegende Softwarearchitekturen
- Schichtenarchitektur: Hierarchische Schichten, die spezifische Dienste anbieten.
- Serviceorientierte Architektur (SOA): Dienste werden über ein Netzwerk angeboten und konsumiert.
- Mikroservices: Anwendung als Sammlung kleiner, unabhängiger Dienste.
- Ereignisgesteuerte Architektur: Ereignisse (Events) lösen die Kommunikation zwischen Komponenten aus.
Designprinzipien
- Hohe Kohäsion und lose Kopplung
- Offenes/Geschlossenes Prinzip
- Prinzip der Trennung von Interessen
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Dieser Test untersucht die Rolle von Softwaremetriken bei der Bewertung der Softwarequalität und Entscheidungsfindung. Er behandelt die Umwandlung von Qualitätszielen in messbare Größen und die Bedeutung verschiedener Metriken für die Risikobewertung und Komponentenanalyse. Es werden auch traditionelle und objektorientierte Metriken behandelt.