To know the importance of modeling let us assume that you are going to build a dog house, a house for your family and a high rise office for a client. In the case of a dog house you need minimal resources and the satisfaction of the dog is not that important. In the case of building a house for your family, you need to satisfy the requirements of your family members and the amount resources are non-trivial. In the case of building a high rise office, the amount of risk is very high.
Curiously, a lot of software development organizations start out wanting to build high rises but approach the problem as if they are knocking at a dog house. Sometimes you get lucky, If you have the right people at the right moment and if all the planets align properly, then you might, get your team to create a software product that satisfies its users. This happens very rarely.
Unsuccessful software projects fail in their own unique ways, but all successful software projects are alike in many ways. There are many elements that contribute to a successful software organization; one common element is the use of modeling.
Modeling is a proven and well-accepted engineering technique. We build architectural models of houses and high rises to help their users visualize the final product. Modeling is not only limited to the construction industry. Modeling is applied in the fields of aeronautics, automobile, picture, sociology, economics, software development and many more. We build models so that we can validate our theories or try out new ones with minimal risk and cost.
What, then is a model? Simply put,
A model is a simplification of reality.
A good model includes those elements that have broad effect and omits those minor elements that are not relevant to the given level of abstraction. A model may be structural, emphasizing the organization of the system, or it may be behavioral, emphasizing the dynamics of the system.
Why do we model? There is one fundamental reason:
We build models so that we can better understand the system we are developing.
Through modeling, we achieve four aims:
- Models help us to visualize a system as it is or as we want it to be.
- Models permit us to specify the structure or behavior of a system.
- Models gives us a template that guides us in constructing a system.
- Models document the decisions we have made.
The larger and more complex the system becomes, the more important modeling becomes, for one very simple reason:
We build models of complex systems because we cannot comprehend such a system in its entirety.
Every project can benefit from modeling. Modeling can help the development team better visualize the plan of their system and allow them to develop more rapidly by helping them build the right thing. The more complex your project, the more likely it is that you will fail or that you will build the wrong thing if you do on modeling at all.