Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des...

22
Forschungszentrum Informatik, Karlsruhe Werkzeuggestützte Softwarebewertung Grundlagen und Fallbeispiele Markus Bauer Forschungszentrum Informatik an der Universität Karlsruhe Förderverein FZI, 31.3.2004

Transcript of Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des...

Page 1: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

Forschungszentrum Informatik, Karlsruhe�

Werkzeuggestützte Softwarebewertung Grundlagen und Fallbeispiele

Markus Bauer

Forschungszentrum Informatik an der Universität Karlsruhe

Förderverein FZI, 31.3.2004

Page 2: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

2

Forschungszentrum Informatik, Karlsruhe

Übersicht

•  Einführung •  Softwarequalität und Design •  Techniken zur Qualitätsuntersuchung

–  Architekturuntersuchung –  Metrik- und musterbasierte Schwachstellensuche –  Codeduplikation

•  Erfahrungen

Page 3: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

3

Forschungszentrum Informatik, Karlsruhe

Softwarequalität

•  „Qualität ist, wenn der Kunde wieder kommt, und nicht die Ware.” (Hans-Helge Stechl, Vorstand BASF)

•  Externe Qualität = Kundenperspektive: –  Einfache Verwendbarkeit, Performance, Robustheit, ...

•  Interne (Software-)Qualität = Entwicklerperspektive: –  Flexibilität, Verständlichkeit, Wartbarkeit, ...

•  Hypothese: Gute interne Qualität ist eine Voraussetzung für gute externe Qualität!

Page 4: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

4

Forschungszentrum Informatik, Karlsruhe

Qualitätsprobleme – Warum?

•  Anforderungen an Softwaresysteme sind schwer zu erfassen und ändern sich ständig –  Kluft zwischen Fachexperten und Softwareexperten –  Lebensdauer moderner Systeme –  Neue Einsatzkontexte

⇒ Softwarestrukturen degenerieren durch wiederholte Anpassungen

•  Zeitdruck während der Entwicklung •  Know-How-Defizite der Softwareentwickler

System t System t1 System t2

Anpassungen Anpassungen

Page 5: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

5

Forschungszentrum Informatik, Karlsruhe

Gutes Design: Grundsätze

•  Abstraktion: Schaffen einer vereinfachten Sicht auf Konzepte der Anwendungsdomäne (→Klassenbildung)

•  Kapselung: Trennen von Schnittstelle und Implementierung

•  Modularisierung: Zerlegen der Komplexität in handhabbare Einheiten (→Subsystembildung)

•  Vernünftige Komplexität •  Geringe Kopplung, hohe Kohäsion

Page 6: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

6

Forschungszentrum Informatik, Karlsruhe

Dienstleistung Softwareassessments

•  Ziel: Bewertung der Qualität von Software, Identifikation von Schwachstellen

•  Durchführung: –  Zwei Experten des FZI untersuchen mit Werkzeugunterstützung

Systeme in Java, C oder C++ in 5 Arbeitstagen (peer work!) –  Vorort beim Kunden:

Know-How-Austausch, Vertraulichkeit –  Festpreis

•  Ergebnisse: –  Workshop zur Diskussion der

Analyseergebnisse –  Optional: Ausführlicher

Qualitätsbericht + Mängelliste

1. Zieldefinition

2. Faktenextraktion & Analyse

3. Zwischenergebnisse

4. Verfeinerte Faktenextraktion undAnalysen

5. Abschlussworkshop

1. Zieldefinition

2. Faktenextraktion & Analyse

3. Zwischenergebnisse

4. Verfeinerte Faktenextraktion undAnalysen

5. Abschlussworkshop

Page 7: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

7

Forschungszentrum Informatik, Karlsruhe

Beispiele

•  Zahlreiche Softwareassessments: ABB, DaimlerChrysler, Debis, Deutsche Telekom, IBM, Nokia, SOLID Technologies, VTT und viele weitere

•  Systeme aus Forschungseinrichtugnen ET++, 65 kLOC, C++, 770 classes VTT eXpert web application, 10 kLOC, 16 classes, Java, JSP

•  Engineering Software 150 kLOC, C++/DCOM 2 MLOC C++/DCOM

•  Software aus Telekommunikationssystemen 500 kLOC, C++, C, Assembler 2 MLOC, C,C++ 1 MLOC C++, 120 kLOC Java, CORBA 20 MLOC, ~120 kLOC, Chill 2 MLOC Java

•  Vertragsmanagementsystem für Versicherungen 1MLOC, Java/EJB, 6000 classes

•  Datenbanksystem für eingebettete Systeme 1MLOC, C, 28 subsystems, ~300 complex data types, 14.000 functions

Page 8: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

8

Forschungszentrum Informatik, Karlsruhe

Werkzeugunterstützung

Design-DB Quellcode

Faktenextraktion

Abstraktion Visualisierung

Problematische FragmenteProblematische Fragmente

Problemidentifiktion; Prüfung von Heuristiken

Softwaremaße GOOSE + Echidna

Page 9: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

9

Forschungszentrum Informatik, Karlsruhe

Vom Detail auf‘s Ganze...

•  Idee: Aus Detailinformationen eine Übersicht über das Gesamtsystem gewinnen –  Faktenextraktion –  Selektion –  Aggregation

m n o p q r

A B C D

X Y Subsysteme

Klassen

Funktionen/Methoden m n o p q r

A B C D

X Y

A B C D

X Y

Page 10: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

10

Forschungszentrum Informatik, Karlsruhe

Visualisierung

•  Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen

•  Anwendungen: –  Systemzusammenhänge verstehen –  Prüfen von Abhängigkeiten

(Schichtung, Framework vs. Anwendungsimplementierung)

–  Überprüfen der Subsystembildung –  Identifikation von god classes

Page 11: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

11

Forschungszentrum Informatik, Karlsruhe

Schwachstellensuche

•  Architekturuntersuchung –  Prüfen von Architekturregeln

•  Metriken –  Kopplung, Kapselung und Komplexität von Subsystemen und Klassen –  Komplexität und Aufrufabhängigkeiten zwischen Methoden

•  Musterbasierte Schwachstellensuche –  Auffinden von Bad Smells, z.B.: Oberklassen mit Kenntnis ihrer

Unterklassen –  Überwachung (struktureller) Programmierrichtlinien

•  Analyse von Codeduplikation •  Kundenspezifische Analysen

Page 12: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

12

Forschungszentrum Informatik, Karlsruhe

Technik zur Schwachstellensuche

•  Faktenextraktion: Struktur-“Datenbank“ des Systems •  Abfragen:

–  Musterbasiertes Suchen –  Messen: Metriken

Source code

Source code Design

information Design

information

Foo

Bar

...

Query language

Query language

% Base classes should not have knowledge about % their descendants knowsOfDerived (Class, DerivedClass) : -

... ... Query

Transfor - mation Parsing Analysis

Problem structure

Source code

Source code Design

information Design

information

Foo

Bar

...

Foo

Bar

...

Query language

Query language

% Base classes should not have knowledge about % their descendants knowsOfDerived (Class, DerivedClass) : -

... Query

Transfor - mation Parsing Analysis

Problem structure Problematische Fragmente Problem- stellen

Page 13: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

13

Forschungszentrum Informatik, Karlsruhe

Architekturuntersuchung

•  Visuelle Überprüfung der Architektur

•  Überprüfung von Architekturregeln –  Definition und Überprüfung von Regeln

bezüglich Abhängigkeiten zwischen Subsystemen

–  Beispiel: shouldNotDependOn('subsystemA',X) :- not(isUtilityLayer(X)).

•  Suche nach Abhängigkeitszyklen und Flaschenhälsen zwischen Subsystemen und Datentypen

Flaschenhals Zyklus

Page 14: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

14

Forschungszentrum Informatik, Karlsruhe

0 10000 20000 30000 40000 50000 60000 70000 80000 90000

100000

0 2000 4000 6000 8000 Komplexität (CFG)

Kom

plex

ität (

LOC

)

Kern

Subsysteme: Kopplung und Komplexität

•  Gut: Meist geringe Kopplung zwischen Subsystemen, meist vernünftige Komplexität

•  Einige Subsysteme (Kern) sind komplex aber gut gekapselt

0 50

100 150 200 250 300 350 400 450 500

Subsystem pairs

Cou

plin

g

Kopplungswerte inklusive Kern

Bibliotheken mit Hilfsroutinen

Kopplung Komplexität

Page 15: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

15

Forschungszentrum Informatik, Karlsruhe

Mikrostrukturen: Komplexität und Kopplung

0

1000

2000

3000

4000

5000

6000

7000

0 100 200 300 400 500 600 700

CF complexity

LOC

dbe_trx_t

dbe_bnode_t

dbe_cache_t

0

1000

2000

3000

4000

5000

6000

7000

0 100 200 300 400 500 600 700

CF complexity

LOC

dbe_trx_t

dbe_bnode_t

dbe_cache_t

dbe_trx_t

dbe_bnode_t

dbe_cache_t

0

20

40

60

80

100

120

140

160

180

200

ADT pairs

Coup

ling Coupling values for

dbe_trx_t, dbe_db_t

0

20

40

60

80

100

120

140

160

180

200

ADT pairs

Coup

ling Coupling values for

dbe_trx_t, dbe_db_t

•  Komplexitätsanalysen Gut: nur wenige Datentypen sind sehr komplex

•  Kopplung Gut: nur wenige Paare von Datentypen mit hohen Kopplungswerten

•  Probleme: –  Einige Datentypen komplex und

hoch mit anderen gekoppelt –  Repräsentieren zentrale

Konzepte; wahrscheinlich kann dies nicht verhindert werden

Page 16: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

16

Forschungszentrum Informatik, Karlsruhe

Untersuchung von Funktionen

•  Beispiel: Relative Komplexität von Methoden

0

2

4

6

8

10

12

14

16

0 20 40 60 80 100 120 140 160

LOC

CF

com

plex

ity

XFolder.moveSelectedToFolder XFolder.copySelectedToFolderWork

XFolderTest.testNewGetDeleteEditFiles

XFolderTest.testCopyMoveFolder...

•  Rekursionsketten und Anzahl der Methodenparameter: –  Rekursionskette: Schleife im statischen ermittelten Aufrufgraph –  Lange Ketten: wahrscheinlich nicht absichtlich erzeugt; Fehlerfälle oder

schwieriger Code (z.B. Mozilla: 117) –  Anzahl der Parameter: Benutzung von Methoden mit vielen Parametern

schwierig! (Rekord: 67)

Page 17: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

17

Forschungszentrum Informatik, Karlsruhe

Mikrostrukturproblem

•  ConfigFile definiert Operationen zum Einlesen von Prozessparametern aus einer Konfigurationsdatei, z.B. initConfig()

+initConfig(

ConfigFile

Process

+initConfig(

A

+initConfig(

B

+initConfig(

C

+initConfig(

D

+initConfig(

E

•  Spezielle Prozesse A bis E überschreiben initConfig(): –  C und E‘s Implementierung von initConfig() ist leer –  A, B und E‘s Implementierungen von initConfig() orientieren sich an der von

ConfigFile (Codeduplikation!); zudem sind sie recht komplex. •  Viele Aufrufstellen verwenden die Schnittstelle von Process; •  ConfigFile wird nie verwendet! •  (initConfig() enthält case-Statements mit Typabfragen nach A, B und E)

Aufrufe

Page 18: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

18

Forschungszentrum Informatik, Karlsruhe

Mikrostrukturproblem -- Lösung

•  Es gibt jetzt explizit konfigurierbare und nicht konfigurierbare Prozesse •  Vererbung jetzt semantisch OK: Spezialisierung •  Gemeinsame Funktionalität von initConfig() in A, B und D:

–  Rumpfimplementierung in ConfigurableProcess –  Hook-Methoden zur spezifischen Anpassung (Template Method Pattern)

in A, B, D •  Einlesen der Konfigurationsdatei kann an ConfigFile delegiert werden

Process

+initConfig()

ConfigurableProces

+initConfig(

A

+initConfig(

B

C

+initConfig(

D

EConfigFil

Aufrufe

Page 19: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

19

Forschungszentrum Informatik, Karlsruhe

Hindernisse

•  Skepsis der Entwickler –  „Hilfe, meine Leistung wird begutachtet“

•  Defizite auf Werkzeugebene –  Faktenextraktion und industrieller Code (unvollständig, Makros,

Sprachdialekte) –  große Menge an Rohdaten –  Fehlende Abstraktionsmechanismen

•  Verfahren zur automatische Identifikation liefern nur potentielle Schwachstellen –  Diskussion mit Entwicklern nötig –  Fehlendes Domänenwissen –  Zeitmangel

Page 20: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

20

Forschungszentrum Informatik, Karlsruhe

Nutzen

•  Regelmäßige Assessments erleichtern das Erhalten der Produktqualität –  Definition und Durchsetzung von allgemeingültigen, technologie- und

unternehmensspezifischen Qualitätsstandards •  Stärkung der Intuition der Entwickler

–  Objektive Messwerte •  Anregung zur Diskussion

–  Welche Teile sind verbesserungsbedürftig? –  Entstehen eines neuen Qualitätsbewusstseins

•  Neue Perspektiven durch externe Analysten –  In Frage stellen existierender Lösungen

•  Standortbestimmung: Vergleich mit anderen Systemen –  Vorsicht: Anwendungsdomäne, Programmierstil beeinflussen Messwerte

Page 21: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

21

Forschungszentrum Informatik, Karlsruhe

Unser persönlicher Rat...

•  Eine gute Struktur ist der Schlüssel zum Erfolg eines Systems!

•  KISS: Keep it simple, stupid! (A. Tanenbaum) Wenn etwas zu kompliziert erscheint è Vereinfachen!

•  Zerlege Probleme in Teilprobleme! Miller‘s Law: Eine gute Struktur sollte es erlauben, dass man nie mehr als 7 (+/-2) Dinge im Kopf haben muss.

•  Benenne Konzepte vernünftig! Wenn man etwas nicht benennen kann, hat man es noch nicht verstanden. è Überdenken!

Page 22: Softwarebewertung -- Grundlagen und FallbeispieleVisualisierung • Idee: Visuelle Fähigkeiten des Menschen nutzen, um komplexe Systeme zu verstehen • Anwendungen: – Systemzusammenhänge

22

Forschungszentrum Informatik, Karlsruhe

Kontakt

Markus Bauer, <[email protected]> Forschungsbereich PROST FZI Forschungszentrum Informatik Haid-und-Neu-Str. 10-14 76131 Karlsruhe http://www.fzi.de Tel.: +49 721 9654 630 Fax: +49 721 9654 609

http://compobench.fzi.de

http://www.qbench.de