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 effect of 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.

Domain Model