IBM has initiated the concept of autonomic computing (AC), which promises self-managing computing systems. Self-managing systems can automatically detect, diagnose, and repair problems resulting from software and hardware faults, and are capable of achieving high-level, system-wide goals defined by human. To construct such systems, we have identified two challenges. First, we must provide an intelligent knowledge base to analyze the current status of the system, to discover deficiencies, and to provide a plan to adapt the system. Second, we must provide software sensors and actuators to monitor and adapt the system behavior, respectively. The synergy of these two efforts completes the loop of self-management, namely, monitoring, analyzing, planning, and modifying the behavior of running systems.