We use Lucidchart to create UML diagrams for the various flows involved, typically either like a component diagram or a sequence diagram, and embed that into a document of sorts (choose your poison: wiki, Google Doc, crumpled napkin, etc.). It's best if you follow a "test driven development" approa...