Autonomic Computing: Principles, Design and