Introduction One of the main characteristics of software systems is that they evolve. Not only faults need to be repaired, and improvements are made, but also changes are necessary to respond to the consequences of the evolution of the system's environment. We notice that the software system, acting in and in fact, being part of the environment is one of the agents causing the change in environment, and through a feed-back the change in itself. Software systems consist of many components. In the course of system development and maintenance, the components undergo changes. The changes reflect development steps, or improvements and fault correctings, or the changes in the system's environment. An important subclass of transformations that change the components are those which, intuitively speaking, preserve the specification of the component and do not radically change the language. Such kind of transformations has been characterized as meaning-preserving and lateral (producing a result at a similar level of abstraction). Components resulting from such transformations are called versions. Similarly to other works in this area we distinguish two kinds of versions: variants ("parallel" versions) and revisions ("serial" versions). Variants of software components are alternative implementations of a particular concept. Revisions, on the other hand, are modifications intended to replace the previous version. A family of software components comprises all components which are versions of one another.
|
|||||||||||||||||||||||||||||||||||||||||||||
|
|