Statische Code-Analyse zur Qualitätsmessung



Ähnliche Dokumente
PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS Ohne Gewähr -

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Professionelle Seminare im Bereich MS-Office

Teambildung. 1 Einleitung. 2 Messen der Produktivität

Übungen Programmieren 1 Felix Rohrer. Übungen

Wir machen neue Politik für Baden-Württemberg

Nicht über uns ohne uns

Produktionsplanung und steuerung (SS 2011)

Programmierkurs Java

Forschen - Schreiben - Lehren

Installation mit Lizenz-Server verbinden

SWE12 Übungen Software-Engineering

Java Kurs für Anfänger Einheit 5 Methoden

Free your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.

Pflegende Angehörige Online Ihre Plattform im Internet

DER SELBST-CHECK FÜR IHR PROJEKT

Bernadette Büsgen HR-Consulting

Statuten in leichter Sprache

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Bürgerhilfe Florstadt

Leitbild. für Jedermensch in leicht verständlicher Sprache

Was ist Sozial-Raum-Orientierung?

Mitarbeiterbefragung als PE- und OE-Instrument

Leichte-Sprache-Bilder

Landes-Arbeits-Gemeinschaft Gemeinsam Leben Gemeinsam Lernen Rheinland-Pfalz e.v.

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Die Bundes-Zentrale für politische Bildung stellt sich vor

Manifest für ein neues Arbeiten

Das Leitbild vom Verein WIR

Whitebox-Tests: Allgemeines

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Also heißt es einmal mehr, immer eine eigene Meinungen bilden, nicht beeinflussen lassen, niemals von anderen irgend eine Meinung aufdrängen lassen.

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

Tutorium zur Mikroökonomie II WS 02/03 Universität Mannheim Tri Vi Dang. Aufgabenblatt 3 (KW 44) ( )

Telenet SocialCom. verbindet Sie mit Social Media.

Alle gehören dazu. Vorwort

Projekt- Management. Landesverband der Mütterzentren NRW. oder warum Horst bei uns Helga heißt

4D Server v12 64-bit Version BETA VERSION

Veranstaltungsbelegung in QIS/LSF -- Leitfaden für BW-Studierende --

IT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit

Liebe Interessierte an technischen Lösungen für die Sicherheit zu Hause,

Java: Vererbung. Teil 3: super()

Regeln für das Qualitäts-Siegel

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Grundlagen der Theoretischen Informatik, SoSe 2008

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

1. Weniger Steuern zahlen

Begreifen Cookies. Inhalt. Cookie Grundlagen Ihre Privatsphäre MS: Internet Explorer Google: Chrome Mozilla: Firefox...

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

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

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

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

Ihren Kundendienst effektiver machen

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Einkaufen im Internet. Lektion 5 in Themen neu 3, nach Übung 10. Benutzen Sie die Homepage von:


Ich stimme zu, dass diese Seite Cookies für Analysen, personalisierte Inhalte und Werbung verwendet Weitere Informationen

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Die Post hat eine Umfrage gemacht

Wir gehen aus von euklidischen Anschauungsraum bzw. von der euklidischen Zeichenebene. Parallele Geraden schneiden einander nicht.

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Gesunde Mitarbeiter schaffen erfolgreiche Unternehmen.

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

AdWords MEHR ERFOLG FÜR IHREN FIXFERTIG SHOP

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Was meinen die Leute eigentlich mit: Grexit?

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Ich beschäftige mich jeden Tag mit Snares! Trotzdem ist noch kein Tag ohne ein WOW vergangen, an dem ich unsere Snares höre und sehe!

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Überblick. Lineares Suchen

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Lokale Installation von DotNetNuke 4 ohne IIS

Online bezahlen mit e-rechnung

TOP SELECT PLUS Newsletter Nr.2

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Software Engineering Klassendiagramme Assoziationen

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Qualitätsbedingungen schulischer Inklusion für Kinder und Jugendliche mit dem Förderschwerpunkt Körperliche und motorische Entwicklung

Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service

Checkliste. zur Gesprächsvorbereitung Mitarbeitergespräch. Aktivität / Frage Handlungsbedarf erledigt

Abwesenheitsnotiz im Exchangeserver 2010

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Informationsblatt Induktionsbeweis

Der große VideoClip- Wettbewerb von Media Markt.

GRS SIGNUM Product-Lifecycle-Management

Vertrauen in Medien und politische Kommunikation die Meinung der Bürger

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

ARCO Software - Anleitung zur Umstellung der MWSt

oose. Was (noch) klassische Projekte von Scrum & Co lernen können eine empirische Studie

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Was ich als Bürgermeister für Lübbecke tun möchte

Zulassung nach MID (Measurement Instruments Directive)

Repetitionsaufgaben Wurzelgleichungen

Reporting Services und SharePoint 2010 Teil 1

Grundbegriffe der Informatik

Transkript:

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 Code-Analyse [ ] ist ein statisches Software- Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. [ ] Die Analyse kann durch manuelle Inspektion erfolgen, aber auch automatisch durch ein Programm. Im Folgenden beschränken wir uns weitgehend auf automatische statische Code-Analyse durch Programme. 3

Beispiele für Analyse-Werkzeuge Compiler: Compile-Fehler, -Warnungen Checkstyle: Code-Layout Findbugs, PMD: Fehler und bad smells CPD, ConQAT: Clone-Detection SonarJ: Architektur-Konformität Eigenentwicklungen 4

Statische Code-Analyse in der Entwicklungsumgebung 5

Hinweise zur Nutzung von Einzelfall-Analyse Alle Entwickler im Team sollten die gleichen Werkzeuge und Konfigurationen benutzen Konfiguration laufend prüfen und modifizieren Fehler und Warnungen unterscheiden: Fehler: Muss beseitigt werden, kein supress warning erlaubt. Kriterium: Schadenshöhe und Vermeidbarkeit bei false positives Warnung: Entwickler entscheidet über Handhabung. Vermeiden. Eher wenige, scharfe Prüfungen in die Standard-Konfiguration Zusätzlich gelegentliche Analysen mit mehr Prüfungen und anschließender Bereinigung Statische Code-Analyse ist kein Wundermittel. Insbesondere gilt: Abwesenheit von Befunden garantiert keinen guten Code! 6

7

Was ist faul an diesem Code? Welches Analyse-Werkzeug warnt vor solchem Code? 8

Musterlösung /* remove leading "= " */ public static String cutleadingequalitysign(final String instring) { final String pattern = "= "; } if (instring.startswith(pattern)){ } return instring.substring(pattern.length()); else return instring; 9

Grenzen der statischen Code-Analyse Beispiele Was wird analysiert Code-Kommentare Ist ein Kommentar vorhanden? Hat er eine bestimmte Länge? Sind alle Parameter kommentiert? Code-Struktur Sind die Klassen klein? Sind die Methoden kurz? Ist die zykl. Komplexität gering? Ist die Parameterliste kurz? Was wird nicht analysiert Code-Kommentare Ist der Kommentar richtig? Enthält er mehr als triviale Info? Ist der Kommentar verständlich? Code-Struktur Sind die Abstraktionen fachlich und technisch sinnvoll? Sind die Namen prägnant? Sind die Parameter spezifisch? Test-Abdeckung Wie viel Code wird durchlaufen? Test-Abdeckung Entdeckt der Testfall Fehler? 10

Agenda Statische Code-Analyse Messen 11

Statische Analyse kann zwei Ziele verfolgen (Einzelfall-) Analyse Jeder Befund wird für sich betrachtet Einzelfall-Entscheidung über jeden Befund durch den/die Entwickler Möglichst direkte Integration der Analyse-Werkzeuge in die Entwicklungsumgebung In der Regel Vereinbarung über verwendete Werkzeuge und Prüfungen im Team Unterstützung der Entwickler in ihrem Qualitätsbemühen Messung Bestimmung der Codequalität oder Teilaspekten davon durch eine automatische Messung mit Code-Analyse-Werkzeugen Aggregation von Einzel-Befunden der statischen Code-Analyse auf eine Note, eine (Ampel-)Farbe, einen Skalenwert, In der Regel durch konfigurierbare Software-Qualitätsmessstände Steuerung von Softwarequalität durch objektive Messgrößen 12

Warum messen? You can t control what you can t measure Tom DeMarco, 1986 13

Messen in der IT Die drei interessanten Messgrößen Aufwand: Kosten, Zeit Größe: funktionaler Umfang, Leistungsfähigkeit Qualität: extern (Anwendersicht) und intern (Entwicklersicht) Ohne Messungen von Größe und Qualität ist ein klassischer industrieller Fertigungsprozess nicht möglich. Welchen Beitrag kann statische Code-Analyse leisten? 14

Kann man mit statischer Code-Analyse Größe und Qualität messen? Die Antwort hängt davon ab, wen man frägt: Forschung und Wissenschaft: Tool-Hersteller: Fallstudien: Agile Community: Im Prinzip ja Ja Egal Hauptsache es wird gemessen Nein 15

Das empfiehlt die Wissenschaft Qualitätsmodelle Qualitätsindikatoren: Messbare Sachverhalte (Software-Metriken) 16

Das sagen die Produkthersteller Viele freie, kommerzielle und firmeneigene Software- Messstände sind mittlerweile auf dem Markt Oft mit vorimplementiertem Qualitätsmodell und Konfigurationsmöglichkeit Mess-Sensoren sind die üblichen Analyse-Werkzeuge (NCSS, PMD, Findbugs, Clone-Detection, ) oder Varianten davon Qualitätsbewertung meist auf einer Verhältnisskala mit zeitlichem Trend und Modul-Differenzierung Qualitätsmodelle werden oft kalibriert durch Referenzmessungen an Software bekannter(!?) Qualität 17

(Schein-) Korrelation? Messbare Qualitätsgrößen Fähigkeit und Motivation der Entwickler Korrelation? Nicht messbare Qualitätsgrößen Spurious correlation: Messung zerstört die Korrelation! 18

Alles unter Kontrolle? 19

Fallstudien Disclaimer: Geringe Statistik, Aussage evtl. nicht repräsentativ Ausgangspunkt ist meist Code mit massiven Qualitätsmängeln Gestiegenes Qualitätsbewusstsein bei IT-Leitung oder massive Wartungsprobleme initiieren ein Qualitätsprogramm Management will messbare Ergebnisse für die Investition IT-Leitung und Team vereinbaren Messgrößen und berichten die Erfolge an das Management Messgrößen sind orientiert an leichter Messbarkeit. Bsp: Anzahl Compiler-Warnungen. Siehe spurious correlation Vorgehen ist trotzdem oft erfolgreich, da alle Beteiligten Qualitätsverbesserung wollen und die Messlatte niedrig liegt Kein Beweis, dass Qualitätsmessung funktioniert! 20

Die agile Community ist Spielverderber Martin Fowler: Introducing measured management without good measures leads to its own problems. Robert Austin* made an excellent discussion of this. He points out that when measuring performance you have to get all the important factors under measurement. Anything that's missing has the inevitable result that the doers will alter what they do to produce the best measures, even if that clearly reduces the true effectiveness of what they do. * Robert Austin: Measuring and Managing Performance in Organizations, Dorset House (June 1996) 21

Und was sagt Tom DeMarco heute? Immer noch: You can t control what you can t measure Aber: Kontrolle ist nicht so wichtig! 22

Fazit Statische Code-Analyse ist ein gute Hilfe für Entwickler zur Vermeidung mancher Qualitätsprobleme und Fehler Zum automatischen Messen von Qualität ist die Abdeckung durch geeignete Metriken vollkommen ungenügend Messen ohne geeignete Messgrößen ist nicht industriell, sondern irrational und schädlich Gute Software-Qualität entsteht durch ein motiviertes Team und ein geeignetes Vorgehen: Die Qualitätsverantwortung liegt beim Entwickler-Team Es wird nur fertige, hochwertige Software geliefert Schnelles Feedback durch kurze Zyklen 23

Ihre Fragen? Dr. Karl-Heinz Wichert Karl-Heinz.Wichert@iteratec.de Tel. 089 61 45 51-0 iteratec GmbH Inselkammerstr. 4 82008 München-Unterhaching www.iteratec.de 24