Computer systems, whether one program or a thousand programs, tend to arrange themselves into categories of operation.
The design of the system is composed of both modules, data, and routines. The distinction is blurred. A module is a collection of routines that act on the (whatever the means) data. The quality of a particular choice of modularization (which means both modules and routines) is measured in terms of cohesion and coupling as described in Section 8.3. In informal terms, cohesion is a measure of how well data and routines have be brought together in one place and coupling measures how well two routines are separated. The third leg of the stool is called information hiding, discussed below.
There are several key concepts to design. In object-oriented design, we use abstraction, encapsulation, modularity, inheritance, classes, and objects. An integral part of the object-oriented design is the concept of information hiding.
The desirable characteristics of designs are shown in Figure 3.
Table 3: Desirable Design Characteristics.
Finally, some global considerations are shown in Figure 4.