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

Ähnliche Dokumente
Analysierende Testverfahren

Verwendung von OO-Metriken zur Vorhersage

Softwaremetriken. 15. Mai 2013

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

Softwaremessung und -metrik

Softwaremetriken verstehen und nutzen

Softwaremetriken. 29. April 2015

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

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

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

Softwaremetriken verstehen und nutzen

Software-Metriken: Purismus vs. Pragmatismus

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

Softwaretechnik (Allgemeine Informatik) Überblick

Messung. Mariem Ben Rehouma

SE2-6. Übung Johannes Bürdek

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

Software Engineering. Verwendung von Softwaremetriken

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

Methodische Grundlagen des Software Engineering - Übung 9

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

Programmieren I + II Regeln der Code-Formatierung

1 Abstrakte Klassen, finale Klassen und Interfaces

Einführung in die Java- Programmierung

Qualitätssicherung von Software

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Software Tests (2) Quellcode Reviews

Kapitel Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin)

Programmieren I + II Regeln der Code-Formatierung

Implementieren von Klassen

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

JAVA - Methoden

Qualitätssicherung von Software (SWQS)

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

Metriken für Objektorientierte Software

Klassenvariablen, Klassenmethoden

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

Codequalitätskontrolle mit SonarQube

Software-Qualität sichtbar machen

7. Metriken. Idee von Maßsystemen Halstead live Variables Variablenspanne McCabe-Zahl LCOM*

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Methoden (fortgeschritten) in C# - 1

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Einstieg in die Informatik mit Java

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Vorlesung Software-Reengineering

Einstieg in die Informatik mit Java

Objektorientierte Programmierung. Kapitel 14: Interfaces

Prof. Dr.-Ing. Peter Liggesmeyer. Qualität Eingebetteter Systeme: Beispiel Sicherheit Die Bedeutung von Standards Die Erfahrung Der Common Sense

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Inhalt. Zusammenfassung Abstract LOC. Seminar Qualitative und Quantitative Methoden im Software Engineering

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

Communication Metrics for Software Development

3. Java - Sprachkonstrukte I

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Sun s Java Code Conventions

Softwareentwicklung Lösungen zu Programmierung von Klassen mit BlueJ

Wichtige Prinzipien von C#

Tag 8 Repetitorium Informatik (Java)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Algorithmen und Datenstrukturen II

Comparison of Software Products using Software Engineering Metrics

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Software Engineering in der Praxis

Vorlesung: Software Engineering

Dr. Monika Meiler. Inhalt

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

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

Objektorientierte Programmierung mit C++ SS 2007

C# im Vergleich zu Java

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Grundlagen von C# - 1

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Testwell CTC++ Test Coverage Analyser Testabdeckung für alle Coverage-Stufen, alle Compiler, alle Embedded Targets

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Transkript:

Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden Isabell Füll Grömmsche Koppel 15 24111 Kiel isabell.fuell@googlemail.com Amselweg 3 24222 Schwentinental timo.gutsche@gmx.net

Agenda Motivation Software-Qualität Software-Metriken Definition Bewertung Überblick Halstead-Metriken Rechenbeispiel Toolunterstützung Abschluss Seite 1

Motivation Die Software-Qualität spielt im Rahmen des Software- Engineerings eine entscheidende Rolle für den Wettberwerbsvorteil eines Unternehmens! Softwarequalität Software- Engineering Wettbewerb Seite 2

Software-Qualität Benutzer- freundlichkeit Robustheit Portabilität Erweiterbarkeit Verifizierbarkeit Funktionstreue Wiederverwendbarkeit Integrität Software Kompatibilität Seite 3

Software-Metriken: Definition Handwerkszeug für statische Code-Analysen Messung bzw. Ermittlung der einzelenen Software-Qualitätsmerkmale Beruhen auf der Betrachtung von Quellcode Liefern Einblicke in Strukturen der Software- Programme dynamische Software-Analysen Ermitteln tatsächliches Laufzeitverhalten Seite 4

Software-Metriken: Bewertung Vergleichbarkeit Ökonomie Robustheit Korrelation Objektivität Gütekriterien einer Software- Metrik Verwertbarkeit Seite 5

Software-Metriken: Überblick Objektorientierte Metriken Depth of Inheritance Tree (DIT) Number of Children (NOC) Response for a Class (RFC) Weighted Methods per Class (WMC) Coupling Between Objects (CBO) Lack of Cohesion in Methods (LCOM) Umfangsmetriken Lines of Code (LOC) Kilo-Lines of Code (KLOC) Non Commented Source Statements (NCSS) executable Lines of Code (ELOC) Halstead-Metriken Metriken zur Komplexität McCabe-Metrik Halstead-Metriken Modulentwurfskomplexität Entwurfskomplexität Integrationskomplexität Seite 6

Halstead-Metriken 1977 von Maurice Howard Halstead veröffentlicht Komplexität steht in Zusammenhang mit dem Auftreten von zwei Gruppen lexikalischer Elemente im Quellcode Operatoren Operanden Schlüsselwörter (DO...UNTIL, FOR, DO...WHILE, NOT, IF,...) Operatoren (+, -, *, /,...)... Bezeichner (Methoden, Variablen) Konstanten... Seite 7

Halstead-Metriken: Überblick Grundparameter Kenngrößen nach Halstead Seite 8

Beispielmethode /** * @author * @param anfangsbetrag: Betrag zu Beginn der Laufzeit * @param zinssatz: Zinssatz in Prozent (5% = 5) * @param laufzeit: Laufzeit in Jahren (ganzzahlig) * @return endbetarg: Betrag am Ende der Laufzeit */ public static double getendbetrag(double anfangsbetrag, double zinssatz, int laufzeit){ //Korrektheit der Übergabeparameter prüfen: if(anfangsbetrag <= 0 zinssatz <= 0 laufzeit <= 0){ return 0; } //Endbetrag berechnen: double endbetrag = anfangsbetrag*math.pow((1+zinssatz/100), laufzeit); } //Berechnungsergebnis zurückgeben return endbetrag; Seite 9

Rechenbeispiel: Operanden & Operatoren public static double getendbetrag(double anfangsbetrag, double zinssatz, int laufzeit){ if(anfangsbetrag <= 0 zinssatz <= 0 laufzeit <= 0){ return 0; } double endbetrag = anfangsbetrag*math.pow((1+zinssatz/100), laufzeit); } return endbetrag; Operatoren Operanden {} 2 double 4 () 4 int 1 ; 3 getendbetrag 1, 3 endbetrag 2 if 1 anfangsbetrag 3 return 2 laufzeit 3 public 1 zinssatz 3 static 1 0 4 2 100 1 <= 3 1 1 = 1 Math.pow 1 + 1 * 1 gesamt 25 gesamt 24 Seite 10

Beispielmethode: Lösungen Grundparameter Kenngrößen nach Halstead Seite 11

Toolunterstützung Seite 12

Abschluss: Zusammenfassung Vielen Dank für die Aufmerksamkeit! Gibt es noch Fragen Seite 13