Professional Documents
Culture Documents
Introduccin
Una de las principales tareas de la ingeniera de dominio es definir una arquitectura
de software de dominio especfico que apoya la comunidad y la variabilidad [1]. La
arquitectura no slo debe predecir los puntos de variacin, sino tambin
proporcionar el apoyo necesario, normalmente en forma de componentes
reutilizables [2]. La ingeniera impulsada por el modelo (MDE)
Este proceso con lenguajes especficos de dominio y transformaciones que
proporcionan soporte para una variabilidad ms compleja y una implementacin
automatizada.
Para hacer posible este escenario de ingeniera de dominio impulsado por modelos
(MDDE), la arquitectura de software debe construirse alrededor del concepto de
MDE, estar consciente y dar soporte
A sus tecnologas, para que el proceso de desarrollo de aplicaciones pueda
aprovechar al mximo sus beneficios.
Sin embargo, la mayora de los enfoques basados en modelos para la ingeniera de
dominios y la ingeniera de lneas de productos se centran en la tarea de derivacin
del producto, despus de que la arquitectura ya est definida (dos ejemplos son [3],
[4]). En general, no se da suficiente atencin al proceso de diseo de una
arquitectura que sea adecuada para MDE. Tratamos de abordar esta cuestin de dos
maneras: (i) mediante la identificacin de tres tipos de conductores de arquitectura
MDE-especficos [2]; Y (ii) presentando algunos patrones para tratar con ellos.
Cuando se usan juntos, facilitan la tarea de disear arquitecturas para MDE. Los conductores
guan al arquitecto del dominio a travs de la identificacin de las diferentes posibilidades de
variabilidad del dominio, mientras que los patrones ayudan proporcionando soluciones a
algunos de los problemas involucrados en el diseo de dominio basado en modelos. Tambin
presentamos los resultados de una evaluacin realizada para demostrar la viabilidad, los
beneficios y los inconvenientes del uso de estos conductores y patrones.
Aqu es donde un DSL viene en la mano. Es un lenguaje que describe los conceptos
de dominio y cmo se pueden relacionar entre s. Usando una DSL, se pueden crear
modelos que captan una variabilidad ms detallada. En el ejemplo anterior, un
diseador de dominio podra usar un DSL de creacin web para especificar Los tipos
de documentos estarn presentes en una aplicacin, y cmo se relacionan entre s, o
qu pginas estarn disponibles y cmo se produce la navegacin entre ellas. Dado
que un dominio suele comprender ambos tipos de variabilidad, , Se puede dividir en
subdominios [9], cada uno descrito en trminos de variabilidad basada en
caractersticas (configuracin de rutina) o variabilidad basada en DSL (construccin
creativa). Adems, estos diferentes subdominios deben cooperar efectivamente con el
fin de apoyar la variabilidad, es decir, los modelos de caractersticas individuales y las
DSL deben ser integrados [10, 11].
Una vez identificados los controladores que describen la variabilidad basada en caractersticas
y DSL, cada uno normalmente contenido en un subdominio bien definido, el arquitecto de
dominio debe tratar la integracin entre ellos. Por ejemplo, en el dominio web (Figura 1A), el
subdominio de navegacin puede contener referencias al subdominio de creacin (por ejemplo,
una pgina que seala un tipo de documento especfico). Estas interdependencias de
subdominio deben hacerse explcitas, de modo que la arquitectura pueda estar preparada para
la existencia de mltiples subdominios y posiblemente mltiples DSLs [10,11]. Por ejemplo,
puede ser necesario definir un solo metamodelo para mltiples subdominios, y
luego desarrollar diferentes sintaxis concretas para cada uno de ellos, de manera
que puedan integrarse bien pero an as tener diferentes puntos de vista.
El siguiente listado muestra una pieza de cdigo JET3 que genera una clase
DAOAbstractFactory.
Este cdigo utiliza etiquetas jet <c:iterate> y <c:get>, Junto con las consultas XPATH
[22], para iterar a travs de todos los tipos de documentos y generar un mtodo creador para
cada tipo de documento.
public abstract class DAOAbstractFactory {
<c:iterate select="/documentTypes" var="d">
public abstract
<c:get select="$d/@name" />
create<c:get select="$d/@name" />Instance();
</c:iterate>
}
Para los tipos de documento "Noticias", "Proyecto" y "Referencia", se genera la clase
en la esquina superior izquierda de la Figura 4. Para ilustrar cmo este patrn
facilita la tarea del generador de cdigo, considere la siguiente pieza de cdigo JET:
Aqu, las etiquetas JET <c: choose> y <c: when> se utilizan para seleccionar entre
alternativas mutuamente exclusivas, en este caso, las caractersticas alternativas
"derby" y "mysql", que se obtienen del modelo de caractersticas mediante
consultas XPATH. Dependiendo de la eleccin, la etiqueta JET <java: class> llama a
la plantilla apropiada. Para los tipos de documentos "Noticias", "Proyecto" y
"Referencia", tres de las seis clases concretas en la parte inferior
Lado derecho de la Figura 4. Una construccin similar produce la fbrica de
hormign (DerbyDAOFactory o
MySQLDAOFactory) para la funcin seleccionada. Tambin hay dos patrones que se
pueden utilizar para la variabilidad basada en caractersticas, sobre la base de
buenas prcticas bien conocidas [23] para escribir generadores de cdigo:
Este patrn, mostrado en la Figura 6, aboga por el uso de una capa de datos
independiente, construida en una tecnologa que es independiente de la
herramienta DSL, y que contiene la informacin que es esencial para el generador,
y nada ms. De esta manera, se hace explcita la informacin que necesita el
generador, lo que facilita la evolucin tanto del generador como de la herramienta
DSL. Tambin permite el desarrollo de ambos lados en paralelo (un equipo que
desarrolla el generador y otro
Equipo que desarrolla las herramientas / metamodelos). Finalmente, libera
El generador de una tecnologa de modelado particular, y restringe la necesidad de
aprender las particularidades de una herramienta de modelado especfica a un solo
equipo. El equipo que trabaja con la generacin de cdigo puede centrarse en sus
propias tareas.
Esta ranura temporal contiene slo la informacin necesaria del modelo de caractersticas que
es realmente utilizado por los generadores de cdigo. El cdigo siguiente muestra la idea
general de cmo se puede rellenar esta capa utilizando JET jags <c: load> y <c: set>. En este
ejemplo, se selecciona la funcin "derby":
Dependiendo de cun profundo sea el cambio, puede que no sea necesario cambiar el
generador, que es una tarea ms compleja y propensa a errores. Para proteger al generador de
modificaciones en el cdigo no generado, se puede usar el patrn del adaptador [21] para
recopilar, filtrar y / o preparar la informacin necesaria para el cdigo generado. El patrn de
puente [21] se puede utilizar con el mismo propsito, creando una representacin abstracta del
cdigo referenciado, que es libre de ser modificado para introducir Modificaciones ms
sencillas. Las clases parciales son otra manera de lograr esto, como muestra el siguiente
cdigo:
// This file is generated
public partial class ClientNodeObject
{
public ClientNodeObject(int port) {
// generated init code
_initData();
}
}
// This file is handwritten
public partial class ClientNodeObject
{
void _initData() {
// handwritten code
}
}
En este ejemplo, escrito en C #, el compilador es responsable de integrar los dos archivos en
una sola clase. El cdigo no generado depende del cdigo generado. Esto sucede cuando
algn cdigo no generado espera que se genere algn comportamiento o estructura. En la
mayora de los casos, los patrones Tales como la fbrica abstracta, el mtodo de la plantilla o la
fbrica [21] se puede utilizar, de modo que el cdigo no-generado no necesita saber los detalles
sobre cmo las clases o los mtodos que utiliza son Realmente implementado. El siguiente
cdigo Java no generado ilustra cmo se reduce la dependencia a travs del patrn de fbrica
abstracto. En este ejemplo, este cdigo Java no generado depende de Se selecciona la funcin
"derby", pero no hay necesidad de mucho detalle, ya que el patrn abstracto de fbrica lo
oculta la mayor parte:
Otra opcin son los puentes de modelo, que consisten en crear duplicados de elementos del
metamodelo referenciado en el metamodelo de referencia. En el ejemplo de creacin web, esto
corresponde a la creacin, en el metamodelo de navegacin, de un elemento denominado
ReferenceToDocumentType, O algo similar, que puede ser utilizado para establecer referencias
entre metamodelos. Un inspector independiente puede asegurarse de que estas referencias
son vlidas [10].
V. EVALUATION:
Para evaluar nuestro enfoque, llevamos a cabo tres estudios de casos, que se
describen en la Tabla I. El primer estudio involucr el dominio de creacin de
contenido web, que es un dominio tcnico
Que incluye aplicaciones para publicar y ver informacin, como sitios web de
noticias, foros y blogs. Se realiz en un escenario puramente acadmico. Los
estudios segundo y tercero se realizaron conjuntamente con la industria. El segundo
estudio involucr el dominio de las aplicaciones distribuidas basadas en la nube,
que es tambin un dominio tcnico, que se ocupa principalmente de las funciones
de comunicacin punto a punto y descubrimiento. El tercer estudio de caso
involucr el dominio de los eventos cientficos, que es un dominio empresarial.
Los tres estudios de casos tomaron una cantidad similar de tiempo, aunque el tercer
estudio tuvo una duracin ms pequea y slo a tiempo parcial la disponibilidad de
los participantes. El tercer estudio de caso fue el ms grande en trminos de lneas
de cdigo de la referencia Implementacin, pero menor en trminos de generacin
Artefactos, lo que refleja el hecho de que los participantes tenan menos
Tiempo para implementar la automatizacin MDE.
El objetivo de estos estudios fue evaluar si los impulsores y patrones propuestos
pueden ayudar a producir una arquitectura que sea ms adecuada para MDE, por lo
que la idea era hacer una comparacin entre las implementaciones existentes,
desarrolladas sin ellas, y la implementacin MDE resultante , Desarrollado con ellos.
Para todos los estudios, los mismos participantes
Fueron responsables de desarrollar las dos versiones (con y sin nuestro enfoque).