Concept: Analysis Class
A conceptual element that collects together a major chunk of responsibilities in the system.
Relationships
Main Description

Analysis classes specify elements of an early conceptual model for things in the system that have responsibilities and behavior. They represent the prototypical classes of the system, and are a first-pass at the major abstractions that the system must handle. Some architects and designers maintain analysis classes even after the system is implemented, in order to communicate a high-level conceptual overview of the system. Each analysis class typically evolves into one or more logical and physical components in the system architecture.

An analysis class has properties including a name, description, responsibilities, and attributes. The description includes the role the class plays in the system.

Analysis classes may be stereotyped as one of the following:

  • Boundary classes
  • Control classes
  • Entity classes

These stereotypes are useful in helping you to identify components in the component model. Apart from giving you more specific process guidance when finding components, this stereotyping results in a robust component model, because changes to the model tend to affect only a specific area. Changes in the user interface, for example, affect only boundary classes. Changes in the control flow affect only control classes. Changes in long-term information affect only entity classes.

Boundary Class

A boundary class is a class used to model interaction between the system's surroundings and its inner workings. Such interaction involves transforming and translating events, and noting changes in the system presentation (such as the interface).

Boundary classes model the parts of the system that depend on its surroundings. Entity classes and control classes model the parts that are independent of the system's surroundings. Thus, changing the GUI or communication protocol should mean changing only the boundary classes, not the entity and control classes.

A system may have several types of boundary classes:

  • User interface classes: Intermediate communication with human users of the system
  • System interface classes: Intermediate communication with other system
  • Device interface classes: Provide the interface to devices (such as sensors) that detect external events

Common boundary classes include windows, communication protocols, printer interfaces, sensors, and terminals. Generally, an entire window is the finest-grained boundary object. Boundary classes are also useful for capturing interfaces to APIs, such as legacy code.

Boundary classes make it easier to understand the system, because they clarify the system's boundaries. They aid modeling by helping group related services. For example, if you identify a printer interface, you soon see that you must also model the formatting of printouts.

Control class

A control class is a class used to model control behavior specific to one or a few functional requirements. They often control other objects, so they implement coordinating behavior. Control classes encapsulate specific functional requirements.

The behavior of a control class is closely related to a specific scenario of system use. A control object can direct the system in carrying out more than one closely-related functional requirements, or several control objects can coordinate a single requirement. Examples of control objects include transaction managers, resource coordinators, and error handlers. Not all functional requirements require a control class.

A control class does not handle all system functionality itself. Instead, it coordinates the tasks of other objects that implement the functionality. The control class delegates work to the objects that have been assigned the responsibility for the functionality.

Control classes can contribute to your understanding of the system, because they represent the dynamics of the system, handling the main tasks and control flows. Control classes effectively de-couple boundary and entity objects from one another, making the system more tolerant of changes in the system boundary. They also de-couple the system-specific behavior from the entity objects, making them more reusable across systems.

Entity class

An entity class is a class used to model information that must be stored, and associated behavior related to managing that information. Use entity classes to hold and update information about some concept, such as an event, a person, or some real-life object. They are usually persistent, having attributes and relationships needed for a long period, sometimes for the life of the system.

An entity object is usually used in many places throughout the system. Sometimes, it is not even specific to the system itself. Users or other systems often provide the values of its attributes and relationships. An entity class may also help perform internal system tasks. Entity classes can have behavior as complicated as that of other types of analysis classes. However, unlike other types of classes, this behavior is strongly related to the entity it represents. Entity objects are independent of the environment.

Entity classes represent the key concepts of the system. Typical examples of entity classes in a banking system are Account and Customer. In a network-handling system, examples are Node and Link.

Entity classes provide another point of view from which to understand the system. They show the logical data structure, which can help you understand what the system is supposed to offer its users.