The purpose of UML is to aid modeling. Modeling a software system, like any other creative activity, requires discipline and awareness of certain guidelines. Even when a guideline is not followed, it is important (in fact, more important) to be cognizant of the guideline so that the decision to break the rule is taken consciously and deliberately—not in ignorance.
In this section, we will examine some common design guidelines that are useful during modeling.
Circular dependencies, such as those shown in Figure 4.5, are often an error and represent unclear partitioning of responsibilities.