Softwarequalität 4
52 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • 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?

<p>Weil es eine objektive, quantifizierbare Grundlage für die Bewertung von Softwareprodukten bietet. (A)</p> Signup and view all the answers

Was ist der Hauptvorteil der Verwendung von Softwaremetriken bei der Entscheidungsfindung in der Softwareentwicklung und -wartung?

<p>Sie bieten eine objektive Grundlage zur Priorisierung von Aufgaben und zur Identifizierung potenzieller Problembereiche. (C)</p> Signup and view all the answers

Welche der folgenden Metriken wäre am wenigsten geeignet, um die Qualität eines Softwareprojekts zu beurteilen?

<p>Anzahl der Entwickler im Team. (B)</p> Signup and view all the answers

In welcher Weise tragen Softwaremetriken zur Risikobewertung in Softwareprojekten bei?

<p>Sie identifizieren Bereiche mit hoher Komplexität oder geringer Wartbarkeit, die anfälliger für Fehler sein könnten. (A)</p> Signup and view all the answers

Warum ist es wichtig, bei der Verwendung von Softwaremetriken sowohl traditionelle als auch objektorientierte Metriken zu berücksichtigen?

<p>Um ein umfassendes Bild der Softwarequalität zu erhalten, das sowohl prozedurale als auch objektorientierte Aspekte berücksichtigt. (A)</p> Signup and view all the answers

Welche Aussage beschreibt am besten den Hauptzweck von Komponentenmetriken in der Softwareentwicklung?

<p>Einzelne Bestandteile eines Software-Systems zu bewerten und vergleichend zu analysieren, oft im Kontext von Refactoring. (B)</p> Signup and view all the answers

Welche der genannten Metriken fällt nicht direkt in die Kategorie der Umfangsmetriken zur Messung der Größe von Softwarekomponenten?

<p>NOD (Number of Descendants) (D)</p> Signup and view all the answers

Was messen die Metriken OV, CV und NOA hauptsächlich?

<p>Die Datenkomplexität durch die Anzahl der Objekt- und Klassenvariablen. (C)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten den Nutzen der Metriken DOL (Depth of Inheritance) und NOD (Number of Descendants)?

<p>Sie bewerten die Ausgewogenheit der Vererbungshierarchie und können auf Probleme wie lange Vererbungsketten hinweisen. (C)</p> Signup and view all the answers

Was ist das Hauptproblem, das durch lange Vererbungsketten in einer Softwarearchitektur entstehen kann?

<p>Negative Beeinflussung der Transparenz und Wartbarkeit des Systems. (B)</p> Signup and view all the answers

Die Metrik NORM („Number of Redefined Methods“) zählt zu welcher Kategorie von Komponentenmetriken und was misst sie?

<p>Vererbungsmetriken; sie misst die Anzahl der in einer Unterklasse reimplementierten Methoden. (C)</p> Signup and view all the answers

Wie können Komponentenmetriken während eines Refactorings-Prozesses eingesetzt werden?

<p>Um zu bestimmen, welche Klasse als Nächstes überarbeitet werden sollte, basierend auf Metriken wie Größe oder Komplexität. (B)</p> Signup and view all the answers

Was ist ein Indikator dafür, dass Komponentenmetriken effektiv eingesetzt werden?

<p>Eine gleichmäßige Verteilung der Komplexität über alle Komponenten und eine ausgewogene Vererbungshierarchie. (C)</p> Signup and view all the answers

Was stellt die Variable 'E' in der Formel zur Berechnung der zyklomatischen Komplexität $V(G) = E – N + 2P$ dar?

<p>Die Anzahl der Kanten im Kontrollflussgraphen. (C)</p> Signup and view all the answers

Welche Aussage beschreibt am besten, wie sich eine hohe zyklomatische Komplexität auf den Code auswirkt?

<p>Sie macht den Code schwieriger zu verstehen, zu testen und zu warten. (A)</p> Signup and view all the answers

In welchem Zusammenhang steht die zyklomatische Komplexität mit Entscheidungspunkten im Code?

<p>Sie steigt mit der Anzahl der Entscheidungspunkte wie If-Anweisungen und Schleifen. (C)</p> Signup and view all the answers

Welche der folgenden Maßnahmen wird typischerweise empfohlen, wenn die zyklomatische Komplexität einer Methode einen bestimmten Schwellenwert überschreitet?

<p>Die Methode sollte überarbeitet werden, um ihre Komplexität zu reduzieren. (B)</p> Signup and view all the answers

Was gibt die zyklomatische Komplexität primär an?

<p>Die strukturelle Komplexität eines Programms. (B)</p> Signup and view all the answers

Wie wirkt sich die Anzahl der zusammenhängenden Komponenten (P) in der Formel $V(G) = E - N + 2P$ auf die zyklomatische Komplexität aus?

<p>Eine höhere Anzahl an Komponenten erhöht die Komplexität. (C)</p> Signup and view all the answers

Welchen Vorteil bietet die Verwendung der zyklomatischen Komplexität bei der Softwareentwicklung?

<p>Sie liefert einen Anhaltspunkt für die Verringerung der Programmkomplexität und Erhöhung der Wartbarkeit. (A)</p> Signup and view all the answers

Was sind typische Beispiele für Entscheidungspunkte in einem Programm, die die zyklomatische Komplexität beeinflussen?

<p>If-Anweisungen, Schleifen und Fallunterscheidungen. (C)</p> Signup and view all the answers

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?

<p>4 (C)</p> Signup and view all the answers

Warum ist es wichtig, die zyklomatische Komplexität bei der Entwicklung von Software zu berücksichtigen?

<p>Um die Lesbarkeit, Testbarkeit und Wartbarkeit des Codes zu verbessern. (C)</p> Signup and view all the answers

Wie wird die Kohäsion innerhalb einer Klasse, eines Pakets oder einer Bibliothek gemessen?

<p>Durch die LCOM-Metrik, die die Zusammengehörigkeit von Methoden bewertet. (A)</p> Signup and view all the answers

Was unterscheidet Strukturmetriken von Komponentenmetriken in der Softwarequalitätsbewertung?

<p>Strukturmetriken analysieren die übergeordnete Architektur und das Zusammenspiel verschiedener Komponenten, während Komponentenmetriken sich auf die Merkmale einzelner Komponenten wie Klassen oder Module konzentrieren. (B)</p> Signup and view all the answers

Was bedeutet ein hoher Fan-In Wert für eine Klasse C (Fin(C)) typischerweise im Kontext einer Softwarearchitektur?

<p>C befindet sich am unteren Ende der Architektur und wird von vielen anderen Klassen genutzt. (A)</p> Signup and view all the answers

Was impliziert ein hoher Fan-Out Wert (Fou(C)) für eine Klasse C bezüglich ihrer Position in der Softwarearchitektur?

<p>C befindet sich am oberen Ende der Architektur und initiiert vielfältige Verbindungen zu anderen Klassen. (A)</p> Signup and view all the answers

Welche Aussage beschreibt am besten die Beziehung zwischen Fan-In und Fan-Out einer Klasse und ihrer Position in der Softwarearchitektur?

<p>Hoher Fan-In deutet auf eine Position am unteren Ende, hoher Fan-Out auf eine Position am oberen Ende der Architektur hin. (B)</p> Signup and view all the answers

Warum sind Kopplungsmetriken wie Fan-In und Fan-Out besonders wichtig im Kontext von Vererbungsbeziehungen?

<p>Weil sie das Zusammenspiel und die Interaktionsmuster zwischen den einzelnen Klassen durchleuchten. (A)</p> Signup and view all the answers

Die LCOM-Metrik hat in ihrer ursprünglichen Form gewisse Einschränkungen. Was wurde vorgeschlagen, um diese Defizite zu beheben?

<p>Modifizierte Kohäsionsmetriken, die die ursprünglichen Mängel adressieren. (C)</p> Signup and view all the answers

Was sind die Hauptvorteile der Verwendung von Strukturmetriken in der Softwareentwicklung?

<p>Sie unterstützen das Verständnis der Komplexität, Wartbarkeit und Erweiterbarkeit eines Softwaresystems. (C)</p> Signup and view all the answers

Welche Aussage beschreibt am besten den Unterschied zwischen funktionalen Anforderungen und Qualitätsanforderungen?

<p>Funktionale Anforderungen beschreiben, <em>was</em> ein System tun soll, während Qualitätsanforderungen spezifizieren, <em>wie</em> sich dieses Verhalten darstellen soll. (B)</p> Signup and view all the answers

Warum ist es wichtig, Qualitätsanforderungen in der Softwareentwicklung zu berücksichtigen?

<p>Um sicherzustellen, dass das System die erwarteten Verhaltensweisen in der gewünschten Art und Weise erfüllt und die Benutzerzufriedenheit zu gewährleisten. (A)</p> Signup and view all the answers

Was ist der Zweck von Qualitätsmetriken im Kontext von Qualitätszielen?

<p>Sie ermöglichen es, das Erreichen von Qualitätszielen messbar und überprüfbar zu machen. (D)</p> Signup and view all the answers

Wie hängen Qualitätsanforderungen, Qualitätsziele und Qualitätsmetriken zusammen?

<p>Qualitätsanforderungen definieren, was erreicht werden soll, Qualitätsziele sind spezifische Aspekte davon, und Qualitätsmetriken messen, ob diese Ziele erreicht wurden. (D)</p> Signup and view all the answers

Was ist das Hauptproblem, wenn Qualitätsaspekte, -merkmale, -eigenschaften, -attribute und -ziele synonym verwendet werden?

<p>Es besteht die Gefahr von Missverständnissen und Unklarheiten bezüglich der spezifischen Bedeutung und Messbarkeit von Qualitätsanforderungen. (A)</p> Signup and view all the answers

Angenommen, ein Kunde fordert eine 'hohe Benutzerfreundlichkeit' für eine Softwareanwendung. Wie könnte dieses Qualitätsziel operationalisiert werden?

<p>Durch die Messung der Zeit, die Benutzer benötigen, um bestimmte Aufgaben zu erledigen, und die Anzahl der Fehler, die sie dabei machen. (C)</p> Signup and view all the answers

Welche der folgenden Metriken wäre am besten geeignet, um die 'Robustheit' einer Software zu messen?

<p>Die Zeit, die das System benötigt, um sich von Fehlern zu erholen oder die Anzahl der unerwarteten Abstürze. (C)</p> Signup and view all the answers

Ein Entwicklungsteam stellt fest, dass die Anzahl der Qualitätsanforderungen die Anzahl der funktionalen Anforderungen übersteigt. Was bedeutet das?

<p>Die Software wird wahrscheinlich besonders benutzerfreundlich und zuverlässig sein. (A)</p> Signup and view all the answers

Wie kann das Verständnis der Beziehungen zwischen Qualitätsanforderungen, -zielen und -metriken einem Projektmanager helfen?

<p>Es ermöglicht dem Projektmanager, den Fortschritt hinsichtlich der Erreichung der Qualitätsziele zu verfolgen und fundierte Entscheidungen zu treffen. (D)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten den Einfluss von Qualitätsanforderungen auf das Systemverhalten?

<p>Qualitätsanforderungen können das Systemverhalten erheblich beeinflussen, indem sie festlegen, <em>wie</em> die Funktionen ausgeführt werden sollen. (D)</p> Signup and view all the answers

Welche der folgenden Aktivitäten gehört NICHT zu Schneiders (2012) dreistufigem Vorgehen zur Erstellung eines Qualitätsmodells?

<p>Implementierung von Designprototypen als Teil der konkreten Qualitätsmerkmale. (D)</p> Signup and view all the answers

Welche der folgenden Aussagen über Softwaremetriken ist gemäß Schneider (2012) korrekt?

<p>Softwaremetriken können den Softwareentstehungsprozess messen und verwenden Zahlen, Zeichen oder Symbole als Ergebnisse. (B)</p> Signup and view all the answers

Was misst die zyklomatische Komplexität nach Thomas J. McCabe?

<p>Die Anzahl der linear unabhängigen Pfade durch den Quellcode. (A)</p> Signup and view all the answers

Warum bilden klassische Software-Metriken wie die McCabe- und Halstead-Metriken die Komplexität objektorientierter Programme nicht vollständig ab?

<p>Sie berücksichtigen nicht die Klassenstruktur und Beziehungen in objektorientierten Programmen. (D)</p> Signup and view all the answers

Welche Aussage beschreibt am besten, wie Softwaremetriken zur Qualitätsverbesserung beitragen können?

<p>Sie liefern objektive Daten, um Problembereiche zu identifizieren und Verbesserungsmaßnahmen zu überwachen. (D)</p> Signup and view all the answers

Was ist ein wesentlicher Nachteil bei der ausschließlichen Verwendung von Code-Metriken zur Bewertung der Softwarequalität?

<p>Code-Metriken berücksichtigen nicht die Anforderungen und Erwartungen der Benutzer. (B)</p> Signup and view all the answers

In welchem Kontext ist die Verwendung von Softwaremetriken am sinnvollsten?

<p>Als kontinuierlicher Prozess während des gesamten Softwarelebenszyklus. (B)</p> Signup and view all the answers

Welches Ziel sollte man bei der Definition von Metriken für ein Softwareprojekt verfolgen?

<p>Sich auf Metriken zu konzentrieren, die direkt mit den Projektzielen und Qualitätsanforderungen verbunden sind. (D)</p> Signup and view all the answers

Flashcards

Was sind Softwaremetriken?

Softwaremetriken bewerten quantitativ Softwareprodukte oder -projekte.

Wozu dienen Softwaremetriken?

Softwaremetriken helfen, den Zustand eines Projekts schnell zu erfassen.

Art der Qualitätsmaßnahme?

Das Messen von Softwarequalität ist eine analytische Qualitätsmaßnahme.

Was bieten Metriken?

Eine objektive, quantifizierbare Grundlage für die Bewertung von Softwareaspekten.

Signup and view all the flashcards

Was kann man messen?

Komplexität, Wartbarkeit, Leistung und andere kritische Qualitätsattribute.

Signup and view all the flashcards

Was erleichtern Metriken?

Sie erleichtern die Identifizierung potenzieller Problembereiche und Risiken.

Signup and view all the flashcards

Wie unterstützen Metriken?

Sie unterstützen die Entscheidungsfindung und Prioritätensetzung.

Signup and view all the flashcards

Wo findet man Qualitätsaspekte?

Qualitätsaspekte sind z.B. in Zusammenstellungen nach Hoffmann (2013) zu finden.

Signup and view all the flashcards

Qualitätsaspekt, -merkmal, -eigenschaft, -attribut, -ziel

Synonym verwendete Begriffe, die im Wesentlichen dasselbe bedeuten.

Signup and view all the flashcards

Funktionale Anforderungen

Beschreiben, was das System tun soll.

Signup and view all the flashcards

Rahmenbedingungen

Legen den Rahmen fest, innerhalb dessen das Systemverhalten erreicht werden muss.

Signup and view all the flashcards

Qualitätsanforderungen

Spezifizieren, wie sich das Systemverhalten darstellen soll (z.B. Leistung, Sicherheit).

Signup and view all the flashcards

Qualitätsziel / Qualitätsaspekt

Ein Aspekt einer Qualitätsanforderung, ein konkretes Ziel (z.B. Robustheit).

Signup and view all the flashcards

Qualitätsmetriken

Metriken zur Messung der Zielerreichung von Qualitätsaspekten. (z.B. Antwortzeit)

Signup and view all the flashcards

Kundenwunsch (Qualitätsanforderung)

Hohe Verfügbarkeit des Systems

Signup and view all the flashcards

Qualitätsziele (Robustheit, Geschwindigkeit, einfache Benutzeroberfläche)

Bestandteile der Qualitätsanforderung "Hohe Verfügbarkeit"

Signup and view all the flashcards

Qualitätsmetriken

Überprüfung des Erreichens der Qualitätsziele

Signup and view all the flashcards

Qualitätenbaum

Visuelles Schema, das verschiedene Merkmale, die messbar sind gruppiert.

Signup and view all the flashcards

Komponentenmetriken

Bewertung einzelner Bestandteile eines Softwaresystems, typischerweise Klassen oder Klassenverbunde.

Signup and view all the flashcards

Einsatz von Komponentenmetriken

Vergleichende Analyse von Teilkomponenten, z.B. um zu entscheiden, welche Klasse beim Refactoring zuerst bearbeitet werden soll.

Signup and view all the flashcards

Umfangsmetriken (Komponenten)

Metriken, die den Umfang einer Softwarekomponente messen, z.B. Objektvariablen, Klassenvariablen oder Anzahl der Attribute/Methoden.

Signup and view all the flashcards

Beispiele für Umfangsmetriken

Objektvariablen (OV), Klassenvariablen (CV), Anzahl der Attribute (NOA).

Signup and view all the flashcards

WAC und WMC

Gewichtete Attribute pro Klasse (WAC), Gewichtete Methoden pro Klasse (WMC)

Signup and view all the flashcards

Vererbungsmetriken

Tiefe der Vererbung (DOL), Anzahl der Nachkommen (NOD).

Signup and view all the flashcards

Tiefe der Vererbung (DOL)

Anzahl der Oberklassen einer Komponente.

Signup and view all the flashcards

Anzahl der reimplementierten Methoden (NORM)

Anzahl der reimplementierten Methoden.

Signup and view all the flashcards

Programm-Pfade

Mögliche Ausführungspfade durch ein Programm.

Signup and view all the flashcards

Zyklomatische Komplexität

Ein Maß für die Komplexität eines Programms basierend auf Entscheidungspunkten.

Signup and view all the flashcards

Entscheidungspunkte

If-Anweisungen, Schleifen und Fallunterscheidungen.

Signup and view all the flashcards

Kontrollflussgraph

Ein Diagramm, das die möglichen Ausführungswege eines Programms darstellt.

Signup and view all the flashcards

Formel zur Berechnung der zyklomatischen Komplexität

V(G) = E – N + 2P, wobei E Kanten, N Knoten und P Komponenten sind.

Signup and view all the flashcards

Kanten (im Kontrollflussgraph)

Übergänge von einem Kontrollpunkt zum nächsten im Kontrollflussgraphen.

Signup and view all the flashcards

Knoten (im Kontrollflussgraph)

Die Kontrollpunkte im Kontrollflussgraphen (z.B. Anweisungen).

Signup and view all the flashcards

Zusammenhängende Komponente

Ein eigenständiger Teil des Programms, der nicht mit anderen Teilen verbunden ist.

Signup and view all the flashcards

Bedeutung hoher zyklomatische Komplexität

Ein hoher Wert deutet auf schwieriger verständlichen, testbaren und wartbaren Code hin.

Signup and view all the flashcards

Zyklomatische Komplexität > 10

Code sollte überarbeitet werden, um die Komplexität zu reduzieren.

Signup and view all the flashcards

Was ist Kohäsion (LCOM)?

Bewertung des Zusammenhalts von Klassenelementen.

Signup and view all the flashcards

Wie wird LCOM berechnet?

Differenz zwischen Methodenpaaren mit gemeinsamen vs. unabhängigen Variablen.

Signup and view all the flashcards

Was sind Strukturmetriken?

Betrachten die Architektur und das Zusammenspiel von Komponenten.

Signup and view all the flashcards

Was bedeutet Fan-In (Fin)?

Anzahl der Klassen, die auf eine bestimmte Klasse zugreifen.

Signup and view all the flashcards

Was bedeutet Fan-Out (Fou)?

Anzahl der Klassen, auf die eine bestimmte Klasse zugreift.

Signup and view all the flashcards

Hoher Fan-In: Wo in der Architektur?

Am unteren Ende; grundlegende Bedeutung.

Signup and view all the flashcards

Hoher Fan-Out: Wo in der Architektur?

Am oberen Ende; initiiert vielfältige Verbindungen.

Signup and view all the flashcards

Warum sind Strukturmetriken wichtig?

Schlüsselaspekt für Komplexität, Wartbarkeit und Erweiterbarkeit.

Signup and view all the flashcards

3-stufiges Vorgehen nach Schneider

Festlegung abstrakter Ziele, Anpassung an den Kontext, Verdeutlichung konkreter Merkmale.

Signup and view all the flashcards

Was messen Softwaremetriken?

Softwaremetriken messen den Softwareentstehungsprozess und liefern Ergebnisse in Zahlen, Zeichen oder Symbolen.

Signup and view all the flashcards

Was misst die zyklomatische Komplexität?

Die Anzahl linear unabhängiger Pfade durch den Quellcode.

Signup and view all the flashcards

Warum sind klassische Metriken unvollständig?

Sie berücksichtigen nicht Klassenstruktur und Beziehungen in objektorientierten Programmen.

Signup and view all the flashcards

Was gehört NICHT zum Vorgehen nach Schneider?

Die Implementierung von Designprototypen.

Signup and view all the flashcards

Was sind die Ergebnisse von Softwaremetriken?

Eine numerische, oder eine nicht-numerische, Bewertung von Software.

Signup and view all the flashcards

Was messen McCabe- & Halstead-Metriken?

McCabe misst die Pfade, während Halstead die Eigenschaften des Codes analysiert.

Signup and view all the flashcards

Was misst die McCabe-Metrik?

Es wird die Anzahl der unabhängigen Pfade eines Programms gezählt. Dies hilft bei Testaufwand.

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.

Quiz Team

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.

More Like This

Use Quizgecko on...
Browser
Browser