software modeling and #ddDesign, quick intro
for starters, model basic concepts:
- nouns
- verbs
i'd even throw in the modifiers:
- adjectives (informs types of nouns/things/data)
- adverbs (informs ways or degrees of verbs/behaviors)
(at this point you only have a shallow view of the design)
(but it's a good start)
then get deeper, keeping track of the concepts':
- associations
- relationships (e.g. one/many to one/many)
- roles
- dependencies
(now we're diggin, getting to the essence of the domain)
look for awkward concepts and call em out:
- constraints/invariants
- processes, procedural rules (un-oo parts of the model)
- specifications/validations
(it takes iterations and convos to get here)
(but jackpot, we're starting to get to the jewels in the domain)
design; compose/arrange them as:
- value objects
- entities
- aggregates
- services
- repositories
- factories
and isolate this set of classes and groups of classes, the model, in it's own layer
heuristics rules of thumb:
- make the implicit explicit
- liberal use of UL-reflective naming
- no anemic models, use whole objects
- srp, kiss, and dry, tda; solid grasp in general
(just continue to refactor to better and better design)
any other software design steps i missed??
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.
