A socio-technical system (STS) consists of an
interplay of humans, organizations, and technical systems.
STSs are heterogeneous, dynamic, unpredictable, and
weakly controllable. Their operational environment changes
unexpectedly, actors join and leave the system at will,
actors fail to meet their objectives and under-perform, and
dependencies on other actors are violated. To deal with
such situations, we propose an architecture for STSs that
makes an STS self-reconfigurable, i.e., capable of switching
autonomously from one configuration to a better one.
Our architecture performs a Monitor-Diagnose-Reconcile-
Compensate cycle: it monitors actor behaviors and context
changes, diagnoses failures and under-performance by
checking whether monitored behavior is compliant with
actors goals, finds a possible way to address the problem,
and enacts compensation actions to reconcile actual and
desired behavior. Compensation actions take into account
the autonomy of participants in an STS, which cannot be
controlled. Our architecture is requirements driven: we use
extended Tropos goal models to diagnose failures as well
as to identify alternative strategies to meet requirements.
After presenting our conceptual architecture and the algorithms,
it is founded upon; we describe a prototype
implementation applied to a case study concerning smarthomes.
We also provide experimental results that suggest that our architecture scales well as the size of the STS
grows.