C0mputer-aidedpr0t0typing: transformationalapproach N Habra The paper outlines an experiment in the development of a computer-aided prototyping tool. The idea is to generate a proto- type from requirements specification by a succession of transfor- mations. The objective is to support early validation of require- ments and easier modification of spec!/ication. The tool involves a set o/'transjbrmation rules that transJorms a non-executable speci- .fcation into an executable prototype. The specification is written in the algebraic language ELICSIR and the prototype in the logic programming language Prolog. The prototype produced by trans- .['ormation is formally correct with respect to the original specifica- tion. In addition, it is a high-level product that keeps a sufficient trace o/'the original specification; this allows the specification to be easily adjusted according to the user's comments about the proto- type execution. The computer-aided prototyping approach is illus- trated by showing the application of the successive trans[ormation steps on the spec!fcation of a short and complete example. prototyping, requirements specification, requirements validation, transformations, computer-aided software engineering, CASE PROTOTYPING IN SOFTWARE LIFE- CYCLE In recent years, there has been a growing use of the terms "prototype' and 'prototyping' in the software engineering literature t-3. Nevertheless, a careful analysis reveals that these words involve a wide spectrum of products and processes. The various prototyping approaches can be classified in a multidimensional way according to the following axes4: • The objective(s) sought. Prototyping approaches aim at different objectives, such as validation of specification 5, elicitation of requirements 6, and experimentation with new environments. • The properties concerned. According to the intended use, a prototype should be a faithful representation of some (but not all) properties of the final product. Different properties can be concerned, such as ade- quacy, feasibility, effectiveness, and user-friendliness. The scope covered. Prototypes cover different scopes of the operational system, such as functionality4, user interface7-9, or database interface ~°. lnstitut d'lnformatique, Facultts Universitaires de Namur, 21, Rue Grandgagnage, B-5000Namur, Belgium The status of the prototype product in the software life- cycle model. This status can be determined by the rela- tionship between the prototype and the specification product on the one hand (e.g., 'correct implementation of, 'part of', 'identity') and the relationship between the prototype and the target operational product on the other (e.g., 'first version of', 'part of'). The prototyping process. Different kinds of tools and strategies are used to produce prototypes. Generally, computer-aided strategies and tools are used for proto- typing; the idea is to reduce the cost and the duration of this extra activity. One strategy consists of producing prototypes directly making use of a prototype compo- sition tool; such tools include general-purpose ones such as high-level programming languages ~.~2 and spe- cific ones such as the so-called fourth-generation lan- guages. Another strategy consists of the use of an inter- preting tool that allows some other software product to be viewed as a prototype; a good representative of this strategy is the interpretation of specification (e.g., the interpreters of state-transition diagramsg). The third strategy, presented in this paper, is based on the trans- formation of an existing software product, namely, the specification, into a prototype. Thus a general transfor- mation tool is used to develop a computer-aided soft- ware engineering (CASE) prototyping tool that is able to achieve the desired transformation. For the sake of generality, the following definitions of prototype product and prototyping activity are proposed. The idea is to cover most prototyping approaches; the concept of sound prototyping is added to avoid an inter- pretation where the word prototyping disguises the quick production of some dirty product, which has no well defined status in the software life-cycle. Definitions • A 'prototype' is an executable software product that represents some of the features of the system to be eventually produced and that is obtained more quickly than this system, so as to get early feedback from the users involved. • 'Prototyping' is the activity that consists of producing such a product. • A prototyping activity is sound if it has a well defined status on the classification axes given above. vol 33 no 9 november 1991 0950-5849/91/090685-13 © 1991 Butterworth-Heinemann Ltd 685