Writing Larch interface language specifications

Current research in specifications is emphasizing the practical use of formal specifications in program design. One way to encourage their use in practice is to provide specification languages that are accessible to both designers and programmers. With this goal in mind, the Larch family of formal specification languages has evolved to support a two-tiered approach to writing specifications. This approach separates the specification of state transformations and programming language dependencies from the specification of underlying abstractions. Thus, each member of the Larch family has a subset derived from a programming language and another subset independent of any programming languages. We call the former interface languages, and the latter the Larch Shared Language. This paper focuses on Larch interface language specifications. Through examples, we illustrate some salient features of Larch/CLU, a Larch interface language for the programming language CLU. We give an example of writing an interface specification following the two-tiered approach and discuss in detail issues involved in writing interface specifications and their interaction with their Shared Language components.

[1]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[2]  B. H. Liskov,et al.  Specification techniques for data abstractions , 1975, IEEE Transactions on Software Engineering.

[3]  Stephen H. Caine,et al.  PDL: a tool for software design , 1975, AFIPS '75.

[4]  Michael Jackson,et al.  Principles of program design , 1975 .

[5]  Stephen N. Zilles,et al.  Specification techniques for data abstractions , 1975 .

[6]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[7]  Harry Katzan Systems design and documentation : an introduction to the HIPO method , 1976 .

[8]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[9]  Lawrence Robinson,et al.  SPECIAL - A Specification and Assertion Language. , 1976 .

[10]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[11]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[12]  Joseph A. Goguen,et al.  Abstract Errors for Abstract Data Types , 1977, Formal Description of Programming Concepts.

[13]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[14]  Dines Bjørner,et al.  The Vienna Development Method: The Meta-Language , 1978, Lecture Notes in Computer Science.

[15]  Hans-Dieter Ehrich Extensions and Implementations of Abstract Data Type Specifications , 1978, MFCS.

[16]  V. A. Berzins,et al.  Abstract model specifications for data abstractions , 1979 .

[17]  Mitchell Wand,et al.  Final Algebra Semantics and Data Type Extensions , 1979, J. Comput. Syst. Sci..

[18]  Edward Yourdon,et al.  Structured design : fundamentals of a discip!ine of computer proqram and system desiqn , 1979 .

[19]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[20]  E. Wagner,et al.  Parameterized Data Types in Algebraic Specification Languages (Short Version) , 1980, ICALP.

[21]  David R. Musser,et al.  Abstract Data Type Specification in the Affirm System , 1980, IEEE Transactions on Software Engineering.

[22]  James J. Horning,et al.  Formal specification as a design tool , 1980, POPL '80.

[23]  D. Kapur TOWARDS A THEORY FOR ABSTRACT DATA TYPES , 1980 .

[24]  Joseph A. Goguen,et al.  Algebraic Denotational Semantics Using Parameterized Abstract Modules , 1981, ICFPC.

[25]  James J. Horning,et al.  Some Notes on Putting Formal Specifications to Productive Use , 1982, Sci. Comput. Program..

[26]  James W. Thatcher,et al.  Data Type Specification: Parameterization and the Power of Specification Techniques , 1982, TOPL.

[27]  Pamela Zave,et al.  An Operational Approach to Requirements Specification for Embedded Systems , 1982, IEEE Transactions on Software Engineering.

[28]  Sriram K Atreya Formal specification of a specification library , 1982 .

[29]  Pierre Lescanne,et al.  Computer experiments with the REVE term rewriting system generator , 1983, POPL '83.

[30]  Samuel N. Kamin Final Data Types and Their Specification , 1983, TOPL.

[31]  Jeannette M. Wing A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS , 1983 .

[32]  James J. Horning,et al.  An Introduction to the Larch Shared Language , 1983, IFIP Congress.

[33]  Reiji Nakajima,et al.  The IOTA Programming System , 1983, Lecture Notes in Computer Science.

[34]  R. Forgaard A PROGRAM FOR GENERATING AND ANALYZING TERM REWRITING SYSTEMS , 1984 .

[35]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[36]  Duncan H. Lawrie,et al.  Guest Editor's Introduction Experiences with Distributed Systems , 1985, IEEE Softw..

[37]  James J. Horning Combining Algebraic and Predicative Specifications in Larch , 1985, TAPSOFT, Vol.2.

[38]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[39]  James J. Horning,et al.  A Larch Shared Language Handbook , 1986, Sci. Comput. Program..

[40]  James J. Horning,et al.  Report on the Larch Shared Language , 1986, Sci. Comput. Program..