RESUMEN El cambio es una propiedad intrínseca del software. Un sistema software, a lo largo de su vida útil, puede necesitar actualizaciones, mejoras o la integración de nuevas características. Si estas necesidades de cambio no son cubiertas, el riesgo de que el sistema software deje de ser útil aumenta. Esto supone un reto para los sistemas críticos, los cuales no pueden ser detenidos para realizar operaciones de mantenimiento o evolución debido a que deben estar continuamente operativos. Para reducir el envejecimiento de dichos sistemas, éstos deben incorporar mecanismos que les permitan evolucionar dinámicamente, i.e. tolerar cambios tanto estructurales como de comportamiento mientras están operativos. Esta tesis aborda el diseño de una infraestructura para la construcción de sistemas software dinámicamente evolucionables y basados en arquitecturas software. Las razones que han motivado el uso de un enfoque basado en arquitecturas software son: (i) proporcionan un alto nivel de abstracción para definir cambios dinámicos; (ii) permiten variar el nivel de descripción del sistema; y (iii) permiten reutilizar las herramientas existentes para modelado de sistemas, generación automática de código, y análisis formal proporcionadas por los lenguajes de descripción de arquitecturas. El marco presentado en esta tesis, llamado Dynamic PRISMA, se caracteriza por la combinación de dos niveles de dinamismo: Reconfiguración Dinámica, que aborda los cambios a nivel de configuración (i.e. la configuración arquitectónica), y Evolución Dinámica de Tipos, que aborda los cambios a nivel de tipos (i.e. la especificación de tipos arquitectónicos e instancias). Esta combinación es una de las mayores contribuciones de esta tesis: así, un sistema no es solamente capaz de reconfigurar durante su ejecución los elementos constructivos que lo forman (i.e. los tipos arquitectónicos), sino también de redefinir dichos elementos constructivos (o introducir otros) durante su ejecución. Otra contribución de la tesis es la identificación de las funcionalidades relacionadas con la evolución dinámica y su integración a través de aspectos. Esto mejora la separación de funcionalidades y permite cambiar de forma independiente entre sí las especificaciones de reconfiguración, los mecanismos de evolución, o la lógica de negocio. Una tercera contribución es cómo este dinamismo se ha soportado: la reconfiguración a través de capacidades autonómicas, aportando así proactividad en función de estímulos internos y/o externos; y la evolución de tipos a través de la reflexión asíncrona, permitiendo así modificar la especificación de un tipo y la transformación de sus instancias en distintos tiempos (i.e. cuando éstas están listas para su evolución). Además, la semántica de la evolución asíncrona se ha formalizado a través de transformaciones de grafos, lo que ha permitido modelar de forma natural tanto la arquitectura de un sistema como su evolución asíncrona. Por último, el trabajo presentado en esta tesis se ha ilustrado a través de un caso de estudio del dominio robótico; un área que podría verse potencialmente beneficiada con los resultados de esta tesis.