Desarrollo de software basado en modelos: de la teoría a la práctica Rubby Casallas rcasalla@uniandes.edu.co Departamento de Ingeniería de Sistemas y Computación Grupo de Construcción de Software Universidad de los Andes Cámara de Comercio de Bogotá Centro Empresarial Chapinero
Propósito de la charla Presentar experiencias de uso de la ingeniería de modelos para producir soluciones que hoy en día son utilizadas por usuarios finales Discutir sobre las dificultades y oportunidades de la ingeniería de modelos en un contexto real
Experiencias Academia Juego gerencial Monad: Sitios web Hiles
Generación de aplicaciones web transaccionales (JEE) Academia Juego gerencial
A Model Transformation Chain(MTC) M1 Model Transformation Chain P1 5
A Model Transformation Chain(MTC) Model Transformation Chain 6
A Model Transformation Chain(MTC) Model Transformation Chain Aplicaciones web (gxt) transaccionales JEE CRUD 7
A Model Transformation Chain(MTC) M1 M2 M3 Mn Model Transformation Chain P1 P2 P3 Pn 8
+ An instance of a Model Transformation Chain(MTC) Problem Domain transformation Business Model Architecture Model Business Metamodel Architecture Metamodel transformation JEE Model JEE Metamodel transformation Java Metamodel Solution Domain generation Java Model application code 9
A Model Transformation Chain(MTC) Business Model: 1855 elements Architectural Model: 5750 elements (310%) 1 element 3 elements JEE Model: 7245 elements (126%)(393%) Java Model: 171.069 elements (2361%)(2975%)(9222%) 340.000 Lines of Code (LOC) 183 LOC x element There is an explosion of elements at each step 4 elements 92 element 10
Porcentaje de generación Generated Code Manual Code LOCs % LOCs % Total LOCs Business Logic 340.358 65 47.764 9.1 388.122 WEB UI 74.850 14.4 60.102 11.5 134.952 Total LOCs 415.208 79.4 107.866 20.6 523.074 Generated Code Manual Code Files % Files % Total Files Business Logic 1254 57.3 245 11.2 1499 WEB UI 390 17.8 299 13.7 689 Total Files 1644 75.1 544 24.9 2188
Requerimientos funcionales avanzados
Decisión: Comprar activo fijo 1. Un grupo corporativo puede tomar varias decisiones de negocio en un periodo dado del Juego Tipo Decisión: Buy Fixed Asset (BA) BA 1 Instances
Decisión: Comprar activo fijo 2. Consolidar Jugada 3. Ejecutar Jugada Empresa: Postobon Estado Contable Decision instances Decision Definition BA 1 BA BA BA A B Business Simulator Caja Debitar: total Activos fijos Acreditar : Total # Edificios Oficinas Estado Operativo Num + 1 # Terrenos Num + 1 Industry Data (Queries)
Decisión: Comprar activo fijo 4. Ver resultados Balance General Empresa: GaseosasyRefrescos Estado Operativo Caja $100 000 Activos fijos $ 900 000 000 # Edificios Oficinas 5 unidades # Terrenos 5 unidades
Mages-Lenguaje de dominio específico Production expert Financial expert Comprar un insumo: 1. Comprar 5 llantas 2. 5*precioUnitario se le resta a la cuenta banco 3. 5*precioUnitario se le suma a la cuenta patrimonio 4. las 5 llantas se almacenan en el inventario de la compañía Marketing expert
Mages-Lenguaje de dominio específico Production expert Human Resources expert Marketing expert Contratar un empleado: 1. Contratar un operario para la planta central de la región Colombia 2. Genera un compromiso de pago salarial mensualmente 3. Se incluye el nuevo empleado en el inventario de la compañía Compromiso pago salarial 1. Se calcula el salario con base en la categoría y los factores prestacionales 2. Se resta el salario de la cuenta nomina 3. Se calcula el pago prestacional 4. Se resta el pago prestacional de
Mages-Lenguaje de dominio específico Production expert Contratar una campaña publicitaria: 1. Calcular el costo de la campaña 2. Restar el costo de la campaña de la cuenta 3. Calcular los beneficios de la campaña 4. Registrar en el inventario de la compañía la campaña Human Resources expert Marketing expert
Decisión: Comprar activo fijo Descripción Tipo de Activo Fijo (Asset Type) Unidad (Unit) Activo Fijo (Fixed asset ) Cantidad (Quantity) Número de serie (Stock Number) Esta decisión permite comprar un activo fijo de tipo terreno o edificación para una unidad de negocio seleccionada. Tipo de activo que se desea adquirir. La unidad donde se ubicara el activo fijo. El activo fijo que se va a comprar. Cantidad de unidades Numero de inventario para identificar el activo.
Decisión: Comprar activo fijo Operaciones Transacciones contables Transacciones operativas Total purchase cost = Asset s Unit Cost * Quantity (the cost depends of the region) Incrementar cuenta de activos Registrar el gasto en caja Agregar el activo al inventario de la empresa
Mages-Lenguaje de dominio específico
Mages-Lenguaje de dominio específico
Editor del lenguaje de dominio específico
Generated Code Manual Code LOCs % LOCs % Total LOCs Business Logic 159.933 71.8 8.044 3.6 167.977 WEB UI 54.821 24.6-0.0 54.821 Total LOCs 214.754 96.4 8.044 3.6 222.798 Generated Code Manual Code Files % Files % Total Files Business Logic 480 63.5 46 6.1 526 WEB UI 230 30.4 0 0 230 Total Files 710 93.9 46 6.1 756
Monad-Sitios web Websites in a specific domain Domain Domain clients Restaurants Web development company Hotels Common website structurefora domian Client A DATA Client B DATA Solamente insertar los datos de los clientes 25
+ Hiles: Sistemas embebidos (VHDL) Ayudar a los diseñadores de sistemas embebidos en el prototipado y validación Después viene la construcción real Existen herramientas de simulación donde los sistemas se programan en lenguaje de hardward como VHDL En Hiles se hace una descripción de alto nivel y se genera el código en VHDL
HiLeS Workbench - Papyrus Editor Domain Eng. Structure Behavior 28
PL Workbench - MTC Product Eng. System Level Processor Level RTL SysML Model Transform HiLeS Model Transform HDLs Models VHDL- AMS Verilog- AMS Generate Generate PetriNet Code HDLs Code TINA System Vision 29
Experiencias 1. Generación del código de base de las aplicaciones 2. Requerimientos CRUD 3. Las aplicaciones resultado hay que extenderlas con los requerimientos propios Academia 1. Adaptaciones a dominios específicos 2. 100% sitio web 1. Lenguaje de dominio específico para definir los requerimientos 2. 100% código Juego gerencial 1. Lenguaje de dominio específico para definir los requerimientos 2. 100% código Monad: Sitios web Hiles
Conclusiones Herramientas cada vez mejores Hay casos de éxito Hay muy pocas personas entrenadas Es difícil: abstraer, entender dominios diversos, modelar (interpretar la realidad, construir correctamente los modelos), utilizar las herramientas Es costoso iniciar. Desarrollar infraestructuras adecuadas
Reportes sobre la práctica de MDE en la industria R. Cloutier and M. Bone, Compilation of SysML RFI Final Report, Stevens Institute of Technology, 2010 Systematic study of the use and effectiveness of model-based methods in systems engineering in industry J. Hutchinson, et al., Empirical Assessment of MDE in Industry, ICSE 2011 (*) Systematic study of the effectiveness of model-based methods in for software development in industry J. Hutchinson, et al., Model-Driven Engineering Practices in Industry, ICSE 2011 (*) Systematic study of the level of use of model-based methods in for software development in industry
Reportes sobre la práctica de MDE en la industria P. Mohagheghi and V. Dehlen, Where is the Proof? A Review of Experiences from Applying MDE in Industry, ECMDA 2008 (*) Review of available publications on industrial application of MBE in industry T. Weigert and F. Weil, Practical Experiences in Using Model-Driven Engineering to Develop Trustworthy Computing Systems, IEEE SUTC 2006 Summary of systematic use of MBE in Motorola with evaluation The Middleware Co., Model-Driven development for J2EE Utilizing a Model Driven Architecture (MDA) Approach, 2003 A systematic comparative study of traditional vs. model-based development on a software project