32
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universit¨ at Bremen Wintersemester 2013/1 ¨ Uberblick I Einf¨ uhrung Statische Programmanalyse Dynamische Analyse Program Slicing Metriken Klonerkennung

Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Vorlesung Software-Reengineering

Prof. Dr. Rainer Koschke

Arbeitsgruppe SoftwaretechnikFachbereich Mathematik und Informatik

Universitat Bremen

Wintersemester 2013/1

Uberblick IEinfuhrung

Statische Programmanalyse

Dynamische Analyse

Program Slicing

Metriken

Klonerkennung

Page 2: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Einfuhrung in das Software-Reengineering I

EinfuhrungAdministrativaLernzieleMotivationWichtige BegriffeWartungReverse EngineeringRestrukturierungReengineeringWrappingBusiness Process ReengineeringZiele und AufgabenUnterschiede zur Vorwartsentwicklung

3 / 508

Organisatorisches

Vorlesung:montags, 10:30 – 12:00 Uhr, MZH 1450donnerstags, 14:00 s.t. – 15:30 Uhr, MZH 1450

Erreichbar: TAB 2.57, Telefon 218-64481, [email protected]

Sprechstunde nach VereinbarungVideo im Netz http://mlecture.uni-bremen.de

bitte bei Stud.IP anmelden unterhttps://elearning.uni-bremen.de/

Literatur: Folien zur Vorlesung und verwendete Artikelhttp://www.informatik.uni-bremen.de/st/lehredetails.php?id=&lehre_id=412

4 / 508

Page 3: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Scheinbedingungen

Modulprufung: 30 min mundliche Prufungansonsten

1 erfolgreiche Bearbeitung von praktischen Aufgaben (1-2Personen): Eclipse-Plugins fur

1 Abhangigkeitsanalyse2 Metrikberechnung3 Implementierung zweier Refactorings

2 Fachgesprach (einzeln, benotet; zahlt zu einem Drittel)

5 / 508

Wegweiser

Was versteht man unter Reengineering genau?Welche Gebiete des Reengineerings gibt es?Was ist der Unterschied zur klassischenVorwartsentwicklung?

6 / 508

Page 4: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Lehman und Beladys (1980) Hypothesen

Software-Evolution

Gesetz des fortgesetzten WandelsGesetz der ansteigenden Komplexitat. . .

⇒ standige Anpassung erforderlich⇒ Komplexitat muss kontrolliert und begrenzt werden

9 / 508

Wunsch

Gewahlte Losung antizipiert mogliche Anderungen.Anderungen werden auf der adaquaten Ebene vorgenommen.Dokumentation wird mitgefuhrt.

10 / 508

Page 5: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Wirklichkeit

Die Zukunft lasst sich nur begrenzt vorhersagen.Ursprungliche Systemstruktur wird ignoriert.Dokumentation ist unvollstandig oder obsolet.Mitarbeiter verlassen das Projekt (und mit ihnen verschwindetdas ganze Wissen).

11 / 508

Legacy System

Legacy:“A sum of money, or a specified article, given to anotherby will; anything handed down by an ancestor to apredecessor.”

– Oxford English Dictionary

DefinitionLegacy System: Software-System, das geerbt wurde und einenWert darstellt.

12 / 508

Page 6: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Staged Software Life Cycle Model

Evolution

Servicing

Phase−Out

Close−Down

Initial Development

Evolution ChangesFirst running version

Servicing PatchesLoss of evolvabilty

Servicing discontinued

Switch−off

– Rajlich und Bennett (2000)

13 / 508

Versioned Staged Model (Rajlich und Bennett 2000)

Initial Development

Phase−Out

Close−Down

ServicingServicing Patches

Version 1

Evolution Changes

Phase−Out

Close−Down

ServicingServicing Patches

Version 2

Evolution Changes

First running version

14 / 508

Page 7: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Begriffe

Software-WartungSoftware-EvolutionReengineeringSoftware-ReengineeringBusiness-Process-Reengineering

RenovationReclamationRefactoringReverse EngineeringRestrukturierungWrapping

16 / 508

Software-Wartung

ANSI/IEEE Standard 729-1983:“Modification of a software product after delivery tocorrect faults, to improve performance or other attributes,or to adapt the product to a changed environment.”

Haufiger Sprachgebrauch: Anderungen am System nach dessenAuslieferung.Schließt Anpassungen an neue Anforderungen ein.Besserer Begriff hierfur: Software-Evolution.

17 / 508

Page 8: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Aufwand fur Software-Wartung

22%

korrektiv

25 %adaptiv

perfektiv

12%

erweiternd41%

– Lientz und Swanson (1980)

18 / 508

Lientz und Swanson (1980) haben den Aufwand fur verschiedeneWartungsarten anhand von 487 Software-Organisationen naheruntersucht und festgestellt, dass ca. 80% der so genannten Wartungtatsachlich Erweiterungen sind (neue Funktionalitat bzw. Anpassungenan neue Hardware- oder Software-Plattformen).

Page 9: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Aufwand im Software-Lifecycle

Entwurf

20%

Test

40%

Spezifikation

20%

Kodierung

20%

Entwickeln 20%

Verstehen 40%

Ändern 40%

Boehm (1981) Fjeldstad und Hamlen (1979)19 / 508

Eine typische Verteilung des Aufwands fur Aktivitaten in derErstentwicklung wurde von Boehm (1981) anhand groß angelegterempirischer Studien erhoben.

Der Aufwand fur die Erstentwicklung ist jedoch vergleichsweise gering,wenn man ihn mit dem Aufwand fur Wartung vergleicht. Arthur (1988)hat insgesamt sechs Untersuchungen aus den Siebzigern zum Anteil derWartung am Software-Lifecycle zusammen getragen. Der Aufwand liegtin diesen Untersuchungen zwischen 60 und 80 Prozent. Die GarnterGroup, eine große Unternehmensberatung, sagt fur die Zukunft sogareinen ansteigenden Aufwand voraus, der bis zu 95% der Gesamtkosten furSoftware einnehmen wird (Moad 1990).

Fjeldstad und Hamlen (1979) haben den Aufwand fur die einzelnenWartungsaktivitaten empirisch naher untersucht und dabei herausgefunden, dass Wartungsprogrammierer ca. 50% ihrer Zeit allein mit derAnalyse beschaftigt sind, bevor sie eine Anderung tatsachlich vornehmenund testen konnen. Bei korrektiver Wartung (also Fehlerbeseitigung) liegtder Aufwand fur die Analyse gar bei 60%.

Page 10: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Aufwand fur Software-Evolution

US Air Force System (Boehm, 1975):$ 30 / Statement bei Erstentwicklung$ 4000 / Statement in der Wartung

20 / 508

Jahr-2000-Problem

Beseitigung des Jahr-2000-Problems (geschatzt von Cassell, 1997)500.000.000.000 - 1.000.000.000.000 DM

21 / 508

Page 11: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Reverse Engineering

License Restrictions:“Customer may not reverse engineer, disassemble,decompile, or translate the Software, or otherwiseattempt to derive the source code of the Software.”

“To me the flow of time is irrelevant. You decide whatyou want. I then merely make sure that it has alreadyhappened.”

– The Hitch Hiker’s Guide to the Galaxy

22 / 508

Reverse Engineering (Chikofsky und Cross II. 1990)

DefinitionReverse Engineering: Identifikation der Systemkomponenten undderen Beziehungen mit dem Ziel, das System in einer anderenForm oder auf hoherem Abstraktionsniveau zu beschreiben.

Reverse

Engineering

Forward

Engineering

Anforderungen Entwurf Code

24 / 508

Page 12: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Architekturrekonstruktion

DefinitionArchitekturrekonstruktion: Reverse Engineering mit dem Ziel,eine Beschreibung der Architektur des Systems zu erstellen.

Architecture

Reconstruction

Anforderungen Entwurf Code

25 / 508

Restrukturierung (Chikofsky und Cross II. 1990)

DefinitionRestrukturierung: Transformation einer Reprasentation in eineandere auf derselben Abstraktionsebene, ohne Anderung derFunktionalitat des Systems.

Restrukturierung

Anforderungen Entwurf Code

26 / 508

Page 13: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Reengineering (Chikofsky und Cross II. 1990)

DefinitionReengineering: Untersuchung (Reverse Engineering) undAnderung des Systems, um es in neuer Form zu implementieren.Synonyme: Renovation, Reclamation.

Restrukturierung

Reverse

Engineering

Forward

Engineering

Anforderungen Entwurf Code

27 / 508

Reengineering-Varianten

Reines Reengineering:das System soll lediglich restrukturiert werdenkeine Funktionalitat kommt hinzu / wird geandert

Erweiterndes Reengineering:

System wird zunachst analysiert und/oder restrukturiert, umdann Funktionalitat zu andern oder hinzuzufugen

28 / 508

Page 14: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Wrapping

Das System erhalt eine neue Schnittstelle, bleibt aber ansonstenunangetastet.

Interimslosung, wenn System bald ausgewechselt werden soll.Notwendig, wenn das System Subsystem per Subsystemgeandert werden muss.Oft eingesetzt, um zeichenorientierte Anwendungen mit einergraphischen Benutzerschnittstelle zu versehen.Organisatorische Grunde:

”altes“ Wartungspersonal behalt Kontrolle uber Wartung

”ihres“ Systems

”junges“ Wartungspersonal hat ”moderne“ Sicht

29 / 508

Business Process Reengineering

“Business process reengineering is the search for, and theimplementation of, radical change in business process toachieve breakthrough results.”

– T.A. Stewart, Fortune Magazine’93.

30 / 508

Page 15: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Business Process Reengineering

Etwas sachlicher:

Wiedergewinnung der tatsachlichen Ablaufe derGeschaftsprozesse (Workflow) (z.B. Bestellungswesen,Auftragsabwicklung etc.)Uberarbeitung und Neudefinition der Ablaufe

31 / 508

Ziele des Reverse Engineerings

Kontrolle der KomplexitatGewinnung alternativer SichtenWiedergewinnung verlorener InformationErkennung von SeiteneffektenSchaffung hoherer AbstraktionenUnterstutzung von Wiederverwendung

32 / 508

Page 16: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Haufige Reengineering-Aufgaben

PlattformanpassungAnderung der Programmiersprache

neuer Standard, neue Sprache, neues ParadigmaBenutzerschnittstelle zeichenorientiert hin zu graphischorientiertMainframe hin zu Client-Server-ArchitekturDatenbankumstellung

Praventive Maßnahmen, wie z.B. Verbesserung des InformationHidings oder Remodularisierung, sind eher selten.

33 / 508

Mass Changes

Anderungen, die weite Teile des Codes bzw. sehr viele Systemebetreffen.

Einfuhrung des EurosLegacy to Internet Interoperability (Electronic Commerce)Anderung von Reprasentationsformen:

Y2K ProblemErweiterung des Bar-CodesUnix-Datum

→ Wunsch nach hohem Automatisierungsgrad

34 / 508

Page 17: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Reengineering in der Praxis

Gegenwartig zur Verfugung stehende Werkzeuge:grepsymbolische DebuggerCross-Reference-Tools (fertige Parser, die Basisinformationenextrahieren; z.T. mit Visualisierung durch Graphen)UML-CASE-Tools, die Klassendiagramme extrahierenprogrammierbare Analyse- und Transformationsumgebungenbasierend auf abstrakten Syntaxbaumen (z.B. Refine vonReasoning Systems, DMS von Semantic Designs, RainCode)

35 / 508

Ubersicht uber diese Vorlesung

StatischeProgrammanalysen und-reprasentationenDynamische AnalysenProgram-SlicingRefactoring undTransformationenSoftware-Produkt-MetrikenErkennung dupliziertenCodesMustersuche

Software-VisualisierungBegriffsanalyseAnalyse undRestrukturierung vonVererbungshierarchienMerkmalsucheSoftware-Clustering, Ar-chitekturrekonstruktionund -validierungReengineering-Projekte

36 / 508

Page 18: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Software Engineering

“Software engineering is reengineering onthe empty system.”

“Is it?”

37 / 508

Unterschiede Forward Eng. / ReengineeringForward Engineering aufgruner Wiese

Problem noch unklarAussagen uber Aufwand,Dauer, Zuverlassigkeit etc.sind schwierigSystem existiert nicht

Entwurf hat vieleFreiheitenim sauberen Entwurf gibtes keine verstecktenAbhangigkeiten

Reengineering

Problem weitgehend klarIdealerweise: Daten aus derVergangenheit existieren, dieGrundlage fur SchatzungendarstellenSystem existiert

Genaue Struktur/Qualitatbekannt?Losung ist durchexistierendes SystembeschranktAnderungen konnenglobale Auswirkungenhaben (viele versteckteAbhangigkeiten)

38 / 508

Page 19: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Software Engineering & Reengineering

Reengineering beginnt oft bereits wahrend der Erstentwicklung:

neue Anforderungen treffen einMissverstandnisse und Unklarheiten werden sichtbarder Entwurf hat sich als unzureichend erwiesenIntegration anderer Komponenten macht Umstrukturierungennotwendig

39 / 508

Weiterfuhrende Literatur

Chikofsky und Cross II. (1990): “Reverse Engineering andDesign Recovery: A Taxonomy”, IEEE Software

definiert Terminologie; ist die begriffliche GrundlageBaumol u. a. (1996): “Einordnung und Terminologie desReengineering”

fuhrt z.T. deutsche Begriffe ein

40 / 508

Page 20: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

Bucher I

Demeyer u. a. (2002) stellen eine Reihe von Vorgehensweisenbei typischen Problemen des Reengineerings vorMuller (1997) bietet eine Einfuhrung in verschiedene Aspektedes Reengineerings (Programmverstehen, Metriken,Sprachkonversion, Restrukturierung, Wiederverwendung,Migration zu objektorientierten Systemen,Managementaspekte)

obwohl meine Vorlesung 1999 in volliger Unkenntnis diesesBuches entstanden ist, ist doch eine große Uberlappung derInhalte festzustellen (das Buch beschreibt aber weniger diekonkreten Techniken)

Fowler (2000) beschreibt so genannte Bad Smells(Code-Anomalien) und zugehorige Refactorings, um sie zubeseitigen

41 / 508

Bucher IISeacord u. a. (2003) beschreiben Methoden zurModernisierung von Anwendungssystemen; in erster LinieProzess- und Managementfragen werden erlautertSimon u. a. (2006) beschreiben, wie man die Wartbarkeit vonSystemen messen kann; das Ergebnis ist eine Einstufung inAnalogie zu CMMI jedoch fur die innere ProduktqualitatSneed u. a. (2005) beschreiben organisatorische Aspekte undverschiedene Prozesse fur die Wartung und Weiterentwicklungvon SoftwareMasak (2006) diskutiert verschiedene Aspekte der Wartungund Evolution, insbesondere Beobachtungen, Metriken,Anti-Patterns und ManagementPigoski (1996) behandelt Probleme und Managementlosungender Software-WartungLehner (1989) beschreibt Probleme und Managementlosungender Software-Wartung

42 / 508

Page 21: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

1 Agrawal und Horgan 1990 Agrawal, Hiralal ; Horgan,Joseph R.: Dynamic Program Slicing. In: Proceedings of theConference on Programming Language Design andImplementation, ACM Press, Juni 1990, S. 246–256

2 Arthur 1988 Arthur, L.J.: Software Evolution: The SoftwareMaintenance Challenge. New York, NY : John Wiley & Sons,1988

3 Baker 1997 Baker, Brenda: Parameterized duplication instrings: Algorithms and an application to software maintenance.26 (1997), Oktober, Nr. 5, S. 1343–1362

4 Baker 1995 Baker, Brenda S.: On Finding Duplication andNear-Duplication in Large Software Systems. In: Wills, L.(Hrsg.) ; Newcomb, P. (Hrsg.) ; Chikofsky, E. (Hrsg.):Proceedings of the Working Conference on Reverse Engineering.Los Alamitos, California : IEEE Computer Society Press, Juli1995, S. 86–95. – URLhttp://citeseer.nj.nec.com/baker95finding.html

43 / 508

5 Basili und Weiss 1984 Basili, R. ; Weiss, D. M.: AMethodology for Collecting Valid Software Engineering Data. In:IEEE Computer Society Transactions on Software Engineering10 (1984), November, Nr. 6, S. 728–738

6 Baumol u. a. 1996 Baumol, Ulrike ; Borchers, Jens ;Eicker, Stefan ; Hildebrand, Knut ; Jung, Reinhard ;Lehner, Franz: Einordnung und Terminologie des SoftwareReengineering. In: Informatik Spektrum 19 (1996), S. 191–195

7 Baxter u. a. 1998 Baxter, Ira D. ; Yahin, Andrew ; Moura,Leonardo ; Sant’Anna, Marcelo ; Bier, Lorraine: CloneDetection Using Abstract Syntax Trees. In: Koshgoftaar,T. M. (Hrsg.) ; Bennett, K. (Hrsg.): Proceedings of theInternational Conference on Software Maintenance, IEEEComputer Society Press, 1998, S. 368–378. – ISBN0-7803-5255-6, 0-8186-8779-7, 0-8186-8795-9

8 Bellon 2003 Bellon, Stefan:Vergleich von Klonerkennungstechniken. Fakultat Informatik,Universitat Stuttgart, Deutschland, Diplomarbeit, 2003

44 / 508

Page 22: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

9 Bellon u. a. 2007 Bellon, Stefan ; Koschke, Rainer ;Antoniol, Giulio ; Krinke, Jens ; Merlo, Ettore:Comparison and Evaluation of Clone Detection Tools. In: IEEEComputer Society Transactions on Software Engineering 33(2007), September, Nr. 9, S. 577–591

10 Bennett 1994 Bennett, P.A.: Software Development for theChannel Tunnel: a Summary. In: High Integrity Systems 1(1994), Nr. 2, S. 213–220

11 Boehm 1981 Boehm, Barry: Software Engineering Economics.Englewood Cliffs, NJ : Prentice Hall, 1981

12 Bruntink und van Deursen 2004 Bruntink, M. ; Deursen,A. van: Predicting Class Testability Using Object-OrientedMetrics. In: Proceedings of the IEEE International Workshop onSource Code Analysis and Manipulation, IEEE Computer SocietyPress, September 2004

45 / 508

13 Chen und Rajlich 2000 Chen, Kunrong ; Rajlich, Vaclav:Case Study of Feature Location Using Dependence Graph. In:Proceedings of the 8th Proceedings of the InternationalWorkshop on Program Comprehension. Limerick, Irland : IEEEComputer Society Press, Juni 2000, S. 241–249

14 Chidamber 1994 Chidamber, S.: Metrics Suite For ObjectOriented Design, M.I.T, Cambridge, Dissertation, 1994

15 Chidamber und Kemerer 1994 Chidamber, S.R. ;Kemerer, C.F.: A Metrics Suite for Object-Oriented Design.In: IEEE Computer Society Transactions on SoftwareEngineering 20 (1994), Juni, Nr. 6, S. 476–493

16 Chikofsky und Cross II. 1990 Chikofsky, Elliot J. ; CrossII., James H.: Reverse Engineering and Design Recovery: ATaxonomy. In: IEEE Software 7 (1990), Januar, Nr. 1, S. 13–17

46 / 508

Page 23: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

17 Chou u. a. 2001 Chou, Andy ; Yang, Junfeng ; Chelf,Benjamin ; Hallem, Seth ; Engler, Dawson R.: An EmpiricalStudy of Operating System Errors. In: Symposium on OperatingSystems Principles, ACM Press, 2001, S. 73–88. – URLciteseer.ist.psu.edu/chou01empirical.html

18 Cordy u. a. 2004 Cordy, James R. ; Dean, Thomas R. ;Synytskyy, Nikita: Practical language-independent detectionof near-miss clones. In: Proceedings of the Conference of theCentre for Advanced Studies on Collaborative research, IBMPress, 2004, S. 1–12

19 Cytron u. a. 1991 Cytron, Ron ; Ferrante, Jeanne ;Rosen, Barry K. ; Wegman, Mark N. ; Zadeck, F. K.:Efficiently Computing Static Single Assignment Form and theControl Dependence Graph. In: ACM Transactions onProgramming Languages and Systems 13 (1991), Oktober,Nr. 4, S. 451–490

47 / 508

20 Dagpinar und Jahnke 2003 Dagpinar, M. ; Jahnke, J.:Predicting Maintainability with Object-Oriented Metrics – AnEmpirical Comparison. In: Proceedings of the WorkingConference on Reverse Engineering, IEEE Computer SocietyPress, 2003

21 Demeyer u. a. 2002 Demeyer, Serge ; Ducasse, Stephane ;Nierstrasz, Oscar: Object Oriented Reengineering Patterns.Morgan Kaufmann, 2002

22 Ducasse und Lanza 2005 Ducasse, Stephane ; Lanza,Michele: The Class Blueprint: Visually Supporting theUnderstanding of Classes. In: IEEE Computer SocietyTransactions on Software Engineering 31 (2005), Januar, Nr. 1,S. 75–90

23 Ducasse u. a. 1999 Ducasse, Stephane ; Rieger, Matthias ;Demeyer, Serge: A Language Independent Approach forDetecting Duplicated Code. In: Proceedings of the InternationalConference on Software Maintenance (ICSM99), 1999,S. 109–118

48 / 508

Page 24: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

24 Eick u. a. 1992 Eick, Stephen G. ; Steffen, Joseph L. ;Sumner, Eric E.: Seesoft—A Tool for Visualizing Line OrientedSoftware Statistics. In: IEEE Computer Society Transactions onSoftware Engineering 18 (1992), November, S. 957–968

25 Eisenbarth u. a. 2003 Eisenbarth, Thomas ; Koschke,Rainer ; Simon, Daniel: Locating Features in Source Code. In:IEEE Computer Society Transactions on Software Engineering29 (2003), Marz, Nr. 3, S. 210–224

26 El Emam u. a. 2001 El Emam, Kalhed ; Benlarbi, Saıda ;Goel, Nishith ; Rai, Shesh N.: The Confounding Effect ofClass Size on the Validity of Object-Oriented Metrics. In: IEEEComputer Society Transactions on Software Engineering 27(2001), Nr. 7, S. 630–650. – ISSN 0098-5589

27 Ernst 2000 Ernst, Michael: Dynamically Discovering LikelyProgram Invariants. Seattle, Washington, USA, University ofWashington, Department of Computer Science and Engineering,Dissertation, August 2000

49 / 508

28 Fenton und Pfleeger 1996 Fenton, N. ; Pfleeger, S.:Software Metrics: A Rigorous and Practical Approach. 2nd.London : International Thomson Computer Press, 1996

29 Fenton und Ohlsson 2000 Fenton, Norman E. ; Ohlsson,Niclas: Quantitative Analysis of Faults and Failures in a ComplexSoftware System. In: IEEE Computer Society Transactions onSoftware Engineering 26 (2000), August, Nr. 8, S. 797–814

30 Fjeldstad und Hamlen 1979 Fjeldstad, R.K. ; Hamlen,W.T.: Application Program Maintenance Study: Report to ourRespondents. In: Proceedings of the GUIDE 48. Philadelphia,PA : The Guide Corporation, 1979

31 Fowler 2000 Fowler, Martin: Refactoring: Improving theDesign of Existing Code. Addison-Wesley, 2000

32 Ganter und Wille 1996 Ganter, Bernhard ; Wille, Rudolf:Formale Begriffsanalyse: mathematische Grundlagen. SpringerVerlag, 1996

50 / 508

Page 25: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

33 Grady 1994 Grady, R.B.: Successfully Applying SoftwareMetrics. In: IEEE Computer 27 (1994), September, Nr. 9,S. 18–25

34 Halstead 1977 Halstead, Maurice: Elements of SoftwareScience. Elsevier, 1977

35 Harmann u. a. 2003 Harmann, Mark ; Binkley, David ;Danicic, Sebastian: Amorphous Program Slicing. In: Journal ofSystems and Software 68 (2003), Nr. 1, S. 45–63

36 Hemel und Koschke 2012 Hemel, Armijn ; Koschke,Rainer: Reverse Engineering Variability in Source Code UsingClone Detection – A Case Study for Linux Variants of ConsumerElectronic Devices. In: Proceedings of the Working Conferenceon Reverse Engineering, IEEE Computer Society Press, 2012,S. 357–366

51 / 508

37 Higo u. a. 2002 Higo, Yoshiki ; Ueda, Yasushi ; Kamiya,Toshihro ; Kusumoto, Shinji ; Inoue, Katsuro: On SoftwareMaintenance Process Improvement Based on Code CloneAnalysis. In: International Conference on Product FocusedSoftware Process Improvement Bd. 2559, Springer, 2002,S. 185–197. – ISBN ISBN:3-540-00234-0

38 Horwitz u. a. 1990 Horwitz, Susan ; Reps, Thomas ;Binkley, David: Interprocedural Slicing Using DependenceGraphs. In: ACM Transactions on Programming Languages andSystems 12 (1990), Januar, Nr. 1, S. 26–60

39 Jackson und Rollins 1994 Jackson, D. ; Rollins, E.: A newmodel of program dependences for reverse engineering. In: Proc.Symposium on the Foundations of Software Engineering, 1994

40 Johnson 1993 Johnson, J. H.: Identifying redundancy insource code using fingerprints. In: Proceedings of theConference of the Centre for Advanced Studies on Collaborativeresearch, IBM Press, 1993, S. 171–183

52 / 508

Page 26: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

41 Johnson 1994 Johnson, J. H.: Substring matching for clonedetection and change tracking. In: Proceedings of theInternational Conference on Software Maintenance, IEEEComputer Society Press, 1994, S. 120–126

42 Jurgens u. a. 2009 Jurgens, E. ; Deissenbock, F. ;Hummel, B. ; Wagner, S.: Do Code Clones Matter? In:Proceedings of the International Conference on SoftwareEngineering, ACM Press, 2009

43 Kamiya u. a. 2002 Kamiya, Toshihiro ; Kusumoto, Shinji ;Inoue, Katsuro: CCFinder: A Multi-Linguistic Token-basedCode Clone Detection System for Large Scale Source Code. In:IEEE Computer Society Transactions on Software Engineering28 (2002), Nr. 7, S. 654–670

44 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

53 / 508

45 Kontogiannis 1997 Kontogiannis, K.: EvaluationExperiments on the Detection of Programming Patterns UsingSoftware Metrics. In: Proceedings of the Working Conference onReverse Engineering, 1997, S. 44–53

46 Koschke 2012 Koschke, Rainer: Large-Scale Inter-SystemClone Detection Using Suffix Trees. In: Proceedings of theEuropean Conference on Software Maintenance andReengineering, IEEE Computer Society Press, 2012, S. 309–318

47 Koschke 2013 Koschke, Rainer: Large-scale inter-systemclone detection using suffix trees and hashing. In: Journal ofSoftware: Evolution and Process (2013). – accepted forpublication

48 Koschke u. a. 2006 Koschke, Rainer ; Falke, Raimar ;Frenzel, Pierre: Clone Detection Using Abstract Syntax SuffixTrees. In: Proceedings of the Working Conference on ReverseEngineering, IEEE Computer Society Press, 2006, S. 253–262

54 / 508

Page 27: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

49 Koschke u. a. 1998 Koschke, Rainer ; Girard,Jean-Francois ; Wurthner, Martin: An IntermediateRepresentation for Reverse Engineering Analyses. In:Proceedings of the 5th Proceedings of the Working Conferenceon Reverse Engineering. Honolulu, HI, USA : IEEE ComputerSociety Press, Oktober 1998, S. 241–250

50 Krinke 2001 Krinke, Jens: Identifying Similar Code withProgram Dependence Graphs. In: Proceedings of the WorkingConference on Reverse Engineering, 2001, S. 301–309

51 Krinke 2004 Krinke, Jens: Slicing, Chopping, and PathConditions with Barriers. In: Software Quality Journal 12(2004), Nr. 4, S. 339–360

52 Lanza 2003 Lanza, Michele: Object-Oriented ReverseEngineering - Coarse-grained, Fine-grained, and EvolutionarySoftware Visualization. http://www.inf.unisi.ch/faculty/lanza/Downloads/Lanz03b.pdf, University of Bern,Dissertation, 2003

55 / 508

53 Lanza und Ducasse 2003 Lanza, Michele ; Ducasse,Stephane: Polymetric Views—A Lightweight Visual Approach toReverse Engineering. In: IEEE Computer Society Transactionson Software Engineering 29 (2003), Nr. 9, S. 782–795

54 Lanza und Marinescu 2006 Lanza, Michele ; Marinescu,Radu: Object-Oriented Metrics in Practice: Using SoftwareMetrics to Characterize, Evaluate, and Improve the Design ofObject-Oriented Systems. Berlin : Springer, August 2006. –ISBN ISBN-10: 3540244298, ISBN-13: 978-3540244295

55 Lehman 1980 Lehman, Meir M.: Programs, Life Cycles andLaws of Program Evolution. In: Proceedings of the IEEE,Special Issue on Software Evolution 68 (1980), September,Nr. 9, S. 1060–1076

56 Lehner 1989 Lehner, Franz: Nutzung und Wartung vonSoftware. Carl Hanser Verlag, 1989

56 / 508

Page 28: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

57 Li u. a. 2004 Li, Z. ; Lu, S. ; Myagmar, S. ; Zhou, Y.:CP-Miner: A tool for Finding copy-paste and related bugs inoperating system code. In: Operating System Design andImplementation, 2004, S. 289–302

58 Li u. a. 2006 Li, Z ; Lu, S ; Myagmar, S. ; Zhou, Y.:Copy-Paste and Related Bugs in Large-Scale Software Code. In:IEEE Computer Society Transactions on Software Engineering32 (2006), Marz, Nr. 3, S. 176–192

59 Lientz und Swanson 1980 Lientz, B.P. ; Swanson, E.B.:Software Maintenance Management. Reading, MA :Addison-Wesley, 1980

60 Marcus und Maletic 2001 Marcus, A. ; Maletic, J.I.:Identification of high-level concept clones in source code. In:Proceedings of the International Conference on AutomatedSoftware Engineering, 2001, S. 107–114

61 Masak 2006 Masak, Dieter: Legacysoftware: Das lange Lebender Altsysteme. Springer, 2006

57 / 508

62 Mayrand u. a. 1996 Mayrand, Jean ; Leblanc, Claude ;Merlo, Ettore M.: Experiment on the Automatic Detection ofFunction Clones in a Software System using Metrics. In:Proceedings of the International Conference on SoftwareMaintenance. Washington : IEEE Computer Society Press,November 4–8 1996, S. 244–254. – ISBN 0-8186-7678-7

63 McCabe 1976 McCabe, Thomas J.: A Complexity Measure.In: IEEE Computer Society Transactions on SoftwareEngineering 2 (1976), Nr. 4, S. 308–320

64 McCreight 1976 McCreight, E. M.: A space-economicalsuffix-tree construction algorithm. In: Journal of the ACM 23(1976), Nr. 2, S. 262–272

65 Mende und Koschke 2009 Mende, Thilo ; Koschke, Rainer:Revisiting the Evaluation of Defect Prediction Models. In:PROMISE ’09: Proceedings of the 5th International Conferenceon Predictor Models in Software Engineering. New York, NY,USA : ACM, 2009, S. 1–10. – ISBN 978-1-60558-634-2

58 / 508

Page 29: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

66 Mende und Koschke 2010 Mende, Thilo ; Koschke, Rainer:Effort-Aware Defect Prediction Models. In: Proceedings of theEuropean Conference on Software Maintenance andReengineering, 2010. – submitted for publication

67 Mertzel 2008 Mertzel, N. J.: Copying 0.03 percent ofsoftware code base not ”de minimis”. In: Journal of IntellectualProperty Law & Practice 9 (2008), Nr. 3, S. 547–548

68 Moad 1990 Moad, J.: Maintaining the Competitive Edge. In:DATAMATION, 1990, S. 61–66

69 Monden u. a. 2002 Monden, A. ; Nakae, D. ; Kamiya, T. ;Sato, S. ; Matsumoto, K.: Software quality analysis by codeclones in industrial legacy software. In: Proceedings of the IEEESymposium on Software Metrics, 2002, S. 87–94

70 Morgan 1998 Morgan, Robert: Building an OptimizingCompiler. Digital Press, 1998

71 Muchnick 1997 Muchnick, Steven S.: Advanced CompilerDesign and Implementation. Morgan Kaufmann, 1997

59 / 508

72 Muthanna u. a. 2000 Muthanna, S. ; Kontogiannis, K. ;Ponnambalam, K. ; Stacey, B.: A Maintainability Model forIndustrial Software Systems Using Design Level Metrics. In:Proceedings of the Working Conference on Reverse Engineering,IEEE Computer Society Press, 2000

73 Muller 1997 Muller, Bernd: Reengineering – EineEinfuhrung. B.G. Teubner, 1997

74 Ostrand u. a. 2005 Ostrand, T.J. ; Weyuker, E.J. ; Bell,R.M.: Predicting the location and number of faults in largesoftware systems. In: IEEE Computer Society Transactions onSoftware Engineering 31 (2005), Nr. 4, S. 340–355. – ISSN0098-5589

75 Ottenstein und Ottenstein 1984 Ottenstein, Karl J. ;Ottenstein, Linda M.: The program dependence graph in asoftware development environment. In: Proceedings of the ACMSIGSOFT/SIGPLAN Software Engineering Symposion onPractical Sofware Development Environments, 1984, S. 177–184

60 / 508

Page 30: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

76 Pigoski 1996 Pigoski, Thomas M.: Practical SoftwareMaintenance: Best Practices for Managing Your SoftwareInvestment. John Wiley & Sons, Inc., 1996

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

78 Quante und Koschke 2006 Quante, Jochen ; Koschke,Rainer: Dynamic Object Process Graphs. In: Proceedings of theProceedings of the European Conference on SoftwareMaintenance and Reengineering, IEEE Computer Society Press,Marz 2006

79 Rajlich und Bennett 2000 Rajlich, Vaclav T. ; Bennett,Keith H.: A Staged Model for the Software Life Cycle. In: IEEEComputer 33 (2000), Nr. 7, S. 66–71

61 / 508

80 Reps und Rosay 1995 Reps, T. ; Rosay, G.: PreciseInterprocedural Chopping. In: Proc. Symposium on theFoundations of Software Engineering, 1995

81 Richner und Ducasse 2002 Richner, Tamar ; Ducasse,Stephane: Using Dynamic Information for the Iterative Recoveryof Collaborations and Roles. In: Proceedings of the Proceedingsof the International Conference on Software Maintenance.Montreal, Canada : IEEE Computer Society Press, Oktober2002, S. 34–43

82 Rieger 2005 Rieger, Matthias: Effective Clone DetectionWithout Language Barriers, University of Bern, Switzerland,Dissertation, 2005

83 Seacord u. a. 2003 Seacord, Robert C. ; Plakosh, Daniel ;Lewis, Grace A.: Modernizing Legacy Systems.Addison-Wesley, 2003

62 / 508

Page 31: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

84 Simon u. a. 2006 Simon, Frank ; Seng, Olaf ; Mohnhaupt,Thomas: Code-Quality-Management – Technische Qualitatindustrieller Softwaresysteme transparent und vergleichbargemacht. dpunkt.verlag, 2006

85 Sneed 1995 Sneed, Harry: Planning the Reengineering ofLegacy Systems. In: IEEE Software (1995), January. –beschreibt die Planung von Reengineering-Projekten

86 Sneed u. a. 2005 Sneed, Harry M. ; Hasitschka, Martin ;Teichmann, Maria-Therese: Software-Produktmanagement –Wartung und Weiterentwicklung bestehenderAnwendungssysteme. dpunkt.verlag, 2005

87 Snelting und Tip 2000 Snelting, Gregor ; Tip, Frank:Understanding Class Hierarchies Using Concept Analysis. In:ACM Transactions on Programming Languages and Systems 22(2000), Mai, Nr. 3, S. 540–582

63 / 508

88 Staiger u. a. 2007a Staiger, Stefan ; Vogel, Gunther ;Keul, Steffen ; Wiebe, Eduard: Interprocedural Static SingleAssignment Form. In: Proceedings of the Working Conferenceon Reverse Engineering, IEEE Computer Society Press, Oktober2007, S. 1–10. – URL http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4400146

89 Staiger u. a. 2007b Staiger, Stefan ; Vogel, Gunther ;Keul, Steffen ; Wiebe, Eduard: Interprocedural Static SingleAssignment Form in Bauhaus / Institut fur Softwaretechnologie,Abteilung Programmiersprachen. Universitat Stuttgart,November 2007. – Forschungsbericht. – URL http://elib.uni-stuttgart.de/opus/volltexte/2007/3338/

90 Steinbruckner 2013 Steinbruckner, Frank: ConsistentSoftware Cities Supporting Comprehension of Evolving SoftwareSystems, Brandenburgische Technische Universitat Cottbus,Dissertation, 2013

64 / 508

Page 32: Vorlesung Software-Reengineering ¨ I · Software-Wartung Software-Evolution Reengineering Software-Reengineering Business-Process-Reengineering Renovation Reclamation Refactoring

91 Synytskyy u. a. 2003 Synytskyy, Nikita ; Cordy,James R. ; Dean, Thomas: Resolution of static clones indynamic Web pages. In: Proceedings of the Workshop onWebsite Evolution, 2003, S. 49–56

92 Ukkonen 1995 Ukkonen, E.: On-line construction of suffixtrees. In: Algorithmica 14 (1995), S. 249–260

93 Wahler u. a. 2004 Wahler, V. ; Seipel, D. ; Gudenberg,Jurgen W. von ; Fischer, G.: Clone detection in source codeby frequent itemset techniques. In: Proceedings of the IEEEInternational Workshop on Source Code Analysis andManipulation, 2004, S. 128–135

94 Weiser 1984 Weiser, M.: Program slicing. In: IEEETransactions on Software Engineering 10 (1984), Nr. 4,S. 352–357. – In this paper some properties of slices arepresented. It is shown that the use of data-flow analysis issufficient to find approximate slices of the generally unsolvableproblem of finding statement-minimal slices

65 / 508

95 Wilde u. a. 1992 Wilde, Norman ; Gomez, Juan A. ; Gust,Thomas ; Strasburg, Douglas: Locating User Functionality inOld Code. In: Proceedings of the Proceedings of theInternational Conference on Software Maintenance. Orlando, FL,USA : IEEE Computer Society Press, November 1992,S. 200–205

96 Yang 1991 Yang, Wuu: Identifying Syntactic DifferencesBetween Two Programs. In: Software–Practice and Experience21 (1991), Juli, Nr. 7, S. 739–755

66 / 508