my rough notes that i took this lunch time when watching the
screencast, maybe someone might find them useful, or give us a
framework for discussion tomorrow, beware they are really rough!!!
Chris.
@shiftin
Notes on Eric Evans Strategic Design QCon London talk:
http://www.infoq.com/presentations/design-strategic-eric-evans
Hard to resist designing all parts of a system, when not all parts
need designing.
The messy interconnectedness of systems are sometimes the most
important parts of a system, and sometimes the least understood
(people leaving etc)
options?
- The grand redesign, Y1, building a platform, works. Y2 building
supporting systems, first half works, then goes bad. Y3 never happens.
- Refactor it
- Hack it, continue down the same path as before doing the same hacky
development. not a good place to be.
Core Domain
- Generic subdomains (i.e. accounting)
- Supporting subdomains
- core domain (tiny font!) e.g. rating feature comparison between
amazon and ebay. this is what makes the system worth writing and not
buying or outsourcing. this is got by understanding the business
strategy.
Irreponsible programmers become hero's. Why?
Senior devs spend all the time working on the platform and cleaning up
the mess made by the IPs.
IP's use the platform to deliver the new and sexy features.
Responsible Designers
how can we just build just the core part at the top of the pyramid?
freeing the senior devs from building loads of platform generic and
supporting subdomains and get them working in the core domain?
There are always multiple models
- No grand unifications, no enterprise models (even shared db
schemas?!)
Need a USEFUL model
- does not have to be the right model
- there are many many models, all of them wrong! get a useful one.
Different models are fine when they are separate
- things might need to change when integrating different models of
the same thing.
- use translation layers for this integration
Bounded Contexts
- within this context we can have a ubiquitous language.
Context Maps
Translation maps
Big balls of mud can not support the UL.
Have a single unified model within any one context
- no duplication within a context
- may have it between contexts
Precision designs are fragile.
Anti-corruption layer
- Is a barrier and a translation layer
- Can take the place of the 1-2 year initial platform development
planned originally
- Will be nasty and full of hacks
- probably make the legacy system even worse, but for greater gain
for todays business needs.
> ...
>
> read more »