Agile Modeling

We use the term agile modeling to refer to a set of methods that allow for a quick initial development of an importer [⇒Model Importer] and its further refinement. The goal of agile modeling is to build a coarse model of a software system in the morning, analyze it in the afternoon, and refine it the next day. The repeated refinement eventually leads to a complete model built through a series of more and more fine-grained models. The methods of agile modeling utilize specific properties of programming languages, their similarities and expert knowledge to achieve the goal of agile modeling.

> Agile modeling raises many questions, such as “what entities are in the source code?”, “what are efficient ways to discover the mapping between code and model entities?”, “how can we leverage expert knowledge in the least intrusive way?”, or . “what is a suitable parsing technology to quickly develop a parser?”. This work focuses on this last question — the parsing aspect of agile modeling.

By agile modeling we refer to the ability to (i) quickly build a coarse model of a software system suitable for an initial analysis; and (ii) easily refine the model for subsequent and more detailed analyses. To achieve its goals, agile modeling trades precision for time. (Parsing For Agile Modeling, p. 9)