HW #11 (100 pts): Domain models
This homework will deal with the next iteration of the UML assistant. In this new iteration, the system will be extended to assist with more UML diagrams and perhaps other UP products. The team should hand in their work in one packet, with a cover sheet stating which parts were done by which team members. Neatness and clarity in this is important.
1. As a team, elucidate brief format use cases, one for each team member. Thus one use case might be for class diagrams, another for sequence diagrams, and a third for collaboration diagrams, if your team has three members. For four members, consider some of the other products of OOA/D discusssed in class and in the book, not necessarily diagrams.
The use case scenario you as an individual are doing reflects the requirements that should motivate the content of your domain model. The domain model will consist of conceptual classes, associations, and attributes. Build it as follows.
2. For your use case scenario, use the conceptual class category list in the textbook to generate a list of candidate conceptual classes. For each, give it a name, and give the conceptual class category that motivated it. If a conceptual class category does not lead to a good conceptual class, explain why.
3. For your use case scenario, list the nouns in it.
4. Compare your two lists. How are they the same? Different?
5. Merge the lists. Then, for each item in the resulting list, check if perhaps it should actually be an attribute instead of a conceptual class. Make a (shorter) list of items that should actually be attributes.
6. For your conceptual classes (minus those that should be attributes), write a list of their names, a more abstract candidate name for each one, which one of the two names is better, and why. The updated name list is further processed in the next step.
7. Decide if any of the conceptual class names can be made more familiar and easily understood. If so, note which ones and give a new list.
8. Using the list of common association types in the book, for each one give an example or two of two of your conceptual classes that have that kind of association, or say there aren't any examples to be found. This is your list of candidate associations.
9. For each candidate association, state why information about it needs to be stored, or why it doesn't. Generate a new list of candidate associations that leaves out those candidates for which information need not be stored for any length of time.
10. Identify any redundant or derivable associations and delete them from the list. If none were on the list, make up a redundant association and a derivable association, and explain why it is redundant/derivable.
11. Give an example of a multiple association in your list, or make one up for the purpose of this question.
12. For each conceptual class in your list, decide if it really belongs there or not. If not, explain why not. If it does belong, give it attributes and explain (briefly) for each attribute why the requirements imply that it should be present.
13. Give an example of an attribute that should not be present, for one of your conceptual classes.
14. For each attribute, check if it is simple enough to be an attribute. Make a note of any attributes that you decide to remove because it is too complicated. If none were found, make up an example for the purpose of this question.
15. For two of your conceptual classes that have an association, draw a UML class diagram.