educating in mde

Download Educating in MDE

Post on 06-May-2015

1.437 views

Category:

Technology

0 download

Embed Size (px)

DESCRIPTION

Personal opinions and lessons learnt after teaching software engineering and model-driven engineering at different levels, places and environments

TRANSCRIPT

  • 1.Educating in MDE Jordi Cabot http://modeling-languages.com INRIA & cole des Mines de Nantes,

2. Educating in MDE Shouldnt MDE also change the way we teach Software Engineering in CS degrees? Model-driven engineering (MDE) is changing the way software systems are developed, operated and evolved. Mixing personal opinions and lessons learnt during the last years teaching SE and MDE in different places, levels and environments No magical recipes but, hopefully, some useful ideas & discussions 3. Before we start: Context 4. Joint team between INRIA & Ecole des Mines de Nantes (EMN) 10 members Research focus on: MDE core technologies metamodeling, MT, MaaS, model management, virtual models MDE applications reverse engineering, tool interoperability, IS cartography, Commitment to Eclipse open-source projects: ATL, MoDisco, EMF Facet, AMW, AM3, TCS Strong links with several software development companies Participation in both national and international research projects AtlanMod 5. Nantes Paris Nantes is a city in Western France, with 750,000 inhabitants in the metropolitan area. Nantes is the most important city of Brittany and the 6th town in France. 6. 850 engineering students 115 doctoral students 125 permanent faculty members + 250 part-time teaching staff 5 research departments 10 specializations (all students get an Engineer Diploma 2 CS- related specializations) 150 graduates per year EMN (lets look at the numbers) Low number of students. Good Rate students/faculty. Lots of support for teaching innovation Emphasis on Technology Transfer GOOD ENVIRONMENT FOR TEACHING MDE 7. Model-Driven Engineering 8. What is MDE? UML Code-Generation DSLs Model-driven Rev. Eng Metamodel M2M OCL M2T Model Evolution Model-Based Testing MDD MDA Profiles Multi-modeling SBVR BPMN Model Quality ATL QVT 9. Relationship between MDA/MDD/MDE MDD = Models as the primary artifact of the development process. MDA is the OMG's particular vision of MDD MDE = Models as primary artifacts of any Soft. Eng. activity 10. Relationship between MDA/MDD/MDE All model-driven processes are model-based but not the other way round. Most MDE techniques are still useful in MBE 11. Technical Spaces MDE Grammarware MOF (metametamodel) UML (metamodel) ABank.uml EBNF.g Java.g MyProgram.java 12. Model-Driven Engineering in CS Faculties 13. Educating in MDE Shouldnt MDE also change the way we teach Software Engineering is taught in CS degrees? Model-driven engineering (MDE) is changing the way software systems are developed, operated and evolved. Is this the case? 14. MDE is not included in core SE courses In SE courses, MDE reduced to teaching UML (OCL?) for software specification (and design of centralized systems) Few faculties have an (optional) course on MDE, sometimes only at the master level When teaching MDE focus on MDD, e.g. creating a DSL + code- generation from it Easier to find courses on formal methods for SE !!! (not that Im saying that FM are not important but ) Looking at course syllabus in CS degrees (Spain) Out of topic: How many courses include version control, bug tracking, tests or even agile practices? 15. Existence of MDE courses tightly related to presence of a research group on these topics Nevertheless, situation much better than a couple of years ago!! Opinion: Spain is one of the most advanced countries on this aspect (linked to high MDE research activity) Still time to change the situation (opening of new degrees due to the new regulation) Looking at course syllabus in CS degrees (II) 16. When to teach MDE? 17. MDE concepts should be introduced as part of the core SE courses Everybody has a basic notion of SE Its clear that MDE is not something apart from (alternative to) SE Remember: MDE is process agnostic. Fits any dev. process you follow in your SE courses MDE-based Waterfall process MDE-based Agile process (see Agile and Modeling / MDE : friends or foes?) When to teach MDE? 18. Introduction of MDE teaching in three different steps 1. Make sure all SE courses are model-based (some SE courses are more about programming than modeling) 2. Transform (some of) them in model-driven 3. Provide one full MDE course to Show other MDE application scenarios (beyond forward engineering) Introduce other MDE techniques (e.g. DSLs, model management,) Next we will see what contents include in each scenario What to teach? But first: when to teach MDE = When to teach SE. 19. When to teach Soft. Engineering ? Soft. Eng. is not taught in the same order! Students first learn how to program (and design DBs) and then learn that these programs should be part of something called SE 20. Example (UOC Open University of Catalonia) When to teach Soft. Engineering ? Fundamentos Programacin Programacin OO Estructura de la Informacin Bases de Datos I Bases de Datos II Sist. Gestin Bases de Datos Modelos Multidim. y Almacenes de Datos Ing. Software Estructurado Ing. Software Gestin organizaciones y proyectos inf. Tcnicas de Desarrollo Softwqre Ing. Software OO Proceso de Ing. Software Ing. Software componentes y sistemas distribuidosInteraccin Humano- Ordenador Programacin Bases de Datos Ingeniera del Software Gestin de la Ingeniera del Software UML (class diagrams) first introduced in Programming then again in BD and then again in SE! Domain modeling seen twice: in BD and in SE No conceptual link between SE and Programming and BD subjects 21. We tried to reverse the order (first specification and then programming) but had to reach a consensus When to teach Soft. Engineering ? 22. First we introduce SE principles (like lifecycles) Then we explain in parallel: specification, introduction to programming and introduction to databases. Once we know the final implementation platforms (e.g. Java + RDB) we can explain the principles of the design process A different course teaches the design process specific to each platform When to teach SE? Interdisciplinary: professors from different areas must reach an agreement Too many course dependencies prevented us from being more ambitious More info: Podemos darle la vuelta a la enseanza del desarrollo del Software? J. M.Marco-Simo et al. Novtica 193 23. What to teach? 24. What to teach? 1. Make your SE courses model-based 25. Usually SE core courses focus on the specification and design of centralized (or C/S) systems Final technology platform: a OO program + a RDB as a persistence layer These courses are already (UML) model-based: use cases, class, sequence diagrams, But this is not the case with advanced SE courses on distributed and component-based systems Complex technology platforms (JEE, .NET) Not obvious how to model those systems Model-based courses Well see an example of transforming a DSE course from programming-only to model-based For more info: From Programming to Modeling Our experience with a Distributed Software Engineering Course. Cabot et al. ICSE08 Ed. Sym 26. Original contents. Focused on teaching distributed technologies M1 Distributed Software Distributed environments Distributed object platforms: CORBA, RMI, DCOM M2 Component-based Software The components model UML for component-based systems specification M3 EJB: Distributed components (>50% of the time) Introduction to the J2EE platform Servlets and JSP The EJB architecture JEE beans: Entity, Session and Message beans Transactions and JEE From programming to modeling in a Distributed SE course 27. Problems with this Distributed SE course This view impairs the students ability to develop complex systems that require a more abstract view Contents quickly became outdated (DCOM?, RMI?) No methodological aspects about the analysis/design of distributed software systems No software architecture concepts No distinction between platform-independent and platform-specific concepts Students tend to believe that the acquired knowledge is only useful for the J2EE platform 28. New course: educational objectives To relate the DSE field with contents of previous subjects on SE To combine a practical approach with a conceptual frame that makes it independent of the technology A DSE course should especially emphasize its underlying principles Students should still learn how to program with a distributed and component-based technology platform (e.g. JEE) The course should highlight the similarities among the different technologies and motivate critical attitudes To use well-established models and notations (e.g. international standards) for the design and development of distributed applications To teach how to select, evaluate and adapt different approaches, methods and architectural styles 29. New course: global structure (I) A system specification is defined as a set of independent viewpoints, each one of these viewpoints focuses on concrete aspects of the system The Reference Model for Open Distributed Processing (RM-ODP) is used as a framework. Modeling with UML Link with previous SE courses 30. New course: global structure (II) All views have been defined at the PIM level (including the definition of system components and their logical distribution) -> Reusability Then, adaptation to JEE as example platform: The main concepts and technologies of J2EE are introduced. An UML profile for J2EE is explained Transformations between PIMs and J2EE-specific PSMs and between PSMs and code are shown (but not formalized with any transf. lang) [30] From module 2 From module 2 to module 4to module 4 31. New course: lessons learnt and results Better learning experience: It is easier to understand the different aspects that should be considered in the design of distributed systems The students have now a broader understanding of the different concepts and mechanisms of commercial component platforms Formal polls reveal that the overall student satisfaction has not changed (even slightly increased