In 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