Model-based specification and testing Formal approach to component based development