The concept of consistency is integral to the discussion of artefact consistency management. In the remainder of this chapter, consistency and consistency management are first discussed. Subsequently, the definition of artefact consistency management is derived and the concept of consistency checking is introduced.
2.4.1
Consistency
In the most generic sense of the word, consistency can be defined as the "condition of adhering together" [45]. It is a widely used term in various areas within software engineering, which handle different types of consistency related problems. However, at a high level, consistency in these diverse cases refers to the same notion, that is, two entities are consistent if they abide by some consistency definition, otherwise they are inconsistent.
A discussion of related work relevant to consistency is provided in Chapter 3. For example inconsistency is defined by Nuseibeh et al. as "a situation in which a set of descriptions do not obey some relationship that should hold between them" [46]. Zisman and Spanoudakis informally describe inconsistency as a "state in which two or more overlapping elements of different software models make assertions about the aspects of the system they describe which are not jointly satisfiable." [47]
Since this work focuses on the consistency of heterogeneous software artefacts during software evolution, the concept of consistency can be further narrowed to refer to this specific case. In the scope of this discussion a set of heterogeneous artefacts are consistent if they abide by conditions such that they represent the same state of a given software system.
2.4.2
Consistency Management
Similarly to consistency, the problem of consistency management is discussed in various software engineering areas including requirements engineering [48] and model-based software engineering [49]. Consistency management also lies at the core of solutions aiding the development of complex systems, such as object management systems [50], and the viewpoints system [17]. The discussion of consistency management in these areas is outside the scope of this work.
However, a generic definition of consistency management can be derived from these areas, and it involves the activities of 1) defining consistency conditions in relation to entities the
consistency management is aimed at, 2) defining and identifying violations of consistency, and 3) re-establishing consistency following violations [50].
Specific areas of concern in consistency management include the way consistency conditions are formulated, for example, using constraints or rules, and the way consistency conditions are expressed, for example, using formal means or specification languages.
2.4.3
Artefact Consistency Management
The above definition of consistency management can be further refined to introduce the concept of artefact consistency management, which is used throughout this thesis. At a high level, artefact consistency management consists of a set of tasks aimed at keeping heterogeneous software artefacts consistent in the face of changes. Software artefacts evolve consistently if changes applied to one artefact are reflected in all related artefacts and inconsistent representations
before they are further used. Based on this description it can be deduced that the consistency
management activities defined in Section 2.4.2 form only a subset of the tasks artefact consistency management involves. The identified aspects of artefact consistency management are introduced in detail in Chapter 4.
2.4.4
Consistency Checking
Based on the definition of consistency management described in Section 2.4.2, consistency checking can be generally defined as a process that consists of the following activities:
a) definition of consistency conditions, and b) detection of violations
Therefore consistency checking can be described as a subset of the activities involved in consistency management. Specifically,consistency checking is the activity of assessing whether conditions defining consistency between or within selected artefacts hold following a change.
The topic of consistency checking between versions of specific artefacts has been widely researched, particularly in relation to the consistency of UML models [51]. Certain approaches are independent of artefacts and address generic consistency issues: Vierhauser et al. provide examples of consistency checking between specific models and generic approaches [52].
2.4.5
Change Propagation
Closely related to the concepts of impact analysis and consistency checking is change propagation, which is defined in the impact analysis literature as follows: "change to one part or element
of an existing system configuration or design results in one or more additional changes to the system, when those changes would not have otherwise been required" [53]. This is not the definition adopted here since in this work, similarly to Han’s research [54], change propagation is a separate activity.
Change propagation is a key activity in software maintenance and change management as it ensures that modifications are correctly applied to all dependent entities and no inconsistencies are left in the system as a result of the given change and its ripple effects. Change propagation can be applied within homogeneous artefacts, where a modification introduced to, for example, source code may result in further changes to other source code entities. This problem [55] [56] has been investigated in dependency analysis research [57]. Malik defines change propagation as "the process of propagating code changes to other entities in a software system to ensure the consistency of assumptions in the system after changing an entity" [58].
Based on the definition of consistency management described in Section 2.4.2 and related to Malik’s definition, we define change propagation asa consistency management activity aimed at
enforcing consistency by re-establishing it following violations.
Change propagation across heterogeneous artefacts is highly relevant in this work, where a modification to one software artefact results in inconsistencies in other entities and changes need to be propagated in order to resolve the consistency violation. To conclude, it is worth noting that change propagation also involves the discovery of the degree to which inconsistencies are tolerated and whether an optimistic or pessimistic approach is adopted to solve inconsistencies.