In object oriented, we have requirements, use cases, and UML which can form a nice conceptual framework. The goal there, is to define objects, their responsibilities, behaviors and communications between them.
What would be the equivalent in functional programming world of objects / responsibilities, behaviors and communication to define a high preview of our program structure ?