Successfully reported this slideshow.
Your SlideShare is downloading. ×

Ingeniería del Software dirigida por modelos -Versión para incrédulos

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 59 Ad

Ingeniería del Software dirigida por modelos -Versión para incrédulos

Download to read offline

Presentación en el 2do. Foro de Ingeniería de Software
Tendencias para automatizar el desarrollo de software. Hablando de modelado de software, generación de código,...

Presentación en el 2do. Foro de Ingeniería de Software
Tendencias para automatizar el desarrollo de software. Hablando de modelado de software, generación de código,...

Advertisement
Advertisement

More Related Content

Similar to Ingeniería del Software dirigida por modelos -Versión para incrédulos (20)

More from Jordi Cabot (20)

Advertisement

Recently uploaded (20)

Ingeniería del Software dirigida por modelos -Versión para incrédulos

  1. 1. Ingeniería del Software dirigida por modelos Versión para incrédulos Jordi Cabot – ICREA Research Professor en la UOC @softmodeling / @ingdesoftware jordicabot.com
  2. 2. SOM Research Lab Software runs the world. Models run the software
  3. 3. El equipo Postdoc PhD Students Professors Lecturers
  4. 4. Nuestra misión Interested in the broad area of systems and software engineering, especially promoting the rigorous use of software models and engineering principles in all software engineering tasks. Flickr/clement127
  5. 5. Model Rapid prototyping Static analysis Code generation Automated testing Refactoring/ Transformation Documentation [Illustration by Bernhard Rumpe] IDM = Modelos como parte central de la Ingeniería del Software
  6. 6. Size doesn’t matter Modelas y punto!!!
  7. 7. Model- driven Engineering El porqué: Casos de uso El cómo: Claves para la adopción El qué: Conceptos básicos
  8. 8. • Asterix view : resistentes al modelado
  9. 9. • Grady Booch – history of softwre engineering The entire history of software engineering is that of the rise in levels of abstraction - Grady Booch OBJETIVO: Escribir cada vez menos código
  10. 10. MDE es la formalización (culminación?) de este proceso
  11. 11. (common-sense) code generation
  12. 12. Beneficios MDE (bien hecho) +productividad +calidad +Mantenimiento …. 2X – 8X 1.2X – 4X 80%
  13. 13. MDE es >> que generación de código MDE (software engineering) MDD (software development)
  14. 14. MDE es modernización de Software
  15. 15. MDE es Open Data
  16. 16. • Everything is a model by Jean
  17. 17. To model, or not to model, this is the WRONG question - Shakespeare La buena pregunta: qué modelos, cuantos,
  18. 18. • Eric Elliot on illiterate
  19. 19. Model- driven Engineering El porqué: Casos de uso El cómo: Claves para la adopción El qué: Conceptos básicos
  20. 20. La equación MDE: Models + Transformations = Software
  21. 21. Original model 1st refinement nth refinement Model-to-model Transformation Model-to-text Transformation ... Requirements Use Case Class Diagram Java Project
  22. 22. Qué es un modelo? Mapping Feature Un model se basa en el original (=system) Reduction Feature Un modelo refleja sólo las propiedades relevantes del original Pragmatic Feature Un modelo tiene que poder usarse en el original en un escenario concreto ModelrepresentsSystem
  23. 23. Un modelo 26 Ciudad de Nantes = “system” a modelar Un mapa es de hecho un modelo del sistema La leyenda del mapa es la gramática / metamodelo Existen diferentes tipos mapas: transporte, alcantarillado,… que dan “vistas” diferentes de la ciudad
  24. 24. Models & Metamodelos 27 representation of System S conforms to Model M Metamodel MM
  25. 25. Muy parecido al mundo de la programación MDE Grammarware MOF (metametamodel) UML (metamodel) ABank.uml EBNF.g Java.g MyProgram.java
  26. 26. Qué lenguaje usar O construye tu propio Domain- Specific Language
  27. 27. Transformación de modelosModel-to-Model Transformation Pattern MMa MMb Ma Mba2b.mt MMTLsource metamodel source model target model target metamodel conformsTo Execution Engine conformsTo conformsTo
  28. 28. M2M Transformation example Java M conformsTo A 2 V Rule C 2 C Rule UML2Java.atl execution UML M conformsTo c1:Class a1:Attribute Trace Model c1 -> c01 : C2C a1 -> v01 : A2V MMa Class Attribute* attributes Java MM Class Variable* variables v01:Variable c01:Class UML MM
  29. 29. Example #1 – Publication 2 Book Journal name: String Book name: String id: Integer Source Metamodel Target Metamodel j2:Journal name = ACM Comp. Sur. j3:Journal name = IEEE Software. j1:Journal name = IEEE Computer b2:Book name = ACM Comp. Sur. id = 2 b3:Book name = IEEE Software. id = 3 b1:Book name = IEEE Computer id = 1 Journal Collection Book Collection jc1:Journal Collection bc1:Book Collection Source Model Target Model journals books 1..* 1..*
  30. 30. module Publication2Book; create OUT : Book from IN : Publication; rule Collection2Collection { from jc : Publication!JournalCollection to bc : Book!BookCollection( books <- jc.journals ) } rule Journal2Book { from j : Publication!Journal to b : Book!Book ( name <- j.name ) } Source Pattern Target Pattern Matched Rule Header Binding
  31. 31. Transformación modelo a texto MiniUML Metamodel MiniUML Model class Student extends Person{ private String regNo; public void setRegNo(…){…} public String getRegNo(){…} } MiniJava Code MiniJava Grammar Model2Text NamedElement type : Type type 0..1 Relationship 0..1 superClass minCard : Integer maxCard : Integer * * – String – Boolean – … «enumeration» Type ClassDec := Modifier “class” Identifier [“extends” Identifier] ClassBody; AttributeDec := Modifier Type Identifier“;”; MethodDec := Modifier ReturnType Identifier “(” ParamList “)” “{” MethodBody “}”; Identifier := {“a”-”z” | “A”-”Z” | “0”-”9”}; Class Attribute name: String Person Student regNo : String
  32. 32. M2T : Motor de templates «context class» public class «name» { String id, … } Template Engine Query Result Input public class Person { String id, …} Template Text fragment Meta-marker Output1 Output2 …public class Customer { String id, …} Person Customer … Source Model Produced Text
  33. 33. Acceleo[template public javaClass(aClass : Class)] [file (aClass.name.toUpperFirst()+'.java', false, 'UTF-8')] package entities; import java.io.Serializable; public class [aClass.name/] implements Serializable { [for (att : Attribute | aClass.atts) separator ('n')] [javaAttribute(att)/] [/for] [for (op : Operation | aClass.ops) separator ('n')] [javaMethod(op)/] [/for] } [/file] [/template] [template public javaMethod(op : Operation)] public [op.type/] [op.name/]() { // [protected (op.name)] // Fill operation implementation [returnStatement(op.type)/] // [/protected] } [/template] Open output file Close output file Static Text Protected Area Query Template Call
  34. 34. • NoSQL • Rest • JSON • Verificación / testing • Versionado • Collaboración Y aún hay más Flickr/FlazingoPhotos
  35. 35. http://matt.might.net/articles/phd-school-in-pictures Me prohibieron utilizar mis 500+ slides de “introducción a la IDM” 
  36. 36. Model- driven Engineering El porqué: Casos de uso El cómo: Claves para la adopción El qué: Conceptos básicos
  37. 37. PERO lo lleva diciendo desde 1985
  38. 38. Adopción MDEAdoption Lifecycle
  39. 39. Adopción MDE
  40. 40. Depende del proyecto: •Objetivo •Tecnología •Equipo •Tamaño •Dominio Depende, de qué depende…
  41. 41. Consejo: Evalúa tu equipo Socio-technical Congruence: MDE requiere nuevos roles, nuevas tareas...
  42. 42. Consejo: Educa a tu equipo Y incluye personas que lo hayan hecho antes en tu 1er proyecto
  43. 43. Consejo: Sé ágil
  44. 44. Consejo: “Start small” Size DOES matter
  45. 45. Consejo: Ten paciencia
  46. 46. Consejo: Que Management te dé su apoyo No puede ser sólo un experimento que te “dejen” hacer
  47. 47. Consejo: Los experimentos con gaseosa Ej: UML es suficiente para la gran mayoría de proyectos
  48. 48. Consejo: Escoge una herramienta de verdad Drawing vs modeling tool
  49. 49. Papyrus • Una herramienta abierta (open-source) basada en Eclipse para modelaje con UML, SysML y DSLs basados en UML • Potente consorcio industrial detrás (sostenibilidad)
  50. 50. Papyrus: plataforma - ...-RT -IM-xtUML -?
  51. 51. http://modeling-languages.com
  52. 52. Let’s work together (PhDs, Postdocs, consulting, tech transfer,...) jordi.cabot@ icrea.cat @softmodeling

×