Summary: | As systems become more complex and have longer lifespans, they will likely encounter contextual variation or be themselves subject to change. Systems need to not only be feasible but viable as well. That is, they need to be able to continue to provide value in spite of any potential exogenous or endogenous changes. Viability has been defined for other domains, but it has not been defined for engineered systems. This paper defines what it means for an engineered system to be viable and shows that it is related to, but different from, other existing "-ilities" such as survivability and reliability. This paper also addresses the need to ensure that endogenous changes do not inadvertently cause unintended interactions that harm the system overall. A new -ility, i.e., pliability, is introduced, which specifies the limits on how a system can change, without "breaking" or violating an architecture that was intended and validated. Like changeability, pliability increases robustness by allowing systems to voluntarily change in response to dynamic contexts and increases survivability by increasing the likelihood that unintentional changes are still within the set of allowable architecture-defined instances. It also distinguishes allowable changes from those that would require additional validation, reducing the effort required to get those changes approved by a diverse set of stakeholders.
|