Model-based reasoning in science and engineering