Vorlesung Software-Reengineering

Ähnliche Dokumente
Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm

Vorlesung Software-Reengineering

Programmierung im Grossen

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Einleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer.

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

Formale Begriffsanalyse

Vorlesung Software-Reengineering

Exkurs: Elementare Verbandstheorie. Exkurs: Elementare Verbandstheorie Sommersemester / 20

Systemtheorie 1. Einführung Systemtheorie 1 Formale Systeme 1 # WS 2006/2007 Armin Biere JKU Linz Revision: 1.4

Systemtheorie 1. Formale Systeme 1 # WS 2006/2007 Johannes Kepler Universität Linz, Österreich

Notationen für Transformationsregeln

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Formale Begriffsanalyse (B. Ganter, R. Wille) Teil 1

Schulinterner Lehrplan zum Kernlehrplan für die gymnasiale Oberstufe. Informatik Q2. Stand: 02/2016 Status: Gültig

Software Entwicklung 1

Graph-basierte Modellierung in Software-Werkzeugen

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

Elementare Verbandstheorie. Elementare Verbandstheorie Sommersemester / 1

1 EINLEITUNG MESSKONZEPTE UND IHRE EIGENSCHAFTEN... 7

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2007/08. Universität Freiburg, Germany

Abschnitt 3: Mathematische Grundlagen

Vorlesung Software Reengineering

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

Erkennung von Race Conditions mit Bauhaus

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Kapitel 2 - Die Definitionsphase

Grundlagen der Wirtschafts informatik

Vorlesung Software-Reengineering

Diskrete Strukturen Kapitel 2: Grundlagen (Relationen)

Ordnungen und Verbände

Hyperrekonfigurierbare Hardware - Modelle, Partitionierungsprobleme und Schedulingstrategien

Grundbegriffe der Informatik Kapitel 3: Mengen, Alphabete, Abbildungen

Übungen zur Vorlesung Mathematik für Informatiker 1 Wintersemester 2013/14 Übungsblatt 8

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

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Universität Karlsruhe (TH)

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Praxis der Softwareentwicklung WS 2015/16

3. Grundlagen relationaler Datenbanksysteme

Spiele. Programmierpraktikum WS04/05 Lange/Matthes 106

Inhalte des Moduls Programmieren 1

E-CARES-Projekt: Understanding Complex Legacy Telecommunication Systems. E-CARES-Projekt. André Marburger Lehrstuhl für Informatik III, RWTH Aachen

Angewandte Mathematik am Rechner 1

Vorlesung Software-Reengineering

Mathematische Grundlagen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Residue Number System und Modulararithmetik

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Mathematik-Vorkurs für Informatiker (Wintersemester 2012/13) Übungsblatt 8 (Relationen und Funktionen)

STORYBOARDING ZUR ABLEITUNG VON KONTEXTBASIERTEN INTERACTION-CASES FÜR UBIQUITÄRE SYSTEME

Vorlesung Software-Reengineering

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Software-Qualität Ausgewählte Kapitel. Messung und Prognose von interner Software-Qualität"

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Praktikumsaufgabe Software Engineering

Datenbanken. Teil 2: Informationen. Kapitel 2: Einführung. Zusammenfassung der Grundbegriffe. Übersicht über wichtige Grundbegriffe:

Aufgaben zur Verbandstheorie

Abschnitt 3: Mathematische Grundlagen

Relationen und Funktionen

Echtzeit-Multitasking

Objektorientierter Software-Entwurf Ergebnisse der funktionalen Zerlegung 3 1. Die Zerlegungsmethoden sollen in zwei Dimensionen betrachtet werden:

Context-Awareness: aktuelle Projekte. Wintersemester 2007/2008 HAW-Hamburg Jaroslaw Urich

Vorlesung Diskrete Strukturen Relationen

Human-Computer-Interaction und Psychologie: Aufgaben-, Kontext, Konkurrenzanalyse

Echtzeit-Multitasking

Einführung: Verteilte Systeme - Remote Method Invocation -

Schnelle systematische Entwicklung von Internet-Anwendungen

Vorlesungsmitschrift zur Vorlesung Theoretische Informatik I vom 23. Juni Christian Franz

Software Evolution. Prof. Dr. Gabriele Taentzer Dr. Thorsten Arendt Wintersemester 2015/2016

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Unterstützung des HW/SW-Codesign durch Modellierung

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

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

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Wirtschaftsinformatik

Themen für Bakkalaureus-Arbeiten

Vorlesung Software-Reengineering

AT module Specifications

Allgemeine Algebren. Bernhard Ganter. Institut für Algebra TU Dresden D Dresden

Praxis der Softwareentwicklung

Tutorium Softwaretechnik I

Parameterübergabemechanismen für den Methodenaufruf

Transkript:

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

1 Ausgangsszenario für Statische Analyse Dynamische Analyse Probleme der dynamischen Analyse Statische und dynamische Analysen Fallstudien Inkrementelle Analyse Szenarien, Merkmale, Routinen Bewertung Wiederholungsfragen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 3 / 37 Lernziele Ausnutzung aller verfügbarer Information (statisch und dynamisch) Suche nach Merkmalen (statt Programmmustern) Kontext Weitere Anwung der Begriffsanalyse Unterstützung der Lokalisierung beim Programmverstehen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 4 / 37

Szenario für Ihre Aufgabe ist es, für ein System mit mehr als 10,000 Routinen ein Merkmal hinzuzufügen, zu korrigieren oder zu ändern oder einfach die Implementierung eines Merkmals zu verstehen. Wo beginnen Sie? : welche Komponenten eines Systems implementieren ein einzelnes Merkmal bzw. eine Menge von Merkmalen? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 5 / 37 Merkmale und Komponenten Ein Merkmal ist eine realisierte funktionale oder nicht-funktionale Eigenschaft des Systems. Eine Komponente ist eine ausführbare Einheit, z.b.: eine einzelne Anweisung oder ein Ausdruck, eine Routine (Funktion, Prozedur), ein Modul, ein Subsystem, eine Task, ein Thread oder Prozess. Im Folgen: Merkmal = von außen anstoßbares und beobachtbares Verhalten des Systems, das auf Komponenten abgebildet werden kann. Komponente = Routine. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 6 / 37

Statische Analyse nach Chen und Rajlich (2000) Probleme: Wo beginnen? Wo fortfahren? Wo aufhören? Präzision der statischen Extraktion? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 7 / 37 Zwei dynamische Ausführungs-Traces nach Wilde u. a. (1992) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 8 / 37

Dynamische Analyse Dynamischer Aufrufgraph unter Verwung des Merkmals Dynamischer Aufrufgraph ohne Verwung des Merkmals Resultat Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 9 / 37 Probleme der dynamischen Analyse Invoking-Input-Set Excluding-Input-Set kann immer noch sehr viele nicht-merkmalspezifische Routinen sowie nicht wirklich merkmalspezifische Routinen enthalten. Resultate hängen von der Eingabe ab; d.h. Resultate bilden nur einen Startpunkt für weitere statische Analysen. Wo soll mit der statischen Analyse begonnen werden? Das Resultat differenziert die identifizierten Routinen nicht weiter. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 10 / 37

Statisch und dynamisch nach Eisenbarth u. a. (2003) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 11 / 37 Begriffsanalyse I Merkmal f1 Merkmal f2 Merkmal f3 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 12 / 37

Begriffsanalyse II Kontext: Routinen Objekte Merkmale Attribute Begriffsverband r wird aufgerufen für m Relation Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 13 / 37 Vorlesung Software-Reengineering Begriffsanalyse II 2006-01-30 Statische und dynamische Analysen Begriffsanalyse Begriffsverband Kontext: Routinen Objekte Merkmale Attribute r wird aufgerufen für m Relation Die Darstellung der Relation in Form einer Aufruftabelle erfolgt im Kontext der aus Platzgründen konsequent transponiert, da wir es stets mit mehr Routinen als Merkmalen zu tun haben werden.

Kombination Aufrufgraphen ohne Information des Begriffsverbands Aufrufgraph mit Information des Begriffsverbands Top-down / Bottom-up-Traversierung anhand der Merkmalspezifizität der Nachbarn. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 14 / 37 Fallstudie zweier Web-Browser Kombination statischer und dynamischer Information angewandt auf zwei Web-Browser: Mosaic (51 KLOC C-Code, ohne Bibliotheken) Chimera (38 KLOC C-Code; ohne Bibliotheken) Zwei Experimente: Partielle Architektur der Browser-History Merkmale: Browsing, Back-Button, Forward-Button Partielle Architektur der Bookmarks Merkmale: Öffnen/Schließen des Bookmark-Fensters, Bookmark hinzufügen/löschen/selektieren Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 15 / 37

Reduktion des Suchraumes Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 16 / 37 Fallstudie: Architektur der Firmware eines Chiptesters applications firmware semaphor shared memory message queue YACC parser command constructor response executor executor executor data flow control flow utility functions firmware hardware Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 18 / 37

Begriffsverband für die Firmware Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 19 / 37 Inkrementelle Begriffsanalyse I A1 A2 A3 A4 A5 O1 X X O2 X X X O3 X X O4 X X O5 X X Sei K = (O, A, I) ein Kontext, O O, und A A. Dann ist K = (O, A, I (O A )) ein Subkontext von K und K ist ein Superkontext von C. Annahme: Wir fügen nur Zeilen dazu (für Spalten ist es analog). Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 20 / 37

Inkrementelle Begriffsanalyse II A1 A2 A3 A4 A5 O1 X X O2 X X X O3 X X O4 X X O5 X X Satz. Sei K = (O, A, I) und K = (O, A, I ), wobei O O und I = (I (O A)). Dann ist jeder Inhalt von K ein Inhalt von K. Beweis. Siehe Ganter und Wille (1996). Folgerung. Gemäß dieses Satzes erscheint jeder Intent des Subkontexts im Superkontext. Daraus resultiert die folge Abbildung: (O, A) (σ(a), A) Beweis. Siehe Ganter und Wille (1996). Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 21 / 37 Inkrementelle Begriffsanalyse III Die Abbildung ist eine -erhalte Einbettung, d.h. die partielle Ordnung bleibt vollständig erhalten. Folglich ist der Superkontext eine Verfeinerung des Subkontexts. Mit Hilfe der Abbildung lassen sich alle Begriffe des Subkontexts im Superkontexts wiederfinden. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 22 / 37

2006-01-30 Vorlesung Software-Reengineering Inkrementelle Analyse Inkrementelle Begriffsanalyse Inkrementelle Begriffsanalyse III Die Abbildung ist eine -erhalte Einbettung, d.h. die partielle Ordnung bleibt vollständig erhalten. Folglich ist der Superkontext eine Verfeinerung des Subkontexts. Mit Hilfe der Abbildung lassen sich alle Begriffe des Subkontexts im Superkontexts wiederfinden. Wir erinnern uns, dass Routinen von uns als Objekte betrachtet werden und Merkmale als Attribute und dass die hier gewählte Darstellung der Aufruftabelle der transponierten Relation entspricht. Insofern fügen wir bei der inkrementellen Analyse im Kontext der, bei der wir weitere Merkmale betrachten, tatsächlich nur Zeilen hinzu. Szenarien für ein Zeichenprogramm Em Km Rm Tm Ev Kl Kv Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 23 / 37

Aufruftabelle set center e Em Km Rm Tm x Ev Kl Kv y set right upper set left lower set text set font set size load move circle move ellipse Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 24 / 37 Begriffsverband für den oberen Teil der Tabelle set size set font set text 1 set center e x y 2 3 8 4 5 set right upper set left lower 0 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 25 / 37

Begriffsverband für die ganze Tabelle set size set font set text 1 set right upper set left lower move ellipse set center e x y 2 3 8 10 4 5 6 7 9 move circle load 0 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 26 / 37 Szenarien versus Merkmale Ein Szenario kann mehrere Merkmale ausnutzen. Ein Merkmal kann in mehreren Szenarien ausgenutzt werden. Modellierung: Szenario ist eine Menge von Merkmalen Bsp.: Km = {K, m} und Kl = {K, l} und Em = {E, m} Modellierung abstrahiert von Reihenfolge Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 27 / 37

Szenarien S elliptisch Merkmale S M infrastruktur laden malen verschieben Routinen S R Em Km Rm Tm Ev Kl Kv load move circle move ellipse Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 28 / 37 Formaler Kontext K SM = (M, S, S M) mit Begriffsverband B SM : elliptisch malen 1 2 3 4 6 7 verschieben 5 laden 0 infrastruktur Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 29 / 37

set size set font set text 1 set right upper set left lower move ellipse set center e x y 2 3 8 10 4 5 6 7 9 move circle load 0 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 30 / 37 Begriffsverband für (M R, S, (M S) (R S)) set size set font set text 1 set right upper set left lower move ellipse set center e x y 2 3 8 malen 10 4 5 6 7 0 11 12 elliptisch 9 infrastruktur move circle verschieben laden load Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 31 / 37

set size set font set text 1 set right upper set left lower move ellipse set center e x y Malen 2 5 6 7 8 3 4 malen 10 0 11 elliptisch 12 9 move circle verschieben laden load infrastruktur bedingt spezifisch spezifisch geteilt relevant irrelevant Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 32 / 37 2006-01-30 Vorlesung Software-Reengineering Szenarien, Merkmale, Routinen set center e x y Malen 1 2 3 4 5 6 7 8 set size set font set text malen 10 bedingt spezifisch spezifisch geteilt relevant irrelevant 0 set right upper set left lower 11 elliptisch move ellipse 12 9 infrastruktur move circle verschieben laden load spezifischer Begriff. Ein Begriff b aus dem Verband B SR (K SR ) ist für ein Merkmal m genau dann spezifisch, wenn die Szenarien, die das Merkmal m haben, genau den Szenarien entsprechen, die im Inhalt des Begriffes b enthalten sind. Formal entspricht dies σ SM (m) = Inhalt SR (b) relevanter Begriff. Ein Begriff b ist für ein Merkmal m genau dann relevant, wenn der Begriff mehr Szenarien enthält als die, die Merkmal m haben. Im Sinne der Begriffsanalyse heißt das σ SM (m) Inhalt SR (b) bedingt spezifischer Begriff. Ein Begriff b ist von einem Merkmal m genau dann bedingt spezifisch, wenn der Begriff b alle Szenarien enthält, die Merkmal m aufweisen, darüberhinaus aber auch solche, die Merkmal m nicht aufweisen. Formal ist das der Fall, wenn σ SM (m) Inhalt SR (b)

1 2006-01-30 Vorlesung Software-Reengineering Szenarien, Merkmale, Routinen set center e x y Malen 2 3 4 5 6 7 8 set size set font set text malen 10 bedingt spezifisch spezifisch geteilt relevant irrelevant 0 set right upper set left lower 11 elliptisch move ellipse 12 9 infrastruktur move circle verschieben laden load geteilter Begriff. Ein Begriff b ist für ein Merkmal m genau dann geteilt, wenn der Begriff b Szenarien enthält, die das Merkmal m aufweisen, desweiteren aber auch noch andere Szenarien, dies das Merkmal m nicht haben. In formaler Schreibweise ausgedrückt ist das der Fall, wenn σ SM (m) Inhalt SR (b) aber weder σ SM (m) Inhalt SR (b) noch σ SM (m) Inhalt SR (b) irrelevanter Begriff. Ein Begriff b ist für Merkmal m genau dann irrelevant, wenn keine Szenarien, die das Merkmal m aufweisen, im Begriff b zu finden sind. σ SM (m) Inhalt SR (b) = set size set font set text 1 set right upper set left lower move ellipse set center e x y Elliptisch 2 8 3 4 5 malen 10 0 6 11 12 elliptisch 9 7 move circle verschieben laden load infrastruktur bedingt spezifisch spezifisch geteilt relevant irrelevant Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 33 / 37

set center e x y Laden 2 8 set size set font set text 3 4 5 malen 10 1 0 set right upper set left lower 11 6 elliptisch move ellipse 12 9 7 move circle verschieben laden load infrastruktur bedingt spezifisch spezifisch geteilt relevant irrelevant Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 34 / 37 Bewertung Kombination statischer und dynamischer Information und Begriffsanalyse reduziert den Suchraum drastisch. Begriffsverband unterstützt die Navigation bei statischer Suche. Die Relation für Begriffsanalyse ist tatsächlich eine Relation zwischen Routinen und Eingabedaten für Programmläufe Über Relation zwischen Szenarien und Merkmalen ist Verfeinerung möglich Begriffsverbände können unübersichtlich groß werden, wenn viele Merkmale betrachtet werden. Inkrementelle Kombination von Teilverbänden ist notwig (und möglich). Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 35 / 37

Wiederholungs- und Vertiefungsfragen I Wie kann man bei der Lokalisierung von Merkmalen prinzipiell vorgehen, d.h. welche Verfahren kommen in Frage? Wie könnnen Merkmale mit Hilfe der Begriffsanalyse identifiziert werden? Was ist der formale Kontext hierfür? Welche Rolle spielt der Begriffsverband? Wie lässt er sich interpretieren? Welche Rolle spielt die statische Analyse? Warum ist sie notwig? Wie funktioniert die inkrementelle Begriffsanalyse? Und wie kann dies für die ausgenutzt werden? Wie findet man Merkmale, wenn es keine Ein-zu-eins-Beziehung zwischen Merkmalen und Szenarien existiert? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 36 / 37 1 Chen und Rajlich 2000 Chen, Kunrong ; Rajlich, Václav: Case Study of Feature Location Using Depence Graph. In: Proceedings of the 8th International Workshop on Program Comprehension. Limerick, Irland : IEEE Computer Society Press, Juni 2000, S. 241 249 2 Eisenbarth u. a. 2003 Eisenbarth, Thomas ; Koschke, Rainer ; Simon, Daniel: Locating Features in Source Code. In: IEEE Computer Society Transactions on Software Engineering 29 (2003), März, Nr. 3, S. 210 224 3 Ganter und Wille 1996 Ganter, Bernhard ; Wille, Rudolf: Formale Begriffsanalyse: mathematische Grundlagen. Springer Verlag, 1996 4 Wilde u. a. 1992 Wilde, Norman ; Gomez, Juan A. ; Gust, Thomas ; Strasburg, Douglas: Locating User Functionality in Old Code. In: Proceedings of the International Conference on Software Maintenance. Orlando, FL, USA : IEEE Computer Society Press, November 1992, S. 200 205 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2005/2006 37 / 37