Tackling the Testing and Verification of Multicore and Concurrent Software as a Search Problem

As multicore and therefore concurrent architectures are spreading to an increasing number of applications and industry sectors, it becomes increasingly important to devise rigorous but practical ways to verify and test concurrent systems. Though a great deal of research work has been published on the matter, there is limited support in industry for the practicing engineer. For a change in engineering practice to happen, we need to devise technologies that scale and can be easily tailored to resources available for quality assurance in a given context. This talk reports on a research program that approaches verification and testing as a search and optimization problem. The techniques presented rely on system models describing the task architecture and performance characteristics. As a strategy to ease adoption in practice, those models rely on standards (e.g., UML/MARTE) or lightweight extensions enabling the use of commercial or open source modeling platforms to support automation. Once the required in-formation is extracted from models, early verification and testing both consist in identifying scenarios that maximize chances of uncovering concurrency and performance issues, such as deadline misses, starvation, or unacceptable levels of CPU usage. To do so, we either rely on evolutionary computation or constraint optimization, for which effective support already exists. The main challenge is of course to transform each specific problem into a search or constraint optimization problem, in such a way that these technologies can be efficient and scale.