Probabilistic Software Modeling
Software Engineering and the implementation of software has become a challenging task as many tools, frameworks and languages must be orchestrated into one functioning piece. This complexity increases the need for testing and analysis methodologies that aid the developers and engineers as the software grows and evolves. The amount of resources that companies budget for testing and analysis is limited, highlighting the importance of automation for economic software development. We propose Probabilistic Software Modeling, a new paradigm for software modeling that builds on the fact that software is an easy-to-monitor environment from which statistical models can be built. Probabilistic Software Modeling provides increased comprehension for engineers without changing the level of abstraction. The approach relies on the recursive decomposition principle of object-oriented programming to build hierarchies of probabilistic models that are fitted via observations collected at runtime of a software system. This leads to a network of models that mirror the static structure of the software system while modeling its dynamic runtime behavior. The resulting models can be used in applications such as test-case generation, anomaly and outlier detection, probabilistic program simulation, or state predictions. Ideally, probabilistic software modeling allows the use of the entire spectrum of statistical modeling and inference for software, enabling in-depth analysis and generative procedures for software.
READ FULL TEXT