Strategic software design
Domains
Generic Domains
not specific to your business
eg : accounting
understood by other companies as well
should be
bought
produced as cheap as possible
outsourcing
Supporting domains
specific to your business but not core
if needed
can be outsourced
eg: amazon book rating by users/readers
Core domains
eg: seller rating by users/buyers
directly relates to
strategy of the company
which often needs to change
due to market conditions
and how software is used to leverage that strategy
need to be developed
by best & most responsible developers
colocated & close to business
usually relatively small
4th solution
Focus on CORE domain
don't fix 'everything'
create Bounded Contexts (BoCo)
and stay consistent in this context only
eg allow duplication between BoCo's
start with platform
anti corruption layer
interfaces with
the big ball of mud
translates
often an ugly layer
introducing even more mudd in the ball of mud
alternative is
then build on top of that
(or within its safe border)
the Core Domain
Model the elephant
hindu story
blind people try to describe an elephant
touching side
elephant is a wall
touching knee
elephant is a tree
touching tail
elephant is a rope
touching trunk
elephant is a snake
model of elephant
is NOT the elephant
describes the elephants features needed in a certain context
could be a wall
supported by 4 trees
withe a snake
and a rope attached on either end: -)
in the context of a single BoCo
an elephant
can be described accuratley enough as a tree
irresponsible hero's
much credit
because they work in
CORE domain
close to business needs
caused instability
is fixed by people
quite
responsible
competent
even though
their solution
has a high cost of delivery
which usually remains invisible
context
problem
new features don't map to legacy system
common solutions
system 2.0
replace legacy with new system
refactor legacy
hack
Subtopic
common results
system 2.0
never gets finished
old legacy is more complex than expected
concepts just copied rather than reworked
refactor
goes on for ever
old legacy is more complex than expected
hack
system becomes more & more
unreliable
unstable