Automatic detection of weighting factors for in-ports based on static C-code analysis

Modern automotive systems tend to offer more and more functionality to the customer. Hence, the software system has become a central part of nowadays automobiles, as most innovations are implemented in software. As a result, automotive software systems such ABS and ESP constitute large-scaled, embedded systems distributed over several electronic control units in order to conduct complex control and regulation tasks. Due to this inherent complexity, those systems are potentially sources of subtle errors. Especially in the context of safety-critical sub-systems, erroneous behaviors arising from software faults may have fatal consequences. Thus, recent industrial standards for automotive systems, e.g., ISO 26262, enforce the application of accurate quality assurance methods to automotive software prior to its integration into the final product. The strength of those methods depends on the safety integrity level (SIL) and usually consists of systematic testing techniques at different levels of abstraction, as well as respective adequacy criteria for the design of appropriate test suites.

To cope with the ever-growing size and complexity of automotive software systems also during testing, a decomposition of the overall system into software components is pursued. This way, tests suites can be designed and executed at component-and-connector level by abstracting from the actual implementation code. However, testing is not only crucial for verifying newly developed functions, but also for ensuring continuous changes to existing software components potentially introducing new errors. For those regression-testing campaigns to be performed efficiently, retest selection criteria are defined to avoid redundant re-executions of test cases not affected by the changes. Existing change impact analysis approaches at architectural level, therefore, perform slicing within the component-connector graph structure. In order to obtain an even more fine-grained result, architectural elements may be weighted by means of change impact factors to serve as additional information for retest rankings.

In this project, a retest ranking approach together with a corresponding tool implementation is developed for automatically calculating architectural weights in terms of coupling and cohesion metrics at component source code level. The selection of appropriate metrics is guided by a concrete industrial case study and is incrementally refined by taking implementation patterns specifically used in the given case study into account. In addition, the metrics can be further augmented with domain knowledge by manually added weight factors. The approach is implemented on top of the Frama-C framework for static C-code analysis and is evaluated with respect to the industrial case study.

Partners in this project are the Institute of Automotive Engineering (Technische Universität Darmstadt), TRW Automotive GmbH and Volkswagen AG.