Building Adaptive Software


I appreciate the invitation to present this talk at the 2012 Academic Forum hosted by the Instituto Tecnologico de La Laguna. Torreón, Coahuila, Mexico. March 8, 2012. 12:30–13:30.


Adaptive Software evaluates its own behavior and changes it when the evaluation indicates that it is not accomplishing what the software is intended to do, or when better functionality or performance is possible, or when the interaction with the user could be improved. Adaptation is a feature that needs to be implemented on design time and applied at runtime. Building adaptive software implies:

  • the software has multiple ways of accomplishing its purpose, and has enough knowledge of its architecture to make effective changes.
  • the software design follows the best practices to make it possible to have an elastic design that makes the adjustment feasible.
  • the software has the ability to take care of the user understanding his necessities, being aware of events in the UI but also sensing and understanding user’s emotional reactions.
  • the software is intelligent enough for evaluating its behavior and performance, as well as the ability to plan and reconfigure its operations in runtime.
  • the software is aware of it own resource management and can adapt its execution to assure the best consumption of it.

In this talk, we will provide a sneak peek of how to achieve those facts and the disciplines behind them with a practical orientation. Lets review the future of software in a roadmap that confront us with ubiquity, mobility, multi-agent technology, software engineering, software architecture, artificial intelligence, cloud computing, affective computing, human computer-interfaces, and data mining.


These are my slides (in Spanish) for the keynote, comments are more than welcome.