Design Methods for Reactive Systems