Dependency-aware model repair: prioritizing repairs through consistency rule and inconsistency analysis
摘要
Inconsistencies in software models can lead to cascading problems during software evolution, including unmet requirements, increased defects, and reduced system reliability. To mitigate these problems, consistency maintenance (which combines consistency checking and repair) is essential. A common strategy relies on consistency rules (CRs), often expressed in languages such as the Object Constraint Language. However, defining and maintaining CRs is challenging due to a limited understanding of potential dependencies among CRs and the inconsistencies they detect. Moreover, once inconsistencies are repaired, these dependencies cause problems as repairs may have unwanted repercussions in other parts of the model. In this paper, we present a dependency-aware approach for identifying and analyzing relationships among CRs, inconsistencies, and repairs. We introduce a metamodel that captures these dependencies and enables automated analysis to group inconsistencies and prioritize repair alternatives based on overlapping and conflicting repair locations. Based on this analysis, our approach enables engineers to filter alternatives by prioritizing repairs with positive side effects (fixing multiple inconsistencies) and deprioritizing those with negative ones (introducing new inconsistencies). We evaluate our approach using 27 CRs and 50 UML models of varying sizes and domains. On average, 79% of inconsistencies exhibited dependencies. Repair prioritization showed that high-priority repairs resolved more inconsistencies (90 per repair on average), while low-priority repairs introduced fewer negative side effects (11 per repair on average). These findings highlight the potential of leveraging dependency analysis to guide and optimize model repair strategies, ultimately improving the effectiveness of consistency maintenance in software modeling.