Complexity of near future and even nowadays applications is exponentially increasing. In order to tackle the design of such
complex systems, being able to engineer self-organising systems is a promising approach. This way, the whole system will autonomously
changes its behaviour as its parts locally reorganise themselves, always providing an adapted function. This paper proposes
to focus on engineering such systems generating emergent functionalities. We will first define two important concepts to take
into account in such a context: Emergence and Self-Organisation. Building on these two concepts, we will highlight three main
challenges researchers have to cope with: (i) how to control the system at the macro level by only focusing on the design of agents at the micro level, (ii) what kind of tools, models and guides are needed to develop such systems in order to help designers and (iii) how validation of such systems can be achieved? Each of these three challenges will be explained and positioned in regard
to the main existing approaches. Our solutions combining emergence and self-organisation will be expounded for each challenge.
Keywords Complex Systems - Engineering - Emergence - Multi-Agent System - Self-Organisation