Designing a model for software systems is as essential as having a blueprint for a large building. Good models:
identify requirements and communicate information
focus on how system components interact, without getting bogged down in specific details
allow you to see relationships among design components
improve communication across your team through the use of a common, graphical language