One of the first steps of designing an application is the domain model. This is where you sketch out all entities of the system, so that it’s obvious from the beginning where the interactions and where the overlap will be.
For instance, in our domain model below, there is an entity called ‘Escalation
Policy’. This term means two different things in our model. First, it symbolizes the
order of people that are going to be alerted in the case of a system failure.
Second, it symbolizes the order of the individual devices that are going to be
alerted. These are technically two separate things, but by outlining them in a
domain model, it became clear to our team that they’re really the same when it
comes down to it. It’s just an ordered list of objects with certain properties
attach. When a member of the team should be paged, we’ll run something to the
Person.page(), and the Person object will know that
page means to
contact the first device. The device will run
page as well, but it will know
that it’s supposed to actually send a page to that device.