A significant portion of software development effort is devoted to reading and understanding code. Unfortunately, mainstream integrated development environments focus on low-level programming tasks rather than on supporting program comprehension and decision-making during software evolution. Analysis tools, on the other hand, usually have a narrow scope of applicability.
Contents and goal of the project
This project aims to enable software developers to quickly and effectively analyze complex software systems with the help of tools to rapidly construct, query and manipulate software models. We refer to this goal as agile software assessment, since developers are under constant pressure to assess the state of the system at hand in a timely fashion in order to carry out development and evolution tasks. The expected long term benefits of this research are improved developer efficiency, enhanced tool support during software development, and better quality software.
To this end, we propose four related research tracks: (i) Meta-Tooling will enable developers to rapidly develop custom tools to support decision-making, (ii) Agile Modeling will simplify the task of constructing and refining software models from source code and other data sources, (iii) Large-Scale Software Analysis will allow developers to process and exploit the large amount of additional data related to a project, and (iv) Architectural Monitoring will help developers track the evolution of architectural constraints in complex software.
Scientific and social context
In this project we will work closely with actual developers to better understand current best practice in software analysis using available tools, and we will elicit analysis needs from a wide range of concrete projects. In terms of concrete results, we expect to develop general and practical techniques to quickly construct analysis models and tools for given projects. We also expect to provide some first steps towards the next generation of development environments.