Experimenting with Software Architecture Flexibility Using an Implementation of the Tactical Separation Assisted Flight Environment

At NASA, more and more functionality is implemented in software. Change requests tend to arrive late, making software flexibility an important aspect. However, such changes present a high risk and are more likely to introduce defects and to violate flexibility properties of the software, causing its "degeneration." In this paper, we present some preliminary results from a recent study of software architecture flexibility. The study was conducted as an experiment with students using the TSAFE experimental testbed. The main conclusion is that constructs for flexibility are not automatically understood, used, and followed by new developers. Better ways to describe the intention with certain constructs in combination with assigning responsibility for making sure that the implementation adheres to the intended architecture and its design rationale could provide a successful approach for avoiding degeneration of built-in flexibility