Embracing Software Variability to build Explainable Systems
Date:
Invited talk at VAMOS 24 (18th International Working Conference on Variability Modelling of Software-Intensive Systems, Bern, Switzerland, Feb. 7 - 9, 2024) — “Embracing Software Variability to build Explainable Systems”
Abstract
Software systems can be a rich resource of knowledge about their application domain, stakeholder requirements, design decisions, and technical infrastructure, but this knowledge is often hard to access and exploit. An explainable system is a software system that can quickly and accurately answer questions that humans ask about it. We show how explainable systems can be systematically constructed through moldable development, an approach in which existing, moldable tools, such as code editors, inspectors, debuggers and notebooks, can be molded to an arbitrary application domain by creating dozens, hundreds or thousands of cheap, custom tools. This is made possible by enabling fine-grained variability in moldable tools. In contrast to conventional plug-in architectures, moldable tools adapt themselves to the dynamic context of live objects in the development environment, thus supporting navigation and exploration within an explainable system. Variability in the environment thus becomes the key to explaining variability in the software systems themselves. We will illustrate the approach through numerous examples gained over several years of experience with moldable development.