Vorlesung Software-Reengineering
|
|
- Hede Brinkerhoff
- vor 6 Jahren
- Abrufe
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 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
MehrSoftware 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
MehrVisualisierung 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,
MehrSoftware 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
MehrSeminar 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
MehrAdvanced 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
MehrVorlesung 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
MehrVorlesung 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:
MehrProgrammverstehen. 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
Mehrdurchprogramslicingundconstraintsolving ValidierungsoftwaregesteuerterMesysteme MichaelGoldapp LINEASGmbH Braunschweig Physikalisch-TechnischeBundesanstalt UlrichGrottker TechnischeUniversitat GregorSnelting
MehrC.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
MehrErkennung 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
MehrKonsolidierung 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
MehrAlgorithmen 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
MehrPSE: 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
MehrDynamische 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
MehrDefinition 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.
MehrVorlesung 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
MehrElementare 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)
MehrDas 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
Mehr3. 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
Mehr3: 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
Mehr6 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
MehrVorlesung 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
MehrTECHNISCHE 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,
MehrSoftware 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
MehrSoftwaretechnik. 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:
MehrPrä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
MehrVorlesung 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
MehrSoftwaretechnik. Ü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:
MehrKapitel 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
MehrKombinatorische 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
MehrWiederholung 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:
MehrGraphentheorie. 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.
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 )
MehrSoftwaretechnik. Ü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
Mehr4. 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
MehrTechnische 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
MehrIdeen 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
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
MehrAlias 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
Mehr15. 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
MehrC++ 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
MehrVorlesung 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
Mehrzu 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
MehrAufgabe 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.
MehrSchachtelung 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,
Mehr11. Ü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
MehrKonzepte 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
MehrAlgorithmen 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
MehrGrundlagen 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
MehrSudoku 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
MehrName: 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
MehrAlgorithmen 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
MehrGliederung. 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
MehrEinfü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
MehrStatic-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
MehrRouting 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
Mehrzu 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
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrContents. 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
Mehr4. 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
MehrLogik 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
MehrAllgemeine 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,
MehrVorlesung 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
MehrGrundlagen 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
MehrNP-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
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)
Mehr1. 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
Mehr1 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
Mehr4 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
MehrGrundlagen 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
MehrSoftwareschnittstellen
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
MehrJavaScript. 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
MehrFreelance 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
MehrBipartite 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
MehrBä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
MehrVorlesung 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
MehrGrundlagen 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
Mehreinfacher 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
MehrKlausur 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.
Mehr3.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*
Mehr2. 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
MehrDas 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
MehrInformatik 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
MehrEinfü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
MehrQuicksort 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.
MehrVorlesung 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
MehrVorlesung 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!
MehrAlgorithmen 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
MehrAusarbeitung 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,
MehrEs 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.
MehrTutoraufgabe 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.
MehrDatenstrukturen. 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,
MehrKode-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,
MehrSafer 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
MehrAnwendungen. 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,
MehrKurs 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
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
Mehr6. 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