Towards Modal Software Engineering
This work addresses the problem of inefficient processing of overlapping input sets for software engineers working in domains with multi-world scenarios like SPLs and probabilistic programming.
This paper introduces Modal Software Engineering, a method for transforming sequential, deterministic programs into semantically equivalent programs that efficiently process inputs from multiple overlapping worlds. This approach aims to reduce redundancy and improve performance in domains like Software Product Lines, probabilistic programming, and approximate programming by avoiding independent processing of highly overlapping input sets.
In this paper we introduce the notion of Modal Software Engineering: automatically turning sequential, deterministic programs into semantically equivalent programs efficiently operating on inputs coming from multiple overlapping worlds. We are drawing an analogy between modal logics, and software application domains where multiple sets of inputs (multiple worlds) need to be processed efficiently. Typically those sets highly overlap, so processing them independently would involve a lot of redundancy, resulting in lower performance, and in many cases intractability. Three application domains are presented: reasoning about feature-based variability of Software Product Lines (SPLs), probabilistic programming, and approximate programming.