+ All Categories
Home > Documents > Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation...

Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation...

Date post: 10-Sep-2019
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
25
Praktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit¨ at Bremen Fachbereich 3 – Mathematik und Informatik Arbeitsgruppe Softwaretechnik http://www.informatik.uni-bremen/st Sommersemester 2009
Transcript
Page 1: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Praktikum Softwareanalyse und -transformation

Thilo Mende, Rainer Koschke

Universitat BremenFachbereich 3 – Mathematik und Informatik

Arbeitsgruppe Softwaretechnikhttp://www.informatik.uni-bremen/st

Sommersemester 2009

Page 2: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Einfuhrung

1 Einfuhrung

2 Analyse I

3 Refactoring I

4 Analyse II

5 Refactoring II

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 3 / 19

Page 3: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Einfuhrung

1 EinfuhrungOrganisatorischesMotivation und ZieleUnterstutzte RefactoringsProgrammierspracheAusblick

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 4 / 19

Page 4: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Organisatorisches

Praktikum Softwareanalyse und -transformation

Kategorie: Vertiefung, ECTS: 6; 4 SWS

Voraussetzungen: Erfolgreiche Teilnahme an Software-Reengineering

Termine:

Treffen nach Vereinbarung, am Anfang wochentlich

Wann passt es allen?

Und bei Bedarf:

eMail: [email protected].: 218-2421Raum: TAB 2.53

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 5 / 19

Page 5: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Organisatorisches

Praktikum Softwareanalyse und -transformation

Kategorie: Vertiefung, ECTS: 6; 4 SWS

Voraussetzungen: Erfolgreiche Teilnahme an Software-Reengineering

Termine:

Treffen nach Vereinbarung, am Anfang wochentlich

Wann passt es allen?

Und bei Bedarf:

eMail: [email protected].: 218-2421Raum: TAB 2.53

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 5 / 19

Page 6: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Compiler-Struktur

Front-End

Middle-

End

Back-EndCode-

generatorCode

Analysen u.

Optimierungen

optimierte

Zwischen-

darstellung

Zwischen-

sprachen-

generator

Zwischen-

darstellung

annotierter

abstrakter

Syntax-

baum

semantische

AnalyseParser

abstrakter

Syntax-

baum

Lexer Token-

stromPraprozessor Programm-

text

Programm-

text mit

Makros

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 6 / 19

Page 7: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Analysator- und Transformator-Struktur

WissensbasisCodeUnparse Back-End

Transformationen

Analysenannotierte

Zwischen-

darstellung

Middle-

End

Zwischen-

sprachen-

generator

Zwischen-

darstellung

Parserabstrakter

Syntax-

baum

semantische

Analyse

annotierter

abstrakter

Syntax-

baum

Front-End

Lexer Token-

strom

Programm-

textPraprozessor

Programm-

text mit

Makros

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 7 / 19

Page 8: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Analysator- und Transformator-Struktur

WissensbasisCodeUnparse Back-End

Transformationen

Analysenannotierte

Zwischen-

darstellung

Middle-

End

Zwischen-

sprachen-

generator

Zwischen-

darstellung

Parserabstrakter

Syntax-

baum

semantische

Analyse

annotierter

abstrakter

Syntax-

baum

Front-End

Lexer Token-

strom

Programm-

textPraprozessor

Programm-

text mit

Makros

WissensbasisCodeUnparse Back-End

Transformationen

Analysenannotierte

Zwischen-

darstellung

Middle-

End

Zwischen-

sprachen-

generator

Zwischen-

darstellung

Parserabstrakter

Syntax-

baum

semantische

Analyse

annotierter

abstrakter

Syntax-

baum

Front-End

Lexer Token-

strom

Programm-

textPraprozessor

Programm-

text mit

Makros

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 7 / 19

Page 9: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Analysator- und Transformator-Struktur

WissensbasisCodeUnparse Back-End

Transformationen

Analysenannotierte

Zwischen-

darstellung

Middle-

End

Zwischen-

sprachen-

generator

Zwischen-

darstellung

Parserabstrakter

Syntax-

baum

semantische

Analyse

annotierter

abstrakter

Syntax-

baum

Front-End

Lexer Token-

strom

Programm-

textPraprozessor

Programm-

text mit

Makros

WissensbasisCodeUnparse Back-End

Transformationen

Analysenannotierte

Zwischen-

darstellung

Middle-

End

Zwischen-

sprachen-

generator

Zwischen-

darstellung

Parserabstrakter

Syntax-

baum

semantische

Analyse

annotierter

abstrakter

Syntax-

baum

Front-End

Lexer Token-

strom

Programm-

textPraprozessor

Programm-

text mit

Makros

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 7 / 19

Page 10: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Am Beispiel: Automatische Refactorings

Def. Refactoring:→ Semantik-erhaltende Transformation mit dem Ziel: Verbesserung derCode-Qualitat (Lesbarkeit, Wartbarkeit, Erweiterbarkeit)

Schritte:→ syntaktische Analyse→ abstrakter Syntaxbaum→ Namensbindung→ Kontrollflussanalyse→ Datenflussanalyse→ Transformation→ Unparsen

Werkzeug:

Java

ANTLR

Weitere?

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 8 / 19

Page 11: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Am Beispiel: Automatische Refactorings

Def. Refactoring:→ Semantik-erhaltende Transformation mit dem Ziel: Verbesserung derCode-Qualitat (Lesbarkeit, Wartbarkeit, Erweiterbarkeit)

Schritte:→ syntaktische Analyse→ abstrakter Syntaxbaum→ Namensbindung→ Kontrollflussanalyse→ Datenflussanalyse→ Transformation→ Unparsen

Werkzeug:

Java

ANTLR

Weitere?

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 8 / 19

Page 12: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Refactorings

Rename

Encapsulate Field

Pull-Up Field

Extract Method

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 9 / 19

Page 13: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Rename

1 c l a s s T { c l a s s T {2 p u b l i c : p u b l i c :3 i n t a1 ; i n t x ;4 vo i d setT ( i n t p ) { vo i d setT ( i n t p ) {5 a1 = p ; x = p ;6 } }7 } }8

9 c l a s s NT : T { c l a s s NT : T {10 p u b l i c : p u b l i c :11 i n t a2 ; i n t y ;12 vo i d setNT ( ) { vo i d setNT ( ) {13 setT ( 0 ) ; setT ( 0 ) ;14 a2 = a1 ; y = x ;15 } }16 } }

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 10 / 19

Page 14: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Encapsulate Field

1 c l a s s T { c l a s s T {2 p u b l i c : p u b l i c :3 i n t a1 ; i n t a1 ;4 vo i d s e t a1 ( i n t p ) {5 a1 = p ;6 }7 i n t geta1 ( ) {8 r e t u r n a1 ;9 }

10 } }11

12 c l a s s NT : T { c l a s s NT : T {13 p u b l i c : p u b l i c :14 vo i d foo ( ) { vo i d foo ( ) {15 a1 = a1 + 5 ; s e t a1 ( geta1 ( ) + 5 ) ;16 } }17 } }

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 11 / 19

Page 15: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Pull-Up Field

1 c l a s s T { c l a s s T {2 p u b l i c : p u b l i c :3 i n t a1 ;4 }5

6 c l a s s NT1 : T { c l a s s NT1 : T {7 p u b l i c : p u b l i c :8 i n t a1 ;9 } }

10

11 c l a s s NT2 : T { c l a s s NT2 : T {12 p u b l i c : p u b l i c :13 i n t a1 ;14 } }

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 12 / 19

Page 16: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Extract Method

1 vo i d pr in tOwing ( ) { vo i d pr in tOwing ( ) {2 i n t i ; i n t sum ;3 i n t sum ; sum = 0 ;4 i n t o ; p r i n t b a nn e r ( ) ;5 c a l c u l a t e s um (sum ) ;6 sum = 0 ; p r i n t d e t a i l s ( sum ) ;7 /∗ p r i n t banner ∗/ }8 p r i n t ( ”∗∗∗∗∗∗∗∗∗” ) ; v o i d p r i n t b a nn e r ( ){9 p r i n t ( ”∗ Owes ∗” ) ; p r i n t ( ”∗∗∗∗∗∗∗∗∗” ) ;

10 p r i n t ( ”∗∗∗∗∗∗∗∗∗” ) ; p r i n t ( ”∗ Owes ∗” ) ;11 /∗ c a l c u l a t e sum ∗/ p r i n t ( ”∗∗∗∗∗∗∗∗∗” ) ;12 i = 0 ; }13 wh i l e ( i < 10) { vo i d c a l c u l a t e s um ( i n t &sum) {14 o = foo ( i ) ; i n t i ;15 sum = sum + o ; i n t o ;16 i = i + 1 ; i = 0 ;17 } wh i l e ( i < 10) {18 /∗ p r i n t d e t a i l s ∗/ o = foo ( i ) ;19 p r i n t ( sum ) ; sum = sum + o ;20 } i = i + 1 ;21 }}

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 13 / 19

Page 17: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Extract Method (Forts.)

21 vo i d p r i n t d e t a i l s ( i n t sum) {22 p r i n t ( sum ) ;23 }

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 14 / 19

Page 18: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Programmiersprache

Allgemeine Anforderungen:

so einfach wie moglich

so ausdrucksstark wie notig fur die Refactorings

Teilmenge von C++

→ Erleichtert Uberprufung von Transformationen

Konkrete Teilmenge:

Klassen mit Methoden und Attributen

einfachste Anweisungen, z.B. +

einfache weitere Datentypen, z.B. int

einfachste Kontrollstrukturen, z.B. if und while

einfache Ausgabeanweisungen (fur den Test)

Parametermodi: Wert und Referenz

kein Overloading, einfache Namensbindung

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 15 / 19

Page 19: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Programmiersprache

Allgemeine Anforderungen:

so einfach wie moglich

so ausdrucksstark wie notig fur die Refactorings

Teilmenge von C++

→ Erleichtert Uberprufung von Transformationen

Konkrete Teilmenge:

Klassen mit Methoden und Attributen

einfachste Anweisungen, z.B. +

einfache weitere Datentypen, z.B. int

einfachste Kontrollstrukturen, z.B. if und while

einfache Ausgabeanweisungen (fur den Test)

Parametermodi: Wert und Referenz

kein Overloading, einfache Namensbindung

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 15 / 19

Page 20: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Ausblick

2 Analyse ISyntaktische Analyse und Uberfuhrung in ASTNamensbindungUnparse

3 Refactoring IRenameEncapsulate FieldPull-Up Field

4 Analyse IIKontrollflussanalyseDatenflussanalyse

5 Refactoring IIRefactoring Extract Method

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 16 / 19

Page 21: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Literatur

Refactoring

Fowler (1999): Standardwerk zu Refactorings

Compiler

Muchnick (1997): sehr gutes Lehrbuch zu Compilerbau, Fokus aufOptimierungen und AnalysenPlodereder (2008): Folien, Skript und Ubungen zur VorlesungProgrammanalysen und Compilerbau an der Universitat StuttgartParr (2009): Website mit Doku uber ANTLR

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 17 / 19

Page 22: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Und so geht es weiter

Zum nachsten Termin:

ANTLR (Version 3.1.3) installieren

Tutorial unter http://www.ociweb.com/jnb/jnbJun2008.htmlnachvollziehen1

Beim nachsten Termin:

Syntaktische Analyse und Generierung des ASTs

Fragen?

1Wenn nicht verfugbar: Kopie unterhttp://www.informatik.uni-bremen.de/~tmende/antlr.htmlT.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 18 / 19

Page 23: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Und so geht es weiter

Zum nachsten Termin:

ANTLR (Version 3.1.3) installieren

Tutorial unter http://www.ociweb.com/jnb/jnbJun2008.htmlnachvollziehen1

Beim nachsten Termin:

Syntaktische Analyse und Generierung des ASTs

Fragen?

1Wenn nicht verfugbar: Kopie unterhttp://www.informatik.uni-bremen.de/~tmende/antlr.htmlT.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 18 / 19

Page 24: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

Und so geht es weiter

Zum nachsten Termin:

ANTLR (Version 3.1.3) installieren

Tutorial unter http://www.ociweb.com/jnb/jnbJun2008.htmlnachvollziehen1

Beim nachsten Termin:

Syntaktische Analyse und Generierung des ASTs

Fragen?

1Wenn nicht verfugbar: Kopie unterhttp://www.informatik.uni-bremen.de/~tmende/antlr.htmlT.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 18 / 19

Page 25: Praktikum Softwareanalyse und -transformation filePraktikum Softwareanalyse und -transformation Thilo Mende, Rainer Koschke Universit at Bremen Fachbereich 3 { Mathematik und Informatik

Einfuhrung

[Fowler 1999] Fowler, Martin: Refactoring: Improving the Design ofExisting Code. Addison-Wesley Longman, 1999

[Muchnick 1997] Muchnick, Steven S.: Advanced Compiler Designand Implementation. Morgan Kaufmann, 1997

[Parr 2009] Parr, Terence: ANTLR-Website. 2009. – URLwww.antlr.org

[Plodereder 2008] Plodereder, Erhard: Vorlesung Programmanalysenund Compilerbau. Vorlesungsskriptum. Oktober 2008. – URLhttp://www.iste.uni-stuttgart.de/ps/Lehre/WS0809/V_Programmanalysen/skript-CB+ProgAn-08.pdf

T.Mende, R. Koschke (Uni Bremen) Softwareanalyse und -transformation SS09 19 / 19


Recommended