title: DUALLy
text: # DUALLy
  
  DUALLy is an MDE framework to create interoperability among Architecture Description Languages (ADLs). It is developed at the Computer Science Department of the University of L'Aquila. DUALLy enables the transformation of a model conforming to a specific architecture description language into corresponding models conforming to other architecture description languages.
  
  ## ISO/IEC/IEEE 42010 standard
  
  As highlighted in the official ISO/IEC/IEEE 42010 website, "the use of multiple views for design can get very complicated. Their consistency is a potential problem whenever multiple models and views are used. Sometimes, consistency rules or procedures are defined as a part of viewpoints. In other cases, organizations have practices they use to check and enforce consistency".
  
  The solution provided by the ISO/IEC/IEEE 42010 standard consists in using correspondences and correspondence rules to define the various relationships that may exist within an architecture description. Under this perspective, DUALLy can be seen as an approach in which special kinds of correspondence rules can keep in a consistent state architecture models belonging to different views. Those special correspondence rules are defined between ADLs and have the additional feature of being proactive; that is, when an inconsistency is detected between different architectural models, the DUALly interoperability engine actively transforms the models in order to restore consistency.
  
  ## Interoperability
  
  Supporting ADLs interoperability and change propagation is intrinsically complex. Furthermore, the lack of automation does not allow the easy addition of new description languages, and does not guarantee change propagation to multiple models in a finite number of steps. In general, changes occurring in an architecture model have a strong impact on all the other related architecture models (each of them possibly conforming to different architecture description languages). In order to keep models in a consistent state, changes need to be propagated from the updated model to all the others. When dealing with multiple architecture description languages, propagating changes may be a complex task; such a task is inevitable and requires to be managed by a dedicated approach.
  
  In DUALLy, the interoperability among various architecture description languages is ensured via model transformation techniques. Instead of creating a point-to-point relationship among all languages, DUALLY defines the transformations among architecture description languages by passing through A0, which is a core set of architectural concepts defined as generally as possible (to potentially represent and support any kind of architectural representation) and extensible (in order to add domain specificities). In other words, A0 acts as a bridge among the different architectural languages to be related together. The star architecture of DUALLy enables an agile and easy integration of architecture description languages. The DUALLy transformation system is made of a series of model-to-model transformations that enable information migration among architecture models. These model-to-model transformations are constructed automatically by executing higher-order transformations (i.e., transformations taking other transformations as input or producing other transformations as output).
  
  While DUALLy transforms a model into any other by passing first through an A0 model, model changes are propagated accordingly first to the A0 model and successively forwarded to any other architectural model (it has to be noted that the obtained result is independent from the order followed in the forwarding). Under the assumption that concurrent modifications to different models cannot apply, the DUALLY architecture ensures the convergence of the change propagation process, that is, it ensures by construction that a modification of a model within the network is propagated to all the other models in a finite number of steps.
  
  