Science and engineering depend on evolving ever more complex software  typically coded in C++  to investigate phenomena or design sophisticated products The rate of delivered value for such software is often limited by its organization  and scientists/engineers spend significant effort trying to understand the code organization and restructuring the code to enable the next interesting concept or experiment to be integrated in trustworthy fashion