Seminar Programmierstil, WS2002/03 Clemens Holzmann

Slides:



Advertisements
Ähnliche Präsentationen
Metriken im Qualitätsmanagement
Advertisements

Lexikon der Qualität Begriffe in Verbindung mit Qualität und ISO9000 finden sie auch im Lexikon der Qualität erläutert (
Qualität „Qualität ist die Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf deren Eignung zur Erfüllung gegebener.
1 Workshop: Grundlagen des IT-Projektmanagements - Version /2004Modul: Aufwand – Ergänzung FP Copyright: Dr. Klaus Röber Modul Ergänzungen zur.
Das Lehrgebiet „Software Engineering“
Prof. Dr. Liggesmeyer, 1 Software Engineering: Dependability Prof. Dr.-Ing. Peter Liggesmeyer.
Schwierigkeit von Aufgabenstellungen
Qualitätssicherung von Software (SWQS)
Qualitätssicherung von Software (SWQS)
Designing Software for Ease of Extension and Contraction
10. Grundlagen imperativer Programmiersprachen
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
der Universität Oldenburg
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Qualitätssicherung von Software
Schulung der Mitarbeiter
Was ist Qualität ? Qualität von Produkten oder Dienstleistungen ist das Gesamtergebnis aller Aktivitäten in jeder Phase des gesamten Leistungsprozesses.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Regeln für Tester - best practice 1 Prüfe das eigene Programm nie als Einziger Testen.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Baumstrukturen Richard Göbel.
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Gliederung der Vorlesung Software Engineering WS 2001/2002
Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Grundlegende Analysen & Zwischendarstellungen
Software Risk Evaluation Method (SRE)
Software-Engineering
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan: m : Anforderungsanalyse Dokument m :
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan:
DVG Klassen und Objekte
Vorlesung Gestaltung von soziotechnischen Informationssystemen - RequirementsEngineering und Contextual Design- Thomas Herrmann, Lehrstuhl Informations-
Mehr Qualität und schnellere Marktreife durch effiziente Softwaretests
Programmiersprachen II Integration verschiedener Datenstrukturen
Spezifikation von Anforderungen
Das Wasserfallmodell - Überblick
Java programmieren mit JavaKara
Das Pflichtenheft Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Der modulare Aufbau BusinessNavigator.
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Die Planungsphase Durchführbarkeitsuntersuchung: fachlich, personell und wirtschaftlich Lastenheft (grobes Pflichtenheft) Glossar Projektkalkulation Projektplan.
Wiederholte Programmausführung
Software-Technik „Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige.
UML-Kurzüberblick Peter Brusten.
NDepend - Kurzvorstellung Stefan Lieser Web:
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Code-Quality-Management Info-Point Urs Frei. Inhalt Ziel der Analyse Messen der Qualität (QBL) Eine Messgrösse als Bsp. Analysierte Software Tool zur.
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“
Software Engineering Grundlagen
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
The Programming Language Pascal
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Objektorientierte (OO) Programmierung
Performanz- und Lasttests Formale Methoden
1 Vorlesung "Software-Engineering" zVorige Vorlesungen yDefinition xPflichtenheft (requirements specification document) xDetaillierte Anforderungsanalyse.
Seminararbeit Blackbox-Testverfahren Alexander Maas, Aachen,
 Gegenstandsbereich der Testtheorie: Analyse der Charakteristika von Tests:  Güte von Tests.  Struktur von Tests.  Schwierigkeit von Tests.  Gruppenunterschiede.
Das IT - Informationssystem
Schätzmethoden: CoCoMo und FPA
 Präsentation transkript:

Seminar Programmierstil, WS2002/03 Clemens Holzmann Metriken Seminar Programmierstil, WS2002/03 Clemens Holzmann

Was ist eine Metrik? Bedeutung des Messens 2/17 Bedeutung des Messens Spielt in allen Ingenieursdisziplinen eine wichtige Rolle Wichtig für die Qualitätssicherung von Software Definitionen für Software-Metriken IEEE Standard 1061 Ian Sommerville („Software Engineering“) „To measure is to know“ (J.C.Maxwell) „You can‘t control what you can‘t measure“ (Tom de Marco) „Eine Softwarequalitätsmetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet. Dieser berechnete Wert ist interpretierbar als der Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit.“ „Eine Softwaremetrik ist jede Art von Messung, die sich auf ein Softwaresystem, einen Prozess oder die dazugehörige Dokumentation bezieht.“

Nutzen von Metriken Ansatzpunkt für präventive Wartung 3/17 Ansatzpunkt für präventive Wartung Softwareentwicklung wird vorhersagbarer Test- und Wartungsaufwand beurteilen Ergänzung der Programmierrichtlinien Schwachstellen identifizieren Kundenanforderungen überprüfbar machen Erzieherischer Effekt auf den Programmierer

Einsatz von Metriken (1) 4/17 Probleme in der Praxis Nutzen von Metriken oft unklar Fehlen von Standards Programmierer wehren sich dagegen Durchführung von Messungen Messgrößen werden definiert und Messwerte gesammelt Welche Ziele verfolgt man? Messwerte werden analysiert, interpretiert und beurteilt Gibt es eine Bewertungsskala? Gefahr von schwer interpretierbaren „Zahlenfriedhöfen“ Zielorientiertes Messen!

Einsatz von Metriken (2) 5/17 Zielorientiertes Messen GQM (Goal-Question-Metric)- Ansatz Goal Goal Attainment Question Answer Project Plan Metric Measurement Definition Interpretation Collected Data Planning Data Collection [Wallmüller]

Gütekriterien für Metriken 6/17 Objektivität Zuverlässigkeit Nützlichkeit Normierung Vergleichbarkeit Ökonomie Messtauglichkeit Kein subjektiver Einfluss durch Prüfer möglich Wiederholung liefert gleiche Ergebnisse Parktische Bedürfnisse werden erfüllt Es gibt eine Skala für die Messergebnisse Mit anderen Maßen vergleichbar Messung mit geringen Kosten durchführbar Messergebnisse erlauben Rückschluss auf Ausprägung der Qualitätseigenschaft

Maßtheoretische Grundlagen 7/17 Skalenhierarchie am Beispiel eines Softwaremoduls f: reale Welt  Zahlenbereich Anwendungs-bereich Anzahl an Codezeilen Absolutskala Skala: nicht-negative ganze Zahlen Skala: Logistik, Personal, Rechnungswesen Verhältnisskala Intervallskala Ordinalskala Nominalskala Eignung für kleine Unternehmen Kosten (Preis eines Moduls) Skala: --, -, o, +, ++ Verfügbarkeit Skala: EURO Skala: Kalendertage

Klassifikation von Metriken 8/17 Software-Metriken Prozess-Metriken Produkt-Metriken Zeitverbrauch Häufigkeit bestimmter Ereignisse statisch dynamisch Ressourcen- verbrauch konventionell objektorientiert Umfangsmetriken Stilmetriken Vererbungs- hierarchien Aggregations- hierarchien Logische Strukturmetriken Datenstruktur- Metriken Methodenebene Klassenebene

Beispiele für Metriken (1) 9/17 Prozessmetrik: Ressourcenverbrauch Function-Points-Metrik <1> Jede Anforderung kategorisieren <2> Jede Anforderung klassifizieren <3> Anforderungen ins Berechnungsformular eintragen <4> Einflussfaktoren bewerten <5> Bewertete FPs berechnen <6> Aufwand ablesen <7> Tabelle aktualisieren Produktanforderungen <1> Eingabedaten Abfragen Ausgabedaten Datenbestände Referenzdaten <2> <2> <2> <2> <2> einfach mittel komplex 3 einfach mittel komplex einfach mittel komplex 4 einfach mittel komplex einfach mittel komplex 4 5 6 7 <3> <3> <3> <3> <3> Eingaben Abfragen Ausgaben Datenbestände Referenzdaten 2*3+1*4+2*6 22  <4> [Fähnrich] Einflussfaktoren <5> FPs  30% <6>

Beispiele für Metriken (2) 10/17 Statische, konventionelle Produktmetriken: Umfangsmetriken LOC (lines of code)  Starke Korrelation mit anderen Maßen  Komplexität von Anweisungen und Ablaufstrukturen unberücksichtigt, abhängig von Programmierstil/ -sprache Halstead  Komplizierte Ausdrücke sowie viele verschiedene Variablen berücksichtigt  Schwer messbar, Ablaufstrukturen unberücksichtigt Umfang V = (N1+N2) * ld(n1+n2) n1,n2 Anzahl unterschiedl. Operatoren, Operanden N1,N2 Gesamtzahl verwendeter Operatoren, Operanden Operator kennzeichnet Aktionen (+, *, While, For, ...) Operand kennzeichnet Daten (Variablen, Konstanten, ...)

Beispiele für Metriken (3) 11/17 Statische, konventionelle Produktmetrik: Logische Strukturmetrik McCabe Programm wird als gerichteter Graph dargestellt  Einfach zu berechnen  Komplexität von Anweisungen unberücksichtigt Allgemein Sequenz Auswahl Abweisende Schleife V(g) = e – n + 2p e … Anzahl der Kanten n … Anzahl der Knoten p … Anz. verbundener Komponenten IF FOR T F T F Bei nur einem Ein- und Ausgang V(g) = 1 + Anzahl der Binärverzweigungen V(g) = 1-2+2 = 1 V(g) = 4-4+2 = 2 V(g) = 3-3+2 = 2 V(g) = 1+0 = 1 V(g) = 1+1 = 2 V(g) = 1+1 = 2

Beispiele für Metriken (4) 12/17 Statische, konventionelle Produktmetrik: Struktur- und Umfangsmetrik Rechenberg  Detailliert, betrachtet viele verschiedene Aspekte  Schwer zu berechnen, nicht intuitiv verständlich CC = SC + EC + DC … Gesamtkomplexität SC ... Summe der Anweisungskomplexitäten aller Anweisungen Wertzuweisung=1, Goto=5, Prozeduraufruf=1+Parameterzahl, While/For=3, … EC ... Summe der Ausdruckskomplexitäten aller Ausdrücke +/- =1, MOD=3, Indizierung=2, AND/OR=3, MUL/DIV=2, Dereferenzierung=2, … DC ... Summe der Datenkomplexitäten aller Bezeichner Lokale Namen=1, Formale Parameter=2, Globale Variablen=3

Beispiele für Metriken (5) 13/17 Statische, objektorientierte Produktmetriken Objektorientierte Metriken CBO (coupling between objects) Anzahl der Klassen, mit denen eine Klasse gekoppelt ist CBO(A)=4 DIT (depth of inheritance tree) Maximaler Weg von der Wurzel bis zur betrachteten Klasse DIT(A)=0, DIT(G)=1, DIT(H)=2 NOC (number of children) Anzahl der direkten Unterklassen NOC(A)=2, NOC(B)=0, NOC(F)=3 RFC (response for a class) Anzahl der Methoden, die potentiell ausgeführt werden können, wenn Objekt auf eingehende Nachricht reagiert RFC(A)=4, RFC(B)=0, RFC(C)=1 B A D + m1() + m2() C E + m3() + m4() F G H I J

Werkzeugunterstützung 14/17 Werkzeugbeispiel JStyle 4.6 Code-Review Automatische Analyse des Sourcecodes Namenskonventionen, Designfehler, Redundanz, ... Skriptsprache zum Definieren eigener Regeln Beautifier mit umfangreichen Einstellmöglichkeiten Metriken Berechnung einer Vielzahl von Sourcecode-Metriken Projekt-Level: Anzahl an Klassen, Kommentardichte, ... Klassen-Level: DIT, RFC, WMC, ... Methoden-Level: LOC, Halstead, McCabe, ... Diagramme zur Darstellung von Metriken Balken-, Torten- und Streudiagramm, Summenkurve, Box-Plot, ...

Werkzeugunterstützung 15/17 Werkzeugbeispiel JStyle 4.6

Fazit Einsatzgebiete Noch geringe Verbreitung Vielzahl von Metriken 16/17 Einsatzgebiete Überprüfung von Qualitätseigenschaften Aufwandsabschätzung sicherheitsbewusste Wiederverwendung Noch geringe Verbreitung Vielzahl von Metriken Zielorientiertes Messen (z.B. GQM) Werkzeugeinsatz

Literatur 17/17 Rechenberg, Peter: „Ein neues Maß für die softwaretechnische Komplexität von Programmen“ Informatik – Forschung und Entwicklung, Band 1, 1986. Sommerville, Ian: „Software-Engineering“ Addison-Wesley, 2001 Wallmüller, Ernest: „SW-Qualitätsmanagement in der Praxis“. Hanser, 2001 Fähnrich, Klaus-Peter: „Software-Management Vorlesung“, 2002 http://ais.informatik.uni-leipzig.de/studium/vorlesungen/ Hindel, Bernd: „Software-Metriken“, 1999 http://www.methodpark.de/f-l_swepwue_de.html JStyle Code-Review-Tool, Man-Machine-Systems http://www.mmsindia.com/jstyle.html Lichter, Horst: „Software-Qualitätssicherung Vorlesung“, 2002 http://www-lufgi3.informatik.rwth-aachen.de/LUFGI3/EDUCATION/SS02/VL_SQS/CELLS/index.html