I am investigating whether an organization can
build large applications ( >> 50Kloc - thats c++ lines of code)
using a functional language, specifically Haskell.

I was told by another that a "very famous software engineering researcher"
had said that the reason there was no emphasis on the use of functional
languages in large software systems was:

"... functional approaches do not permit you to create
an abstract notion of system state that can be modeled.
Functional languages are great for people to think about
problems (especially recursion), but they are no good for 
large software systems.  It's not that people haven't looked
at them in this context; they don't work."


Now what I am NOT looking for is a list of applications
that have been built with functional languages.

What I am looking for are the formal design methods and tools
supporting those methods that lead one through the task
of decomposing a problem (possibly specified in a requirements
document) into a design that can be used as the starting point
for coding with a functional language. The documentation
should not only cover the engineering task of (using generic terms)
top-level-design, intermediate-design, detailed-design,
unit-coding&test, test&integration,
requirements-testing&sell-off, etc, but also how one
manages such a project.

For example, for imperative langages one has the Waterfall
design cycle with volumes of texts showing one how to design
and manage such a project. There are also many design tools
supporting such an approach. For an object-orient approach
there is again many papers and books describing how to go about
such a design and how to manage such a project. There is the
new UML (unified modeling Language) specifically created to
provide a common OO design technique for such projects (and, no
doubt, to create a single larger tools market, rather than
a number of smaller, disjoint markets).

What exists for functional languages?

Thanks.

Richard Emberson



Reply via email to