Prev Up Next
Go backward to 1 Background
Go up to Top
Go forward to References

2 CoFI

The initial idea for a common framework initiative was conceived in June 1994, by members of COMPASS and IFIP WG 1.3.
COMPASS (1989-96) was an ESPRIT Basic Research WG (3264, 6112) involving the vast majority of the European sites working on algebraic specification [KB96]. IFIP WG 1.3 (Foundations of System Specification) was founded in 1992 (originally with the number 14.3) and has members not only from the major European sites but also from other continents.

In fact the idea of developing a common algebraic specification framework had been suggested for inclusion in the original COMPASS WG proposal in 1988--but subsequently dropped, as it was considered unlikely to be achievable in the foreseeable future. By 1994, however, the area had matured sufficiently to encourage reconsideration of the idea of a common framework.

By September 1995 the main aims had been clarified, and CoFI: The Common Framework Initiative started.
A joint meeting of COMPASS and IFIP WG 1.3 at Soria Moria, near Oslo, in September 1995 decided to set up the Common Framework Initiative, and various task groups were formed. Since the termination of COMPASS in April 1996, IFIP WG 1.3 has taken the sole responsibility for the future of the initiative, and for approving any proposals that it might make.

The overall aims of CoFI were formulated as follows [Mos96]:

The common framework is to allow and be useful for: In effect, the above list is the requirements specification for the common framework, avoiding premature design decisions. It provided the starting-point for the actual design of the common framework.
An early but key design decision was that the common framework should provide a coherent family of languages, all extensions or restrictions of some main algebraic specification language.
Vital for the support for CoFI in the algebraic specification community is the coverage of concepts of many existing specification languages. How could this be achieved, without creating a complicated monster of a language? And how to avoid interminable conflicts with those needing a simpler language for use with prototyping and verification tools?

By providing not merely a single language but a coherent language family, CoFI allows the conflicting demands to be resolved, accommodating advanced as well as simpler languages. At the same time, this family is given a clear structure by being organized as restrictions and extensions of a main language, which is to be the primary topic of the documentation (reference manual, user's guide, text book) and strongly identified with the common framework.

(Sorry, no picture yet!)

The main language of the common framework family is required to be competitive in expressiveness with various existing languages.
The choice of concepts and constructs for the main language was a matter of finding a suitable balance point between the advanced and simpler languages. It was decided that its intended applicability should be for specifying the functional requirements and design of conventional software packages as abstract data types.
Restrictions of the main language are to correspond to languages used with existing tools for rapid prototyping, verification, term rewriting, etc.
These may be syntactic and/or semantic restrictions. The restricted languages need not have a common kernel--although presumably all restrictions will allow at least unstructured, single- or many-sorted equational specifications.

Existing tools typically restrict the use of sorts and overloading, allow only a restricted class of axioms, and may require specifications to be `flattened'.

The semantics of a specification in a restricted language may be inherited from the semantics of the main language, although some simplifications should usually be possible.

Extensions to the main language are to support various programming paradigms, e.g., object-oriented, higher-order, reactive.
These are to be obtained from the main language (or perhaps from mildly restricted languages) by syntactic and/or semantic extensions. The extended languages need not have a common super-language, and indeed, there may be technical difficulties in combining various extensions.

The semantics ascribed to a specification in the main language by an extension is required to be essentially the same as its original semantics.

The common framework is also to provide an associated development methodology, training materials, tool support, libraries, a reference manual, formal semantics, and conversion from existing frameworks.
A framework is more than just a language! Many existing algebraic specification frameworks have not had sufficient resources to develop all the required auxiliary documents, which has severely hampered their dissemination. By pooling resources in CoFI, this problem may be avoided.

Regarding tools, the aim is to make it possible to exploit existing tools in connection with the common framework, using an interchange format [BCV96].

One of the attractions of having a common framework is to facilitate building up a library of useful specifications in a single language. Libraries of specifications have previously been proposed, but the variety of languages involved was always a problem.

Conversion from existing frameworks is vital, not only to be able to reuse existing specifications, but also to encourage users to migrate from their current favourite framework to the common framework.

The tentative design of the main CoFI Algebraic Specification Language, called CASL, was completed in December 1996, and has since been investigated by task groups concerned with issues of language design, methodology, semantics, and tool support.
On the basis of the investigations made by these groups, a definite complete proposal for the design of CASL [LD97a] has been submitted to IFIP WG 1.3 for approval at its meeting in June 1997.
See other documents for the abstract syntax, rationale, and informal summary of CASL, concrete syntax examples, and a draft formal semantics.
A Rationale for the CASL design is given in a separate document [LD97b]. The CASL Summary [LD97c] provides an abstract syntax, together with an informal summary of the intended well-formedness conditions and semantics. The choice of preferred concrete syntax has not yet been made, but two proposals with examples are provided [KB97], [VBC97]. The formal semantics for (most of) the tentative design of CASL [LD96] is available [Sem97]; an updated draft of the formal semantics for the final proposed design is to be made available at the IFIP WG 1.3 meeting.
CoFI is open to contributions and influence from all those working with algebraic specifications.
The design of CASL was developed by a varying Language Design task group, coordinated by Bernd Krieg-Brückner, comprising between 10 and 20 active participants representing a broad range of algebraic specification approaches. Numerous study notes were written on various aspects of language design, and discussed at working and plenary language design meetings. The study notes and various drafts of the design summary were made available electronically and comments solicited via the associated mailing list (cofi-language@brics.dk). This document is based on part of a paper presented at TAPSOFT'97 [Mos97b], explaining CoFI and the (tentative) design of CASL [LD96].

The openness of the design effort should have removed any suspicion of undue bias towards constructs favoured by some particular `school' of algebraic specification. It is hoped that CASL incorporates just those features for which there is a wide consensus regarding their appropriateness, and that the common framework will indeed be able to subsume many existing frameworks and be seen as an attractive basis for future development and research--with high potential for strong collaboration.

All the CoFI task groups welcome new active participants. See the descriptions of the task groups on the CoFI WWW pages [Mos97a], and contact the coordinators of the task groups directly.

A lot of work remains to be done...
The approval of a CASL design will be just the start of the main CoFI work: progressing from ideas to their realization in documentation, methodology, and tools. Although CoFI has already come quite a long way on the basis of voluntary effort and local support at various sites, and the expected redirection of future development towards languages and tools based on CASL should provide further resources, international funding for CoFI will be needed to allow the realization of its full potential for industrial applications.

Acknowledgements

The following (47) individuals have contributed to the common framework initiative by commenting on various CoFI documents or attending CoFI meetings: Egidio Astesiano, Hubert Baumeister, Jan Bergstra, Gilles Bernot, Didier Bert, Mohammed Bettaz, Michel Bidoit, Pietro Cenciarelli, Maria Victoria Cengarle, Maura Cerioli, Christine Choppy, Ole-Johan Dahl, Hans-Dieter Ehrich, Hartmut Ehrig, Jose Fiadeiro, Marie-Claude Gaudel, Chris George, Joseph Goguen, Radu Grosu, Magne Haveraaen, Anne Haxthausen, Jim Horning, Hélène Kirchner, Hans-Jörg Kreowski, Bernd Krieg-Brückner, Pierre Lescanne, Tom Maibaum, Grant Malcolm, Karl Meinke, Till Mossakowski, Peter D. Mosses, Peter Padawitz, Fernando Orejas, Olaf Owe, Gianna Reggio, Horst Reichel, Gerard Renardel, Erik Saaman, Don Sannella, Giuseppe Scollo, Amilcar Sernadas, Andrzej Tarlecki, Eelco Visser, Eric Wagner, Michal Walicki, Martin Wirsing, and Uwe Wolter. (Apologies to anyone who has been inadvertently omitted.)

Groups at the following sites have generously hosted CoFI meetings (September 1995-April 1997): Aarhus, Bremen, Edinburgh, Munich (LMU), Munich (TUM), Oslo, Oxford, Paris (LIENS/ENS), Paris (LSV/ENS de Cachan). Some CoFI meetings were much facilitated by support from COMPASS (ESPRIT Basic Research WG 6112).


CoFI Document: Rationale --Version 0.97-- 20 May 1997.
Comments to cofi-list@brics.dk

Prev Up Next