Common Modeling Techniques:
Modeling the Vocabulary of a System
To model the vocabulary of a system:
- Recognize the things that users or implementer's use to describe the problem or solution
- Use Class Responsibility Collaboration (CRC) cards and use case based analysis to find out these abstractions, which typically become classes in the model
- Identify a set of responsibilities for each abstraction
- Ensure that each class is well defined and there exists a reasonably good balance of responsibilities among all classes
- Include the attributes and operations that are necessary to fulfill the responsibilities for each class
Modeling Non Software Things
To model non-software things:
- Model the things that need to be abstracted as a class
- If these are different from UML’s standard building blocks, then stereotypes are used to create new building blocks
- Use nodes for modeling hardware things
Modeling the Distribution of Responsibilities in a System
To model the distribution of responsibilities in a system:
- Find out the classes that work together to carry out a required behavior and identify their respective responsibilities
- Divide the classes that have too many responsibilities into smaller ones. Merge the classes that have very few responsibilities
- Consider collaboration among classes to redistribute responsibilities
- Model the things that need to be abstracted as classes
Modeling Primitive Types
To model primitive types:
- Model the thing that needs to be abstracted as a class or an enumeration. It is then rendered using a class notation
- Specify the range of values associated with this type, use constraints
Classes at Glance