The trivial option (usually not recommended): Just draw a line between two boxes to indicate that a dependency exists.

If you need more serious options, you have at least the following options (orderd by required effort for creating and maintaining such descriptions):

  1. Give the line a label (to make it referencable) and explain its meaning in a table below the diagram. This should be sufficient for many non-safety-critical systems.
  2. Use the provided/required notation (aka “ball/socket”), explicitely denoting which services/data/events the providing building block offers. There’s a nice explanation by Martin Fowler on this option.
  3. Use distinct interface building blocks.
  4. Use ball-and-socket notation in combination with port symbols.

The following diagram shows all these options.

Various options for interfaces in UML