Un software adaptativo es capaz de modificar su comportamiento en tiempo de ejecución debido a cambios en el sistema, en los requisitos o en el entorno en el que se despliega. La importancia del software adaptativo radica en el hecho de que puede ajustar su propio comportamiento a diferentes entornos y contextos, y por lo tanto, dar a los usuarios una mejor experiencia. Sin embargo, el desarrollo de sistemas adaptativos no es una tarea sencilla, por dos inconvenientes: 1) faltan lenguajes para especificar los elementos relacionados con la fase de diseño. Como consecuencia, estos sistemas se desarrollan a menudo en una manera ad-hoc, sin el formalismo requerido, dificultando el proceso de derivación de modelos de diseño para las siguientes fases del ciclo de desarrollo.2) las decisiones de diseño y el modelo de adaptación tienden a ser implementados directamente en el código y no se especifican a nivel de diseño. Cuando los modelos de adaptación se acoplan directamente con el código, la evolución del sistema se vuelve más difícil. Para hacer frente a los problemas mencionados, este artículo propone DMLAS, un lenguaje específico de dominio para el diseño de sistemas adaptativos. Como prueba de concepto, este artículo proporciona un prototipo funcional basado en el plugin Sirius para Eclipse. El propototipo desarrollado es una herramienta que permite modelar, en varios niveles de abstracción, los principales componentes de un sistema adaptativo. La notación usada tanto por los modelos como por la herramienta ha sido validada de acuerdo con los nueve principios formulados por Moody.
An adaptive software has the ability to modify its own behavior at runtime due to changes in the users and their context in the system, requirements, or environment in which the system is deployed, and thus, give the users a better experience. However, the development of this kind of systems is not a simple task. There are two main issues: (1) there is a lack of languages to specify, unambiguously, the elements related to the design phase. As a consequence, these systems are often developed in an ad-hoc manner, without the required formalism, augmenting the complexity in the process of derivation of design models to the next phases in the development cycle. (2) Design decisions and the adaptation model tend to be directly implemented into the source code and not thoroughly specified at the design level. Since the adaptation models become tangled with the code, system evolution becomes more difficult. To address the above issues, this paper proposes DMLAS, a Domain-Specific Language (DSL) to design adaptive systems. As proof of concept, this paper also provides a functional prototype based on the Sirius plugin for Eclipse. This prototype is a tool to model, in several layers of abstraction, the main components of an adaptive system. The notation used both in the models and the tool was validated against the nine principles for designing cognitively effective visual notations presented by Moody.