A Design Methodology for Functional Programs

An increasingly significant weakness of declarative programming is that it lacks a design methodology. In this paper, we attempt to provide one by showing how methodologies commonly used to develop object-oriented programs might also be used to develop functional ones. This involves mapping from a restricted subset of the diagrammatic notation used with these methodologies, the Unified Modeling Language (UML), to the standard lazy functional programming language, Haskell. As an example, we develop a small electronic mail system.

[1]  Brian Henderson-Sellers,et al.  Open Modeling with UML , 2000 .

[2]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction , 1998 .

[3]  Antoni Diller,et al.  Z - an introduction to formal methods , 1990 .

[4]  Simon L. Peyton Jones,et al.  Object-Oriented Style Overloading for Haskell , 2001, BABEL.

[5]  G. O'Neill Automatic Translation of VDM Specifications into Standard ML Programs (Short Note) , 1992, Comput. J..

[6]  David A. Schmidt A Return to Elegance: The Reapplication of Declarative Notation to Software Design , 1999, PADL.

[7]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction, Second Edition , 2000 .

[8]  Andy Evans,et al.  Core Meta-Modelling Semantics of UML: The pUML Approach , 1999, UML.

[9]  Richard S. Bird Transformational Programming and the Paragraph Problem , 1986, Sci. Comput. Program..

[10]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[11]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.

[12]  Michael Johnson,et al.  From Z Specifications To Functional Implementations , 1989, Z User Workshop.

[13]  David Turner Functional programs as executable specifications , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[14]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[15]  Silvio Romero de Lemos Meira,et al.  From VDM specifications to functional prototypes , 1993, J. Syst. Softw..

[16]  Doris L. Carver,et al.  FunZ: An Intermediate Specification Language , 1995, Comput. J..

[17]  Desmond D'Souza,et al.  Objects, Components, and Frameworks with UML: The Catalysis Approach , 1998 .

[18]  Andrew D. Gordon An Introduction to Formal Specification and Z by Ben Potter, Jane Sinclair and David Till, Prentice-Hall, 1991. Z: An Introduction to Formal Methods (second edition) by Antoni Diller, John Wiley & Sons, 1994. , 1996 .