As mentioned in Chapter 2, a component is a part of the system that exists when the system is executing. For example, the project management system may be decomposed into the following components:
Components follow the type-instance dichotomy first discussed in Chapter 2 and applied to classes and objects in Chapter 3. You can use the UML to talk about classes of components as well as specific components of a class. When speaking of a class of components, it's customary to use the terms component or component class. Thus, while you might think of a component as a specific thing, in the UML, a component really represents a class of things. When speaking of a specific component of a class, use the term component instance.
A component exists during execution time and requires a resource on which to execute, which I talk about in the next section, Section 5.2. In the UML, a component is shown as a rectangle with two small rectangles protruding from its side. The rectangle is labeled with the name of the component class.
Figure 5-1 shows various components associated with the project management system, including user interface, business-processing, data, and security components.
A component instance is a specific component. For example, specific components of the project management system include:
A component instance is shown similar to a component class, but is labeled with the component instance name followed by a colon followed by the component class name, with all parts of the name fully underlined. Both names are optional, and the colon is present only if the component class name is specified.
Figure 5-2 shows various component instances of the component classes in Figure 5-1, including two user interface component instances, named Web and Client Server, two data component instances, named Local Data and Enterprise Data, a nameless business processing component instance, and a nameless security component instance.