90 likes | 107 Views
This paper discusses the use of evolutionary code extractors to study the evolution of software systems. It explores the changes made to the code, the dimensions of code evolution, the challenges and complexity involved, and the need for automated extraction tools.
E N D
Studying The Evolution of Software Systems Using Evolutionary Code Extractors Ahmed E. Hassan and Richard C. Holt SoftWare Architecture Group (SWAG) University Of Waterloo
Describing Change • Changed 5 lines in the code • Changed 3 lines in main.c and 2 in layout.c • Added 1 line in main(), 2 lines in init(), commented out 2 lines in refreshLayout() • main() now calls init(). Added a check in init() to ensure output filename is set
Describing Change • Changed 5 lines in the code • Size Metric (LOC) System • Changed 3 lines in main.c and 2 in layout.c • Size Metric (LOC) File • Added 1 line in main(), 2 lines in init(), commented out 2 lines in refreshLayout() • Size Metric (LOC) Function • main() now calls init(). Added a check in init() to ensure output filename is set • Structural (Call Dependency) Function
Dimensions of Code Evolution • Characteristic of Code: • Metric: LOC • Structural: Dependencies • Level of Detail: Easiest to Analyze Hardest to Analyze AST Code Entity (func/var) File/Class Subsystem System
Dimensions of Code Evolution • Frequency of Snapshots • Time based: weekly, monthly, quarterly, yearly • Event based Compilable Code Incomplete Code Change Change List Build Release
Evolutionary Code Extractor • Examines multiple code snapshots over time S0 S1 .. St St+1 Snapshot Extractor F0 Ft Ft+1 F1 .. Compare Snapshot Facts Evolutionary Change Data
Challenges and Complexity • Scalability and Robustness • Large amount of data/snapshots • Legacy systems are hard to parse • Accuracy • Entities with similar names throughout time • Unstable & Evolving Code • Extractor Development Time
The Need for Software Evolutionary Extractors • Automate the recovery of the evolutionary processes of multiple software projects • Assist in empirical based understanding of evolution • Can we develop common evolutionary extractors to be shared/reused across the community?
Characteristic of Code Metrics vs. Structural Level of Detail AST vs. System Frequency of Snapshots Change vs. Release Accuracy Confidence in results Development Time Practical, Reuse COTS Scalability and Robustness Automate the process Unstable & Evolving Code Frequency of snapshots Dimensions & Challenges