Modern systems cross different domains and are composed of networked andinterrelated (hardware and software) subsystems, some even cyber-physical, thus goingbeyond the software scope, such as automotive, home automation and avionics.These systems are becoming increasingly complex, and are demanding a modulardecompositional approach to address the specificities of each domain.
Model-Driven Driven (MDD) development is becoming a standard approach to addressthe complexity of these systems’ development through the use of models in multiplenotations and their translations as first class citizens. To be able to express models inadequate rigorous notations that reflect the different perspectives of the systems, withan adequate level of abstraction usable by the different modelers (potentially non-software experts), typically are used Domain Specific Languages (DSLs). Theselanguages can be textual or more commonly visual. This course will use well establishedMDD techniques to model the domain, design and develop DSLs.
Well known examples of DSLs are: Scratch, Lego Mindstorms, Outsystems, among nany others. The concepts presented in this lectures allow you to master technology to build your own UML editors or other kind of visual and textual languages.
Saber:
Entender riscos e oportunidades de DS(M)L versus GP(M)L
Acompanhar o processo completo de Engenharia de Linguagens
Aprender técnicas de Análise de Domínio
Usar abordagens Orientadas a Modelos para desenvolvimento de linguagens
Aprender ferramentas formais e práticas (“workbenches”) de desenvolvimento de DS(M)Ls
Conhecer exemplos de domínio de aplicação de DS(M)Ls
Aprender a avaliar uma linguagem do ponto de vista da usabilidade
Saber fazer:
Usar ferramentas de desenvolvimento de DS(M)Ls
Dado um problema num domínio especifico, saber como desenvolver uma DS(M)L de raiz
Evoluir uma DS(M)L usando técnicas de evolução dirigidas por modelos
Saber desenhar e executar um estudo para avaliar uma linguagem
Soft skills:
Trabalho em equipa
Conhecer o processo de revisão de artigos numa conferência (tanto na óptica de autor como de revisor)
Defesa pública de pontos de vista
1. Abordagem de desenvolvimento de software orientado por modelos
1.1. O que é o desenvolvimento orientado por modelos
1.2. Definição de modelos
1.3. Metamodelos e os diferentes níveis de modelação
1.4. Instanciação Ontológica vs. Linguística
1.5. MD* : MBE, MDE, MDD, MDA
2. Engenharia de Domínio
2.1. Metodologias de modelação de domínio
2.2. A abordagem Feature-Oriented Domain Analysis
2.3. O modelo de domínio
3. Desenho de uma Linguagem
3.1. Sintaxe abstracta
3.2. Sintaxe concreta
3.3. Semântica
3.3. Especificação de restrições invariantes (regras de boa formação)
3.4. Transformação de modelos: propósitos, fundamentos (Gramáticas de grafos), ferramentas
3.5. Alguns domínios semânticos: DEVS, Statecharts e Petri Nets
4. Aferição da qualidade da DSL - Usabilidade
4.1. Planeamento da avaliação de usabilidade de uma linguagem
4.2. Execução dos estudos experimentais com utilizadores
4.3. Interpretação de resultados
Theory/Teóricas:
Domain-Specific Modeling, Steven Kelly, J. Tolvanen, IEEE Wiley, 2008
Generative Programming Methods, Tools and Applications, K. Czarnecki and U. Eisenecker, Addison-Wesley, 2000
Software Factories, J. Greenfield and K. Short, Wiley Publishing , 2004
DSL Engineering: Designing, Implementing and Using Domain-Specific Languages, Markus Voelter, CreateSpace Independent Publishing Platform, 2013
Labs/Práticas:
The Epsilon Book, Dimitris Kolovos, Louis Rose, Antonio García-Domínguez, Richard Paige, The Eclipse Foundation, 2014
Domínio do UML.
Domínio do Eclipse.
Como precedência deverá ter MDS
Horas por crédito | 28 | ||
Horas p/ semana | Semanas | Horas | |
Total de Horas | 0 | ||
ECTS | 6.0 |