Bio: Danny Dig is a Visiting Research Assistant Professor at Illinois. He got a PhD from Illinois where his research won the best PhD dissertation award, and the First Prize at the ACM Student Research Competition Grand Finals. He did a postdoc at MIT where he opened the area of interactive transformations for parallelism, then he returned to Illinois. He (co-)authored 35+ journal and conference papers that appeared in top places in SE/PL. According to Google Scholar his publications have been cited 1,000+ times. He released 8 software systems, among them the world's first open-source refactoring tool, downloaded over 17,000 times. Some of the techniques he developed are shipping with the official release of the popular Eclipse and NetBeans development environments, and are used by millions of Java programmers everyday. He has started two popular workshops: Workshop on Refactoring Tools, and Hot Topics On Software Upgrades. Both are now in their fifth year. He chaired or co-organized 11 workshops, and served as a member of 28 program or review committees for all top conferences in his area. His research is funded by NSF, Boeing, IBM, Intel, and Microsoft.
Abstract: Change is the heart of software development. For example, software evolves to add features, fix bugs, support new hardware, new versions of operating systems and libraries, and new user interfaces. Unfortunately, programmers perform most software changes manually, through low-level text edits, which are almost never reused. This makes software development time-consuming, error-prone, and expensive. It is widely known that at least two-thirds of software costs are due to evolution, with some industrial surveys claiming 90%.
In this talk Dr. Dig will present our ever-growing toolset of interactive program transformations. It currently automates changes from the domains of parallelism, software upgrades, testing, and end-user programming. He will highlight transformations from two domains: converting a mutable into an immutable class, and improving the maintainability and performance of spreadsheets. Our transformations do not require any program annotations, yet the transformations span multiple, non-adjacent, program statements. A find-and-replace tool can not perform such transformations, which require control- and data-flow analysis. Empirical evaluation shows that our toolset is useful: (i) it dramatically reduces the burden of analyzing and changing code, (ii) it is fast so it can be used interactively, (iii) it correctly applies transformations that open-source developers applied incompletely, and (iv) users prefer the improved quality of the changed code.