Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
Specification and transformation of programs: a formal approach to software developmentJanuary 1990
Publisher:
  • Springer-Verlag
  • Berlin, Heidelberg
ISBN:978-0-387-52356-9
Published:03 January 1990
Pages:
493
Skip Bibliometrics Section
Reflects downloads up to 10 Oct 2024Bibliometrics
Abstract

No abstract available.

Cited By

  1. Galán F and Cañete-Valdeón J (2016). Synthesis of positive logic programs for checking a class of definitions with infinite quantification, Information and Computation, 249:C, (205-236), Online publication date: 1-Aug-2016.
  2. ACM
    Harman M, Langdon W, Jia Y, White D, Arcuri A and Clark J The GISMOE challenge: constructing the pareto program surface using genetic programming to find better programs (keynote paper) Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, (1-14)
  3. ACM
    Binkley D, Harman M and Lakhotia K (2011). FlagRemover, ACM Transactions on Software Engineering and Methodology, 20:3, (1-33), Online publication date: 1-Aug-2011.
  4. ACM
    Androutsopoulos K, Binkley D, Clark D, Gold N, Harman M, Lano K and Li Z Model projection Proceedings of the 33rd International Conference on Software Engineering, (291-300)
  5. ACM
    Morris J, Bunkenburg A and Tyrrell M (2009). Term transformers, ACM Transactions on Programming Languages and Systems (TOPLAS), 31:4, (1-42), Online publication date: 1-May-2009.
  6. ACM
    Morris J and Tyrrell M (2008). Dually nondeterministic functions, ACM Transactions on Programming Languages and Systems (TOPLAS), 30:6, (1-34), Online publication date: 1-Oct-2008.
  7. Pettorossi A and Proietti M (2008). Totally correct logic program transformations via well-founded annotations, Higher-Order and Symbolic Computation, 21:1-2, (193-234), Online publication date: 1-Jun-2008.
  8. Harman M, Baresel A, Binkley D, Hierons R, Hu L, Korel B, McMinn P and Roper M Testability transformation Formal methods and testing, (320-344)
  9. Kühnemann A and Maletti A The substitution vanishes Proceedings of the 11th international conference on Algebraic Methodology and Software Technology, (173-188)
  10. Langmaack H (2005). What Level of Mathematical Reasoning can Computer Science Demand of a Software Implementer?, Electronic Notes in Theoretical Computer Science (ENTCS), 141:2, (5-32), Online publication date: 1-Dec-2005.
  11. ACM
    Liu Y, Stoller S, Gorbovitski M, Rothamel T and Liu Y Incrementalization across object abstraction Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (473-486)
  12. ACM
    Liu Y, Stoller S, Gorbovitski M, Rothamel T and Liu Y (2005). Incrementalization across object abstraction, ACM SIGPLAN Notices, 40:10, (473-486), Online publication date: 12-Oct-2005.
  13. Veerman N (2005). Towards lightweight checks for mass maintenance transformations, Science of Computer Programming, 57:2, (129-163), Online publication date: 1-Aug-2005.
  14. van Gils B, Proper H, van Bommel P and de Vrieze P Transformation selection for aptness-based web retrieval Proceedings of the 16th Australasian database conference - Volume 39, (115-124)
  15. Biggerstaff T (2004). A New Architecture for Transformation-Based Generators, IEEE Transactions on Software Engineering, 30:12, (1036-1054), Online publication date: 1-Dec-2004.
  16. ACM
    Pettorossi A and Proietti M A theory of totally correct logic program transformations Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, (159-168)
  17. ACM
    Baresel A, Binkley D, Harman M and Korel B Evolutionary testing in the presence of loop-assigned flags Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis, (108-118)
  18. ACM
    Baresel A, Binkley D, Harman M and Korel B (2004). Evolutionary testing in the presence of loop-assigned flags, ACM SIGSOFT Software Engineering Notes, 29:4, (108-118), Online publication date: 1-Jul-2004.
  19. Harman M, Hu L, Hierons R, Wegener J, Sthamer H, Baresel A and Roper M (2004). Testability Transformation, IEEE Transactions on Software Engineering, 30:1, (3-16), Online publication date: 1-Jan-2004.
  20. Harman M, Hu L, Munro M, Zhang X, Binkley D, Danicic S, Daoudi M and Ouarbya L (2019). Syntax-Directed Amorphous Slicing, Automated Software Engineering, 11:1, (27-61), Online publication date: 1-Jan-2004.
  21. ACM
    Raudvere T, Sander I, Singh A and Jantsch A Verification of design decisions in ForSyDe Proceedings of the 1st IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, (176-181)
  22. Liu Y and Stoller S (2019). Dynamic Programming via Static Incrementalization, Higher-Order and Symbolic Computation, 16:1-2, (37-62), Online publication date: 1-Mar-2003.
  23. ACM
    Acar U, Blelloch G and Harper R (2019). Selective memoization, ACM SIGPLAN Notices, 38:1, (14-25), Online publication date: 15-Jan-2003.
  24. ACM
    Acar U, Blelloch G and Harper R Selective memoization Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (14-25)
  25. ACM
    Lämmel R Towards generic refactoring Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming, (15-28)
  26. Colvin R, Hayes I, Hemer D and Strooper P Refinement of higher-order logic programs Proceedings of the 12th international conference on Logic based program synthesis and transformation, (126-143)
  27. Alencar P, Cowan D and Lucena C (2002). A Logical Theory of Interfaces and Objects, IEEE Transactions on Software Engineering, 28:6, (548-575), Online publication date: 1-Jun-2002.
  28. ACM
    Liu Y and Stoller S (2002). Program optimization using indexed and recursive data structures, ACM SIGPLAN Notices, 37:3, (108-118), Online publication date: 1-Mar-2002.
  29. ACM
    Liu Y and Stoller S Program optimization using indexed and recursive data structures Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation, (108-118)
  30. ACM
    Hernández M and Rosenblueth D Development reuse and the logic program derivation of two string-matching algorithms Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming, (38-48)
  31. Baxter I Using transformation systems for software maintenance and reengineering Proceedings of the 23rd International Conference on Software Engineering, (739-740)
  32. Liu Y (2019). Efficiency by Incrementalization, Higher-Order and Symbolic Computation, 13:4, (289-313), Online publication date: 1-Dec-2000.
  33. ACM
    Velázquez-Iturbide J Recursion in gradual steps (is recursion really that difficult?) Proceedings of the thirty-first SIGCSE technical symposium on Computer science education, (310-314)
  34. ACM
    Hasselbring W (2000). Programming languages and systems for prototyping concurrent applications, ACM Computing Surveys (CSUR), 32:1, (43-79), Online publication date: 1-Mar-2000.
  35. ACM
    Velázquez-Iturbide J (2000). Recursion in gradual steps (is recursion really that difficult?), ACM SIGCSE Bulletin, 32:1, (310-314), Online publication date: 1-Mar-2000.
  36. ACM
    Liu Y and Stoller S From recursion to iteration Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation, (73-82)
  37. ACM
    Liu Y and Stoller S (1999). From recursion to iteration, ACM SIGPLAN Notices, 34:11, (73-82), Online publication date: 1-Nov-1999.
  38. ACM
    Pettorossi A and Proietti M (1998). Program specialization via algorithmic unfold/fold transformations, ACM Computing Surveys (CSUR), 30:3es, (6-es), Online publication date: 1-Sep-1998.
  39. Ginoux B, Dormoy J, Jimenez-Dominguez C, Lucas J and Pierre L DESCARTES Proceedings of the 9th international workshop on Software specification and design
  40. ACM
    Marchiori M Light analysis of complex systems Proceedings of the 1998 ACM symposium on Applied Computing, (18-22)
  41. Tsai J, Li B and Weigert T (1998). A Logic-Based Transformation System, IEEE Transactions on Knowledge and Data Engineering, 10:1, (91-107), Online publication date: 1-Jan-1998.
  42. ACM
    Liu Y, Stoller S and Teitelbaum T Discovering auxiliary information for incremental computation Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (157-170)
  43. Marshall A Template-based program restructuring - initial experience Proceedings of the 1995 conference of the Centre for Advanced Studies on Collaborative research
  44. ACM
    Liu Y and Teitelbaum T Caching intermediate results for program improvement Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, (190-201)
  45. Zhang J A formal specification model and its application in multidatabase systems Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research
  46. Wolff P Related specifications reuse Proceedings of the 7th international workshop on Software specification and design, (152-161)
  47. ACM
    Ashenhurst R (1991). ACM Forum, Communications of the ACM, 34:9, (16-ff.), Online publication date: 1-Sep-1991.
  48. ACM
    Soloway E (1991). How the Nintendo generation learns, Communications of the ACM, 34:9, (23-ff.), Online publication date: 1-Sep-1991.
Contributors
  • Ulm University

Reviews

David B. Skillicorn

Programmers have taken two approaches to the development of software with proven properties. In the first approach, software is developed using programmers' expertise and experience and then, in a distinct later stage, proven to satisfy a specification. In the second approach, programs are developed from their specifications by transforming them in ways that preserve the properties of interest. Partsch discusses the second approach. The transformational approach to software development has in some ways paralleled the growing interest in functional programming, since referential transparency makes large collections of semantics-preserving rules for transformation possible. Other motivations for the transformational approach include a growing realization that it can reduce the work required to provide correct software because one stage rather than two is used; an appreciation that the first approach does not work well for developing parallel programs since we do not have a repertoire of programming paradigms that can be applied in a vacuum; and an awareness that the transformational approach tends to force consideration of all of the possible implementations of a specification rather than the use of the first one that occurs to the programmer, and does so in such a way that the tradeoffs necessary to make different implementation decisions are cleanly exposed. The transformational approach has mostly been pursued in Europe rather than North America. This book is intended for an audience of junior or senior computer science students, but I doubt if this would work in North America because of both fit with existing curricula and the mathematical background required. The book is a compendious account of what is known about program transformation. The author mentions almost all of the work in the area, making this volume a useful reference for those with any interest in the subject. Its only shortcoming is that it contains little assessment of which ideas are really practical, which are real advances, and so on. Perhaps it is too early to tell, but one cannot escape the feeling, looking at the huge range of derivations, that some work better than others, and it would have been interesting to hear the author's opinions. The first two chapters are introductory. Chapter 1 defines the terms that the book will use, including what is to be understood by “specification” and “transformation.” Chapter 2 is a digression into requirements engineering, which may be intended to suggest how specifications are arrived at. Both of these chapters are collections of material from a wide range of sources, often presented using lists of points or long quotations from other works. As a result, they tend to be choppy and disjointed. Things improve as the author gets to his main subject. Chapter 3 is about finding the right algebraic framework in which to cast specifications. He introduces the concept of a type, or what OBJ would call a theory, as a collection of operations and equations relating them, together with a basic repertoire of functional constructs. Each chapter from this point on concludes with a large set of examples, which increase in complexity throughout the book. Chapter 4 presents the basic applicative transformation rules: the fold and unfold schemes, transformation rules that follow from set theory, and those that follow from algebraic accounts of data types. Chapter 5 introduces more sophisticated transformation rules, whose applicability conditions are complicated enough that human intervention is needed to decide whether they should be used. The material in this chapter is the leading edge, since one would like to know how far the transformational approach can be automated. Rules that seem to be too complex for automation are thus of special interest. The examples in this chapter go well beyond toy problems, with correspondingly more complicated derivations—for example, the recognition problem for context-free languages. Chapter 6 describes a collection of transformations that can be regarded as optimizations—they do not make significant changes in the implementation, but they alter its execution properties. Such changes necessarily require some awareness of the implementation environment, but Partsch points out that optimization can be done more cleanly at the function level than as a late and low-level stage of compilation. Issues addressed in this chapter include tradeoffs between memoizing and recomputing functions, and between precomputing and computing dynamically. Chapter 7 discusses transformations of imperative programs. These techniques have been developed as part of conventional compiler optimization. Chapter 8 may be the most interesting in the book. It discusses the role of data structures in program transformation. No firm conclusions have been reached in this area and a great deal of research is in progress. The central question here is how to represent one data type as another that is more operational, more deterministic, or more efficient. A number of techniques are presented, but it seems fair to say that many questions remain open. Finally, chapter 9 gives four complete examples of derivation from specifications: Warshall's algorithm for finding paths in directed graphs, the majority problem, Boyer-Moore string matching, and a text editor. These examples integrate the material from the book and provide examples of the derivation of nontrivial programs. The literature now contains a fairly large number of derivations of complex programs; it is unsatisfying that, so far as I am aware, no derivation has uncovered a new, nonobvious algorithm. Thus it is never clear to what extent a transformational derivation has been guided by implicit or explicit knowledge about what the final implementation will look like. Finding such derivations should be a major goal of this research community; the credibility of this approach will be much enhanced if some interesting examples can be found. Something should be said about notation. Precision requires notation that can easily become cumbersome. Certainly the notation presented in this book makes some sections very heavy going. Resolving the tension between a notation abstract enough to be handled like ordinary mathematics and one detailed enough to be automated easily should be a priority goal. Forcing humans to work with so detailed a notat ion can only delay the acceptance and practical use of this approach. This book is a complete presentation of what is known about deriving programs from specifications by semantics-preserving transformations. Its weaknesses lie in a lack of assessment of the relative importance of the details presented, and perhaps in an overly complex notation.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Recommendations