Deciding services first and then discovering the relationships produces boundaries that cut through a transaction. Mapping the relationships first tells you which splits are cheap and which are not.
// the relationship types worth naming, because each implies a cost
// shared kernel — two contexts share a model; changes are coordinated
// customer/supplier — downstream can ask upstream for changes
// conformist — downstream accepts whatever upstream provides
// anticorruption — downstream translates at its boundary
The useful outcome is not the diagram but the list of places where two contexts share a model, because each one is a coordinated release forever. A map with three shared kernels in it is telling you the split is wrong before any code is written, which is a considerably cheaper moment to learn it.