lunes, 4 de junio de 2012

MD-SPL

¿Qué es MD-SPL?


MD-SPL une dos paradigmas para el desarrollo del software, por un lado MDD, Model Driven Development y por otro SPL, Software Product Line.


MDD
Resumiendo mucho, podemos decir que  MDD (o MDSD), define modelos sobre el dominio de negocio con el objetivo de crear aplicaciones con calidad y a bajo coste gracias a la reutilización estratégica de código mediante DSL (lenguajes específicos de dominio).


Hay que tener cuidado cuando entramos en en el mundo de los modelos ya que es muy amplio y con enfoques muy diferentes. Recalcar que MDD, es ágil y funciona. Es muy diferente a  MDA, UML o RUP.  Con MDD pasamos de modelo a código directamente,  sin más florituras :-)








Puedes ver más sobre MDD en esta presentación
https://docs.google.com/present/edit?id=0AUj2bcZ_ecAkZGRodGtzempfMTEzZDI5azViZDY


Este libro de Voelter explica perfectamente todo el paradigma MDD
http://www.voelter.de/publications/books-mdsd-en.html




SPL
Software Product Lines, está englobada dentro del paradigma  Software Factory. Desgraciadamente el mal uso del término Software Factory, o Factoría de Software se ha extendido y mucha gente los usa como sinónimo de "industria de software".
El concepto correcto de SPL y SF los podemos consultar en el SEI
http://www.sei.cmu.edu/productlines/
Una SF implica generalmente el uso de entornos de desarrollo especializados y configurados, “software factory schemas”, DSLs, patrones de análisis, vocabularios controlados, frameworks, generadores de código, librerías especializadas, y quedan más. Obviamente, todos coordinados y definidos dentro de un proceso de desarrollo y configurados para un tipo determinado de aplicaciones.




Ejemplo:


Supongamos que el ISTAC tiene en su cartera de proyectos pendiente de realizar diferentes webs para mostrar datos estadísticos a para diferentes usuarios  como periodistas, políticos, consumidores de información, etc.


Lo primero sería configurar la SPL, para ello hay muchos actividades a realizar. Una de las más relevantes es definir la "variabilidad" entre los productos.


* Número de indicadores. Cada web mostrará sólo una serie de indicadores.
* Visualización. Cada indicador se mostrará de diferente forma. p.ej. Gráfico o tablas
* Acceso. Los Indicadores podrán ser público o privado
* Descripción del datos. Existirá diferentes descripciónes del indicador

Otros aspectos  a considerar serían disponibilidad, agregación de datos, calidad de dato, pago, metadatos, etc.


La parte más variable de la SPL la gestionamos a través de DSL textuales y MDD.


Creamos un DSL textual para describir nuestro indicadores (es para uso interno, no estamos  preocupados de la interoperabilidad o web semántica) y otro para definir las diferentes web.




Un ejemplo de DSL


indicador "Paro registrado"
fuente "SCE"
descripcion sencilla "bla bla"
descripcion complicada "bla bla bla bla"
acceso-dato  "datos.istac.gobcan.org/datos/paro.px"
datos mes "enero" "datos.istac.gobcan.org/datos/paro-enero.px"



indicador "Alojamiento turistico"
fuente "SCE"
acceso-dato  "datos.istac.gobcan.org/datos/alojamiento.px"
datos mes "enero" " datos.istac.gobcan.org/datos/alojamiento.px 



web "ISTAC prensa"
pagina "Paro registrado"
mostrar indicador "Paro registrado" visualización "grafico"
mostrar indicador "Paro registrado" descripción "sencilla"




web "ISTAC consumidores informacion"
pagina "Paro registrado"
mostrar indicador "Paro registrado"  visualizacion "rdf"




Lo siguiente es crear "generadores de código"  que leen nuestro DSL y "escupen" el código que muestra las diferentes páginas. Este sería el esquema.











No hay comentarios:

Publicar un comentario