The Evil Queen asked: “Magic mirror in my hand, who is the fairest in the land?” And the Magic Mirror answered: “My Queen, you are the fairest here so true. But Snow White beyond the mountains at the seven Dwarfs is a thousand times more beautiful than you.” We know the rest of the story. In this last sentence from Snow White, the Magic Mirror acted as parasitic third party, which, although it always said the truth, amplified the Evil Queen’s self-love, making properties like pride and vanity emerge. Moreover, the Magic Mirror added information that a normal reflection would not have given, saying: “(…) Snow White beyond the mountains at the seven Dwarfs is a thousand times more beautiful than you.” He gave information that should not have been known in a real world (of course, it’s a fairy tale!), getting an out of hand reaction from and by the Evil Queen, driving then, the consequences we know.
What I want to show in this third and last article about complexity of socio-technical systems (see part 1 and part 2) is that when the reflexivity is misunderstood or neglected, the world becomes distorted and dysfunctions. As a corollary, when you can allow some reflexivity in your socio-technical system, you can better control it.
What is said about reflexivity?
In an anthropological or sociological point of view: “reflexivity is considered to occur when the observations or actions of observers in the social system affect the very situations they are observing, or theory being formulated is disseminated to and affects the behavior of the individuals or systems the theory is meant to be objectively modeling.” (Wikipedia). For instance, when an ergonomist works on a human interface, what he or she wants to create reflects the way of how he or she would like to use it inside the ecosystem of use. He or she creates interfaces that reflect their human being side. Human beings are reflexive! More globally, the society can be seen as reflexive system, where, for instance, fashion or rumors are visible outward signs.
In computer science, reflexivity means two “dual” things:
- Structural reflexivity: this consists of reifying program code and all abstract types this program deals with. In the first case, reification of a program code allows for handling this program during execution. It is, therefore, possible to maintain a program while it is running. In the second case, reification of abstract types allows the program to inspect and modify the structure of complex types.
- Behavioral reflexivity: this concerns, in particular, the execution of the program and its ecosystem. By this type of reflexivity, a program can modify the way it is executed by modifying the data structures of the interpreter/compilator. Therefore, the program can have information in its implementation, or even self-organizes to better fit an ecosystem.
How it works?
Smith (1982) and Maes (1987) said it is the ability for a system to inspect and modify its internal structure (structural reflexivity) or its own run (behavioral execution) while running. To resume: it can “reason” and act by itself. According to the previous definitions (structural and behavioral), I made the opposite schema to illustrate, how reflexivity works.
In his PhD thesis, J. Labéjof (2012) proposed to take up two challenges: 1st one is where to apply reflexivity in a System of Systems (SoS), which supposes to introduce a certain degree of variability, therefore a dynamic dimension, which must not be in contradiction (non intrusive property) with the system requirements; 2nd one is how to apply reflexivity? Reflexivity will be applied by means of reflexive models, which will be used as a meta-layer of the system components. In the above figure, variability of the structure is in the wings flaps, the rudder and the elevator. Fortunately, the dynamic of the plane is design to support this! Still referring to the example in the figure, the reflexive models are in the pilot’s brain, which, most of the time are composed of sub-models, for a human one can say its experience or expertise on a domain. For a non-human system, which is not supposed to benefit from years of learning, Labéjof proposed to model the components of the subsystems (for instance the flaps in our figure) into the reflexive model of the global system (the SoS composed of the plane and its sub-system (included the pilot), of which new goal is to climb). Be careful here, this last one is not a metamodel; it’s a model that contains models of the sub-systems. To be non-intrusive, the global model will have a dependence graph where the subsystems embedded to reach the goal will depend on the meta-layer, without knowing necessarily the state of this meta-layer. If it’s necessary then a technique called dependency injection can be used to create dynamically these dependencies between the sub-systems and the meta-layer. Labéjof called is contribution “R-*”, which gives theoretical answer to the two challenges above. R-* can operate as well on the ecosystem and the specification, as the components of the subsystems and its communication with other subsystems. To implement his proof of concept, Labéjof used a Framework called FraSCAti, which is based on Service Component Architecture (SCA) and Fractal another framework that implement reflexivity. Fractal and FraSCAti started at Inria and France Telecom; with early ideas back in 2000, they both are now supported by the OW2 open source consortium. I invite you to have a look at http://fractal.ow2.org/ and http://wiki.ow2.org/frascati/Wiki.jsp?page=FraSCAti
Then, what to do with reflexivity?
I will say only our imagination will be the limit! For instance, in the behavior of a swarm of drones on a battle field or in case of a disasters, or to build more reliable fault tolerant systems. I will give you a very scary one! We live in a socio-technical world, with screens everywhere, with sensors everywhere, and we leave traces everywhere; the Magic Mirror is for tomorrow. The question is who will have it first: Snow White or the Evil Queen?