<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hi Paul,<br><br>&nbsp;I've been away from software design for more than a decade and have fallen behind on what's currently being used. I wasn't even aware of RUP.<br><br>Thanks for the info.<br><br>Michael<br><br>--- On <b>Sun, 5/17/09, Paul Johnson <i>&lt;paul@cogito.org.uk&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Paul Johnson &lt;paul@cogito.org.uk&gt;<br>Subject: Re: [Haskell-cafe] Building a better dog house?<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: haskell-cafe@haskell.org<br>Date: Sunday, May 17, 2009, 3:26 PM<br><br><div class="plainMail">michael rice wrote:<br>&gt; I was just looking at my UML (Unified Modeling Language) User Guide and discovered this:<br>&gt; <br>&gt; "The number of object-oriented methods increased from fewer than 10 to more than 50
 during the period between 1989 and 1994." pg. xviii, Booch, Rumbaugh, Jacobson, 1999<br>&gt; <br>&gt; Is there a modeling methodology recommended for functional languages?<br>&gt; <br>&gt; Michael<br>&gt; <br>&gt; <br>UML of course is not a methodology, its a language.&nbsp; "Rational Unified Process" (RUP) is a methodology.<br><br>There is no recommended methodology for functional programming, but large chunks of RUP and most similar methodologies have little to do with OO programming, and therefore could be used as-is.&nbsp; All the project planning, configuration management, requirements management and so on will work just fine.<br><br>When it comes to the software design in functional languages I find it best to start by looking for a domain analysis of the problem (something that RUP includes as well, if I recall correctly).&nbsp; Then try to translate that domain analysis into an embedded domain specific language (EDSL).&nbsp; Ideally the EDSL
 should allow you to describe anything that is physically or logically possible in the domain, but nothing that is impossible.&nbsp; Then you can go ahead and create your software by translating the requirements directly into the EDSL.<br><br>Paul.<br></div></blockquote></td></tr></table><br>