Smart Data
Components understand their own abilities and limitations
Components understand under what domains and environmental conditions they can operate
They understand all of their dependencies on external resources
They are evolvable and extensible