PrefaceIn the last few years, the search for radically new approaches to software engineering has witnessed a great momentum. These efforts are well justified by the troubling state of present day computer science.Software engineering practices based on design-time architectural composition (the only assessed way of doing software engineering so far), lead to brittle and fragile systems, unable to gracefully cope with reconfiguration and faults. While such practices can be acceptable when dealing with software systems to be deployed in closed and static scenarios, they are definitely unsuitable for most emerging computing scenarios.More and more, software systems involve autonomous and distributed software components that have to execute and interact in open and dynamic environments. This is the case of information economies, pervasive and mobile computing systems, wide-area Internet applications, and P2P computing. In all these scenarios, the dynamism, openness, and decentralization of the application's operational environments call for new approaches to software design and development, capable of supporting spontaneous configuration and networking, and capable of tolerating partial failures and adaptive reorganization of the software system.Hints for the feasibility of such innovative approaches can come from a variety of natural systems. The process of morphogenesis in organisms demonstrates that well-defined shapes and functional structures can develop through the interaction of cells under the control of a genetic program, even though the precise arrangements and numbers of the individual cells are variable. The process of ant foraging demonstrates how the application goal of finding and carrying home food in hostile environments can be achieved by simple interactions among a multitude of individuals of limited intelligence.By getting inspiration from natural systems, scientists and engineers are starting to understand that, to construct self-organizing and adaptive systems, it may be more appropriate focusing on the engineering of proper interaction mechanisms for the components of the system, rather than on the engineering of their overall system architecture. A final special thanks is extended to all our students (now engineers) who have actively contributed to our researches with notable implementation and experimental work.