Reflective architectures for adaptive information systems