Software construction is essentially a modeling task. The most important decisions in software development are decisions that deal with modeling. The better, the more adequate and more powerful the available modeling paradigms are the easier the program development task is and the better its results are. In the following we describe the role of models in program development and show how closely the issue of modeling is related to the so-called formal methods in program development. We give a number of arguments the usage of mathematical models in software construction and back them up by some detailed examples.