Discover Potential Classes

The conceptual model shows the interaction between classes that represent concepts from the problem domain; Weather, Plant, and Soil are classes that represent concepts in a crop simulation domain. Although discovering all needed concepts is not an easy task, this is only part of what needs to be achieved. The conceptual model does not show any aspect of the user's interaction with the system. This behavior, how users will interact with the system, will be provided by some other classes that do not represent any of the concepts of the problem domain and therefore, they are not part of the conceptual model.

The conceptual model shows that class Plant needs to access data and behavior from classes Weather and Soil, to calculate processes that occur in class Plant. Associations between classes are "communication channels," which allow objects created from these classes, to send/receive messages to one another. Although all the required structures are in place to make the dialog between objects possible, the dialog does not happen by itself. There is a need for some controller/supervisor that would coordinate the dialog between objects.

Experience shows that expectations for a system change over time. The more users become familiar with the system, the better they understand the system and their expectations grow; other requirements may be added to the system and the logic that controls the dialog between classes may change. In order to design a flexible system that is resilient to changes, three different aspects of a system need to be taken into consideration. These aspects are:

The communication between users and the system, the control of the logic of the system, and the concepts of the problem domain. Therefore, three different categories of classes, one for each aspect, need to be discovered. The categories are: Boundary, control, and entity classes. Let us take a closer look at each of these categories of classes and present their role in our future system.

Note that the differences between classes that belong to different categories are simply conceptual. Grouping classes into categories helps us to reduce complexity by dividing the problem into smaller and independent parts. During the implementation phase of the system in a particular programming environment, the conceptual differences between classes disappear; they are just classes provided with the right behavior to play well-defined roles in the system.

0 0

Post a comment