Self-organising Software: From Natural to Artificial