Professor Iftekhar Ahmed’s research into software engineering considers how best to combine software testing, analysis and data mining to ensure today’s software is safe and of high quality. “Software will always have bugs,” he says, “but as it has become a pervasive part of our lives, bugs are affecting more people than ever before.” To identify problems before they hit the market, Professor Ahmed studies what factors lead to bad code in existing programs, ranging from technical factors such as bloated program constructs, to socio-technical factors such as merge conflicts. Using this knowledge, he then develops prediction models that can reveal bug-prone areas in new software projects.
Testing in the Trillions
Through his work, Professor Ahmed is providing developers with efficient tools and techniques for testing today’s increasingly complex systems. “Current techniques do not scale for non-deterministic or machine learning systems, because the possible scenarios that can go wrong number in the trillions,” explains Ahmed. Applying his techniques on the Linux kernel, for instance, revealed critical bugs by systematically exploring program variations and by reducing false positives. This eventually helped developers identify gaps in the testing approach used, which the Linux community subsequently addressed to eliminate the problems.
“By 2020, there will be around 17 million autonomous vehicles on the street,” notes Professor Ahmed. “And if all of them have bugs in them, that’s really scary.” Of particular concern is finding ways to avoid accidents. How do we ensure that an autonomous vehicle can correctly identify a stop sign or pedestrian, regardless of the weather and road conditions? Stressing that “confidence lies in exhaustiveness,” Professor Ahmed is exploring techniques that help focus on the problem areas — for example, prioritizing images that weren’t correctly classified during testing. Using such techniques, he aims to reduce classification errors and ultimately improve system accuracy and safety.