Megan Kierstead: Software Evolution

Student's Name: 
Megan Kierstead
None
Advisor's Name: 
Jim Whitehead
Home University: 
Wellesley College
AttachmentSize
Image icon Megan_Kierstead.jpg83.27 KB
PDF icon kierstead.pdf89.34 KB
Year: 
2006

Megan Kierstead is currently a junior at Wellesley College and is majoring in Political Science with a minor in Computer Science. During the summer of 2006, she participated in the University of Santa Cruz’s Summer Undergraduate Research Fellowship in Information Technology sponsored by the National Science Foundation’s Research Experience for Undergraduates program. She worked under Professor Jim Whitehead researching software evolution, using 5 open source programs to investigate patterns in buggy code.

In previous research done by Professor Whitehead with graduate students Kai Pan and Sunghun Kim, it was found that a significant portion of buggy code (7.0%-18.7%) in Java open source projects (Eclipse, ArgoUML, Columba, JEdit, Scarab) relates directly to the language keyword ‘if’. Conditionals are one of the most important features of many programming languages and characterizations of bugs related to them could lead to better language design or more conscientious programming. Megan and Professor Whitehead hypothesized that with an increased length of conditionals, more bugs would appear. Conditionals become logically complex as more variables and logical operators are added, and it might be difficult for programmers to fully understand such difficult and lengthy code. If this hypothesis were true, it would be advantageous for programmers to strive to write simpler, shorter conditionals.

Megan wrote code to extract data about conditional lengths from established SQL code databases, such as the number of operators per conditional, changes in the length of conditionals over program revision history, and changes in length of conditionals compared to changes in program length. The results from the summer’s research were not conclusive, but some interesting patterns emerged that would be interesting to investigate further.

For future work, it would be advantageous to include more open source programs to see if clearer patterns emerge with more code from which to extract data. Further work into pattern extraction from buggy code can lead to advances in software design and programming techniques.