Simplifying the Review of Communicating Finite State Machines Implementation using Static Analysis 2016-01-0035
Finite State Machines (FSMs) are used at various stages of software development, from the initial concept of software system to the lowest level implementation. These FSMs communicate non-deterministically with the other FSMs and the environment of the underlying system. Any inappropriate handling of the communication across multiple FSMs or environment may lead to unexpected behavior of the underlying system. Manual detection of the root cause of such unexpected behavior is effort intensive. Moreover, state of art techniques focus mainly on design level review of communicating FSMs (Comm-FSMs), and no technique is available for systematic review of Comm-FSMs at implementation level. In this paper we present a review technique for detecting inconsistencies in the implementation of Comm-FSMs. The proposed technique includes: a) identification of all possible FSMs and external entities in the system code, and b) identification of Comm-FSMs and checking the impact of external entities (events, signals, timers etc.) on the identified Comm-FSMs. The proposed technique assists user’s review to detect incorrect handling of communicating signals and external entities in the implementation that may halt the progress of Comm-FSMs. Our experimental evaluation using two well-tested real world applications demonstrated that the presented technique is effective in detecting critical defects with the overall reduction of manual review effort by 60% to 80%.