Almost all of traditional software engineering and applied computer science focuses on some kind of deliverable of supposedly closed nature. While traditional applications aren\'t really closed (they interact with other applications, middleware, and the operating system), the closed-world assumption is nevertheless a sufficiently useful approximation to enable the production of useful software.
Shifting the emphasis from the production of the one deliverable to the production of systems that are composed out of components has an almost traumatic consequence. A lot of what we know about how to build software requires revision and sometimes radical departure from the established past. This talk spans much of the spectrum from why components are a good idea to why we need to rethink our trade to what approaches are now emerging to make all this possible.'