I've been meaning to post about this for a while. I worked on a couple of projects earlier using the 'modeling with color using archetypes' approach. In spite of that, recently I have learnt the value of formal learning. The workshop that I attended recently not only refreshed what I knew about the archetypes and color modeling it has challenged some of the ways of my thinking about domain modeling.
It is so convenient to think about an object in terms of colors, more than colors it is the categories that each color represents --
- Pink (Moment-interval) -- Represents a moment or interval of time. e.g: a sale, a video rental, an account registration
- Yellow (Role) -- A way of participating in the above activity. e.g: Cashier, Customer, Manager
- Blue (Description) -- A catalog like description which classifies objects. e.g: product catalog
- Green (Party, Place or Thing) -- Something that is uniquely identifiable. e.g: Person, Store, Product
During the modeling sessions each object is to be examined in the above order -- whether the object is Pink? If not, is it Yellow? If not, is it Blue? If not, it is a Green. Pinks form the core classes of the domain model.
Peter Coad's way of modeling with Post-it notes on a flip chart or a white board is fascinating . I think it helps quite a bit in the modeling sessions, trying out to refine and further refine the shape of the model during the discussion process. Once the modeling team feels that it has achieved a reasonable model it can then formally draw it using any UML tool. Tools are not of primary importance here. The key really is to guide your thought process using this proven concept.
There is a very powerful Domain Neutral Component (DNC) that Peter Coad and team came up with (reproduced from Step-10) --
I'm quite sure based on my own personal experience, above domain neutral component works like charm for many domains. At this point, I'm very interested in knowing whether anybody tried this on any domains that didn't work out or felt a bit 'challenged'? One thing is it is going to take some time to master this art. Once you get into it, you can really appreciate the amount of effort that went into this whole concept.