Software is getting easier to develop, thanks to the best efforts of computer language inventors, tool developers, and process gurus, but the process of getting from a set of requirements to a proper abstraction of the solution remains difficult. Even relatively small systems can have large amounts of complexity, which is what leads people to develop models. A model is a simplification of something so we can view, manipulate, and reason about it, and so help us understand the complexity inherent in the subject under study.
A wide variety of models have been in use within various engineering disciplines for a long time. Aerospace engineers rely heavily on models that describe the forces acting on an airplane; electrical engineers use large models to design telephone switching systems; civil engineers would be lost without their blueprints. Other forms of models, such as the simulations used in high finance and the storyboarding that Hollywood directors use, also play important roles.
We can say the following things about what makes a good model:
A good model omits information in order to help viewers more clearly see the issue at hand and check the correctness of the developed understanding. A good model will therefore not be the same as the real thing in all respects. For example, we may model an airplane to understand how well it will fly by omitting details about interior fittings.
A good model accurately reflects some real, abstract, or hypothetical reality. That is, although the model omits information, the information that remains accurately captures the subject matter at hand so we can reason about it. For example, the lack of interior fittings is generally unimportant in understanding aerodynamic behavior, yet the weight distribution of those same fittings can affect aerodynamics.
A good model must be cheaper to build than the real thing. Note that we don't mean cheaper only in the financial sense. We might build models of medical instruments or spacecraft so we can experiment with the models or use them to verify correct behavior before building the real thing, because the real thing comes with risks with regard to human life.
A good model serves as a means of communication by illustrating one or more ideas quickly and easily. A standard, well-defined modeling language reduces the likelihood of misinterpretation by the viewers of the model, including machines. MDA takes advantage of that fact to provide automation to we the cobblers' children.