Reengineering C/C++ Source Code by Transforming State Machines
Proceedings of the Second International ESPRIT ARES Workshop on Development and Evolution of Software Architectures for Product Families
Hi-index | 0.00 |
Various applications use state transition mechanisms as a major building block. As an example, finite state machines (FSMs) and their graphical counterpart---state transition diagrams---are heavily used e.g. for the specification of various kinds of protocols such as network protocols (e.g. TCP/IP), protocols for infrared data transmission, etc. Many embedded systems, such as telephone switching systems and television control, are directly based on state machines. Introducing generic components for state machines can raise the source code abstraction level from 'hard-coded' control flow decisions such as 'switch/case' and 'if' to a more flexible implementation model of control flow. This paper shows that it is possible to use statecharts and their advanced mechanisms from specification to implementation of reactive systems. By explicitly modeling states and state transitions the source code is described at a higher abstraction level and thereby top-down program comprehension is facilitated. We define a set of specific design patterns to abstract state machine source code from low-level implementation to a more abstract level. Furthermore, we introduce a certain degree of genericity and thus flexibility without major losses in efficiency during the design and implementation of generic components.