Analysierende Testverfahren

Ähnliche Dokumente
0/28. Software-Metriken. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05

Softwaremessung und -metrik

Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle

Software Engineering in der Praxis

VI. Die Bedeutung der Komplexität 83. VI. Die Bedeutung der Komplexität

Verwendung von OO-Metriken zur Vorhersage

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05.

Testen und Metriken. Einige Fehler. Fehler vermeiden. Andreas Zeller Universität des Saarlandes Microsoft Research.

Messung. Mariem Ben Rehouma

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014

Softwaremetriken verstehen und nutzen

Qualitätssicherung von Software

Software-Metriken: Purismus vs. Pragmatismus

Softwaretechnik (Allgemeine Informatik) Überblick

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage. Arno Egger,

Übung Teil 2: Bevölkerung, Technologie, Demographie

Gütekriterien: Validität (15.5.)

T4 Statischer Test. Siemens AG Österreich 2005 All Rights Reserved. Statischer Test - Allgemein. Kennzeichen: Testen, ohne das Testobjekt auszuführen

Messen & Metriken Ist Qualität messbar? André Fleischer

Software Tests (2) Quellcode Reviews

Objektorientierte Programmierung OOP

Software- Qualitätssicherung

Metriken zur Messung des Software-Entwicklungsprozesses;

Comparison of Software Products using Software Engineering Metrics

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen

Maintainability Index als Instrument der Software-Wartung

PRÜFUNG SOFTWARETECHNIK II Wintersemester 2014 Musterlösung -Ohne Gewähr-

Communication Metrics for Software Development

Präzedenz von Operatoren

Software Survivability

25. GI-TAV-Treffen 15. Februar 2007 Düsseldorf. Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense

Vorlesung Software-Reengineering

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

JmetrikaC. Zusatzinformationen für die Programmiersprache C. Analyse sicherheitsrelevanter Software

Seminar "Softwareentwicklung in der Wissenschaft" "Code-Qualität"

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Ausgangssituation und Zielsetzung. eingereicht von Ansgar Lamersdorf am an der TU Kaiserslautern

Software-Metriken. Moderne Softwareentwicklung SS Software-Metriken. Wolfgang Globke. Betreuer: Olaf Seng. 18. Juni 2005

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Entwurf und Implementierung eines webbasierten

Qualitätsmanagement im Projekt

Grundlagen des Software Engineering

Vorlesung Software Engineering

Qualität ist nicht (nur) die Abwesenheit von Fehlern. Jede Aussage über Qualität ist eine Aussage von einer oder mehrere Personen.

Erste Implementation eines praxisbezogenen Analyse- Tools für Softwarequalität und ein Ansatz zur Erkennung von Zustandsvariablen

Codequalität: Code-Metrik Version 0.1

Methodische Grundlagen des Software Engineering - Übung 9

Software Engineering. 12. Qualitätssicherung. Franz-Josef Elmer, Universität Basel, HS 2012

Software-Qualität sichtbar machen

Prinzipien Objektorientierter Programmierung

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

SDD System Design Document

Abschlussarbeit. im Bachelor-Studiengang

Lars Priebe Senior Systemberater. ORACLE Deutschland GmbH

Verybench: grafisches Frontend für Testwell CMT++ Code Complexity Measures Tool

White-Box-Test. Black-Box-Test. Testen. Testen. Vorlesung Methoden des Software Engineering. Martin Wirsing. Einheit D.2,

Programmiertechnik II

Metriken für Objektorientierte Software

Software-Test: Funktionstest

Code Quality. Steigerung der Codequalität mit Visual Studio & TFS

Langlebige Softwarearchitekturen

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Ziele und Tätigkeiten von Architekten

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

MBEES Research Abstract Ein Framework zur automatisierten Ermittlung der Modellqualität bei eingebetteten Systemen

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Testen von Software. Dr. Stefan Hanenberg Universität Duisburg-Essen. Universität Osnabrück, Motivation und grundlegende Eigenschaften

Messung, Skalen, Indices

Was bringt TDD wirklich?

Visualisierung feingranularer Abhängigkeiten

Validating the Object Calisthenics

Softwarequalität sicherstellen mit Sonar

Softwarequalität. 20. Januar 2015

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

CHEMISCHES RECHNEN II ANALYT. CHEM. FÜR FORTGS

Grundlagen sportwissenschaftlicher Forschung Test

AuD-Tafelübung T-B5b

6 Systematisches Testen von Programmen

Verkettete Datenstrukturen: Bäume

Das Softwaresystem BASEMENT

Die Goal-Question-Metric-Methode (GQM)

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Beurteilung der biometrischen Verhältnisse in einem Bestand. Dr. Richard Herrmann, Köln

Transkript:

Software-Metriken Kontrolle der Software-Entwicklung: Pläne und Standards einrichten messen der Ausführung gegen Pläne und Standards Analysierende Testverfahren korrigieren der Abweichungen Eine Software-Metrik definiert, wie eine Kenngröße eines Software-Produkts oder -Prozesses gemessen wird. 209 210 Software-Metriken (2) Messgrößen im Software-Prozess: Ressourcenaufwand (Mitarbeiter, Zeit, Geld) Fehler Kommunikationsaufwand Messgrößen im Software-Produkt: Umfang (LOC, %Wiederverwendung, #Prozeduren) Komplexität Lesbarkeit (Stil) Entwurfsqualität (Modularität, Kopplung, Bindung) Produktqualität (Testergebnisse, Testabdeckung) 211 Software-Metriken (3) Gütekriterien für Software-Metriken: Objektivität keine subjektiven Einflüsse des Messenden Zuverlässigkeit bei Wiederholung gleiche Ergebnisse Normierung Skala für Messergebnisse und Vergleichsskala Vergleichbarkeit Maß steht mit anderen Maßen in Relation Ökonomie Messung hat geringe Kosten Nützlichkeit Messung erfüllt praktische Bedürfnisse Validität Messergebnisse ermöglichen Rückschluss auf Kenngröße 212

Software-Metriken (4) Umfangs-Metriken Messen der Verständlichkeit: Gutachter lesen Programme und beurteilen sie anhand von Fragen: * Ist das Programm an veränderte Rahmenbedingungen anpassbar? * Sind die Bezeichner aussagekräftig und konsistent? Beurteilung erfolgt z.b. in Form von Schulnoten Der Ansatz ist wenig objektiv, wenig zuverlässig, halbwegs normiert, halbwegs vergleichbar, nicht ökonomisch, aber nützlich und valide. Lines Of Code (LOC): zählt Anzahl Zeilen im Code > cat *.[ch] wc -l 182377 > _ Non-Commented Source Statements (NCSS): wie LOC, aber Leerzeilen und Kommentarzeilen werden ignoriert > grep -v ^[ \t]*$ *.c grep -v ^[ \t]*// wc -l 127387 > _ maschinell prüfbare Indikatoren für Verständlichkeit? 213 214 Umfangs-Metriken (2) Halstead-Metriken sehr einfach zu messen und zu berechnen eingeführt zur Messung der textuellen Komplexität Einteilen des Programms in Operatoren und Operanden anwendbar auf alle Arten von Programmen was soll gezählt werden? Umfang abhängig von der Sprache (Perl vs. C++) int ggt(int a, int b) { assert(a >= 0); assert(b >= 0); while (b > 0) { int r = a % b; a = b; b = r; } return a; } Operatoren: kennzeichnen Aktionen, typisch: Sprachelemente des Programms hier: int, (),,, {} Operanden: kennzeichnen Daten, typisch: Bezeichner und Literale hier: ggt, a, b, 0 215 216

Halstead-Metriken (2) Halstead-Metriken (3) Basisgrößen: n 1 : Anzahl unterschiedlicher Operatoren n 2 : Anzahl unterschiedlicher Operanden N 1 : Anzahl verwendeter Operatoren N 2 : Anzahl verwendeter Operanden n = n 1 + n 2 : Größe des Vokabulars N = N 1 + N 2 : Länge der Implementierung im Beispiel: n 1 = 10, n 2 = 4, N 1 = 19, N 2 = 16 abgeleitete Größen: difficulty D: Schwierigkeit, ein Programm zu verstehen D = n 1 2 N2 n 2 volume V : Umfang des Programms V = N log(n) effort E: Aufwand, das Programm zu verstehen E = D V 217 n 1 : # unterschiedlicher Operatoren n 2 : # unterschiedlicher Operanden N 1 : # verwendeter Operatoren N 2 : # verwendeter Operanden 218 Halstead-Metriken (4) einfach zu ermitteln und zu berechnen für alle Programmiersprachen einsetzbar Experimente zeigen: gutes Maß für Komplexität berücksichtigt nur textuelle Komplexität moderne Programmierkonzepte wie Sichtbarkeit oder Namensräume werden nicht berücksichtigt Aufteilung Operatoren/Operanden sprachabhängig 219 McCabe-Metriken strukturelle Komplexität berücksichtigen Quelle: Kontrollflussgraph G Ziel: zyklomatische Komplexität V (G) ggt while (b>0) r = a % b a = b b = r return a V (G) = e n + 2p e: Anzahl Kanten (hier 4) n: Anzahl Knoten (hier 4) p: Anzahl Komponenten (hier 1) hier: V (G) = 2 für p = 1 gilt: V (G) = π + 1 π: Anzahl der Bedingungen 220

McCabe-Metriken (2) McCabe-Metriken (3) Faustregeln: V (G) Risiko 1-10 einfaches Programm, geringes Risiko 11-20 komplexeres Programm, erträgliches Risiko 21-50 komplexes Programm, hohes Risiko > 50 untestbares Programm, extrem hohes Risiko beginne bei einer Umstrukturierung mit der Komponente, die die höchste zyklomatische Komplexität hat einfach zu berechnen Integration mit Testplanung (Bedingungsüberdeckung) Studien zeigen: gute Korrelation zwischen zyklomatischer Zahl und Verständlichkeit der Komponente Metrik berücksichtigt nur Kontrollfluss Komplexität des Datenflusses nicht berücksichtigt Kontrollfluss zwischen Komponenten evtl. sehr komplex ungeeignet für objektorientierte Programme (viele triviale Funktionen) 221 222 hybride Metriken Metriken für OO-Komponenten Idee: kombiniere Metriken Wartbarkeits-Index M I bei Hewlett-Packard: ( ) 171 5.2 ln(v ) 0.23V (G) 16.2 ln(l) + 50 sin 2.4C V : durchschnittliches Halstead-Volumen pro Modul V (G): durchschnittliche zyklomatische Zahl pro Modul L: durchschnittliche LOC pro Modul C: durchschnittlicher Prozentsatz an Kommentarzeilen unterschreitet ein Modul einen vorgegebenen Wert (z.b. 30), so wird das Modul restrukturiert 223 McCabe-Metrik versagt bei OOP, da die Kontrollflusskomplexität der meisten Methoden gering ist: V (G) = 1 Metriken müssen Zusammenspiel der Klassen betrachten! typisch: anhand des statischen Objektmodells Metriken für dynamische Aspekte (Sequenzdiagramme, Zustandsautomaten)??? signifikante OO-Metriken: DIT (Depth of Inheritance Tree) Anzahl Oberklassen einer Klasse DIT größer Fehlerwahrscheinlichkeit größer 224

Metriken für OO-Komponenten (2) NOC (Number Of Children of a class) Anzahl direkter Unterklassen NOC größer Fehlerwahrscheinlichkeit geringer RFC (Response For a Class) Anzahl Funktionen, die direkt durch Klassenmethoden aufgerufen werden RFC größer Fehlerwahrscheinlichkeit größer WMC (Weighted Methods per Class) Anzahl definierter Methoden WMC größer Fehlerwahrscheinlichkeit größer CBO (Coupling Between Object classes) Anzahl Klassen, auf deren Dienste die Klasse zugreift CBO größer Fehlerwahrscheinlichkeit größer 225 Metriken für OO-Komponenten (3) Kombination von DIT, NOC, RFC usw. mit McCabe- oder Halstead-Metrik möglich in der Literatur: Autoren schlagen neue Kombinationsmetrik vor... und beschreiben, welche Werte die Metrik berechnet. Aber: es fehlt die Validierung Kritik an Metriken: berechnen von Metriken ist kein Ersatz für Gegenlesen, Test oder Verifikation was ist mit neuronalen Netzen, Data Mining,...? 226