A model is a simplification of reality that completely describes a system from a particular perspective, as shown in Figure 1-4. We build models so that we can understand better the system we are modeling; we build models of complex systems because we cannot comprehend such systems in their entirety.
Modeling is important because it helps the development team visualize, specify, construct, and document the structure and behavior of a system's architecture. Using a standard modeling language such as the UML (Unified Modeling Language), members of the development team can unambiguously communicate their decisions to one another.
Visual modeling tools facilitate the management of these models, letting you hide or expose details as necessary. Visual modeling also helps to maintain consistency among a system's artifacts: its requirements, designs, and implementations . In short, visual modeling helps improve a team's ability to manage software complexity.
When coupled with the practice of developing software iteratively, visual modeling helps you expose and assess architectural changes and communicate those changes to the entire development team. With the right kind of tools, you can then synchronize your models and source code during each iteration.
Modeling your software visually offers a number of solutions to the root causes of software development problems:
Use cases and scenarios unambiguously specify behavior.
Models unambiguously capture software design.
Nonmodular and inflexible architectures are exposed.
Detail can be hidden when necessary.
Unambiguous designs reveal their inconsistencies more readily.
Application quality starts with good design.
Visual modeling tools provide support for UML modeling.