UML diagram designer | classes in source material such as requirements descriptions, interview notes, or the results of brainstorming sessions | decisions about directionality to later phases of development, when the detailed design is created because although making associations one-directional can improve efficiency and reduce complexity, it might also limit the flexibility of the system. | 5.2 - Essentials of UML Class Diagrams | an association as an aggregation if the following are true: - You can state that the parts 'are part of' the aggregate, or the aggregate 'is composed of' the parts
- When something owns or controls the aggregate, then they also own or control the parts
| a distinct class if a subset of a class's attributes form a coherent group | actions as if they were associations | generalizations as special associations, a common misconception which arises because both generalizations and associations connect classes together in a class diagram | associations and attributes once a good initial list of classes has been identified, starting with the most important classes and working outwards towards the classes that are less important | every association in both directions to verify that it makes sense because it is very common to make errors when creating associations - it is particularly easy to get the multiplicity wrong | a class into several distinct classes if it has too many responsibilities | responsibilities among the classes so no one class has an unfair share, and hence becomes unduly complex | in the following sequence- Identify a first set of candidate classes
- Starting with the most important classes, add any associations and attributes that clearly will be needed
- Work out the most clear generalizations
- List the main responsibilities of each class
- Based on responsibilities, decide on specific operations that are needed
- Iterate over the entire process, examining the model to see if you need to add or delete classes, associations, attributes, generalizations, responsibilities or operations
- Repeat the last step as needed until the model is satisfactory
| designer | classes that are needed to solve a particular design problem | overdoing generalization | classes by extracting the nouns and noun phrases from source materials | reuse when identifying classes | a less restrictive multiplicity could also makes sense in some circumstances | part objects inside the aggregate object to improve the encapsulation of the system so that methods in the system would be able to perform most operations on the aggregate, without needing to know about the existence of the parts |