Autonomic computing is an artificial intelligence approach to increasing software reliability while reducing unmanageable complexity through self-managing components.
Formalized as a software development field in 2001 by IBM, autonomic computing derives its core principles from the structure of the human autonomic nervous system (ANS)—the system that manages visceral bodily functions (e.g., heart rate) without requiring conscious directions from the brain. Such autonomic management is critical to human existence because it relieves human beings from having to consciously regulate every heart beat, address every imbalance in glucose levels, or orchestrate every lung muscle in order to sustain life.
Just as the ANS addresses biological complexity in the human organism through autonomic processes, so autonomic computing addresses computing reliability and complexity via self-managing elements. These elements can vary in scope (from the simple to the complex) and functionality (from sensory detection to responsive action) but, as a whole, they can be categorized according to four key principles of technological self-management: namely, self-configuration (e.g., software components that can identify, locate, and implement updates to a program without requiring human micromanagement), self-optimization (e.g., software that can detect sub-standard performance, determine remedies, and initiate those remedies without necessarily requiring human activation), self-protection (e.g., software that can monitor, identify, and deflect potential attacks without requiring human notification), and self-healing (e.g., software that can repair ill-performing programs without requiring human supervision).
For autonomic software to be capable of self-configuration, self-optimization, self-protection, and self-healing, it requires both information-oriented capabilities and information-centric representations of their domain of operations. Only when they have access to such expressive information can autonomic software initiate tasks in support of human-designated, self-maintaining goals.
Intelligent tools that enable systems to self-monitor, self-diagnose and self-reconfigure within evolving environments. Emphasis on design concepts and techniques that allow systems to adapt to changing environments, continuously monitor and optimize performance, initiate self-health behavior, and guard against external and internal threats with minimal direction from human users.
Representation techniques that enable expressive yet adaptable models (or ontologies). Emphasis on structuring models so that intelligent tools have the context and knowledge required to self-diagnose, determine viable remedies, and subsequently pursue appropriate courses of action.