Abstract:
We investigate the relationship between reverse engineering and program comprehension on the one hand, and software process on the other. To understand this relationship, we select one particular existing software process, extreme programming (XP), and study the role played in it by program comprehension and reverse engineering. To that end, we analyze five key XP practices in depth: pair programming, unit testing, refactoring, evolutionary design, and collaborative planning. The contributions of this paper are (1) the identification of promising research areas in the field of program comprehension; (2) the identification of new application perspectives for reverse engineering technology; (3) a critical analysis of XP resulting in research questions that could help resolve some of the uncertainties surrounding XP; (4) a process assessment framework for analyzing software processes from the comprehension and reverse engineering point of view. 1998 ACM Computing Classification System: D.2.9, D.2.2, D.2.5, D.2.7 Keywords and Phrases: Software process, reverse engineering, pair programming, unit testing, refactoring, evolutionary design, collaborative work. Note: Work carried out under projects SEN 1.1, Software Renovation and SEN 1.3, Domain-Specific Languages. 1.
Citations
|
815
|
Refactoring: improving the design of existing code
– Fowler, Beck, et al.
- 1999
|
|
788
|
Extreme Programming Explained: Embrace Change
– Beck
- 2000
|
|
385
|
Reverse engineering and design recovery: A taxonomy
– Chikofsky, Cross
- 1990
|
|
382
|
The Mythical Man-Month
– Brooks
- 1975
|
|
315
|
Managing the Software Process
– Humphrey
- 1989
|
|
220
|
The Rational Unified Process: An Introduction
– Kruchten
|
|
165
|
Clone detection using abstract syntax trees
– Baxter, Yahin, et al.
- 1998
|
|
120
|
Test Infected: Programmers Love Writing Tests
– Beck, Gamma
- 1998
|
|
111
|
Strengthening the case for pair programming
– Williams, Kesler, et al.
- 2000
|
|
94
|
Planning Extreme Programming
– Beck, Fowler
|
|
79
|
Program comprehension during software maintenance and evolution
– Mayrhauser, Vans
- 1995
|
|
72
|
The case for collaborative programming
– Nosek
- 1998
|
|
70
|
Analysing distributed cognition in software teams: a case study of team programming during perfective software maintenance
– Flor, Hutchins
- 1992
|
|
69
|
Program understanding: Challenge for the 1990’s
– Corbi
- 1989
|
|
68
|
Extreme Programming Installed
– Jeffries, Anderson, et al.
- 2001
|
|
58
|
Understanding Software Systems Using Reverse Engineering Technology
– Müller, Wong, et al.
- 1994
|
|
57
|
Pattern matching for clone and concept detection
– Kontogiannis, Mori, et al.
- 1996
|
|
56
|
Linux as a Case Study: its Extracted Software Architecture
– Bowman, Holt, et al.
- 1999
|
|
52
|
Building documentation generators
– Deursen, Kuipers
- 1999
|
|
52
|
Code Complete
– McConnell
- 1993
|
|
51
|
Pattern-based reverse-engineering of design components
– Keller, Shauer, et al.
- 1999
|
|
48
|
The costs and benefits of pair programming
– Cockburn, Williams
- 2000
|
|
42
|
Practical Software Maintenance, Best Practices for Managing Your Software Investments
– Pigoski
- 1996
|
|
38
|
Planning the Reengineering of Legacy Systems
– Sneed
- 1995
|
|
37
|
Software Process: A Roadmap
– Fuggetta
- 2000
|
|
33
|
A staged model for the software life cycle
– Rajlich, Bennett
- 2000
|
|
18
|
Reverse engineering: a roadmap
– Müller, Jahnke, et al.
- 2000
|
|
14
|
Episodes: A Pattern Language of Competitive Development
– Cunningham
- 1996
|
|
13
|
Reverse engineering processes, design document production, and structure charts
– Benedusi, Cimitile, et al.
- 1992
|
|
9
|
Refactoring test code
– Deursen, Moonen, et al.
- 2001
|
|
8
|
Is design dead
– Fowler
- 2001
|
|
5
|
Legacy to the extreme
– Deursen, Kuipers, et al.
- 2001
|
|
4
|
The Reverse Engineering Notebook
– Wong
- 1999
|
|
2
|
Comments on extreme programming
– Humphrey
|