Why Build Models?
The most compelling reason for building models is that you obtain software that works, and works well. The model that has been verified with both business needs and technological capabilities becomes the core of an application. Thinking in terms of models provides several important benefits:
Better quality. Your application can be no better than the underlying thought. If you understand an application, you are likely to succeed. Other things can still go wrong (such as funding, market timing, and project management), but your chance of success is high. In contrast, if you poorly understand an application, your chance of success is slim to none. Such an application will be confusing to users, will lack a clarity of purpose to program against, and will be difficult to maintain.
Modeling is first, and foremost, a means for achieving clear thinking and coherence. Frederick Brooks [4] contends that "conceptual integrity is the most important consideration in system design." (The italics are his.)
Reduced cost. You can shift your activities toward the relatively inexpensive front end of software development and away from costly debugging and maintenance. More than 60 percent of a software budget is consumed by maintenance [6], so such a shift is well worthwhile. Models also make it easier to convert data from old applications to populate a new one.
Faster time to market. Skilled developers can build applications more quickly. It is faster to deal with difficulties at the conceptual stage than when software has been cast into programming and database code.
Better performance. The clarity of a sound model and its database embodiment enable good performance. Because the model is understandable and grounded in reality, it is straightforward to pose business queries. Given the correspondence between the model and the database, business queries readily translate into database code. This predictability means that you can thoroughly tune the application to get the fastest response.
Greater maintainability. Models document intent. If you build software via models, your software will have a coherent organization that can be extended more readily.
Communication. Models reduce misunderstandings and promote consensus among developers and customers. Important names, definitions, decisions, and assumptions become visible for everyone. Stakeholders can ask important questions early on, and it is easier to coordinate the work of multiple developers.
With all these advantages, it makes sense to develop software routinely via models. The cost of constructing models is far outweighed by improved quality, reduced debugging cost, quicker time to market, and simpler maintenance.
One last point about model building: Conceive the model first, and use it to drive application development. Too many developers construct models as an afterthought to comply superficially with an edict to use models. The ability to internalize a model's content and drive it through application development sets apart excellent developers from mediocre ones.