Top Banner
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Automatische Erkennung von „Bad Smells“
21

Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Jun 20, 2019

Download

Documents

LêHạnh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Automatische Erkennung von „Bad Smells“

Page 2: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Was sind „Bad Smells“?

● Warum automatische Erkennung?

● Welche Ansätze gibt es?

● Vergleich!

Inhalt

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 3: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Was sind „Bad Smells“?

● Warum automatische Erkennung?

● Welche Ansätze gibt es?

● Vergleich!

Inhalt

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 4: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Indikatoren für schlechte Programmierung

● Fowler definiert 22 Bad Smells● Weitere im Internet

„Bad Smells“ nach Fowler

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 5: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Beispiel:

„Bad Smells“ nach Fowler

„Jede Klasse, die Sie erstellen kostet Geld, um sie zu warten und zu verstehen. Eine Klasse, die nicht genug leistet, um ihr Geld wert zu sein, sollte eliminiert werden. [...]“ (Fowler)

„Nach unserer Erfahrung erreicht kein System von Metriken die informierte menschliche Intuition. [...]“ (Fowler)

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 6: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Was sind „Bad Smells“?

● Warum automatische Erkennung?

● Welche Ansätze gibt es?

● Vergleich!

Inhalt

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 7: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Automatische Erkennung

● Wieso keine Suche durch die Programmierer?

● Finanzieller Vorteil● Mensch unzuverlässig

Je länger eine Programmierer im Projekt, desto schlechter ist die Beurteilung von Bad Smells. (Mäntylä)

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 8: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Was sind „Bad Smells“?

● Warum automatische Erkennung?

● Welche Ansätze gibt es?

● Vergleich!

Inhalt

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 9: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Ansätze

Mustersuche

Metriken

Erkennung auf der Ebene des Quellcodes

Erkennung auf der Ebene von Metainformationen

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 10: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Mustersuche

● Suche nach Mustern● Erkennung auf verschiedenen Ebenen:

– Quellcode– Tokenstrom– (abstrakter) Syntaxbaum

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 11: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Quellcodeebene

● Tools bereits vorhanden:– diff – exakte Kopien – grep – reguläre Ausdrücke

● Eingeschränkte Fähigkeiten

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 12: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Tokenstrom

● Zeichen erhalten Bedeutungen

● Sequenz von Token● Benötigt Parser

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 13: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Syntaxbaum

= = =

ls1 rs1 ls2 rs2 ls3 rs3

list of statements

● Zusätzliche Informationen:– Datentypen– Datenfluss– Kontrollfluss (dom, pdom)– ...

● Flexiblere Suchmuster

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 14: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Ansätze

Mustersuche

Metriken

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 15: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Metriken (1)

● Bad Smells kann man messen● Viele Metriken vorhanden● Metriken auf Klassen- und

Funktionsebene● Korrelation zwischen Bad Smell und

Metrik(en)

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 16: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Metriken (2)

● Beispiel von Raţiu:

● „Willkürliche“ Grenzen● Wie zuverlässig sind diese Grenzen?● Metriken enstehen aus u.a. AST

DataClass C =WMC C NOM C

1.1∧WOC C 0.5∧NOPA C 4∨NOAM C 4

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 17: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Was sind „Bad Smells“?

● Warum automatische Erkennung?

● Welche Ansätze gibt es?

● Vergleich!

Inhalt

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 18: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Mustersuche:– Duplizierter Code– Lange Parameterlisten

● Metriken:– Schrotkugeln herausoperieren– Neid– viele andere

Vergleich (1) Beispiele

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 19: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Mustersuche:

+ Arbeiten auf Codeebene

- Nicht für alles anwendbar● Metriken:

+ Anwendbar für fast alles

- Auf relativ hohem Niveau

Vergleich (2)

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 20: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

● Reine Mustersuche selten anwendbar● Metriken „ungenauer“● Metriken werden z.t. über Muster

gewonnen● Metriken nicht immer ausreichend

Zusammenfassung

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen

Page 21: Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Was sind „Bad

Quellen

● Fowler: Fowler, Martin; Refactoring; Addison-Wesley

● Mäntylä: Mäntylä, Mika; Bad Smells in Software; Helsinki University

● Raţiu: Raţiu, Danuiel et al; Using History Information to Improve Design Flaws Detection

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen