Towards Architecture-Centric Evolution of Connectors
Creators: name: Samuel, Selva
Publisher: name: Carnegie Mellon University
Year: 2024
Subjects: classificationCode: 46
subject: Information and computing sciences
classificationCode: 4612
subject: Software engineering

description: As a software system evolves, the interactions between different parts of the system, which represent connectors in the runtime architecture, might need to be changed to meet changing requirements. In current practice, such changes need to be made directly in code. However, changing connectors directly in code can be tedious and error-prone because it involves modifying many lines of code spread across multiple files. These challenges exist because current programming languages lack an abstraction mechanism for modularizing connectors. In this thesis, we lay out an architecture-centric development approach that mitigates these challenges by introducing an abstraction mechanism that decouples connectors from functional code, making it easy to change or evolve connectors. This approach additionally involves integrating the architecture specification of a system with its implementation. We have implemented this approach in a programming language that we have developed called Wyvern.When connectors need to be changed, architects and developers might come up with a set of candidate connectors that could satisfy the new requirements. They might be interested in knowing which of the candidate connectors are semantically compatible with the connector to be changed. Checking semantic compatibility involves ensuring that one or more behaviors of interest in the original connector are preserved in the new connector as well. Compatibility could be assessed along several dimensions. In this thesis, we focus on data relay compatibility. Data relay compatibility means that every input data accepted by the original connector is also accepted by the new connector and is sent to at least the same outputs as the original connector. To check data relay compatibility, we specify the data transmission behavior of connectors using constraint automata. Our compatibility checking algorithm is based on symbolic execution of constraint automata. We have extended the connector abstraction mechanism in Wyvern to support constraint automata specifications. We have also implemented a tool that would enable architects and developers to perform compatibility analyses based on the constraint automata specifications.We evaluate the effectiveness of our architecture-centric development approach in making the task of connector evolution in two case studies. We demonstrate through the two case studies that our approach makes the connector evolution task easy in situations where component interfaces remain unchanged. We also demonstrate the generality of the connector abstraction mechanism we have developed by implementing several common types of connectors using the mechanism. Additionally, we show how the data transmission semantics of several connectors may be encoded using constraint automata and demonstrate the usefulness of our connector compatibility analysis approach in preventing errors during connector evolution by catching them early in the evolution process.