Validating time-constrained systems using UML Statecharts Patterns and Timed Automata Observers