Perceptual interfaces and knowledge access systems adapt to their user's idiosyncrasies.
Networks adapt to changing configurations of participating devices.
Devices adapt communication protocols to those of nearby devices, to user and application requirements, and to environmental conditions. Software systems themselves adapt when things go wrong, diagnosing and responding to problems by taking an alternative approach, rolling back to a consistent state, or taking another corrective action. Conversely, software systems are adaptable . They can be customized easily to meet individual user needs and to take advantage of newly published software. Oxygen's software architecture relies heavily on abstraction to support change through adaptation and customization, on specification to support components that use these abstractions, and on persistent object stores with transactional semantics to provide operational support for change.