AbstractSoftware 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.
Categories and Subject Descriptors: C.0 [General]; D.1.5 [Programming Techniques]: Object-oriented Programming; D.2.1 [Software Engineering]: Requirements/Specifications; D.2.1 [Software Engineering]: Requirements/Specifications; D.2.1 [Software Engineering]: Requirements/Specifications; G.4 [Mathematical Software]; I.0 [General]
Additional Key Words and Phrases: algebraic software methodologies, coordinate free numerics, numerical software, seismic simulation, domain specific languages, software architecture, software process model, software life cycle model
Selected references
- R. J. R. Back. On correct refinement of programs. Journal of Computer and System Sciences, 23(1):49-68, August 1981.
- Joseph A. Goguen. A categorical manifesto. Mathematical Structures in Computer Science, 1(1):49-67, March 1991.
- John V. Guttag and James J. Horning. The algebraic specification of abstract data types. Acta Informatica, 10:27-52, 1978.
- C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1:271-281, 1972.
- Paul Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4es):196, December 1996.
- Zohar Manna and Richard J. Waldinger. A deductive approach to program synthesis. ACM Transactions on Programming Languages and Systems, 2(1):90-121, January 1980.
- James H. Morris Jr. Types are not sets. In Conference Record of the ACM Symposium on Principles of Programming Languages, pages 120-124, Boston, Massachusetts, October 1973.