Vorlesung Software-Reengineering



Ähnliche Dokumente
Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm

Vorlesung Software-Reengineering

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

Validierung und Verifikation

Vorlesung Software-Reengineering

Reengineering und Refactoring von Softwarearchitekturen

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Vorlesung Software-Reengineering

Mit Legacy-Systemen in die Zukunft. adviion. in die Zukunft. Dr. Roland Schätzle

Validierung und Verifikation!

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit

Taxonomy of Evolution and Dependability. Integration Engineering SS 2009 Andreas Landerer

Einführung in die Informatik

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Softwareanforderungsanalyse

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

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

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

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Einführung in die Informatik

Vorlesung Software-Reengineering

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

SOMA Reverse Engineering

Vorlesung Software-Reengineering

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Software-Evolution im Staged Lifecycle Model

Some Software Engineering Principles

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Grundlagen Software Engineering

Die Kunst des Programmierens...

PPC und Data Mining. Seminar aus Informatik LV Michael Brugger. Fachbereich der Angewandten Informatik Universität Salzburg. 28.

Systemen im Wandel. Autor: Dr. Gerd Frenzen Coromell GmbH Seite 1 von 5

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

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Workflow, Business Process Management, 4.Teil

CMMI und SPICE im Automotive Umfeld

Vorlesung Software-Reengineering

Ideation-Day Fit für Innovation

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

Sehr geehrte Faktor-IPS Anwender,

Abschnitt 16: Objektorientiertes Design

Erfolgreiche ITIL Assessments mit CMMI bei führender internationaler Bank

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

SERVICE SUCHE ZUR UNTERSTÜTZUNG

Comparison of Software Products using Software Engineering Metrics

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Erstellen einer in OWA (Outlook Web App)

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Dokumentation für die Software-Wartung

Refactoring relationaler Datenbank. Shaoke Wu

Abschlussvortrag Masterarbeit: Operationalizing Architecture in an agile Software Projec

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Was ist Software-Architektur?

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

Seminar aus Netzwerke und Sicherheit

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Software Construction

Leseprobe. Thomas Konert, Achim Schmidt. Design for Six Sigma umsetzen ISBN: Weitere Informationen oder Bestellungen unter

Grundbegriffe der Informatik

Anforderungen an die HIS

SPI-Seminar : Interview mit einem Softwaremanager

Erfolgreiche Realisierung von grossen Softwareprojekten

Rezension des Papers Recovery, Redemption and Extreme Programming von Peter Schuh

IT-Beratung: Vom Geschäftsprozess zur IT-Lösung

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Grundbegriffe der Wirtschaftsinformatik Informationssystem I

Die Zukunft des B2B. Jürgen Weiss, hybris 2014 SAP AG or an SAP affiliate company. All rights reserved.

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Erfahrungsbreicht... Von der Auswahl bis zur Verwendung von Contour im Grossunternehmen.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Kurzanleitung zu. von Daniel Jettka

Cloud Architektur Workshop

Built in Function. BIF Compatibility. Eine anonymisierte Kundenpräsentation. von Siegfried Fürst SOFTWARE ENGINEERING GmbH

Code of Conduct (CoC)

WhiteStarUML Tutorial

Vorlesung Donnerstags, bis Uhr, HS12 Übung Dienstags, bis Uhr 4-5 ÜbungsbläMer (Programmieraufgaben)

WSR Softwarewartung und Prozessmodelle in Theorie und Praxis. Urs Kuhlmann Andreas Winter

Eberhard Lehmann: Projekte im Informatik-Unterricht Software Engineering, Ferd. Dümmlers Verlag, Bonn Inhaltsverzeichnis.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Objektorientierte Programmierung. Kapitel 12: Interfaces

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen.

16.4 Wiederverwendung von COTS-Produkten

Informatikgrundlagen (WS 2015/2016)

Use Cases. Use Cases

SMART Newsletter Education Solutions April 2015

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Requirements Engineering Research Group!

Meine Workflow Engine spricht BPMN ein Erfahrungsbericht

Transkript:

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 Administrativa Lernziele Motivation Wichtige Begriffe Wartung Reverse Engineering Restrukturierung Reengineering Wrapping Business Process Reengineering Ziele und Aufgaben Unterschiede zur Vorwärtsentwicklung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 3 / 59 Organisatorisches Vorlesung: montags, 10:15-11:45 Uhr, Raum MZH 7260 Vorlesung/Übung (alternierend): donnerstags, 8:30-10:00 Uhr, Raum MZH 5210 Erreichbar: TAB 2.57, Telefon 218-9671, koschke@tzi.de Sprechstunde nach Vereinbarung Video im Netz http://mlecture.uni-bremen.de bitte bei Stud.IP anmelden unter https://elearning.uni-bremen.de/ Literatur: Folien zur Vorlesung und verwendete Artikel http://www.informatik.uni-bremen.de/st/lehredetails. php?id=&lehre_id=309 Reengineering-Bibliographie: http://www.iste.uni-stuttgart.de/ps/reengineering/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 4 / 59

Scheinbedingungen Modulprüfung: 30 min mündliche Prüfung ansonsten 1 erfolgreiche Bearbeitung von praktischen Aufgaben (1-2 Personen): 1 Qualitätsanalyse (quellcodenah) 2 Refactoring/Transformation 3 Architekturprüfung 2 Fachgespräch (einzeln, benotet; zählt zu einem Drittel) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 5 / 59 Wegweiser Was versteht man unter Reengineering genau? Welche Gebiete des Reengineerings gibt es? Was ist der Unterschied zur klassischen Vorwärtsentwicklung? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 6 / 59

Lehman und Beladys (1980) Hypothesen Software-Evolution Gesetz des fortgesetzten Wandels Gesetz der ansteigenden Komplexität... ständige Anpassung erforderlich Komplexität muss kontrolliert und begrenzt werden Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 9 / 59 Wunsch Gewählte Lösung antizipiert mögliche Änderungen. Änderungen werden auf der adäquaten Ebene vorgenommen. Dokumentation wird mitgeführt. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 10 / 59

Wirklichkeit Die Zukunft lässt sich nur begrenzt vorhersagen. Ursprüngliche Systemstruktur wird ignoriert. Dokumentation ist unvollständig oder obsolet. Mitarbeiter verlassen das Projekt (und mit ihnen verschwindet das ganze Wissen). Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 11 / 59 Legacy System Legacy: A sum of money, or a specified article, given to another by will; anything handed down by an ancestor to a predecessor. Oxford English Dictionary Definition Legacy System: Software-System, das geerbt wurde und einen Wert darstellt. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 12 / 59

Staged Software Life Cycle Model Initial Development First running version Loss of evolvabilty Evolution Servicing Evolution Changes Servicing Patches Servicing discontinued Switch off Phase Out Close Down Rajlich und Bennett (2000) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 13 / 59 Versioned Staged Model (Rajlich und Bennett 2000) Initial Development First running version Version 1 Evolution Changes Servicing Servicing Patches Phase Out Close Down Evolution Changes Version 2 Servicing Servicing Patches Phase Out Close Down Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 14 / 59

Begriffe Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process- Reengineering Renovation Reclamation Reverse Engineering Restrukturierung Wrapping Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 15 / 59 Software-Wartung ANSI/IEEE Standard 729-1983: Modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a changed environment. Häufiger Sprachgebrauch: Änderungen am System nach dessen Auslieferung. Schließt Anpassungen an neue Anforderungen ein. Besserer Begriff hierfür: Software-Evolution. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 16 / 59

Aufwand für Software-Wartung korrektiv 22% 12% perfektiv adaptiv 25 % 41% erweiternd Lientz und Swanson (1980) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 17 / 59 Lientz und Swanson (1980) haben den Aufwand für verschiedene Wartungsarten anhand von 487 Software-Organisationen näher untersucht und festgestellt, dass ca. 80% der so genannten Wartung tatsächlich Erweiterungen sind (neue Funktionalität bzw. Anpassungen an neue Hardware- oder Software-Plattformen).

Aufwand im Software-Lifecycle Verstehen 40% Spezifikation 20% Entwickeln 20% Test 40% Entwurf 20% Kodierung 20% Ändern 40% Boehm (1981) Fjeldstad und Hamlen (1979) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 18 / 59 Eine typische Verteilung des Aufwands für Aktivitäten in der Erstentwicklung wurde von Boehm (1981) anhand groß angelegter empirischer Studien erhoben. Der Aufwand für die Erstentwicklung ist jedoch vergleichsweise gering, wenn man ihn mit dem Aufwand für Wartung vergleicht. Arthur (1988) hat insgesamt sechs Untersuchungen aus den Siebzigern zum Anteil der Wartung am Software-Lifecycle zusammen getragen. Der Aufwand liegt in diesen Untersuchungen zwischen 60 und 80 Prozent. Die Garnter Group, eine große Unternehmensberatung, sagt für die Zukunft sogar einen ansteigenden Aufwand voraus, der bis zu 95% der Gesamtkosten für Software einnehmen wird (Moad 1990). Fjeldstad und Hamlen (1979) haben den Aufwand für die einzelnen Wartungsaktivitäten empirisch näher untersucht und dabei heraus gefunden, dass Wartungsprogrammierer ca. 50% ihrer Zeit allein mit der Analyse beschäftigt sind, bevor sie eine Änderung tatsächlich vornehmen und testen können. Bei korrektiver Wartung (also Fehlerbeseitigung) liegt der Aufwand für die Analyse gar bei 60%.

Aufwand für Software-Evolution US Air Force System (Boehm, 1975): $ 30 / Statement bei Erstentwicklung $ 4000 / Statement in der Wartung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 19 / 59 Jahr-2000-Problem Beseitigung des Jahr-2000-Problems (geschätzt von Cassell, 1997) 500.000.000.000-1.000.000.000.000 DM Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 20 / 59

Reverse Engineering License Restrictions: Customer may not reverse engineer, disassemble, decompile, or translate the Software, or otherwise attempt to derive the source code of the Software. To me the flow of time is irrelevant. You decide what you want. I then merely make sure that it has already happened. The Hitch Hiker s Guide to the Galaxy Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 21 / 59 Reverse Engineering (Chikofsky und Cross II. 1990) Identifikation der Systemkomponenten und deren Beziehungen mit dem Ziel, das System in einer anderen Form oder auf höherem Abstraktionsniveau zu beschreiben. Forward Engineering Anforderungen Entwurf Code Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 22 / 59

Architekturrekonstruktion Reverse Engineering mit dem Ziel, eine Beschreibung der Architektur des Systems zu erstellen. Anforderungen Entwurf Code Architecture Reconstruction Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 23 / 59 Restrukturierung (Chikofsky und Cross II. 1990) Transformation einer Repräsentation in eine andere auf derselben Abstraktionsebene, ohne Änderung der Funktionalität des Systems. Anforderungen Entwurf Code Restrukturierung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 24 / 59

Reengineering (Chikofsky und Cross II. 1990) Untersuchung (Reverse Engineering) und Änderung des Systems, um es in neuer Form zu implementieren. Synonyme: Renovation, Reclamation. Forward Engineering Anforderungen Entwurf Code Restrukturierung Reverse Engineering Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 25 / 59 Reengineering-Varianten Reines Reengineering: das System soll lediglich restrukturiert werden keine Funktionalität kommt hinzu / wird geändert Erweiterndes Reengineering: System wird zunächst analysiert und/oder restrukturiert, um dann Funktionalität zu ändern oder hinzuzufügen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 26 / 59

Wrapping Das System erhält eine neue Schnittstelle, bleibt aber ansonsten unangetastet. Interimslösung, wenn System bald ausgewechselt werden soll. Notwendig, wenn das System Subsystem per Subsystem geändert werden muss. Oft eingesetzt, um zeichenorientierte Anwendungen mit einer graphischen Benutzerschnittstelle zu versehen. Organisatorische Gründe: altes Wartungspersonal behält Kontrolle über Wartung ihres Systems junges Wartungspersonal hat moderne Sicht Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 27 / 59 Business Process Reengineering Business process reengineering is the search for, and the implementation of, radical change in business process to achieve breakthrough results. T.A. Stewart, Fortune Magazine 93. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 28 / 59

Business Process Reengineering Etwas sachlicher: Wiedergewinnung der tatsächlichen Abläufe der Geschäftsprozesse (Workflow) (z.b. Bestellungswesen, Auftragsabwicklung etc.) Überarbeitung und Neudefinition der Abläufe Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 29 / 59 Ziele des Reverse Engineerings Kontrolle der Komplexität Gewinnung alternativer Sichten Wiedergewinnung verlorener Information Erkennung von Seiteneffekten Schaffung höherer Abstraktionen Unterstützung von Wiederverwendung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 30 / 59

Häufige Reengineering-Aufgaben Plattformanpassung Änderung der Programmiersprache neuer Standard, neue Sprache, neues Paradigma Benutzerschnittstelle zeichenorientiert hin zu graphisch orientiert Mainframe hin zu Client-Server-Architektur Datenbankumstellung Präventive Maßnahmen, wie z.b. Verbesserung des Information Hidings oder Remodularisierung, sind eher selten. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 31 / 59 Mass Changes Änderungen, die weite Teile des Codes bzw. sehr viele Systeme betreffen. Einführung des Euros Legacy to Internet Interoperability (Electronic Commerce) Änderung von Repräsentationsformen: Y2K Problem Erweiterung des Bar-Codes Unix-Datum Wunsch nach hohem Automatisierungsgrad Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 32 / 59

Reengineering in der Praxis Gegenwärtig zur Verfügung stehende Werkzeuge: grep symbolische Debugger Cross-Reference-Tools (fertige Parser, die Basisinformationen extrahieren; z.t. mit Visualisierung durch Graphen) UML-CASE-Tools, die Klassendiagramme extrahieren programmierbare Analyse- und Transformationsumgebungen basierend auf abstrakten Syntaxbäumen (z.b. Refine von Reasoning Systems, DMS von Semantic Designs, RainCode) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 33 / 59 Übersicht über diese Vorlesung Statische Programmanalysen und -repräsentationen Dynamische Analysen Program-Slicing Refactoring und Transformationen Software-Produkt-Metriken Erkennung duplizierten Codes Mustersuche Software-Visualisierung Begriffsanalyse Analyse und Restrukturierung von Vererbungshierarchien Merkmalsuche Software-Clustering, Architekturrekonstruktion und -validierung Reengineering-Projekte Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 34 / 59

Software Engineering Software engineering is reengineering on the empty system. Is it? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 35 / 59 Unterschiede Forward Eng. / Reengineering Forward Engineering auf grüner Wiese Problem noch unklar Aussagen über Aufwand, Dauer, Zuverlässigkeit etc. sind schwierig System existiert nicht Entwurf hat viele Freiheiten im sauberen Entwurf gibt es keine versteckten Abhängigkeiten Reengineering Problem weitgehend klar Idealerweise: Daten aus der Vergangenheit existieren, die Grundlage für Schätzungen darstellen System existiert Genaue Struktur/Qualität bekannt? Lösung ist durch existierendes System beschränkt Änderungen können globale Auswirkungen haben (viele versteckte Abhängigkeiten) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 36 / 59

Software Engineering & Reengineering Reengineering beginnt oft bereits während der Erstentwicklung: neue Anforderungen treffen ein Missverständnisse und Unklarheiten werden sichtbar der Entwurf hat sich als unzureichend erwiesen Integration anderer Komponenten macht Umstrukturierungen notwendig Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 37 / 59 Weiterführende Literatur Chikofsky und Cross II. (1990): Reverse Engineering and Design Recovery: A Taxonomy, IEEE Software definiert Terminologie; ist die begriffliche Grundlage Baumöl u. a. (1996): Einordnung und Terminologie des Reengineering führt z.t. deutsche Begriffe ein Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 38 / 59

Bücher I Demeyer u. a. (2002) stellen eine Reihe von Vorgehensweisen bei typischen Problemen des Reengineerings vor Müller (1997) bietet eine Einführung in verschiedene Aspekte des Reengineerings (Programmverstehen, Metriken, Sprachkonversion, Restrukturierung, Wiederverwendung, Migration zu objektorientierten Systemen, Managementaspekte) obwohl meine Vorlesung 1999 in völliger Unkenntnis dieses Buches entstanden ist, ist doch eine große Überlappung der Inhalte festzustellen (das Buch beschreibt aber weniger die konkreten Techniken) Fowler (2000) beschreibt so genannte Bad Smells (Code-Anomalien) und zugehörige Refactorings, um sie zu beseitigen Seacord u. a. (2003) beschreiben Methoden zur Modernisierung von Anwendungssystemen; in erster Linie Prozess- und Managementfragen werden erläutert Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 39 / 59 Bücher II Simon u. a. (2006) beschreiben, wie man die Wartbarkeit von Systemen messen kann; das Ergebnis ist eine Einstufung in Analogie zu CMMI jedoch für die innere Produktqualität Sneed u. a. (2005) beschreiben organisatorische Aspekte und verschiedene Prozesse für die Wartung und Weiterentwicklung von Software Masak (2006) diskutiert verschiedene Aspekte der Wartung und Evolution, insbesondere Beobachtungen, Metriken, Anti-Patterns und Management Pigoski (1996) behandelt Probleme und Managementlösungen der Software-Wartung Lehner (1989) beschreibt Probleme und Managementlösungen der Software-Wartung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 40 / 59

1 Agrawal und Horgan 1990 Agrawal, Hiralal ; Horgan, Joseph R.: Dynamic Program Slicing. In: Proceedings of the Conference on Programming Language Design and Implementation. White Plains, New York, USA, Juni 1990 2 Arthur 1988 Arthur, L.J.: Software Evolution: The Software Maintenance Challenge. New York, NY : John Wiley & Sons, 1988 3 Baker 1997 Baker, Brenda: Parameterized duplication in strings: Algorithms and an application to software maintenance. 26 (1997), Oktober, Nr. 5, S. 1343 1362 4 Baker 1995 Baker, Brenda S.: On Finding Duplication and Near-Duplication in Large Software Systems. In: Wills, L. (Hrsg.) ; Newcomb, P. (Hrsg.) ; Chikofsky, E. (Hrsg.): Working Conference on Reverse Engineering. Los Alamitos, California : IEEE Computer Society Press, Juli 1995, S. 86 95. URL http://citeseer.nj.nec.com/baker95finding.html Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 41 / 59 5 Baumöl u. a. 1996 Baumöl, Ulrike ; Borchers, Jens ; Eicker, Stefan ; Hildebrand, Knut ; Jung, Reinhard ; Lehner, Franz: Einordnung und Terminologie des Software Reengineering. In: Informatik Spektrum 19 (1996), S. 191 195 6 Baxter u. a. 1998 Baxter, Ira D. ; Yahin, Andrew ; Moura, Leonardo ; Sant Anna, Marcelo ; Bier, Lorraine: Clone Detection Using Abstract Syntax Trees. In: Koshgoftaar, T. M. (Hrsg.) ; Bennett, K. (Hrsg.): International Conference on Software Maintenance, IEEE Computer Society Press, 1998, S. 368 378. ISBN 0-7803-5255-6, 0-8186-8779-7, 0-8186-8795-9 7 Bellon 2003 Bellon, Stefan: Vergleich von Klonerkennungstechniken. Fakultät Informatik, Universität Stuttgart, Deutschland, Diplomarbeit, 2003 8 Bellon u. a. 2007 Bellon, Stefan ; Koschke, Rainer ; Antoniol, Giulio ; Krinke, Jens ; Merlo, Ettore: Comparison and Evaluation of Clone Detection Tools. In: IEEE Computer Society Transactions on Software Engineering 33 (2007), September, Nr. 9, S. 577 591 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 42 / 59

9 Bennett 1994 Bennett, P.A.: Software Development for the Channel Tunnel: a Summary. In: High Integrity Systems 1 (1994), Nr. 2, S. 213 220 10 Boehm 1981 Boehm, Barry: Software Engineering Economics. Englewood Cliffs, NJ : Prentice Hall, 1981 11 Bruntink und van Deursen 2004 Bruntink, M. ; Deursen, A. van: Predicting Class Testability Using Object-Oriented Metrics. In: Proceedings of the Fourth IEEE International Workshop on Source Code Analysis and Manipulation, IEEE Computer Society Press, September 2004 12 Chidamber 1994 Chidamber, S.: Metrics Suite For Object Oriented Design, M.I.T, Cambridge, Dissertation, 1994 13 Chidamber und Kemerer 1994 Chidamber, S.R. ; Kemerer, C.F.: A Metrics Suite for Object-Oriented Design. In: IEEE Computer Society Transactions on Software Engineering 20 (1994), Juni, Nr. 6, S. 476 493 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 43 / 59 14 Chikofsky und Cross II. 1990 Chikofsky, Elliot J. ; Cross II., James H.: Reverse Engineering and Design Recovery: A Taxonomy. In: IEEE Software 7 (1990), Januar, Nr. 1, S. 13 17 15 Clements u. a. 2002 Clements, Paul ; Bachmann, Felix ; Bass, Len ; Garlan, David ; Ivers, James ; Little, Reed ; Nord, Robert ; Stafford, Judith: Documenting Software Architecture. Boston : Addison-Wesley, 2002 16 Cordy u. a. 2004 Cordy, James R. ; Dean, Thomas R. ; Synytskyy, Nikita: Practical language-independent detection of near-miss clones. In: Conference of the Centre for Advanced Studies on Collaborative research, IBM Press, 2004, S. 1 12 17 Cytron u. a. 1991 Cytron, Ron ; Ferrante, Jeanne ; Rosen, Barry K. ; Wegman, Mark N. ; Zadeck, F. K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. In: ACM Transactions on Programming Languages and Systems 13 (1991), Oktober, Nr. 4, S. 451 490 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 44 / 59

18 Dagpinar und Jahnke 2003 Dagpinar, M. ; Jahnke, J.: Predicting Maintainability with Object-Oriented Metrics An Empirical Comparison. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, 2003 19 Demeyer u. a. 2002 Demeyer, Serge ; Ducasse, Stephane ; Nierstrasz, Oscar: Object Oriented Reengineering Patterns. Morgan Kaufmann, 2002 20 van Deursen u. a. 2004 Deursen, Arie van ; Hofmeister, Christine ; Koschke, Rainer ; Moonen, Leon ; Riva, Claudio: Symphony: View-Driven Software Architecture Reconstruction. In: IEEE/IFIP Working Conference on Software Architecture, IEEE Computer Society Press, Juni 2004, S. 122 132 21 Ducasse u. a. 1999 Ducasse, Stéphane ; Rieger, Matthias ; Demeyer, Serge: A Language Independent Approach for Detecting Duplicated Code. In: Proceedings of the International Conference on Software Maintenance (ICSM99), 1999, S. 109 118 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 45 / 59 22 Ernst 2000 Ernst, Michael: Dynamically Discovering Likely Program Invariants. Seattle, Washington, USA, University of Washington, Department of Computer Science and Engineering, Dissertation, August 2000 23 Fenton und Pfleeger 1996 Fenton, N. ; Pfleeger, S.: Software Metrics: A Rigorous and Practical Approach. 2nd. London : International Thomson Computer Press, 1996 24 Fenton und Ohlsson 2000 Fenton, Norman E. ; Ohlsson, Niclas: Quantitative Analysis of Faults and Failures in a Complex Software System. In: IEEE Computer Society Transactions on Software Engineering 26 (2000), August, Nr. 8, S. 797 814 25 Fjeldstad und Hamlen 1979 Fjeldstad, R.K. ; Hamlen, W.T.: Application Program Maintenance Study: Report to our Respondents. In: Proceedings of the GUIDE 48. Philadelphia, PA, 1979 26 Fowler 2000 Fowler, Martin: Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2000 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 46 / 59

27 Grady 1994 Grady, R.B.: Successfully Applying Software Metrics. In: IEEE Computer 27 (1994), September, Nr. 9, S. 18 25 28 Harmann u. a. 2003 Harmann, Mark ; Binkley, David ; Danicic, Sebastian: Amorphous Program Slicing. In: Journal of Systems and Software 68 (2003), Nr. 1, S. 45 63 29 Higo u. a. 2002 Higo, Yoshiki ; Ueda, Yasushi ; Kamiya, Toshihro ; Kusumoto, Shinji ; Inoue, Katsuro: On Software Maintenance Process Improvement Based on Code Clone Analysis. In: International Conference on Product Focused Software Process Improvement Bd. 2559, Springer, 2002, S. 185 197. ISBN ISBN:3-540-00234-0 30 Hopcraft und Ullman 1983 Hopcraft ; Ullman: Data structures and algorithms. Addison-Wesley, 1983 31 Horwitz u. a. 1990 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. 26 60 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 47 / 59 32 IEEE Std. 1471-2000 2000 IEEE P1471: IEEE Recommended Practice for Architectural Description of Software-intensive Systems Std. 1471-2000. 2000 33 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, 1994 34 Johnson 1993 Johnson, J. H.: Identifying redundancy in source code using fingerprints. In: Conference of the Centre for Advanced Studies on Collaborative research, IBM Press, 1993, S. 171 183 35 Johnson 1994 Johnson, J. H.: Substring matching for clone detection and change tracking. In: International Conference on Software Maintenance, IEEE Computer Society Press, 1994, S. 120 126 36 Kamiya u. a. 2002 Kamiya, Toshihiro ; Kusumoto, Shinji ; Inoue, Katsuro: CCFinder: A Multi-Linguistic Token-based Code Clone Detection System for Large Scale Source Code. In: IEEE Computer Society Transactions on Software Engineering 28 (2002), Nr. 7, S. 654 670 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 48 / 59

37 Komondoor und Horwitz 2001 Komondoor, R. ; Horwitz, S.: Using slicing to identify duplication in source code. In: Proc. Int. Symposium on Static Analysis, Juli 2001, S. 40 56 38 Kontogiannis 1997 Kontogiannis, K.: Evaluation Experiments on the Detection of Programming Patterns Using Software Metrics. In: Working Conference on Reverse Engineering, 1997, S. 44 53 39 Koschke 2000 Koschke, Rainer: Atomic Architectural Component Recovery for Program Understanding and Evolution, Universität Stuttgart, Deutschland, Dissertation, 2000 40 Koschke u. a. 2006 Koschke, Rainer ; Falke, Raimar ; Frenzel, Pierre: Clone Detection Using Abstract Syntax Suffix Trees. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, 2006, S. 253 262 41 Koschke u. a. 1998 Koschke, Rainer ; Girard, Jean-François ; Würthner, Martin: An Intermediate Representation for Reverse Engineering Analyses. In: Proceedings of the 5th Working Conference on Reverse Engineering. Honolulu, HI, USA : IEEE Computer Society Press, Oktober 1998, S. 241 250 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 49 / 59 42 Koschke und Simon 2003 Koschke, Rainer ; Simon, Daniel: Hierarchical Reflexion Models. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, November 2003, S. 36 45 43 Krinke 2001 Krinke, Jens: Identifying Similar Code with Program Dependence Graphs. In: Working Conference on Reverse Engineering, 2001, S. 301 309 44 Krinke 2004 Krinke, Jens: Slicing, Chopping, and Path Conditions with Barriers. In: Software Quality Journal 12 (2004), Nr. 4, S. 339 360 45 Lanza und Marinescu 2006 Lanza, Michele ; Marinescu, Radu: Object-Oriented Metrics in Practice - Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems. Springer Verlag, 2006. ISBN 978-3-540-24429-5 46 Lehman 1980 Lehman, Meir M.: Programs, Life Cycles and Laws of Program Evolution. In: Proceedings of the IEEE, Special Issue on Software Evolution 68 (1980), September, Nr. 9, S. 1060 1076 47 Lehner 1989 Lehner, Franz: Nutzung und Wartung von Software. Carl Hanser Verlag, 1989 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 50 / 59

48 Li u. a. 2004 Li, Z. ; Lu, S. ; Myagmar, S. ; Zhou, Y.: CP-Miner: A tool for Finding copy-paste and related bugs in operating system code. In: Operating System Design and Implementation, 2004, S. 289 302 49 Lientz und Swanson 1980 Lientz, B.P. ; Swanson, E.B.: Software Maintenance Management. Reading, MA : Addison-Wesley, 1980 50 Marcus und Maletic 2001 Marcus, A. ; Maletic, J.I.: Identification of high-level concept clones in source code. In: International Conference on Automated Software Engineering, 2001, S. 107 114 51 Marinescu 2002 Marinescu, Radu: Measurement and Quality in Object-Oriented Design, Politehnica University of Timisoara, PhD thesis, 2002. URL http://loose.upt.ro/download/thesis/thesis.zip 52 Masak 2006 Masak, Dieter: Legacysoftware. Springer, 2006 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 51 / 59 53 Mayrand u. a. 1996 Mayrand, Jean ; Leblanc, Claude ; Merlo, Ettore M.: Experiment on the Automatic Detection of Function Clones in a Software System using Metrics. In: Proceedings of the International Conference on Software Maintenance. Washington : IEEE Computer Society Press, November 4 8 1996, S. 244 254. ISBN 0-8186-7678-7 54 McCreight 1976 McCreight, E. M.: A space-economical suffix-tree construction algorithm. In: Journal of the ACM 23 (1976), Nr. 2, S. 262 272 55 Moad 1990 Moad, J.: Maintaining the Competitive Edge. In: DATAMATION, 1990, S. 61 66 56 Morgan 1998 Morgan, Robert: Building an Optimizing Compiler. Digital Press, 1998 57 Muchnick 1997 Muchnick, Steven S.: Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 52 / 59

58 Murphy u. a. 1995 Murphy, Gail C. ; Notkin, David ; Sullivan, Kevin: Software Reflexion Models: Bridging the Gap Between Source and High-Level Models. In: Proc. of the Third ACM SIGSOFT Symposium on the Foundations of Software Engineering, ACM Press, 1995, S. 18 28 59 Murphy u. a. 2001 Murphy, Gail C. ; Notkin, David ; Sullivan, Kevin J.: Software Reflexion Models: Bridging the Gap between Design and Implementation. In: IEEE Computer Society Transactions on Software Engineering 27 (2001), April, Nr. 4, S. 364 380 60 Muthanna u. a. 2000 Muthanna, S. ; Kontogiannis, K. ; Ponnambalam, K. ; Stacey, B.: A Maintainability Model for Industrial Software Systems Using Design Level Metrics. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, 2000 61 Müller 1997 Müller, Bernd: Reengineering Eine Einführung. B.G. Teubner, 1997 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 53 / 59 62 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. 177 184 63 Pigoski 1996 Pigoski, Thomas M.: Practical Software Maintenance: Best Practices for Managing Your Software Inve John Wiley & Sons, Inc., 1996 64 Plödereder 2008 Plödereder, Erhard: Vorlesung Programmanalysen und Compilerbau. Vorlesungsskriptum. Oktober 2008. URL http://www.iste.uni-stuttgart.de/ps/lehre/ws0809/v_ Programmanalysen/skript-CB+ProgAn-08.pdf 65 Quante und Koschke 2006 Quante, Jochen ; Koschke, Rainer: Dynamic Object Process Graphs. In: Proceedings of the European Conference on Software Maintenance and Reengineering. Bari, Italy, März 2006 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 54 / 59

66 Rajlich und Bennett 2000 Rajlich, Vaclav T. ; Bennett, Keith H.: A Staged Model for the Software Life Cycle. In: IEEE Computer 33 (2000), Nr. 7, S. 66 71 67 Reps und Rosay 1995 Reps, T. ; Rosay, G.: Precise Interprocedural Chopping. In: Proc. Symposium on the Foundations of Software Engineering, 1995 68 Richner und Ducasse 2002 Richner, Tamar ; Ducasse, Stéphane: Using Dynamic Information for the Iterative Recovery of Collaborations and Roles. In: Proceedings of the International Conference on Software Maintenance. Montreal, Canada : IEEE Computer Society Press, Oktober 2002, S. 34 43 69 Rieger 2005 Rieger, Matthias: Effective Clone Detection Without Language Barriers, University of Bern, Switzerland, Dissertation, 2005 70 Saeed u. a. 2003 Saeed, M. ; Maqbool, O. ; Babri, H.A. ; Hassan, S.Z. ; Sarwar, S.M.: Software Clustering Techniques and the Use of Combined Algorithm. In: European Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 2003, S. 301 310 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 55 / 59 71 Seacord u. a. 2003 Seacord, Robert C. ; Plakosh, Daniel ; Lewis, Grace A.: Modernizing Legacy Systems. Addison-Wesley, 2003 72 Shaw und Garlan 1993 Shaw, Mary ; Garlan, David: An Introduction to Software Architecture. In: Advances in Software Engineering and Knowledge Engineering. River Edge, NJ : World Scientific Publishing Company, 1993 73 Simon u. a. 2006 Simon, Frank ; Seng, Olaf ; Mohnhaupt, Thomas: Code-Quality-Management Technische Qualität industrieller Softwaresysteme transparent und vergleichbar gemacht. dpunkt.verlag, 2006 74 Sneed 1995 Sneed, Harry: Planning the Reengineering of Legacy Systems. In: IEEE Software (1995), January. beschreibt die Planung von Reengineering-Projekten 75 Sneed 1999 Sneed, Harry: Risks involved in Reengineering Projects. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, Oktober 1999, S. 204 213. beschreibt typische Risiken bei Reengineering-Projekten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 56 / 59