Formal Software Engineering for Computational Modelling

Software itself may be considered a formal structure and may be subject to mathematical analysis. This leads to a discipline of formal software engineering (which is not necessarily the same as the use of formal methods in software engineering), where a formal understanding of what software components are and how they may interact is used to engineer both the components themselves and their organisation. A strategy is using the concepts that are suited for organising the problem domain itself to organise the software as well. In this paper we apply this idea in the development of computational modelling software, in particular in the development of a family of related programs for simulation of elastic wave propagation in earth materials. We also discuss some data on the technique's effectiveness.

[1]  James H. Morris,et al.  Types are not sets , 1973, POPL.

[2]  A. Bruaset,et al.  A Comprehensive Set of Tools for Solving Partial Differential Equations; Diffpack , 1997 .

[3]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[4]  James Tiberius Racko Choose me , 1995 .

[5]  Peter D. Mosses CoFI: The Common Framework Initiative for Algebraic Specification , 1996, Bull. EATCS.

[6]  Ann K. Stehney,et al.  Geometrical Methods of Mathematical Physics: Connections for Riemannian manifolds and gauge theories , 1980 .

[7]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[8]  Ralph-Johan Back,et al.  On Correct Refinement of Programs , 1981, J. Comput. Syst. Sci..

[9]  Allen C. Robinson,et al.  Development of Generic Field Classes for Finite Element and Finite Difference Problems , 1993, Sci. Program..

[10]  T. R. Hughes,et al.  Mathematical foundations of elasticity , 1982 .

[11]  S. Maclane,et al.  Categories for the Working Mathematician , 1971 .

[12]  Jack Dongarra,et al.  MPI: The Complete Reference , 1996 .

[13]  Allen C. Robinson,et al.  Object‐Oriented Numerics: A Paradigm for Numerical Object‐Oriented Programming , 1993 .

[14]  George Gratzer,et al.  Universal Algebra , 1979 .

[15]  Magne Haveraaen,et al.  An algebraic programming style for numerical software and its optimization , 2000, Sci. Program..

[16]  W. W. Royce,et al.  Managing the development of large software systems , 1970 .

[17]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[18]  Donald Sannella,et al.  Architectural Specifications in CASL , 1998, AMAST.

[19]  Hans Petter Langtangen,et al.  Object-Oriented Numerics , 1997 .

[20]  Magne Haveraaen,et al.  Tensor Abstraction Programming of Computational Fluid Dynamics Problems , 1998 .

[21]  Ken C. Budge,et al.  High-Performance Scientific Computing Using C++ , 1992, C++ Conference.

[22]  M. Biot THEORY OF ELASTICITY AND CONSOLIDATION FOR A POROUS ANISOTROPIC SOLID , 1955 .

[23]  M. Biot Theory of Propagation of Elastic Waves in a Fluid‐Saturated Porous Solid. I. Low‐Frequency Range , 1956 .

[24]  Juris Hartmanis,et al.  The Programming Language Ada , 1983, Lecture Notes in Computer Science.

[25]  Jerrold L. Wagener,et al.  Fortran 90 Handbook: Complete Ansi/Iso Reference , 1992 .

[26]  M. Biot Theory of Propagation of Elastic Waves in a Fluid-Saturated Porous Solid. II. Higher Frequency Range , 1956 .

[27]  Hartmut Ehrig,et al.  From abstract data types to algebraic development techniques: A shift of paradigms , 1997, WADT.

[28]  Paul G. Richards,et al.  Quantitative Seismology: Theory and Methods , 1980 .

[29]  Joseph A. Goguen,et al.  A categorical manifesto , 1989, Mathematical Structures in Computer Science.