How Cloud Computing, IoT and Multicore Systems Affect Software Engineering Principles

The world has moved from a single core, local application execution to distributed, parallel, social, heterogeneous etc. Standard ways of programming thus do not hold anymore and all software engineers struggle with the growing complexity that equally affects performance, maintainability and, worst of all, cost. The paper presents a concept arising from the EC Cloud Computing expert group between 2012 and 2016 as a means to move away from the hazards of traditional, Turing based computing concepts to an abstract and more natural way of programming. The concept builds up on three major building blocks, namely "Information", "Intention" and "Incentive" to define the behaviour of an application in a fashion that can abstract away from the actual way of executing an algorithm, thus allowing for a larger degree of adaptation, distribution and scale.