Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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).
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%.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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