Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05. <thomas@thi.uni-hannover.de>



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

Verwendung von OO-Metriken zur Vorhersage

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

Software Engineering in der Praxis

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

Comparison of Software Products using Software Engineering Metrics

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Softwaremetriken. 15. Mai 2013

Softwaremetriken verstehen und nutzen

Echolot Qualitätssicherung mit Sonar

Softwaremetriken. 29. April 2015

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Testen mit JUnit. Motivation

Informationssystemanalyse Lebenszyklusmodelle 3 1. Lebenszyklusmodelle sollen hauptsächlich drei Aufgaben erfüllen:

Analysierende Testverfahren

Messung. Mariem Ben Rehouma

Software-Metriken: Purismus vs. Pragmatismus

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Generative Prozessmodelle Patrick Otto MDD Konferenz

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Software Survivability

Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden

Software Tests (2) Quellcode Reviews

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Qualitätsmanagement. Andreas Bäuml SWT-Projekt WS 07/08

Qualitätsmanagement im Projekt

Softwaremessung und -metrik

Das Wasserfallmodell - Überblick

Software- Qualitätssicherung

Teambildung. 1 Einleitung. 2 Messen der Produktivität

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierte Programmierung

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

Grundlagen Software Engineering

Was bringt TDD wirklich?

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Java: Vererbung. Teil 3: super()

Qualitätsmanagement an beruflichen Schulen in Deutschland: Stand der Implementierung. Diplomarbeit

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

2. Psychologische Fragen. Nicht genannt.

Klausur Software-Engineering SS 2005 Iwanowski

Test-Driven Design: Ein einfaches Beispiel

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

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

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Agile Softwareentwicklung

QM: Prüfen -1- KN

Erfahrungen mit Hartz IV- Empfängern

Verteilte Paarprogrammierung mit Eclipse

Empirische Softwaretechnik Kosten und Nutzen von UML in der Wartung Dr. Victor Pankratius Andreas Höfer Wintersemester 2009/2010

Qualität bei evolutionärer Entwicklung

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Objektorientiertes JavaScript

Objektorientierte Programmierung OOP

Anforderungsgetriebene Webentwicklung mit Grails:

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Integrierte und automatisierte GUI-Tests in Java

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

Kapitel 2: Der Software-Entwicklungsprozess

Softwarepraktikum: Enigma

IT-Basics 2. DI Gerhard Fließ. Vorgehensmodelle

neue FMEA Risiko Bewertung Referent: Martin Werdich

THREAD ARCS: An Thread Visualization

IT-Projektmanagement-Methoden

Konzepte der Informatik

Variabilität in Produktlinien und das orthogonale Variabilitätsmodell

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Qualitätssicherung. Was ist Qualität?

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Software Maintenance - Musterlösung zum Übungsblatt 1

Informationssystem Kirche bei den Menschen

Kontinuierliche Architekturanalyse. in 3D

Einführung in die Programmierung

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Auswertung des Jahresabschlusses Bilanzanalyse 2

Apache - Maven. Java-Erstellung auf Plugin-Basis. Martin Hoffmann

Handbuch Social Linkbuilding Automatik-Software

Wo sind meine Anforderungen?

Einführung in wxwidgets & wxdev-c++

Informatik, Mathematik und Naturwissenschaften

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Kapitel 10: Dokumentation

Künstliche Intelligenz Maschinelles Lernen

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Software Engineering

Vorstellung des BMBF-Projektes FluSs aus Sicht eines Endanwenders. Düsseldorf Maritim-Hotel, 09. Juli 2013 Mark Zwirner

Generatives Programmieren

EndTermTest PROGALGO WS1516 A

Andy Hunt. Programmieren lernen. mit Minecraft-Plugins. dpunkt.verlag

WLGauge: : Web Link Gauge to Measure the Quality of External WWW Links. Andreas Lübcke

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Transkript:

Software-Metriken B. Sc. Michael Thomas <thomas@thi.uni-hannover.de> Seminar Software-Entwurf WS 2004/05

Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität Halstead-Maße OO-Metriken Maße nach Chidamber & Kemerer Werkzeuge cccc JDepend Eclipse Plugins Literatur 2

Wann ist ein Software-Entwurf gut? 3

Wann ist ein Software-Entwurf gut? Eigenschaften guter Entwürfe: leicht verständlich Fehler vermeidend wartbar erweiterbar Software-Qualitätsmerkmale nicht direkt messbar! Ausweg: messen von internen Größen Vorhersagen durch Empirie ableiten 4

Einordnung des Themas Creational Patterns Behavioral Patterns Structural Patterns Design Patterns lösen Design-Probleme UML Hilfsmittel OO Analyse & Design betrachtete Programmiertechnik OOP SW-Metriken Beurteilung wichtiger Bestandteil Software-Entwurf 5

Was ist eine Metrik? Maßzahl zur Quantifizierung von Attributen eines SW-Projekts Anforderungen: Einfachheit Objektivität Validität Konsistenz Reproduierbarkeit Nachvollziehbarkeit 6

Metriken messen Vorgehen: Messgröße definieren Daten sammeln auswerten und beurteilen Feste Integration ist wichtig! sonst: Vernachlässigung Ziele setzen Messgrößen definieren Vorgehen überarbeiten Auswerten & beurteilen Entwickeln Daten sammeln 7

Warum Metriken einsetzen? To meassure is to know (Maxwell) Bewertung von Entwurf Designentscheidungen genauere Schätzungen Software-Projekte werden vergleichbar dienen dem erfahrungsbasierten Lernen in Unternehmen Wartungs- und Testumfang vorhersagen Erzieherische Effekte auf den Programmierer (Stil) 8

Arten von Metriken Man unterscheidet Software-Metriken (nach Thaller) in: Software-Metriken Produkt-Metriken Prozess-Metriken 9

Prozess-Metriken dienen dem Projektmanagement beurteilen den Prozess der Software-Entwicklung typische Anwendungen: Kosten- und Aufwandsschätzungen Projektfortschritt beurteilen Wartungskosten abschätzen Risiken erkennen etc. bekannte Metriken: Brooks: The Mystical Man-Month gefundene Fehler pro Phase 10

Produkt-Metriken dienen dem Entwicklerteam vorrangig zur Qualitätsbeurteilung des SW-Produkts: Zuverlässigkeit bzw. Fehleranfälligkeit Designkomplexität Wartungsaufwand Lesbarkeit meist Code-basiert 11

Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität Halstead-Maße OO-Metriken Maße nach Chidamber & Kemerer Werkzeuge cccc JDepend Eclipse Plugins Literatur 12

Lines of Code einfach die Zeilen des Quellcode zählen Vorteile: extrem einfach zu messen Nachteile: sehr unterschiedliche Definitionen: alle Programmzeilen ausführbare Programmzeilen Leerzeilen? Kommentare? Compiler-Befehle? sprachabhängig bemisst lediglich den Umfang einheitliche Definition und Normierung notwendig (!) 13

Beispiel public void feed(eatable[] eatable){ for (Eatable e : eatable){ if (hungry) // iß etwas... atecalories += e.getcalories(); } } if (atecalories > 150){ // Sodbrennen spitfire(); } alle Zeilen 10 ohne Leerzeilen, Kommentare 7 Anzahl Semikolons 2 14

Cyclomatic Complexity nach McCabe (1976) basiert auf Ablaufgraph F Formel: c F = E V 2 p Fehleranfälligkeit : mittleres Risiko c F 10 : hohes Risiko c F 20 : unbeherschbar c F 50 Vorteile: misst die Komplexität Nachteile: Umfang nicht berücksichtigt 15

Beispiel public void feed(eatable[] eatable){ for (Eatable e : eatable){ if (hungry) // iß etwas... atecalories += e.getcalories(); } if for... if (atecalories > 150){ } // Sodbrennen spitfire(); if... } c F =9 7 2=4 16

Halstead-Metriken erster Einführung von Software-Metriken (1972) Zählt alle verwendeten Operatoren und Operanden = Anzahl der verwendeten Operatoren 1 = Anzahl der verwendeten Operanden 2 = Gesamtzahl der Operatoren N 1 = Gesamtzahl der Operanden N 2 Daraus abgeleitet: Maße für Schwierigkeit Volumen Aufwand D= 1 2 N 2 2 V = N 1 N 2 log 1 2 E=D V 17

Beispiel public void feed(eatable[] eatable){ for (Eatable e : eatable){ if (hungry) // iß etwas... atecalories += e.getcalories(); } if (atecalories > 150){ // Sodbrennen spitfire(); } } D=8,25 V 138,3 E 1141 Operator #Vorkommen Eatable 1 public 1 void 1 for 1 if 2 { } 3 ( ) 6 += 1 > 1 : 1. 1 ; 2 Operand #Vorkommen feed 1 eatable 2 hungry 1 atecalories 2 getcalories 1 spitfire 1 18

Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität Halstead-Maße OO-Metriken Maße nach Chidamber & Kemerer Werkzeuge cccc JDepend Eclipse Plugins Literatur 19

Problem Traditionelle Maße sagen nichts über OO-Programme aus. Anwendung höchstens in Teilsystemen Wie bildet man objekt-orientierte Konzepte ab? Klassen Vererbung Polymorphismus Nachrichtenaustausch Lösung: Maße von Chidamber und Kemerer Towards a Metric Suite for Object Oriented Design, 1991 20

Weighted methods per class (WMC) Gewichtete Menge an Methoden Gewichtung anhand der zyklomatischen Komplexität (McCabe) Indikator für Weiterentwicklungsaufwand Wartungsaufwand schwierige Wiederverwendung WMC=c F feed c F spitfire =4 1=5 21

Depth in inheritance tree (DIT) Tiefe im Vererbungsbaum genauer: Anzahl der Oberklassen!? Indikator für hohe Wiederverwendung gute Strukturierung Gefahr einer unbeabsichtigeten Änderung in Oberklassen positiv korelliert mit Fehlerwahrscheinlichkeit DIT = 2 DIT = 0 DIT = 1 DIT = 3 22

Number of children (NOC) Anzahl der direkten Unterklassen Idikator für die Wichtigkeit einer Klasse Auswirkungen von Änderungen im System Testaufwand bei Änderungen negativ korelliert mit Fehlerwahrscheinlichkeit NOC = 1 NOC = 2 NOC = 1 23

Coupling between classes (CBO) Kopplung zwischen zwei Klassen zeigt die Anzahl der Klassen, mit denen kommuniziert wird Indikator für: starke Kopplung großen Verwaltungs- & Testaufwand schlechte Aufgabenverteilung positiv korelliert mit Fehlerwahrscheinlichkeit CBO = 2 CBO = 1 CBO = 1 24

Response for a class (RFC) Menge aller genutzen Klassen zeigt die Anzahl aller verschiedenen Methoden, die aufgerufen werden zuzüglich aller Methoden der Klasse die max. mögliche Zahl an Methoden die durch eine Nachricht aufgerufen werden könnten Je größer der RFC: je komplexer ist die Klasse je schwieriger sind Testen und finden von Fehlern RFC = 2 + 1 = 3 25

Lack of cohesion on methods (LCOM) Kohäsionsmangel der Methoden einer Klasse Berechnung: Anzahl der Methodenpaare mit disjunkten Variablen minus der Methodenpaare mit gemeinsam genutzten Variablen Indikator für schlechtes Design schlechte Klassenaufteilung mögliches Trennen in mehrere Klassen LCOM = 2 26

Dynamische Metriken bisher lediglich statische OO-Metriken leider keine Metriken für das dynamische Systemverhalten Kommunikationsabläufe Gebiet der Forschung 27

Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität Halstead-Maße OO-Metriken Maße nach Chidamber & Kemerer Werkzeuge cccc JDepend Eclipse Plugins Literatur 28

cccc berechnet u.a. die vorgestellten Metriken Programmiersprachen: Ada Java C/C++ kommandozeilen-basiert z.b.: cccc --outdir=~/report `find. -name *.java` Ausgabe nach HTML/XML Vorteil: einfach und intuitiv zu benutzen Nachteil: keine Integration in IDE's 29

Beispiel 30

JDepend berechnet OO-Metriken nach Robert C. Martin Programmiersprachen: Java Ausgabeformen Konsole, XML Swing GUI Integration in Ant JUnit gute Dokumentation 31

Eclipse Plugin: com.teaminabox.eclipse.metrics berechnet die vorgestellten Metriken Features: Export nach HTML/CSV möglich gute Integration Überschrittene Grenzwerte werden in die Probleme -Sicht integriert: 32

Eclipse Plugin: net.sourceforge.metrics berechnete Metriken nach Chidamber und Kemerer sowie Robert C. Martin Features: eigener Metrik-View graphische Darstellung als Dependency Graph Nachteil: Probleme unter Linux 33

Literatur Bücher: Henderson-Sellers, Brian: Object-Oriented Metrics, measures of Complexity Martrin,Robert: Agile Software Development, Principles, Patterns and Practices URLs: http://www.refactorit.com http://cccc.sourceforge.net/ http://www.clarkware.com/software/jdepend.html http://metics.sourceforge.net http://www.teaminabox.co.uk/downloads/metrics/ 34

Ende Vielen Dank für die Aufmerksamkeit! 35