Keep track of how a Decision was Derived
One common mistake in modeling is when we do not keep track of how we arrived at a decision.
It is kind of like math class back in school.
When you showed your work, the teachers could figure out where you went wrong.
They could help you understand how to arrive at the correct answer consistently.
But if you did not show your work, there was no way to know whether you got the problem right by skill or just by dumb luck.
Working in a team makes showing your work even more critical. No two people think exactly the same way or at the same pace. Not everyone is in every conversation or meeting. Finally, no one is right all the time.
If you document how you arrived at a decision, then you can always return to the decision process, reevaluate, and change the decision. Equally important is the fact that you preserve a record of the process for everyone to learn from.
Another approach to identifying classes that is somewhat simplistic and yet often useful, is called noun extraction.
The basic idea is this: read over the system requirements/use case flows of events, and note the nouns that appear.
- Some of the nouns that appear, especially the ones that appear frequently will turn out to refer to objects that need to be represented by classes in the final system.
- Other nouns will turn out to represent other elements, including:
1. Attributes of objects, rather than objects in their own right. An important skill to develop is being able to distinguish the two. Recall that objects have three essential characteristics:
- State (often complex - i.e. involving more than a simple value). c) Behavior
Examples: ASK for Wheels examples of attributes that are not objects in their own right, and why things like customer name, bicycle rental rate, date due are attributes.
2. Actors or other objects that are outside the scope of the system.
Example: ASK for Wheels examples Receptionist: Note that since we do not have to build models of these, they do not need to be represented by classes inside the system.
C. Finally, sometimes there may be a generalization-specialization relationship between nouns - implying an inheritance relationship between the corresponding classes.
D. Apply noun-extraction to use cases for AddressBook system.