The language and semantic models of software models are reasonably mature, but they are still evolving. The more complete the model, the more accurate and representative the model becomes; but it also becomes more difficult to create and prove correct.

How can a developer use the modeling elements at his or her disposal to represent a system in a complete and accurate way that is understandable, portable, modifiable, and correct? The way to accomplish this task is ultimately answered by the development process.