Vorlesung Software-Reengineering

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Software-Reengineering"

Transkript

1 Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2007/08 Überblick I 1

2 1 Das tägliche Brot des Wartungsprogrammierers Was ist ein Slice? Slicing-Technik Intraprozedurales Slicing Interprozedurales Slicing Summary-Edges im SDG Slicing-Varianten Anwendungen von Slicing Wiederholungsfragen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Lernziele Verständnis von Slicing-Varianten einschließlich ihrer Berechnung und Anwendbarkeit Kontext Erste unmittelbare Anwendung von Compilerbau-Technologie zur Unterstützung des Programmverstehens ist Basis-Technologie für viele weitere Reengineering-Techniken Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

3 Das tägliche Brot des Wartungsprogrammierers 1 r e a d ( n ) ; 2 i := 1 ; 3 sum := 0 ; Was b e e i n f l u s s t d i e s e Anweisung? 4 p r o d u c t := 1 ; 5 w h i l e i <= n l o o p 6 sum := sum + i ; 7 p r o d u c t := p r o d u c t i ; 8 i := i + 1 ; 9 end l o o p ; 10 w r i t e ( sum ) ; 11 w r i t e ( p r o d u c t ) ; Wie kommt e s zu diesem Wert? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Wie kommt es zu diesem Wert? Backward Slice (write (product)): 1 r e a d ( n ) ; 2 i := 1 ; 3 sum := 0 ; 4 p r o d u c t := 1 ; 5 w h i l e i <= n l o o p 6 sum := sum + i ; 7 p r o d u c t := p r o d u c t i ; 8 i := i + 1 ; 9 end l o o p ; 10 w r i t e ( sum ) ; 11 write (product); Wie kommt e s zu diesem Wert? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

4 Wie kommt es zu diesem Wert? Backward Slice (write (product)): 1 r e a d ( n ) ; 2 i := 1 ; 3 sum := 0; 4 p r o d u c t := 1 ; 5 w h i l e i <= n l o o p 6 sum := sum + i; 7 p r o d u c t := p r o d u c t i ; 8 i := i + 1 ; 9 end l o o p ; 10 write (sum); 11 write (product); Wie kommt e s zu diesem Wert? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Was wird durch diese Answeisung beeinflust? Forward Slice (sum := 0): 1 r e a d ( n ) 2 i := 1 ; 3 sum := 0; Was b e e i n f l u s s t d i e s e Anweisung? 4 p r o d u c t := 1 ; 5 w h i l e i <= n l o o p 6 sum := sum + i ; 7 p r o d u c t := p r o d u c t i ; 8 i := i + 1 ; 9 end l o o p ; 10 w r i t e ( sum ) ; 11 w r i t e ( p r o d u c t ) ; Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

5 Was wird durch diese Answeisung beeinflust? Forward Slice (sum := 0): 1 read (n); 2 i:= 1; 3 sum := 0; Was b e e i n f l u s s t d i e s e Anweisung? 4 product := 1; 5 w h i l e i <= n l o o p 6 sum := sum + i ; 7 product := product * i; 8 i := i + 1; 9 end l o o p ; 10 w r i t e ( sum ) ; 11 write (product); Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Was ist ein Slice? Slicing (P,S) bezüglich eines Programmpunktes S entfernt jene Teile eines Programms P, die das Verhalten an S nicht beeinflussen. Ein Forward Slice enthält nur solche Anweisungen von P, die von der Ausführung von S beeinflusst werden. Ein Backward Slice enthält nur solche Anweisungen von P, die das Programmverhalten an S beeinflussen. Ein Punkt S beeinflusst einen Punkt S, wenn S kontroll- oder datenabhängig von S ist. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

6 Slicing-Technik Idee und erste Technik des Slicings stammt von Weiser (1984). Moderne Slicing-Techniken basieren Abhängigkeitsgraphen Program Dependency Graph (PDG) (Ottenstein und Ottenstein 1984) für intraprozedurales Slicing System Dependency Graph (SDG) für interprozedurales Slicing (Horwitz u. a. 1990) PDG-basiertes Slicing: Kanten A B im PDG: B ist daten- bzw. kontrollabhängig von A Forward Slicing: Graph-Traversierung in Richtung der Kontroll- und Datenabhängigkeitskanten Backward Slicing: Graph-Traversierung in umgekehrter Richtung der Kontroll- und Datenabhängigkeitskanten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Program Dependency Graph (PDG) nach Ottenstein und Ottenstein (1984) PDG = gerichteter Multigraph für Daten- und Kontrollflussabhängigkeiten. Knoten repräsentieren Zuweisungen und Prädikate zusätzlich einen speziellen Entry-Knoten zusätzlich φ-knoten zur Reduktion der Datenabhängigkeitskanten (sowie einen Initial-Definition-Knoten für jede Variable, die benutzt werden kann, bevor sie gesetzt wird) Control-Kanten repräsentieren Kontrollabhängigkeiten Startknoten jeder Kontrollabhängigkeitskante ist entweder der Entry-Knoten oder ein Prädikatsknoten Flow-Kanten repräsentieren Set-Use-Abhängigkeiten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

7 mit PDG Kontrolleinfluss Set Use read(n ) i := 1 sum := 0 entry product := 1 i <= n write(sum ) write(product ) sum := sum + i product := product * i i := i + 1 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Synthese von PDG und SSA PDG wird aufgebaut für Kontrollflussgraph mit SSA-Form φ-knoten erscheinen als Zuweisungsknoten im PDG führt in der Regel zur Reduktion von Flow-Kanten Set-Set-Kanten werden nicht benötigt (φ-knoten führen zur korrekten Serialisierung) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

8 mit PDG/SSA entry Kontrolleinfluss read(n ) 1 i := 1 1 sum 1:= 0 product := 1 1 i 3<= n1 write(sum 3) write(product ) 3 sum := sum + i product := product * i i := i + 1 sum 3 := φ(sum 1, sum 2 ) product 3 := φ(product 1, product 2 ) i 3 := φ(i 1, i 2 ) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Interprozedurales Slicing 1 p r o c e d u r e Main i s 2 sum, i : I n t e g e r ; 3 b e g i n 4 sum := 0 ; 5 i := 1 ; 6 w h i l e i < 11 l o o p 7 A ( sum, i ) ; 8 end l o o p ; 9 put ( sum ) ; 10 end Main ; p r o c e d u r e A 13 ( x : i n out I n t e g e r ; 14 y : i n out I n t e g e r ) i s 15 b e g i n 16 Add ( x, y ) ; 17 I n c ( y ) ; 18 end A ; 1 p r o c e d u r e Add 2 ( a : i n out I n t e g e r ; 3 b : i n out I n t e g e r ) i s 4 b e g i n 5 a := a + b ; 6 end Add ; 7 8 p r o c e d u r e I n c 9 ( z : i n out I n t e g e r ) i s 10 one : I n t e g e r := 1 ; 11 b e g i n 12 Add ( z, one ) ; 13 end I n c ; Annahme: Copy-in/Copy-out-Parameterübergabe Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

9 System Dependency Graph (SDG) nach Horwitz u. a. (1990) PDG stellt Abhängigkeiten innerhalb einer Funktion dar System Dependency Graph (SDG) stellt globale Abhängigkeiten dar: PDGs für verschiedene Unterprogramme werden vernetzt über interprozedurale Kontroll- und Datenflusskanten Aufruf: Call-Knoten aktuelle Parameter: actual-in / actual-out-knoten (copy-in/copy-out-parameterübergabe vorausgesetzt) formale Parameter: formal-in / formal-out-knoten transitive Abhängigkeiten via PDG: Summary-Edges Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Modellierung von Prozeduraufrufen 1 Add ( x, y ) 2 3 a in := x 0 ; 4 b in := y 0 ; 5 Add ; 6 x 1 := a out ; 7 y 1 := b out ; 1 p r o c e d u r e Add 2 ( x : i n out I n t e g e r ; 3 y : i n out I n t e g e r ) i s 4 5 p r o c e d u r e Add i s 6 b e g i n 7 a 0 := a in ; b 0 := b in ; a out := a 1 ; b out := b 1 ; 10 end A ; a in := x 0 call Add y 1 := b b out in := y 0 x 1 := a out Entry Add a 0 := a in b 0 := b in a out := a 1bout := b 0 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

10 Naives Slicing: Folge allen Flow- und Control-Kanten sum 0 := initialstate(sum) Entry Main FinalUse(sum 3 ) i 0 := initialstate(i) FinalUse(i 3 ) sum 1 := 0 while i 3 < 11 i 3 := φ(i 1, i 2 ) i 1 := 1 call A sum 3 := φ(sum 1, sum 2 ) x in := sum 3 y in := i 3 sum 2 := x out i 2 := y out Entry A x 0 := x in y 0 := y in y out := y 2 x out := x 1 call Add call inc y a in := x 1 := b 0 b out in := y 0 z in := y 1 x 1 := a out y 2 := z out Entry Add a 0 := a in a out := a 1bout b 0 := b in := b 0 a 1 := a 0 + b 0 z 0 := z in a in := z 0 Entry inc one 0 := 1 call Add z out := z 1 one 1 := b out b in := one 0 z 1 := a out Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / Vorlesung Software-Reengineering Interprozedurales Slicing Naives Slicing: Folge allen Flow- und Control-Kanten Naives Slicing: Folge allen Flow- und Control-Kanten Entry Main sum0 := initialstate(sum) FinalUse(sum3) i0 := initialstate(i) FinalUse(i3) sum1 := 0 while i3 < 11 i3 := φ(i1, i2) i1 := 1 call A sum3 := φ(sum1, sum2) xin := sum3 yin := i3 sum2 := xout i2 := yout Entry A x0 := xin yout := y2 y0 := yin xout := x1 call Add call inc y1 := bout ain := x0 bin := y0 zin := y1 y2 := zout x1 := aout Entry Add Entry inc one0 := 1 z0 := zin a0 := ain zout := z1 aout := a1 call Add b0 := bin bout := b0 one1 := bout a1 := a0 + b0 ain := z0 bin := one0 z1 := aout Problem: Formale in-parameter können mehrere Vorgänger haben, formale out-parameter mehrere Nachfolger.

11 Summary-Edges Summary-Edges sind spezielle Flow-Kanten und beschreiben die Abhängigkeit der aktuellen out-parameter von den aktuellen in-parametern im Aufrufkontext. a in := x 0 call Add y 1 := b b out in := y 0 x 1 := a out Entry Add a 0 := a in a out := a 1bout b 0 := b in := b 0 a 1 := a 0 + b 0 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 sum 0 := initialstate(sum) i 0 := initialstate(i) Entry Main sum 1 := 0 while i 3 < 11 i 1 := 1 call A FinalUse(sum 3 ) FinalUse(i 3 ) i 3 := φ(i 1, i 2 ) sum 3 := φ(sum 1, sum 2 ) x in := sum 3 y in := i 3 sum 2 := x out i 2 := y out Entry A x 0 := x in y 0 := y in y out := y 2 x out := x 1 call Add call inc y a in := x 1 := b 0 b out in := y 0 z in := y 1 x 1 := a out y 2 := z out Entry Add a 0 := a in a out := a 1bout b 0 := b in := b 0 a 1 := a 0 + b 0 z 0 := z in a in := z 0 Entry inc one 0 := 1 call Add z out := z 1 one 1 := b out b in := one 0 z 1 := a out Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

12 Interprozedurales Slicing (Traversierung) Backward-Slicing (Prozedur P, Statement S): Phase 1: Folge rückwärts Parameter-In-Kanten, Control- und Flow-Kanten (inklusive Summary-Kanten) ausgehend von S. Identifiziert Knoten in Prozeduren, die P (transitiv) aufrufen und von denen S abhängt. Da Parameter-Out-Edges ausgenommen sind, werden nur aufrufende Prozeduren besucht. Die Effekte nicht-besuchter Prozeduren werden aber nicht ignoriert, da Summary-Edges traversiert werden. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Interprozedurales Slicing (Traversierung) Backward-Slicing (Prozedur P, Statement S): Phase 2: Folge rückwärts Parameter-Out-Kanten, Control- und Flow-Kanten (inklusive Summary-Kanten) ausgehend von allen Knoten, die in Phase 1 identifiziert wurden. Identifiziert Knoten in Prozeduren, die von P (transitiv) aufgerufen werden und von denen S abhängt. Da Parameter-In-Edges ausgenommen sind, werden nur aufgerufene Prozeduren besucht. Es gilt wieder: Die Effekte nicht-besuchter Prozeduren werden nicht ignoriert, da Summary-Edges traversiert werden. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

13 Summary-Edges repräsentieren (transitive) Abhängigkeiten der aktuellen In- und Out-Parameter an einer gegebenen Aufrufstelle helfen während des Slicings, unnötige Abstiege in aufgerufene Prozeduren zu vermeiden werden in zwei Schritten ermittelt: direkte Abhängigkeiten zwischen den formalen Parametern innerhalb der aufrufenden Prozedur indirekte Abhängigkeiten, die sich transitiv durch Aufruf anderer Prozeduren ergeben werden hergeleitet mit bekannten Techniken zu Abhängigkeiten in Attributgrammatiken. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Herleitung von Summary-Edges (1) (1) Für jedes Unterprogramm UP: Ermittle alle transitiven Abhängigkeiten zwischen formalen Parameter-Knoten innerhalb des PDGs von UP (liefert intraprozedural induzierte Abhängigkeiten). Für jede eingefügte Kante (a, b) zwischen Parametern von UP füge eine unmarkierte Summary-Edge zwischen a und b ein. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

14 Herleitung von Summary-Edges (2) (2) Solange eine unmarkierte Summary-Edge (a, b) eines Unterprogramms UP existiert: Markiere (a, b) Für jeden Aufruf von UP innerhalb eines Unterprogramms UP : Füge eine Kante zwischen den zu a und b korrespondierenden aktuellen Parametern in UP ein. Bilde die transitive Hülle in UP (liefert interprozedural induzierte Abhängigkeiten). Für jede eingefügte Kante (a, b ) zwischen aktuellen Parametern in UP füge eine unmarkierte Summary Edge zwischen a und b ein, sofern sie noch nicht existiert. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 Slicing-Variante: Chopping (Jackson und Rollins 1994) Abhängigkeiten zwischen zwei Punkten 1 r e a d ( n ) ; 2 i:= 1; 3 sum := 0; 4 product := 1; 5 w h i l e i <= n l o o p 6 sum := sum + i; 7 p r o d u c t := p r o d u c t i ; 8 i := i + 1 ; 9 end l o o p ; 10 write (sum); 11 write (product); Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

15 Vorlesung Software-Reengineering Slicing-Varianten Slicing-Variante: Chopping (Jackson und Rollins 1994) Slicing-Variante: Chopping (Jackson und Rollins 1994) Abhängigkeiten zwischen zwei Punkten 1 r e a d ( n ) ; 2 i:= 1; 3 sum := 0; 4 product := 1; 5 w h i l e i <= n l o o p 6 sum := sum + i; 7 product := product i ; 8 i := i + 1 ; 9 end loop ; 10 write (sum); 11 write (product); Ein intraprozeduraler Chop für ein Kriterium (s, t) ist die Menge der Knoten, die Teil eines Einflusses des Quellknotens s auf den Zielknoten t sind (Jackson und Rollins 1994). Im PDG sind das alle Knoten, die auf einem Pfad von s nach t liegen. Reps und Rosay (1995) haben Definitionen von Chopping für den interprozeduralen Fall vorgelegt und einen Algorithmus für die präzise Berechnung von interprozeduralen Chops beschrieben. Krinke (2004) hat Untersuchungen zu Chopping und Slicing mit und ohne Kontextsensitivität angestellt. Im Beispiel sehen wir einen Chop für das Kriterium (Zeile 2, Zeile 11). Die Anweisungen in den Zeilen 3, 4 und 10 sind nicht enthalten, weil keine Abhängigkeit zu Zeile 2 besteht. Die Zeile 6 ist offensichtlich abhängig von Zeile 2, allerdings liegt sie im PDG nicht auf einem Pfad zur Zeile 11. Die Zeile 7 ist aus offensichtlichen Gründen enthalten. Interessant ist die Zeile 8. Sie ist enthalten wegen der Kontrollabhängigkeit von Zeile 7 vom Prädikat in Zeile 5, das wiederum von Zeile 8 bestimmt wird. Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) O r i g i n a l g e s t a l t e r h a l t e n d e s S l i c e i f p = q then i f p = q then x := 1 8 ; x := 18; x := 1 7 ; x := 1 7 ; end i f ; end i f ; i f p /= q then i f p /= q then y := x ; y := x ; y:= 2 ; y:= 2 ; end i f ; end i f ; put (y); put (y); Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

16 Vorlesung Software-Reengineering Slicing-Varianten Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) O r i g i n a l g e s t a l t e r h a l t e n d e s S l i c e i f p = q then i f p = q then x := 18; x := 18; x := 1 7 ; x := 1 7 ; end i f ; end i f ; i f p /= q then i f p /= q then y := x ; y := x ; y:= 2 ; y:= 2 ; end i f ; end i f ; put (y); put (y); In diesem Beispiel wird ein besonders intelligentes Slicing durchgeführt, das auch noch die Prädikate auswertet. Die Zuweisung y := x im Originalprogramm findet nur statt, wenn p=q gilt. Wenn aber p=q gilt, dann findet die Zuweisung x := 18 nicht statt und kann deshalb vernachlässigt werden. Die Berücksichtigung von Prädikaten für Slicing ist nicht spezifisch für amorphes Slicing. Zumindest für einfache Fälle könnte man das auch beim Slicing, wie wir es bisher kennen gelernt haben, einbauen. Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) O r i g i n a l T r a n s f o r m a t i o n amorphes S l i c e i f p = q then i f p = q then i f p = q then x := 1 8 ; x := 1 8 ; y := 2 ; x := 18; y := 2 ; x := 1 7 ; x := 1 7 ; x := 17; end i f ; y := x ; y := 17 y := x ; i f p /= q then end i f ; end i f ; y := x ; y:= 2 ; end i f ; put (y); put (y); put (y); Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

17 Vorlesung Software-Reengineering Slicing-Varianten Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) Slicing-Variante: Amorphes Slicing (Harmann u. a. 2003) O r i g i n a l T r a n s f o r m a t i o n amorphes S l i c e i f p = q then i f p = q then i f p = q then x := 18; x := 18; y := 2 ; x := 18; y := 2 ; x := 17; x := 17; x := 17; end i f ; y := x ; y := 17 y := x ; i f p /= q then end i f ; end i f ; y := x ; y:= 2 ; end i f ; put (y); put (y); put (y); Amorphes Slicing ist die Kombination von Slicing mit automatischen Code-Transformationen, die zum Ziel haben, das resultierende Slice zu vereinfachen. Die Transformationen können vor dem Slicing durchgeführt werden oder hinterher. In diesem Beispiel findet die Transformation vorher statt. Eine Analyse hat erkannt, dass man das Originalprogramm, wie in der zweiten Spalte gezeigt, vereinfachen kann (wieder auf Grund der Analyse der Prädikate der beiden aufeinander folgenden Bedingungen). Anschließend wird das transformierte Programm gesliced. Die Zuweisung x := 18 fällt wie vorher heraus. Die Zuweisung x := 17 ist relevant und gehört eigentlich zum Slice. Allerdings kann man in diesem Falle eine weitere Code-Transformation durchführen. Die so genannte Konstantenpropagierung ersetzt alle Variablen, die als konstant erkannt wurden, mit ihrem konstanten Wert. Die Zuweisung der Konstante kann dann entfallen. In diesem Beispiel finden also Code-Transformation vor und nach dem Slicing statt. Slicing-Varianten Backward-/Forward-Slicing, Chopping ausführbare Slices/nicht-ausführbare Slices statisches/dynamisches Slicing gestalterhaltendes (syntax-preserving)/amorphes Slicing amorph: Slicing mit vereinfachender Transformation Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

18 Anwendungen von Slicing Programmverstehen Reduzierung des Codes auf das für das Verständnis notwendige Maß Änderungsanalyse alle von einer Änderung betroffenen Stellen Regressionstesten Reduktion des zu testenden Codes Restrukturierung z.b. Aufteilung von Unterprogrammen, die mehrere logisch verschiedene Funktionen implementieren Bewertung der Änderbarkeit (und somit der Wartbarkeit) eines Systems Messung von Kohäsion Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40 1 Harmann u. a Harmann, Mark ; Binkley, David ; Danicic, Sebastian: Amorphous. In: Journal of Systems and Software 68 (2003), Nr. 1, S Horwitz u. a Horwitz, Susan ; Reps, Thomas ; Binkley, David: Interprocedural Slicing Using Dependence Graphs. In: ACM Transactions on Programming Languages and Systems 12 (1990), Januar, Nr. 1, S Jackson und Rollins 1994 Jackson, D. ; Rollins, E.: A new model of program dependences for reverse engineering. In: Proc. Symposium on the Foundations of Software Engineering, Krinke 2004 Krinke, Jens: Slicing, Chopping, and Path Conditions with Barriers. In: Software Quality Journal 12 (2004), Nr. 4, S Ottenstein und Ottenstein 1984 Ottenstein, Karl J. ; Ottenstein, Linda M.: The program dependence graph in a software development environment. In: Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposion on Practical Sofware Development Environments, 1984, S Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

19 6 Reps und Rosay 1995 Reps, T. ; Rosay, G.: Precise Interprocedural Chopping. In: Proc. Symposium on the Foundations of Software Engineering, Weiser 1984 Weiser, M.: Program slicing. In: IEEE Transactions on Software Engineering 10 (1984), Nr. 4, S In this paper some properties of slices are presented. It is shown that the use of data-flow analysis is sufficient to find approximate slices of the generally unsolvable problem of finding statement-minimal slices Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2007/ / 40

Kapitel 5 Statische Programmanalyse

Kapitel 5 Statische Programmanalyse Kapitel 5 Statische Programmanalyse Harald Gall Software Engineering Group seal.ifi.unizh.ch Universität Zürich Institut für Informatik Inhalt Grundlagen Analyse von Programmen Darstellungen für die Programmanalyse

Mehr

Software Engineering. Statische Analyse! Kapitel 11

Software Engineering. Statische Analyse! Kapitel 11 Martin Glinz Thomas Fritz Software Engineering Kapitel 11 Statische Analyse 2005, 2013 Martin Glinz. Alle Rechte vorbehalten. Speicherung und Wiedergabe für den persönlichen, nicht kommerziellen Gebrauch

Mehr

Visualisierung feingranularer Abhängigkeiten

Visualisierung feingranularer Abhängigkeiten Visualisierung feingranularer Abhängigkeiten Jens Krinke FernUniversität in Hagen Fachbereich Elektrotechnik und Informationstechnik Fach Softwaretechnik 6. Workshop Software-Reengineering, Bad Honnef,

Mehr

Software Engineering. Statische Analyse! Kapitel 11

Software Engineering. Statische Analyse! Kapitel 11 Martin Glinz Harald Gall Software Engineering Kapitel 11 Statische Analyse! 2009-2011 Harald Gall. Alle Rechte vorbehalten. Speicherung und Wiedergabe für den persönlichen, nicht kommerziellen Gebrauch

Mehr

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program

Mehr

Advanced Slicing of Sequential and Concurrent Programs

Advanced Slicing of Sequential and Concurrent Programs Advanced Slicing of Sequential and Concurrent Programs Jens Krinke Universität Passau Abstract: Program Slicing ist eine Technik zur Identifikation von Anweisungen, die andere Anweisungen beeinflussen

Mehr

Vorlesung Software Reengineering

Vorlesung Software Reengineering Vorlesung Software Reengineering Rainer Koschke Institut für Informatik, Universität Stuttgart Requirements Design Code reengineering forward engineer- forward engireverse engineer- reverse engineer- restructuring

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. R. Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2005/06 Überblick I 1 Blatt 2 1 Blatt 2 A 2.1:

Mehr

Programmverstehen. Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2005-12-12

Programmverstehen. Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2005-12-12 Programmverstehen Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2005-12-12 Software Reengineering An der Universität lernen Sie in der Regel das Entwickeln eines

Mehr

durchprogramslicingundconstraintsolving ValidierungsoftwaregesteuerterMesysteme MichaelGoldapp LINEASGmbH Braunschweig Physikalisch-TechnischeBundesanstalt UlrichGrottker TechnischeUniversitat GregorSnelting

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

Mehr

Erkennung von Race Conditions mit Bauhaus

Erkennung von Race Conditions mit Bauhaus Erkennung von Race Conditions mit Bauhaus Steffen Keul steffen.keul@informatik.uni-stuttgart.de Abteilung Programmiersprachen Institut für Softwaretechnologie http://www.iste.uni-stuttgart.de/ps Stand

Mehr

Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm

Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm Rainer Koschke Universität Bremen Workshop Software-Reengineering Bad Honnef 5. Mai 2005 Bauhaus Forschungskooperation

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

PSE: Programmabha ngigkeitsgraphen

PSE: Programmabha ngigkeitsgraphen PSE: Programmabha ngigkeitsgraphen M. Radermacher, S. Bischof, S. Buchwald, M.Hecker IPD Snelting, ITI Wagner KIT Universita t des Landes Baden-Wu rttemberg und nationales Großforschungszentrum in der

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 I 1 Arten von Reengineering-Projekten

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Das Heiratsproblem. Definition Matching

Das Heiratsproblem. Definition Matching Das Heiratsproblem Szenario: Gegeben: n Frauen und m > n Männer. Bekanntschaftsbeziehungen zwischen allen Männern und Frauen. Fragestellung: Wann gibt es für jede der Frauen einen Heiratspartner? Modellierung

Mehr

3. Musterlösung. Problem 1: Boruvka MST

3. Musterlösung. Problem 1: Boruvka MST Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines

Mehr

3: Systematisches Testen

3: Systematisches Testen Stefan Lucks 3: Systematisches Testen 70 E für Sichere Vert. Systeme (2007) 3: Systematisches Testen Testen ist ein Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Man muss destruktiv

Mehr

6 Systematisches Testen von Programmen

6 Systematisches Testen von Programmen 6 Systematisches Testen von Programmen Testen Untersuchung des Source-Codes nach Fehlern und Anomalien Stefan Lucks, Software-Entwicklung für Sichere Systeme SS 04, Kapitel 6 p.1/24 Untersuchung des Source-Codes

Mehr

Vorlesung Software Engineering

Vorlesung Software Engineering Vorlesung Software Engineering Kapitel 4 Qualitätsmanagement und Software-Metriken Software-Metriken mittels Werkzeug Understand - 1 - Neues Projekt anlegen New Project... - 2 - Neues Projekt anlegen Auswahl

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 11 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Software Maintenance. Program Slicing im Software Maintenance. Fehlerlokalisierung UNIV.-PROF. DIPL.-ING. DR. FRANZ WOTAWA

Software Maintenance. Program Slicing im Software Maintenance. Fehlerlokalisierung UNIV.-PROF. DIPL.-ING. DR. FRANZ WOTAWA Software Maintenance UNIV.-PROF. DIPL.-ING. DR. FRANZ WOTAWA Technische Universität Graz, Institut für Softwaretechnologie wotawa@ist.tugraz.at Program Slicing im Software Maintenance Program Slicing kann

Mehr

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Software-Produktlinien Software-Produktlinien:

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke 1 1 Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2005/06 Überblick I 1 Refactoring 1 Refactoring

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2006

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2006 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2006 Überblick I 1 Software-Produktlinien Software-Produktlinien:

Mehr

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

Kapitel 4: Netzplantechnik Gliederung der Vorlesung Gliederung der Vorlesung 1. Grundbegriffe 2. Elementare Graphalgorithmen und Anwendungen 3. Kürzeste Wege 4. Netzplantechnik 5. Minimal spannende Bäume 6. Traveling Salesman Problem 7. Flüsse in Netzwerken

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des

Mehr

Wiederholung zu Flüssen

Wiederholung zu Flüssen Universität Konstanz Methoden der Netzwerkanalyse Fachbereich Informatik & Informationswissenschaft SS 2008 Prof. Dr. Ulrik Brandes / Melanie Badent Wiederholung zu Flüssen Wir untersuchen Flüsse in Netzwerken:

Mehr

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung. Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 14. November 2007 1 / 22 2 / 22 Gliederung eulersche und semi-eulersche Graphen Charakterisierung eulerscher Graphen Berechnung eines

Mehr

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E. Das Komplement Ḡ = (V, ( V ) \ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E. Ein Graph H = (V, E )

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2009 Überblick I 1 Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

4. OBDDs und Modellüberprüfung

4. OBDDs und Modellüberprüfung 4. OBDDs und Modellüberprüfung OBDD Ordered Binary Decision Diagrams Geordnete binäre Entscheidungsdiagramme Binäres Entscheidungsdiagramm: in der einfachsten Form ein binärer Entscheidungsbaum, in dem

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man

Mehr

Übung zur Vorlesung Berechenbarkeit und Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein

Mehr

Alias Analysis for Exceptions in Java Seminar

Alias Analysis for Exceptions in Java Seminar Alias Analysis for Exceptions in Java Seminar Michal Revucky e0225176@student.tuwien.ac.at 16. Dezember 2004 Zusammenfassung Diese Arbeit schlägt einen Alias Analysis Algorithmus für Java vor, dieser kann

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Vorlesung Künstliche Intelligenz Alexander Manecke Oliver Schneider Andreas Stoffel 9. Mai 2006

Vorlesung Künstliche Intelligenz Alexander Manecke Oliver Schneider Andreas Stoffel 9. Mai 2006 Vorlesung Künstliche Intelligenz 9. Mai 2006 Aufgabe 1: Listen in Prolog a) Den Fall der leeren Liste müssen wir hier nicht betrachten, denn eine leere Liste besitzt kein Maximum. Also ist Standardantwort

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. a) Es seien W 1 = (V, E 1 ), W 2 = (V, E 2 ) Untergraphen von G, die beide Wälder sind. Weiter gelte E 1 > E 2.

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

11. Übung zu Algorithmen I 6. Juli 2016

11. Übung zu Algorithmen I 6. Juli 2016 11. Übung zu Algorithmen I 6. Juli 2016 Lisa Kohl lisa.kohl@kit.edu mit Folien von Lukas Barth Roadmap Ausblick: Was sind schwierige Probleme? Travelling Salesman Problem - Reprise ein ILP ein Algorithmus

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Lehrstuhl Prof. Plödereder Eduard Wiebe Institut für Softwaretechnologie Abteilung Programmiersprachen und Übersetzerbau Sommersemester 2007 Programm-Ausführung Programmiersprachen

Mehr

Algorithmen zur Berechnung der Transitiven Hülle einer Datenbankrelation

Algorithmen zur Berechnung der Transitiven Hülle einer Datenbankrelation Algorithmen zur Berechnung der Transitiven Hülle einer Datenbankrelation Daniel Reinhold Shenja Leiser 6. Februar 2006 2/28 Gliederung Einführung Transitive Hülle Definition Iterative Algorithmen 1. Naive

Mehr

Grundlagen der Datenflußanalyse. und Programmabhängigkeitsgraphen

Grundlagen der Datenflußanalyse. und Programmabhängigkeitsgraphen Grundlagen der Datenflußanalyse und Programmabhängigkeitsgraphen Prof. Dr.-Ing. G. Snelting Universität Karlsruhe Lehrstuhl Programmierparadigmen 1 [ Wozu Datenflußanalyse? ] Datenflußanalyse ist eine

Mehr

Sudoku ist NP-vollständig

Sudoku ist NP-vollständig Sudoku ist NP-vollständig Seminar über Algorithmen und Komplexität Freie Universität Berlin Institut für Informatik SS 007 Sarah Will 8.07.007 Einführung Sudoku ist ein japanisches Logikrätsel und hat

Mehr

Name: Klausur Informatik III WS 2003/04

Name: Klausur Informatik III WS 2003/04 1 : Methodenimplementierung ca. 42 Punkte Gegeben ist die Klasse Mitarbeiter. Listing 1: (./Code1/Mitarbeiter.h) using namespace std; // globale Variable fuer Ausgabedatei // kann entsprechend

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 22. Vorlesung Tiefensuche und Topologische Sortierung Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Vorlesungsumfrage Nutzen Sie die Vorlesungsbefragung

Mehr

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten Gliederung Zusammenhang von Graphen Stark Zusammenhängend K-fach Zusammenhängend Brücken Definition Algorithmus zum Finden von Brücken Anwendung Zusammenhangskomponente Definition Wichtige Aussagen und

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Static-Single-Assignment-Form

Static-Single-Assignment-Form Static-Single-Assignment-Form Compilerbau Static-Single-Assignment-Form 195 Static-Single-Assignment-Form besondere Darstellungsform des Programms (Zwischensprache) vereinfacht Datenflussanalyse und damit

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Contents. Abstract viii Kurzfassung ix. 1 Introduction Motivation Goals Outline 2

Contents. Abstract viii Kurzfassung ix. 1 Introduction Motivation Goals Outline 2 v Acknowledgements I want to thank my advisor Prof. H. Mössenböck for a liberal supervision of this project and for his ongoing encouragement and patience. The Oberon System was an excellent working tool

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.4. Es sei G = (V,E) ein Graph. Der Abstand d(v,w) zweier Knoten v,w V ist die minimale Länge eines Weges von v nach w. Falls

Mehr

Logik für Informatiker

Logik für Informatiker Vorlesung Logik für Informatiker 13. Prädikatenlogik Der Satz von Herbrand Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Semantische Bäume Eine klassische

Mehr

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 Einführung 1 Einführung

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 22. Constraint-Satisfaction-Probleme: Kantenkonsistenz Malte Helmert Universität Basel 14. April 2014 Constraint-Satisfaction-Probleme: Überblick Kapitelüberblick

Mehr

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984)

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) NP-Vollständigkeit Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) 0 Übersicht: Einleitung Einteilung in Klassen Die Klassen P und NP

Mehr

Übungsblatt Nr. 5. Lösungsvorschlag

Übungsblatt Nr. 5. Lösungsvorschlag Institut für Kryptographie und Sicherheit Prof. Dr. Jörn Müller-Quade Dirk Achenbach Tobias Nilges Vorlesung Theoretische Grundlagen der Informatik Übungsblatt Nr. 5 Aufgabe 1: Eine schöne Bescherung (K)

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Grundlagen der Informatik Vorlesungsskript

Grundlagen der Informatik Vorlesungsskript Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1

Mehr

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Freelance 2000. DeltaPLC-Tool. Version 4 / Version 5

Freelance 2000. DeltaPLC-Tool. Version 4 / Version 5 Freelance 2000 DeltaPLC-Tool Version 4 / Version 5 Inhaltsverzeichnis 1 Allgemeine Beschreibung... 5 2 Aufruf des DeltaPLC-Tool... 5 3 Vergleich der PLC-Dateien... 6 4 Konfigurationsänderungen... 7 5

Mehr

Bipartite Graphen. Beispiele

Bipartite Graphen. Beispiele Bipartite Graphen Ein Graph G = (V, E) heiÿt bipartit (oder paar), wenn die Knotenmenge in zwei disjunkte Teilmengen zerfällt (V = S T mit S T = ), sodass jede Kante einen Knoten aus S mit einem Knoten

Mehr

Bäume und Wälder. Definition 1

Bäume und Wälder. Definition 1 Bäume und Wälder Definition 1 Ein Baum ist ein zusammenhängender, kreisfreier Graph. Ein Wald ist ein Graph, dessen Zusammenhangskomponenten Bäume sind. Ein Knoten v eines Baums mit Grad deg(v) = 1 heißt

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei

Mehr

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten

Mehr

einfacher Aufrufgraph Beispiel komplexer Aufrufgraph Interprozedurale Analyse start start start start start not B callb callb callb callb calle callb

einfacher Aufrufgraph Beispiel komplexer Aufrufgraph Interprozedurale Analyse start start start start start not B callb callb callb callb calle callb Interprozedurale Analyse einfacher Aufrufgraph Aufgaben: Wirkung von Prozeduraufrufen auf den Aufrufer genauer bestimmen: rekursive Prozeduren feststellen möglicherweise veränderte Werte, Nebenwirkungen

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

3.4 Struktur von Programmen

3.4 Struktur von Programmen 3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*

Mehr

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0

Mehr

Das Steinerbaumproblem

Das Steinerbaumproblem Das Steinerbaumproblem Natalie Richert Fakultät für Elektrotechnik, Informatik und Mathematik, Universität Paderborn 4. Februar 008 / 3 Überblick Problembeschreibung Vorstellung von zwei Approimationsalgorithmen

Mehr

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 - Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Vorlesung Diskrete Strukturen Eulersche und Hamiltonsche Graphen

Vorlesung Diskrete Strukturen Eulersche und Hamiltonsche Graphen Vorlesung Diskrete Strukturen Eulersche und Hamiltonsche Graphen Bernhard Ganter WS 2013/14 1 Eulersche Graphen Kantenzug Ein Kantenzug in einem Graphen (V, E) ist eine Folge (a 0, a 1,..., a n ) von Knoten

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 2 KÜRZESTE WEGE Vorlesung 2 KÜRZESTE WEGE 34 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Kürzeste Wege zwischen allen Knotenpaaren (APSP)! Viele Anwendungen:! Navigationssysteme!

Mehr

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung Konstantin Clemens Johanna Ploog Freie Universität Berlin Institut für Mathematik II Arbeitsgruppe für Mathematik in den Lebenswissenschaften Algorithmen und Datenstrukturen in der Bioinformatik Viertes

Mehr

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme Universität Hamburg Fachbereich Mathematik Seminar: Proseminar Graphentheorie Dozentin: Haibo Ruan Sommersemester 2011 Ausarbeitung zum Modulabschluss Graphentheorie spannende Bäume, bewertete Graphen,

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Kode-Erzeugung für Registersatz-Maschinen

Kode-Erzeugung für Registersatz-Maschinen Kode-Erzeugung für Registersatz-Maschinen Die meisten Maschinen sind heutzutage Registersatzmaschinen, die einen Satz von 16-32 Universalregistern besitzen. Üblich sind Dreiadress-Befehle OP DEST, SRC1,

Mehr

Safer Software Formale Methoden für ISO26262

Safer Software Formale Methoden für ISO26262 Safer Software Formale Methoden für ISO26262 Dr. Stefan Gulan COC Systems Engineering Functional Safety Entwicklung Was Wie Wie genau Anforderungen Design Produkt Seite 3 Entwicklung nach ISO26262 Funktionale

Mehr

Anwendungen. Für optimale Wege in DAGs gibt es eine Fülle von Anwendungen. Wir betrachten zwei:

Anwendungen. Für optimale Wege in DAGs gibt es eine Fülle von Anwendungen. Wir betrachten zwei: Anwendungen Für optimale Wege in DAGs gibt es eine Fülle von Anwendungen. Wir betrachten zwei: Optimale Einteilung in Blöcke (z.b. in der Textverarbeitung) Projektplanung Graphentheorie HS Bonn-Rhein-Sieg,

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 16/17 Ausgabe 22. Dezember 2016 Abgabe 17. Januar 2017, 11:00 Uhr

Mehr

6. Flüsse und Zuordnungen

6. Flüsse und Zuordnungen 6. Flüsse und Zuordnungen In diesem Kapitel werden Bewertungen von Kanten als maximale Kapazitäten interpretiert, die über solch eine Kante pro Zeiteinheit transportiert werden können. Wir können uns einen

Mehr