Detecting interference when merging specification evolutions

We have been studying a model of software specification design which begins with a trivially simple specification, incrementally elaborates it in a number of parallel “lines” of design, and merges the specifications that result from each of those divergent lines to achieve the fully detailed specification. We employ “evolutionary” transformations that is, transformations whose very purpose is to change meaning to perform the elaborations in the design lines, and thereafter achieve merging by replaying the transformations in a serial order. Merging does not always proceed smoothly: on occasions the different lines of design interfere with one another in some manner, inhibiting the serial replay of their evolutionary transformations. We show that by comparing how the transformations change specification properties (herein we consider the properties of terminology and usage), certain kinds of interference can be detected, and in some cases means to deal with it suggested. L Specification evolution via transformation While traditionally the software design process has started with a specification and worked towards an implementation, we have come to believe that the construction of the starting specification is also an important and complex design process. We have studied a process in which specification construction is incremental the specification is gradualiy evolved from a trivially simple starting point by means of a series of evolutionary steps. We have built mechanisms for performing these via “evolutionary transformations”, akin to the transformations of conventional program transformation work, except they deliberately change the meaning of the specifications to which they are applied. In contrast, conventional transformations generally keep the meaning of the specification constant (so called “correctness-preserving”) while improving efficiency (sometimes they “shrink” the meaning, i.e., when the initial specification admits to alternative implementations, the transformations may be 01969 ACM 0-69791~305-1/69/0500/0169$00.75 allowed to select from among those, but in any event they never introduce new possibilities). Similar research has been done in the area of modifications to type lattices and database schemes: in (21 a classification of possible changes to a type lattice is given, and used to suggest means for adapting existing data and operations on that data accordingly. Similar changes are considered in [lo], where the focus is on constructing methods to handle clashes between objects and programs created under different versions of the type lattice. Recently in (61 it is argued that several machine learning techniques can help in the task of making these same kinds of modifications to databases. 1.1 Parallel lines of design We found that different evolution steps are often independent, or nearly so. This prompted us to apply those steps in parallel, giving rise to several different lines of design. The specifications that result from each line of design must thereafter be merged. Since the different specifications have been obtained by applying series of evolutionary transformations, we obtain the merge of those specifications by applying the same transformations in series. A more complete description of the overall approach may be found in [4]. The aspect that is of interest here is the desire to pursue separate lines of design independently, and thereafter merge their results. The ability to do this would have several beneficial characteristics: l separation of concerns: the details introduced by one evolution can be ignored while conducting another evolution, l distributed development: several people may independently evolve the same initial specification in different ways, and thereafter have their versions merged, and l explicit combination: when the different lines of design are not completely independent, this will be recognized and dealt with explicitly at the time of merging. 12 Other work on meraine; L--_ Previous work toward merging has addressed the merging of programs expressed in simplified languages, and concentrated