Linguagens de Modelação para Domínios Específicos

Objetivos

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

Caracterização geral

Código

11558

Créditos

6.0

Professor responsável

Ana Maria Diniz Moreira, Vasco Miguel Moreira do Amaral

Horas

Semanais - 4

Totais - 52

Idioma de ensino

Português

Pré-requisitos

O aluno deverá ter frequentado a cadeira de Metodologias de Desenvolvimento de Software.

Bibliografia

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

Método de ensino

As aulas teóricas consistem na exposição de matéria, ilustrada com exemplos de aplicação, e suportada por diapositivos e pela utilização do ambiente de desenvolvimento no computador do docente.

Nas aulas de laboratório, os alunos resolvem exercícios que constituem exemplos concretos de aplicação dos conceitos dados nas anteriores aulas teóricas.

Os alunos podem esclarecer dúvidas durante as aulas ou nos horários de atendimento.

Método de avaliação

[Regras definitivas a partir da primeira aula teórica, onde os componentes de avaliação serão devidamente apresentados]

Componentes da avaliação:

Existem dois componentes na avaliação: a componente da nota relativa aos testes (NT); e a componente da nota relativa ao trabalho prático (NP) . A nota final (NF) é calculada pela fórmula:

NF = NT + NP 

Componente Prática:
Esta componente de avaliação é constituída por um trabalho prático a realizar durante o semestre. A nota da componente prática  é calculada do seguinte modo:

NP = 0,20*NP1 + 0,35*NP2

em que:

- NP1 é a nota do trabalho prático (1ª parte);
- NP2 é a nota dos trabalho prático  (2ª parte);

Testes:
Esta componente de avaliação é constituída por 2 testes sem consulta, escritos e individuais. A nota desta componente é calculada do seguinte modo:

NT = 0,225 * NT1 + 0,225 * NT2

em que:

- NT1 é a nota do teste 1;
- NT2 é a nota do teste 2.

Exame Final:
NT é a nota obtida em exame final.

Nota final:
O aluno com frequência obtém aprovação se ambas as notas NF e NT forem superiores ou iguais a 9.5. 

Frequência obtida em 2019/2020:
Obtém frequência à disciplina o aluno que tenha uma nota superior ou igual a 9.5 na média ponderada do trabalho prático (ver pesos relativos definidos acima).
O aluno sem frequência é excluído do exame de recurso nesse ano lectivo.
A regra acima para a obtenção de frequência aplica-se a todos os alunos, repetentes e de 1ª inscrição.

Frequências do ano lectivo anterior: 

Os alunos que tenham obtido frequência na edição de 2019/2020 mantêm-na no presente ano. Caso entreguem algum trabalho em 2020/2021, perdem a frequência automática. A fórmula de cálculo da nota é igual à dos alunos que obtém frequência em 2019/2020.

Melhoria de nota:
As melhorias de nota apenas se realizam por exame, sendo a nota final calculada com a mesma fórmula do ano corrente.

Conteúdo

0. Motivação - Causas de Complexidade no Desenho de Sistemas

1. Definição do Sistema

2. Conceitos Básicos de Engenharia Orientada por Modelos:

  1. o que é MDE; Definições de Modelos, Metamodelos e a Pilha de Modelagem.

  2. Instanciação Ontológica vs. Linguística

  3. MD *: MDE, MBE, MDD, MDA

  4. DEfinição de Linguagens específicas para domínios


2. Engenharia de Domínio:

  1. Metodologias de modelação de domínio;

  2. Feature-Oriented Domain Analysis(introducing Feature Diagrams);

  3. O Modelo de Domínio - diferentes abordagens de modelação (usando UML, ERD, OWL);

  4. Linhas de Produtos de Software.


3. DSMLs e Desenho de Linguagens de Modelação

  1. Sintaxe Abstracta e Metamodelo (MOF e ECORE)

  2. Sintaxe Concreta e Semântica 

  3. Especificando Restrições Invariantes (OCL)

  4. Transformaçõe de Modelos: propósito e classificação; fundamentos (Gramáticas Gráficas, Abordagens Algébricas: SPO e DPO)

  5. Ferramentas de transformação de modelo: ATL, QVT, ETL

  6. Alguns Domínios Semânticos: State Charts, Redes de Petri

  7. 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:

  1. Sistemas Estático e Dinâmico

  2. Variação de tempo e sistemas dinâmicos invariantes no tempo

  3. 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)

  4. 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)

  5. Especificação de Sistemas especificados com DEVS e equações diferenciais

  6. AADL (linguagem de descrição da Avionics Architecture)

  7. Projetando DSLs e traduzindo para os formalismos anteriores, e uso de ferramentas de análise

  8. 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

Cursos

Cursos onde a unidade curricular é leccionada: