Let's play a game: a person is closed in an cockpit of an unknown vehicle type with no labels on leds and no labels on displays, no labels either on buttons and control levers. The person there inside can only see that when values changes on displays and leds turn on/off, "good" or bad "things" happen. The person in the cockpit has not a driving expertise for the misterious vehicle it is in, but starts associating things to do and values to keep under controls with the correct things to do to keep the vehicle running, preserving the vehicle. Maybe the driver will not associate the correct meaning to each display or button. Simply, the driver cans drive the vehicle without being aware of what controls are but just associating commands with useful or useless conseguences. This seems important, the driver associate values read and commands given on buttons and levers, the first with the second each other creating commands/value read associations in "paths" refined with experience. More experience will lead the driver to create "named paths", so specific path to allow the driver to do "macro" operations on the vehicle. More macros combined together gives "higher" macros. Here there is a new result: until the driver learns all the paths (combinations of controls usage and values to read from displays) the diver has an important learning curve that is essential. It is a sort of consciousness raising the driver has, without it the driver will lead the vehicle to crash somewhere.
What happens if the vehicle is compared to the a software application, displays and leds are vitual input devices, buttons and levers are virtual output devices ? Now new elements are needed to actually compare the system and the driver of the misterious vehicle:
1 The concepts of "good" and "bad" = "advantageous" and "disadvantageous" for the systems, rules
2 Rules to associate "advantageous" and "disadvantageous" with display reads and buttons/levers activations
3 Rules for associating reads and commands activations together in "paths"
4 Rules to update the paths refining them with increasing system eperience, improve the associations
We fall again in the concept of composable info unit but, this time, there are big news: system can absorbe the controls available to the system, without the need to define what displays and buttons to push are. There is an initial learning curve to transforme an unaware system into an aware one. Aware of unnamed inputs and actuators.