Design Patterns to Support the Migration between Event-Triggered and Time-Triggered Software Architectures