Abstract
Program construction can be seen as an evolutionary process, starting from some formal problem specification and going through a series of more and more detailed versions until a sufficiently efficient, effective program is obtained. Accordingly this process comprises the steps of requirement engineering, specification of the problem, transition to algorithmic formulation, transformation into machine oriented versions, final optimization. Besides the stepwise replacement of high-level control constructs by more operational ones this proceeding also comprises the replacement of certain abstract specifications of data structures by resp. implementations.
The paper gives a complete overview on this approach as investigated and developed in the Munich project CIP (Computer-aided, Intuition-guided Programming).
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
This work has been carried out within the Sonderforschungsbereich 49, Programmiertechnik, München
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
J. Arsac: La construction des programmes structures. Paris, Dunod 1977
R.M. Balzer: Correct and Efficient Software Implementation via Semi-Automatic Transformations (research proposal, unpublished)
F.L. Bauer: A Philosophy of Programming. A Course of Three Lectures given at the Imperial College of Science and Technology, London, October 1973. Reprinted in: F.L. Bauer, K. Samelson (eds.): Language Hierarchies and Interfaces. Lecture Notes in Computer Science 46, Berlin-Heidelberg-New York: Springer 1976, pp. 194–229
F.L. Bauer: Programming as an Evolutionary Process. Technische Universität München, Institut für Informatik, Rep. n° 7617. Also: Proc. 2nd. Int. Conf. on Software Engineering, Oct. 1976, San Francisco, CA, pp. 223–234
F.L. Bauer, H. Partsch, P. Pepper, H. Wössner: Techniques for Program Development. Technische Universität München, Institut für Informatik, Interner Bericht, Sept. 1976. Also in: Software Engineering Techniques. Infotech State of the Art Report 34, 1977, pp. 27–50
F.L. Bauer: Program Development by Stepwise Transformations: The Project CIP. In: [7], pp. 237–272
F.L. Bauer, M. Broy (eds.): Program Construction. Lecture Notes in Computer Science 69, Berlin-Heidelberg-New York: Springer 1979
F.L. Bauer, M. Broy, R. Gnatz, W. Hesse, B. Krieg-Brückner, H. Partsch, P. Pepper, H. Wössner: Towards a Wide Spectrum Language to Support Program Specification and Program Development. SIGPLAN Notices 13:12, pp. 15–24 (1978). Also in [7], pp. 543–552
F.L. Bauer, M. Broy, H. Partsch, P. Pepper, H. Wössner: Systematics of Transformation Rules. In: [7], pp. 273–289
F.L. Bauer, H. Wössner: Algorithmic Language and Program Development. Berlin-Heidelberg-New York: Springer 1982
M. Broy: Transformational semantics for concurrent programs. IPL 11: 2, October 1980, pp. 87–91
M. Broy: Program Construction by Transformation: A Family of Sorting Programs. In: A.W. Bienmann, G. Guiho (eds.): Automatic Program Construction. Reidel Publ. Comp. 1982
M. Broy: Prospects of New Tools for Software Development. In: A.H.W. Duivestijn, C.P. Lockemann (eds.): Trends in Information Processing Systems. Lecture Notes in Computer Science 123. Berlin-Heidelberg-New York: Springer 1981, pp. 106–121
M. Broy, B. Krieg-Brückner: Derivation of Invariant Assertions during Program Development. ACM TOPLAS 2: 2, July 1980, pp. 321–337
M. Broy, H. Partsch, P. Pepper, M. Wirsing: Semantic Relations on Programming Languages. Proc. IFIP Congress 80, Melbourne. Amsterdam: North-Holland 1980, pp. 101–106
M. Broy, B. Möller, P. Pepper, M. Wirsing: A Model Independent Approach to Implementations of Abstract Data Types. Unpublished manuscript. Revised version: Algebraic Implementations Preserve Program Correctness. To appear in Science of Computer Programming
M. Broy, P. Pepper: Programming as a Formal Activity. IEEE Transactions on Software Engineering SE-7: 1, Jan. 1981, pp. 14–22
M. Broy, P. Pepper, M. Wirsing: On Relations Between Programs. In: B. Robinet (ed.): Proc. 4th International Symposium on Programming, Paris, April 1980. Lecture Notes in Computer Science 83. Berlin-Heidelberg-New York: Springer 1980, pp. 59–78
M. Broy, P. Pepper, M. Wirsing: On Design Principles for Programming Languages: an Algebraic Approach. In: J.W. de Bakker, J.C. van Vliet (eds.): Algorithmic Languages. North-Holland Publ. Comp. 1981, pp. 203–219
M. Broy, M. Wirsing: Algebraic Definition of a Functional Programming Language and its Semantical Models. Technische Universität München, Institut für Informatik, TUM-I8008, 1980 (to appear in RAIRO)
M. Broy, M. Wirsing: Program Development: From Enumeration to Backtracking. IPL 10, 1980, pp. 193–197
M. Broy, M. Wirsing: On the Algebraic Extension of Abstract Data Types. In: J. Diaz, I. Ramos (eds.): Formalization of Programming Concepts. Lecture Notes in Computer Science 107. Berlin-Heidelberg-New York: Springer 1981, pp. 244–251
M. Broy, M. Wirsing: Programming Languages as Abstract Data Types. In: M. Dauchet (ed.): 5ème Colloque de Lille “Les Arbres en Algèbre et en Programmation”, Febr. 1980, pp. 160–177
M. Broy, M. Wirsing: Partial Abstract Types. Acta Informatica 18, 1982, pp. 47–64. Preliminary Version: Initial Versus Terminal Algebra Semantics for Partially Defined Abstract Types. Technische Universität München, Institut für Informatik, TUM-I8018, Dec. 1980
M. Broy, M. Wirsing, J.P. Finance, A. Quéré, J.L. Rémy: Methodical Solution of the Problems of Ascending Subsequences of Maximal Length within a Given Sequence. Information Processing Letters 8: 5, 1979, pp. 224–229
R.M. Burstall, J. Darlington: Some Transformations for Developing Recursive Programs. Proc. of 1975 Int. Conf. on Reliable Software, Los Angeles 1975, pp. 465–472. Also (revised version): J. ACM 24: 1, 1977, pp. 44–67
R. Burstall, M. Feather: Program Development by Transformations: an Overview. Proc. of Toulouse CREST Course on Programming, Toulouse, 1978
D.C. Cooper: The equivalence of certain computations. Comp. J. 9, 1966, pp. 45–52
CIP-Language Group: Report on a Wide Spectrum Language for Program Specification and Development. Technische Universität München, Institut für Informatik, TUM-I8104, May 1981
CIP Language Group: Programming In a Wide Spectrum Language: A Collection of Examples. Science of Computer Programming 1: 1, 1981, pp. 73–114
K.L. Clark, J. Darlington: Algorithm Classification Through Synthesis. The Computer Journal 23: 1, 1980, pp. 61–65
K.L. Clark, S. Sickel: Predicate Logic: A Calculus for Deriving Programs. Proc. 5th Int. Joint Conf. on Artificial Intelligence, Cambridge, Mass., Aug. 1977, Vol. I, pp. 419–420
J. Darlington, R.M. Burstall: A System which Automatically Improves Programs. Acta Informatica 6, 1976, pp. 41–60
A.P. Ershov: Mixed Computation: Potential Applications and Problems for Study. Theoretical Computer Science 18, 1982, pp. 41–67
F.L. De Remer: Transformational Grammars. In: F.L. Bauer, J. Eickel (eds.): Compiler construction. An Advanced Course. Lecture Notes in Computer Science 21, Berlin-Heidelberg-New York: Springer 1974, pp. 121–145
E.W. Dijkstra: A Discipline of Programming. Englewood Cliffs, N.J.: Prentice-Hall 1976
S.L. Gerhart: Correctness-preserving Program Transformations. Conf. Ree. Second ACM Symp. on Principles of Programming Languages, Jan. 1975, pp. 54–66
R. Gnatz, P. Pepper: Fuse: An Example in Program Development. Technische Universität München, Institut für Informatik, TUM-INF0-7711, 1977
J.A. Goguen, J.W. Thatcher, E.G. Wagner: An Initial Algebra Approach to the Specification, Correctness and Implementation of Abstract Data Types. In: R.T. Yeh (ed.): Current Trends in Programming Methodology. Vol. 4, Data Structuring. Englewood Cliffs, N.J.: Prentice-Hall 1978, pp. 80–149
J.V. Guttag: The Specification and Application to Programming of Abstract Data Types. Ph. D. Th., Univ. of Toronto, Dept. of Comp. Sci., Rep. CSRG-59, 1975
C.A.R. Hoare: An Axiomatic Basis for Computer Programming. Comm. ACM 12, 1969, pp. 563, 576–583
D.B. Loveman: Program Improvement by Source-to-source Transformation. Journal ACM 24: 1, 1977, pp. 121–145
Z. Manna, W. Waldinger: A Deductive Approach to Program Synthesis. ACM TOPLAS 2: 1, January 1980, pp. 90–121
H. Partsch, M. Broy: Examples for Change of Types and Object Structure. In: [7], pp. 421–463
H. Partsch, P. Pepper: A Family of Rules for Recursion Removal. Information Processing Letters 5, 1975, pp. 174–177
H. Partsch, R. Steinbrüggen: A Survey of Program Transformation Systems. ACM Computing Surveys 15:3, Sept. 1983 (to appear)
M.S. Paterson, C.E. Hewitt: Comparative Schematology. In: Record of the Project MAC Conf. on Concurrent Systems and Parallel Computation. New York: ACM 1970, pp. 119–127
P. Pepper: A Study on Transformational Semantics. In: [7], pp. 322–405
D. Scott: Outline of a Mathematical Theory of Computation. Proc. 4th Annual Princeton Conference on Information Sciences and Systems 1970, pp. 169–176
T.A. Standish, D.C. Harriman, D.F. Kibler, Ü.M. Neighbors: Improving and Refining Programs by Program Manipulation. Proc. 1967 ACM Annual Conf., Oct. 1976, pp. 509–516
H.R. Strong: Translating Recursion Equations into Flow Charts. In: Proc. 2nd Annual ACM Symposium on Theory of Computing, New York 1970, pp. 184–197. Also J. CSS 5, 1971, pp. 254–285
B. Wegbreit: Goal-directed Program Transformation. IEEE Transactions on Software Engineering, vol. SE-2, n° 2, 1976, pp. 69–80
M. Wirsing, M. ßroy: Abstract Data Types as Lattices of Finitely Generated Models. In: P. Dembinski (ed.): Mathematical Foundations of Computer Science - 9th Symposium, Rydzyna, Poland, Sept. 1–5, 1980. Lecture Notes in Computer Science 88. Berlin-Heidelberg-New York: Springer 1980, pp. 673–685
M. Wirsing, P. Pepper, H. Partsch, W. Dosch, M. Broy: On Hierarchies of Abstract Data Types. Acta Informatica 20, 1983, pp. 1–33
H. Wössner, P. Pepper, H. Partsch, F.L. Bauer: Special Transformation Techniques. In: [7], pp. 290–321
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1984 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Broy, M. (1984). Algebraic Methods for Program Construction: The Project CIP. In: Pepper, P. (eds) Program Transformation and Programming Environments. NATO ASI Series, vol 8. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-46490-4_18
Download citation
DOI: https://doi.org/10.1007/978-3-642-46490-4_18
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-46492-8
Online ISBN: 978-3-642-46490-4
eBook Packages: Springer Book Archive