Informação adicional: https://moodle.fct.unl.pt/course/view.php?id=5463
Os sistemas modernos actuais são tipicamentetransdisciplinares podendo ser compostos por subsistemas interligados (tanto de hardware como de software), sendo alguns até ciberfísicos, extrapolando assim o âmbito do software e computação. Temos exemplo destes automação de edifícios, indústria automóvel e aviónica. Estes sistemas estão-se a tornar cada vez mais complexos e exigem uma abordagem modular de decomposição para endereçar as especificidades de cada domínio.
O Model-Driven Engineering (MDE), ou Engenharia Orientada por Modelos, está-se a tornar, em certas condições, numa abordagem padrão para abordar a complexidade do desenvolvimento desses sistemas (que por razões éticas, económicas ou pragmáticas têm de ser modeladas e analisadas à priori) através do uso de modelos em várias notações e suas traduções como cidadãos de primeira classe. Para poder expressar modelos em notações rigorosas adequadas que reflictamas diferentes perspectivas dos sistemas, com um nível adequado de abstracçãoutilizável pelos diferentes modeladores (potencialmente não especialistas em software), normalmente são usadas as Linguagens Específicas de Domínio (DSLs). Essas linguagens podem ser textuais ou mais comummentevisuais.
Este curso usará técnicas de MDE bem estabelecidas para modelar o domínio, projectare desenvolver DSLs e usá-las para as diversas finalidades. Graças ao projecto desenvolvido durante o curso, os alunos terão a oportunidade de conceber o roteiro de modelação com diferentes camadas de abstracção, começando com a definição da DSL, e através de transformações de modelos estes irão construir o processo de geração automática para terminar em código ou algum formalismos introduzidos brevemente na teoria para fins de simulação ou análise.
No final desta unidade curricular o estudante terá adquirido conhecimentos, aptidões e competências que lhe permitam:
- Compreender:
Vantagens e desvantagens da engenharia orientada a modelos
Riscos e oportunidades de DS(M)L versus GP(M)L
Critérios de selecção de linguagens de modelação mais adequadas a determinado propósito de modelação
- Ser capaz:
Usar ferramentas formais e práticas (“workbenches”) de desenvolvimento de DS(M)Ls gráficas e textuais
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
Arquitectar e Criar um “roadmap” de tecnologias orientadas a modelos para automatização dos seus processos
Transformação de modelos Modelo-para-texto e Modelo-para-Modelo
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
- Conhecer:
A ultilidade de alguns formalismos para Engenharia de Sistemas (para modelar sistemas com/sem tempo e discretos ou contínuos)
Técnicas de avaliação de qualidade de DS(M)Ls do ponto de vista de usabilidade
Conhecer exemplos de domínio de aplicação de DS(M)Ls
0. Motivação - Causas de Complexidade no Desenho de Sistemas
1. Definição do Sistema
2. Conceitos Básicos de Engenharia Orientada por Modelos:
o que é MDE; Definições de Modelos, Metamodelos e a Pilha de Modelagem.
Instanciação Ontológica vs. Linguística
MD *: MDE, MBE, MDD, MDA
DEfinição de Linguagens específicas para domínios
2. Engenharia de Domínio:
Metodologias de modelação de domínio;
Feature-Oriented Domain Analysis(introducing Feature Diagrams);
O Modelo de Domínio - diferentes abordagens de modelação (usando UML, ERD, OWL);
Linhas de Produtos de Software.
3. DSMLs e Desenho de Linguagens de Modelação
Sintaxe Abstracta e Metamodelo (MOF e ECORE)
Sintaxe Concreta e Semântica
Especificando Restrições Invariantes (OCL)
Transformaçõe de Modelos: propósito e classificação; fundamentos (Gramáticas Gráficas, Abordagens Algébricas: SPO e DPO)
Ferramentas de transformação de modelo: ATL, QVT, ETL
Alguns Domínios Semânticos: State Charts, Redes de Petri
Implementação de linguagens usando "Modelling Workbenches" para DSLs textuais e gráficas
4. Avaliação de Qualidade - Usabilidade
5. Breve visão geral do MDE e a Engenharia de Sistemas:
Sistemas Estático e Dinâmico
Variação de tempo e sistemas dinâmicos invariantes no tempo
Formalismos de Evento Discreto: Redes de Petri (para Sistemas de Eventos Concorrentes não Determinísticos) e Gráficos de Estado (para comportamento autónomo, reativo e cronometrado)
Formalismos contínuos: System Dynamics (para sistemas naturais, negócios e sistemas sociais) e Bond Graphs (para generalização de eletricidade para outros meios físicos)
Especificação de Sistemas especificados com DEVS e equações diferenciais
AADL (linguagem de descrição da Avionics Architecture)
Projetando DSLs e traduzindo para os formalismos anteriores, e uso de ferramentas de análise
Domínios e exemplos de aplicação.
6. Gestão de modelos:
Model Interchange, Model Persistence, Model Comparison, Model versioning, Model co-evolutionGlobal model management, Model Quality, Collaborative Modelling
Marco Brambilla, Jordi Cabot, Manuel Wimmer, “Model-Driven Software Engineering in Practice”, Morgan & Claypool Publishers, 2nd Edition, 2017
Dimitris Kolovos, Louis Rose, Antonio García-Domínguez, Richard Paige, “The Epsilon Book”, The Eclipse Foundation, 2014
Slides das Aulas Teóricas (associados a cada aula): disponibilizados no portal da cadeira
Sebenta (Lecture Notes) das Aulas Práticas e alguns elementos de revisões da matéria (associadas a cada aula): disponibilizadas no portal da cadeira
O aluno deverá ter frequentado a cadeira de Metodologias de Desenvolvimento de Software.
Horas por crédito | 28 | ||
Horas p/ semana | Semanas | Horas | |
Aulas práticas e laboratoriais | 26.0 | ||
Aulas teóricas | 26.0 | ||
Avaliação | 6.0 | ||
Estudo | 30.0 | ||
Projectos e trabalhos | 80.0 | ||
Total de Horas | 168 | ||
ECTS | 6.0 |