Codequalitätskontrolle mit SonarQube

Größe: px
Ab Seite anzeigen:

Download "Codequalitätskontrolle mit SonarQube"

Transkript

1 Codequalitätskontrolle mit SonarQube

2 Wer ist das? Josha von Gizycki Goslarer Seit 2008 bei der Java, Oracle, Webentwicklung, Hacker, Zocker, Rocker Codequalitätskontrolle mit SonarQube - 2

3 Warum der? Codequalitätskontrolle mit SonarQube - 3

4 Typische Fehler im Alltag Keine Tests Zeitdruck Legacy Code Basteln Codequalitätskontrolle mit SonarQube - 4

5 Was ist das Ergebnis? Big Ball of Mud? Gasfabrik? Spaghetticode mit Copy Pasta? Innere Plattform? Sumo-Hochzeit? Codequalitätskontrolle mit SonarQube - 5

6 Was macht statische Codeanalyse? Bytecode oder Quelltext Nutzt Metriken Generiert Statistiken Codequalitätskontrolle mit SonarQube - 6

7 Was ist statische Codeanalyse? Bytecode Quelltext Quelltext Bugs Ineffizienz Codestil Harte Fehler Handwerk Konventionen Codequalitätskontrolle mit SonarQube - 7

8 Metriken? Lat. ars metrica : Lehre von den Maßen Codequalitätskontrolle mit SonarQube - 8

9 Softwaremetriken Mathematische Funktion Code Vergleichbarkeit Eine Softwarequalitätsmetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet, welcher als Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit interpretierbar ist. IEEE Standard 1061, 1998 Codequalitätskontrolle mit SonarQube - 9

10 McCabe Zyklomatische Komplexität Anzahl unterschiedlicher Möglichkeiten, durch ein Stück Code zu laufen 1 + Anzahl Kontrollstrukturen + Boolesche Operatoren if, while, do, for,?:, catch, case &&, Grenzwerte 10 für Methoden 200 für Klassen Codequalitätskontrolle mit SonarQube - 10

11 McCabe Zyklomatische Komplexität String wochentagsname(int nummer) { switch(nummer) { case 1: return "Montag"; case 2: return "Dienstag"; case 3: return "Mittwoch"; case 4: return "Donnerstag"; case 5: return "Freitag"; case 6: return "Samstag"; case 7: return "Sonntag"; } return ""; } String wochentagsname(int nummer) { String[] tage = new String[] { "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"}; int len = tage.length; if (nummer >= 1 && nummer <= len) { return tage[nummer - 1]; } return ""; } Codequalitätskontrolle mit SonarQube - 11

12 Mehrwert Quantitative / Qualitative Einschätzung der Codebasis Argumentationsgrundlage gegenüber Entscheidern Risikoabschätzung Teamorganisation Codequalitätskontrolle mit SonarQube - 12

13 SonarQube Scanner Datenbank Web-Komponente Codequalitätskontrolle mit SonarQube - 13

14 SonarQube OpenSource unter LGPL v3 Integriert unter anderem PMD, Checkstyle, Findbugs Plugins Sprachen (Java, Javascript, PHP, ) SCM (Git, Subversion, Mercurial, ) GitHub (Authentifikation, Pull Requests) Codequalitätskontrolle mit SonarQube - 14

15 Code Smell Cyclomatic Complexity Deprecated code should be removed eventually Silly math should not be performed Codequalitätskontrolle mit SonarQube - 15

16 Vulnerability public static fields should be constant Credentials should not be hard-coded Values passed to SQL commands should be sanitized Codequalitätskontrolle mit SonarQube - 16

17 Bugs Classes should not be compared by name Loops should not be infinite Null pointers should not be dereferenced Codequalitätskontrolle mit SonarQube - 17

18 Auswertung Codequalitätskontrolle mit SonarQube - 18

19 Auswertung Codequalitätskontrolle mit SonarQube - 19

20 Auswertung Codequalitätskontrolle mit SonarQube - 20

21 Auswertung Codequalitätskontrolle mit SonarQube - 21

22 Auswertung Codequalitätskontrolle mit SonarQube - 22

23 Auswertung Codequalitätskontrolle mit SonarQube - 23

24 Auswertung Codequalitätskontrolle mit SonarQube - 24

25 Auswertung Codequalitätskontrolle mit SonarQube - 25

26 Auswertung Codequalitätskontrolle mit SonarQube - 26

27 Quality Gates Codequalitätskontrolle mit SonarQube - 27

28 Quality Gates - GitFlow Codequalitätskontrolle mit SonarQube - 28

29 Interpretation Relative Werte > Absolute Werte Änderungen > Status Quo Metriken verstehen Metriken in Relation zueinander stellen Codequalitätskontrolle mit SonarQube - 29

30 Lines of Code Lines of Code - LOC Source Lines of Code SLOC Comment Lines of Code CLOC Non-Comment Lines of Code NCLOC Logical Lines of Code - LLOC Codequalitätskontrolle mit SonarQube - 30

31 Metriken in Relation setzen DTO search(list<list<dto>> rawdata, int id) { if(rawdata!= null) { for(list<dto> sublist : rawdata) { for(dto dto : sublist) { if(dto.getid() == id) { return dto; } } } } return null; } Codequalitätskontrolle mit SonarQube - 31

32 Metriken in Relation setzen DTO search(list<list<dto>> rawdata, int id) { if(rawdata == null) { return; } } for(list<dto> sublist : rawdata) { for(dto dto : sublist) { if(dto.getid() == id) { return dto; } } } return null; Codequalitätskontrolle mit SonarQube - 32

33 Metriken in Relation setzen void printnumbers() { for(int i = 0; i < 10; ++i) { if(i % 2 == 0) { continue; } if(i % 3 == 0) { continue; } System.out.println(i); } } Codequalitätskontrolle mit SonarQube - 33

34 Metriken in Relation setzen void printnumbers() { for(int i = 0; i < 10; ++i) { if(i % 2 == 0 i % 3 == 0) { continue; } System.out.println(i); } } Codequalitätskontrolle mit SonarQube - 34

35 SQALE - ISO 9126 Codequalitätskontrolle mit SonarQube - 35

36 Maintainability Rating A: 0 0,1 B: 0,11 0,2 C: 0,21 0,5 D: 0,5 1 E: > 1 Technical Debt / Development Cost Projektgröße: LOC Technische Schuld: 50 Tage 50 / (0.06 * 2.500) = 0,33 Codequalitätskontrolle mit SonarQube - 36

37 Erfahrungswerte Mit ausreichend großer Codebasis erreichen viele Legacy-Projekte ein A-Rating Codequalitätskontrolle mit SonarQube - 37

38 Erfahrungswerte Codequalitätskontrolle mit SonarQube - 38

39 Erfahrungswerte For every 30 rule violations, you can expect on average three minor bugs and one major bug Embedded Programmer Codequalitätskontrolle mit SonarQube - 39

40 Erfahrungswerte Live mit SonarQube zu arbeiten, kann zu Gasfabriken führen Codequalitätskontrolle mit SonarQube - 40

41 Das heißt? Statistiken sind interessant Qualitätserhöhung Teammotivation Messbare Qualität für Kunden Codequalitätskontrolle mit SonarQube - 41

42 Codequalitätskontrolle mit SonarQube - 42

43 Buffet ist eröffnet! Codequalitätskontrolle mit SonarQube - 43

44 Ich hab da mal was vorbereitet Codequalitätskontrolle mit SonarQube - 44

45 Josha von Gizycki Logindaten: jug / Codequalitätskontrolle mit SonarQube - 45

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst

Mehr

Softwaremetriken verstehen und nutzen

Softwaremetriken verstehen und nutzen Softwaremetriken verstehen und nutzen Manuel Pichler http://manuel-pichler.de PHP Unconference Hamburg 12. September 2009 Über mich Manuel Pichler Total stolzer Papa Jahrgang 1978 Diplom Informatiker Softwarearchitekt

Mehr

Echolot Qualitätssicherung mit Sonar

Echolot Qualitätssicherung mit Sonar Echolot Qualitätssicherung mit Sonar Thomas Haug [email protected] www.mathema.de Motivation Sonar Überblick Demo Fazit Motivation Sonar Überblick Demo Fazit Sometimes the developers manage to maintain

Mehr

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Management von Softwaresystemen Systembewertung: Metriken und Prozess Management von Softwaresystemen Systembewertung: Metriken und Prozess Referent: Vadym Alyokhin Betreuer: Florian Deißenböck Übersicht Definition Einführung in die Messtheorie Meilensteine von Software-Metriken

Mehr

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert <[email protected]> Seminar Software-Entwurf WS 2004/05

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert <email@henningsievert.de> Seminar Software-Entwurf WS 2004/05 Software-Metriken Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05 Gliederung Einordnung in den Seminar-Kontext Grundlegende Definitionen Klassifikation von

Mehr

Kontinuierliche Architekturanalyse. in 3D

Kontinuierliche Architekturanalyse. in 3D Kontinuierliche Architekturanalyse in 3D Stefan Rinderle Bachelor an der HS Karlsruhe Master "Software Engineering" in München / Augsburg Seit 2013 bei Payback 2 Software-Visualisierung Visualisierung

Mehr

Hans Scheitter GmbH & Co.KG

Hans Scheitter GmbH & Co.KG 2010 Beschläge in Schmiedeeisen, Messing und Kupfer JANUAR Neujahr 01 Samstag 02 Sonntag 03 Montag 04 Dienstag 05 Mittwoch 06 Donnerstag 07 Freitag 08 Samstag 09 Sonntag 10 Montag 11 Dienstag 12 Mittwoch

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Open-Source-Werkzeugkasten für Software-QS. 05.05.2011 10:15-11:15 Uhr Zagrebsaal I

Open-Source-Werkzeugkasten für Software-QS. 05.05.2011 10:15-11:15 Uhr Zagrebsaal I Open-Source-Werkzeugkasten für Software-QS 05.05.2011 10:15-11:15 Uhr Zagrebsaal I 1 Speaker Tobias Joch inovex GmbH Head of Solution Development leichtgewichtige und hochskalierende (Web-) Anwendungen

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Software-Metriken: Purismus vs. Pragmatismus

Software-Metriken: Purismus vs. Pragmatismus Software-Metriken: Purismus vs. Pragmatismus Web DevCon Manuel Pichler 17.10.2011 Software-Metriken: Purismus vs. Pragmatismus 1 / 42 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld

Mehr

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten main {GRUPPE} Seite 1 Jürgen Nicolai Geschäftsführender Gesellschafter Liebknechtstrasse 33 70565 Stuttgart Tel : 07 11/7 81 19 90 Fax : 07 11/ 7 81 19 91 Mail : [email protected] Web: www.main-gruppe.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Datum Wochen Band DVD Band eingelegt Protokoll kontr. Recovery kontr. Tag Nr. RW Sign. Sign. Sign.

Datum Wochen Band DVD Band eingelegt Protokoll kontr. Recovery kontr. Tag Nr. RW Sign. Sign. Sign. Monat: Januar Anzahl Bänder: 9 01.01.2015 Donnerstag Do DO 02.01.2015 Freitag Fr FR 03.01.2015 Samstag 04.01.2015 Sonntag 05.01.2015 Montag Mo1 MO 06.01.2015 Dienstag Di DI 07.01.2015 Mittwoch Mi MI 08.01.2015

Mehr

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

Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden Isabell Füll Grömmsche Koppel 15 24111 Kiel [email protected] Amselweg 3 24222 Schwentinental

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010 Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den

Mehr

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

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering 13. Automatische Code Analyse Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering: 13. Automatische Code Analyse 2 Code Analyse: Manuell versus Automatisch Manuelle

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Software Tests (2) Quellcode Reviews

Software Tests (2) Quellcode Reviews Software Tests (2) Quellcode Reviews Was ist? Was ist Testen? G. J. Myers, 79: "Testen ist der Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Hetzel 83: "Messung der Softwarequalität"

Mehr

Abonnieren Sie die kostenlose epaper-zeitung unter

Abonnieren Sie die kostenlose epaper-zeitung unter Kreisliga A Paderborn Sonntag, 21.2.2010 Sonntag, 28.2.2010 Sonntag, 7.3.2010 Sonntag, 14.3.2010 Sonntag, 21.3.2010 Samstag, 27.3.2010 Sonntag, 28.3.2010 Mittwoch, 31.3.2010 Donnerstag, 1.4.2010 Montag,

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

Mehr

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

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lill, Meitner, Föhrweiser, Spisländer FAU Erlangen-Nürnberg Software-Metriken 1 / 24 Software-Metriken Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität

Mehr

ITG RKSVNet - Webservice Signierung von Belegen via Internet

ITG RKSVNet - Webservice Signierung von Belegen via Internet ITG RKSVNet - Webservice Signierung von Belegen via Internet Dieser Signierdienst via Internet ist für Kassensoftwarehersteller gedacht, die Ihre Kassensoftware über das Internet Ihren Kunden zugänglich

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

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

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

PROGRAMMIERUNG IN JAVA

PROGRAMMIERUNG IN JAVA PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum

Mehr

Refactoring von Legacy Systemen. Jochen Winzen [email protected] andrena objects ag

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag Refactoring von Legacy Systemen Jochen Winzen [email protected] andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität

Mehr

Statische Analyse. Holger Hans Peter Freyther 1. Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006

Statische Analyse. Holger Hans Peter Freyther 1. Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006 Übersicht Holger Hans Peter Freyther 1 1 Freie Universität Berlin Seminar zu Ursachen und Vermeidung von Fehlern in der Softwareentwicklung, 2006 Übersicht Übersicht 1 Was ist es? Analysewerkzeuge 2 Find

Mehr

Die 7 Wege zum Clean Code

Die 7 Wege zum Clean Code Die 7 Wege zum Clean Code Über mich Claudio Altamura Softwareentwickler Certified ScrumMaster Interessen Agile Softwareentwicklung Softwarearchitekturen Java [email protected] 2 Inhalt 1. Statische

Mehr

Montag, 14.3 Dienstag, 15.3 Mittwoch, 16.3 Donnerstag, 17.3 Freitag, 18.3 Samstag, 19.3 Sonntag, 20.3. Programmiertes Entwerfen 1 KG1 Götte

Montag, 14.3 Dienstag, 15.3 Mittwoch, 16.3 Donnerstag, 17.3 Freitag, 18.3 Samstag, 19.3 Sonntag, 20.3. Programmiertes Entwerfen 1 KG1 Götte 14.3. 0.3.016 1. Woche Montag, 14.3 Dienstag, 15.3 Mittwoch, 16.3 Donnerstag, 17.3 Freitag, 18.3 Samstag, 19.3 Sonntag, 0.3, IGErasmus Interface Design 1, IGErasmus WP Interface Design, KGErasmus4, KGErasmus6

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

Mehr

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

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

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009 Grundlagen der Programmierung Teil1 Einheit III - 23. Okt. 2009 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Ausdrücke & Anweisungen

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Quantität für Qualität

Quantität für Qualität Wie das Vermessen von Software sinnvoll wird HARM GNOYKE, STEFAN ZÖRNER EMBARC Softwarearchitektur Meetup Hamburg Bytro Labs (Astraturm), 29. August 2016 0 Wie das Vermessen von Software sinnvoll wird

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Iterativ. Inkrementell

Iterativ. Inkrementell Iterativ Inkrementell Build Release Test Qualität Architektur & Documentation Distributed Version Control Continuous Integration TDD Design Agile Architektur Dependency Feature Branches Mocks

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

Robuste und Praktikable Ansätze zur Verhinderung von Sicherheitsdefekten. Christoph Kern, Google

Robuste und Praktikable Ansätze zur Verhinderung von Sicherheitsdefekten. Christoph Kern, Google Robuste und Praktikable Ansätze zur Verhinderung von Sicherheitsdefekten Christoph Kern, Google Weit verbreitete Sicherheitslücken SQL-injection, XSS, XSRF, etc -- OWASP Top 10 Grundproblem: APIs/Frameworks

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Programmiervorkurs WS 2012/2013. Schleifen und Methoden Programmiervorkurs WS 2012/2013 Schleifen und Methoden Ein Befehl soll mehrfach ausgeführt werden, z.b.: public class MyCounter { System.out.println(1); Ein Befehl soll mehrfach ausgeführt werden, z.b.:

Mehr

Entwicklungswerkzeuge

Entwicklungswerkzeuge Entwicklungswerkzeuge Werner Struckmann & Tim Winkelmann 10. Oktober 2012 Gliederung Anforderungen Projekte Debugging Versionsverwaltung Frameworks Pattern Integrated development environment (IDE) Werner

Mehr

Statische Code-Analyse zur Qualitätsmessung

Statische Code-Analyse zur Qualitätsmessung Statische Code-Analyse zur Qualitätsmessung IT-Architektur-Workshop München, 28. November 2012 Dr. Karl-Heinz Wichert Agenda Statische Code-Analyse Messen 2 Was ist statische Code-Analyse? Wikipedia: Statische

Mehr

Software Engineering II Refactoring, Style, Software Metriken

Software Engineering II Refactoring, Style, Software Metriken Software Engineering II Refactoring, Style, Software Metriken Prof. Dr. Axel Böttcher 16. Dezember 2012 Wiederholung Technische Schulden geek & poke, http://geek-and-poke.com/2011/12/keynesian-based-coding.html

Mehr

JUnit. Unit testing unter Java

JUnit. Unit testing unter Java JUnit Unit testing unter Java Was ist Junit? einfaches Framework zum Schreiben von wiederholbaren Tests Besonders geeignet für unit testing Erlaubt Hierarchie von Testsuites Schreiben eines Test Case 1.

Mehr

Comparison of Software Products using Software Engineering Metrics

Comparison of Software Products using Software Engineering Metrics Comparison of Software Products using Software Engineering Metrics Alexander Bätz Fakultät EIM Universität Paderborn 23. Juli 2009 1 / 28 Motivation Qualitätsbewertung von Software Vergleichbarkeit von

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

Codequalität: Code-Metrik Version 0.1

Codequalität: Code-Metrik Version 0.1 Codequalität: Code-Metrik Version 0.1 Sicherung und Verbesserung der Codequalität mit Hilfe von Code-Metrik Tools Team Code Orange 1 Inhalt Einleitung Tools: - Checkstyle - JavaNCSS - Findbugs - JDepend

Mehr

Testen und Metriken. Einige Fehler. Fehler vermeiden. Andreas Zeller Universität des Saarlandes Microsoft Research. http://www.st.cs.uni-sb.

Testen und Metriken. Einige Fehler. Fehler vermeiden. Andreas Zeller Universität des Saarlandes Microsoft Research. http://www.st.cs.uni-sb. Testen und Metriken Andreas Zeller Universität des Saarlandes Microsoft Research http://www.st.cs.uni-sb.de/ Einige Fehler Fehler vermeiden Spezifizieren Beweisen Gegenlesen Testen Module Welche sollte

Mehr

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum 1 Web-Testen mit JUnit und HttpUnit Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum 2 Inhalt Entwicklertests in der Praxis Unit-Testing JUnit HttpUnit Praktisches Beispiel Bewertung

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Theorieplan Januar 2015

Theorieplan Januar 2015 Theorieplan Januar 2015 Donnerstag 01.01.2015 Freitag 02.01.2015 Samstag 03.01.2015 Sonntag 04.01.2015 Montag 05.01.2015 9 6 Dienstag 06.01.2015 1 11 Mittwoch 07.01.2015 10 7 Donnerstag 08.01.2015 2 12

Mehr

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

Andy Hunt. Programmieren lernen. mit Minecraft-Plugins. dpunkt.verlag Andy Hunt Programmieren lernen mit Minecraft-Plugins dpunkt.verlag Hier geht es los! 1 Für wen ist dieses Buch gedacht? 2 Erste Schritte 2 Ein Sprung ins kalte Wasser 3 Wo bekommst du Hilfe? 4 Schreibweisen

Mehr

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

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen ...we make the invisible visible... 1 Inhalt Fragestellungen Analysen und deren Anwendung Erfahrungen 2 Projektleiter Hat unsere Software eine klare, verständliche Struktur? Gibt es problematischen Code,

Mehr

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014 Programmierprojekt Anne0e Bieniusa Sommersemester 2014 Phasen der So;ware- Entwicklung Planungsphase DefiniConsphase Entwurfsphase ImplemenCerungsphase Testphase Wasserfall- Modell Einführungs- und Wartungsphase

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung Inhalt Aufbau des Source Codes Dokumentation des Source Codes (Layout) Qualitätskriterien berücksichtigen: Verständlichkeit Namenskonventionen Wartbarkeit: Programmierrichtlinien für erlaubte Konstrukte,

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Das HeronVerfahren für root(a) (Babilonisches Wurzelziehen)

Das HeronVerfahren für root(a) (Babilonisches Wurzelziehen) Das HeronVerfahren für root(a) (Babilonisches Wurzelziehen) Ein weiteres Annäherungsverfahren für das Wurzelziehen Ein Spezialfall des Newton Verfahrens von Bieker Sebastian 11038605 Gruppe F Grün Geschichte:

Mehr

HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1. Variables to store a true/false state: boolean movingright = true;

HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1. Variables to store a true/false state: boolean movingright = true; HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1 You will need these Java constructs for the following exercises: Variables to count things: int zaehler = 0; Variables to store a true/false state: boolean

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much [email protected] www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

Thema: Testen von objektorientierter Software

Thema: Testen von objektorientierter Software Seminar Simulation und Bildanalyse mit Java Thema: Testen von objektorientierter Software Uta Dienst 1. Teil: Einführung in den Software-Test 2. Teil: JUnit-Einführung Uta Dienst 17.11.2003 2 1. Teil:

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Thomas Schoen hello2morrow GmbH. Six-Sigma für Software Architekten

Thomas Schoen hello2morrow GmbH. Six-Sigma für Software Architekten Thomas Schoen hello2morrow GmbH Six-Sigma für Software Architekten Komplexität kann leicht außer Kontrolle geraten 2010 hello2morrow GmbH 2 Was ist technische Softwarequalität? Technische (interne, strukturelle)

Mehr

We have declared war on error!

We have declared war on error! We have declared war on error! Christian Schiffler Contao Konferenz 2015 29. Mai 2015 1 / 26 Xtra oder - der mit m Hut. Wers n das? Christian Xtra Schiffler trägt meistens einen Hut und seltsame T-Shirts

Mehr