How do you deal with analysis and design phases when you plan to develop a system using a functional programming language like Haskell?
My background is in imperative/object-oriented programming languages, and therefore, I am used to use case analysis and the use of UML to document the design of program. But the thing is that UML is inherently related to the object-oriented way of doing software.
And I am intrigued about what would be the best way to develop documentation and define software designs for a system that is going to be developed using functional programming.
- Would you still use use case analysis or perhaps structured analysis and design instead?
- How do software architects define the high-level design of the system so that developers follow it?
- What do you show to you clients or to new developers when you are supposed to present a design of the solution?
- How do you document a picture of the whole thing without having first to write it all?
- Is there anything comparable to UML in the functional world?