The role of models in managing the uncertainty of software-intensive systems