1 / 9

Studying The Evolution of Software Systems Using Evolutionary Code Extractors

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.

davidgarcia
Download Presentation

Studying The Evolution of Software Systems Using Evolutionary Code Extractors

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Studying The Evolution of Software Systems Using Evolutionary Code Extractors Ahmed E. Hassan and Richard C. Holt SoftWare Architecture Group (SWAG) University Of Waterloo

  2. 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

  3. 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

  4. 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

  5. Dimensions of Code Evolution • Frequency of Snapshots • Time based: weekly, monthly, quarterly, yearly • Event based Compilable Code Incomplete Code Change Change List Build Release

  6. 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

  7. 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

  8. 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?

  9. 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

More Related