Automatic recovery of statecharts from procedural code
- Moria Abadi
- Yishai A. Feldman
- 2012
- ASE 2012
I joined IBM in 2006, after many years in academia. I received my Ph.D. from the Weizmann Institute of Science, where my thesis topic was dynamic logics for probabilistic programs. I then spent four years at MIT's Artificial Intelligence Laboratory, in the Programmer's Apprentice project, where I was a major participant in the development of the Cake knowledge-representation and reasoning system, and in projects using Cake for intelligent debugging and requirements acquisition. On returning to Israel, I continued my research on automated software engineering, applying AI techniques to solve real problems in software development. Example projects include:
In my consulting jobs, I have performed a range of activities, including writing project proposals, specifications, and design documents, performing design and code reviews, and evaluating investment proposals. Notable implementation projects I was responsible for include a local security system for PCs, a smartcard operating system, and various implementations of cryptographic algorithms in several assembly languages, portable C, and Java.
At IBM Research I led the Painless project, whose goal was to build a coherent set of tools for deep program analysis, including program understanding and program transformation, for various types of legacy systems.
As part of this project, we developed the IBM Fine Slicing Technology, which allows programmers and automated tools to compute program slices with precisely defined boundaries, by ignoring some data and control dependences. The resulting fine slice is executable and extractable. Our Extract Computation refactoring can extact fine slices into separate procedures or methods, removing whatever code is possible from the original location, and adding a call to the extracted code. Among other things, Extract Computation can be used to extract non-contiguous pieces of code, and split loops, including the creation of intermediate data structures to pass information between two or more incarnactions of the loop structure. Our paper 'Fine Slicing: Theory and Applications for Computation Extraction,' 15th International Conference on Fundamental Approaches to Software Engineering (FASE) 2012, received the EASST award for Best Software Science Paper at ETAPS 2012.
We also developed an auto-fix capability for security vulnerabilities in Java, especially for cases that require code motion, and an Extract Paragraph refactoring for Cobol.
Expanding to Systems Engineering, I have been working on tools to support system engineers. This included tools for hybrid simulation, flexible queries, requirement formalization, and cognitive diagnosis for major appliances.
More recently, I have developed a general-purpose mathematical representation based on the predicate calculus, and supporting rewrite rules and constraint propagation over the data-flow graph. This was used to make decision optimization accessible to developers and business analysts, who are not optimization experts and cannot write specifications for optimization solvers directly. Input methods convenient for these, such as a functional subset of Python or spreadsheets, are translated into specifications for CPLEX or OptaPlanner through the mathematical representation.