A design pattern for model based software development for automatic machinery