It’s an interesting perspective to consider humans -
a. their interaction with others including animals & machines,
b. their growth & life-cycle
c. their evolution,
d. their anatomy
etc, could be treated as a reference Bible for software architectures.
Many of the observations have already been well adopted :
Mapping transactions, security, competing-consumers and related software patterns
Given a scenario for high load data day jobs that come in, how would a typical human handle it? How many humans would be required to handle it? In case of multiple humans interacting to achieve a goal, how do they interact and how do they establish trust.
Mimic human experience — it’s all the time about machine learning and AI and why do we offshore services.
Would the human(s) in concern work on multiple tasks in a round-robin fashion? Would the human sub-contract the work or would they just back off from the work? What happens as the human matures — is s/he in a better shape to work on this task given the maturity and experience and how ?
Leader Election and Crowd-Sourcing
Can we observe human interaction and behaviours in a crowd and the resulting formation of a team to mutually trust and perform as a team, all automatically without any boss’s intervention? What if there was a common-cause like an accident. Would leaders automatically emerge from this?
Monitoring, Self-Healing and Auto-Tweaking
Can we apply principles of healing (physical, psychological) into software that report issues in their health — more than bug fixing, can we heal/fix/alter the behaviours of software components based on its interaction with other software components over the years ?
Can we apply mentoring and counselling theories into software design to tweak the configuration parameters of the software ? Can we include auto-heal modules into software components similar to the way the skin auto-heals (kind of) in case of a bruise/burn.
Can we patch systems with antibody software components to further help the module to recover better and sooner?
Service Buses , Brokers and Load Levelling
We could treat the electric impulses within nerves as messages in an integration project or as packets in a Tcp/Ip transaction as the case may be with the backbone as the ESB ? Can we adapt the techniques of ‘sense’ such as touch, sight etc such that the software component can adapt based on the environment it lives in. In a queue based integration, this could be about sensing the network load, message load and perhaps moving itself to a different machine.
Simpler still think of Muscle growth as an Auto-Scaling means.
Versions, Virii and DDoS
Do we also worry about mutations of software like viruses that spread ? Is reincarnation a versioning mechanism or is it about rewriting completely ? Can mass uprising be seen as a DDoS attack?
Can the food breakdown procedure of body and waste disposal be correlated with allocating memory & freeing up non-referenced memory pointers periodically, and be treated as a waste disposal & cleaning up process ?
The Reference Architecture — Humans
Is there a software design problem that this reference model cannot assist with ? The humans appear to provide an ample reference point for any software component design requirement. There are enough structures to observe within humans, including their interactions with others to learn & adapt for any upcoming software architects.