Técnicas Avançadas de Construção de Software
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Engenharia de Software |
Ocorrência: 2023/2024 - 1S 
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
M.EIC |
25 |
Plano de estudos oficial |
2 |
- |
6 |
39 |
162 |
Língua de trabalho
Inglês
Objetivos
Os estudantes devem ser capazes de identificar e aplicar técnicas avançadas de especificação, síntese e manipulação de artefactos executáveis em diferentes fases de desenvolvimento de software, com o intuito de promover atributos de qualidade, tais como confiabilidade, flexibilidade, testabilidade e performance. Em particular, pretende-se reduzir ao máximo o tempo investido a "programar", automatizando várias facetas dessa atividade.
Resultados de aprendizagem e competências
- Identificar problemas amenos a técnicas de desenvolvimento automático;
- Desenhar modelos/meta-modelos específicos de domínio;
- Processar instanciações de especificações textuais com combinadores de parsing, bem como respectivos mecanismos de execução;
- Aplicar técnicas de derivação/geração de código/comportamento automaticamente a partir de especificações de alto nível;
- Aplicar técnicas de metaprogramação;
- Aplicar técnicas de verificação automática de programas;
- Outras técnicas avançadas de desenvolvimento.
Modo de trabalho
Presencial
Programa
- Engenharia orientada a modelos
- Modelos, Metamodelos e Meta-Metamodelos
- Idiomas específicos de domínio
- Internos
- Externos
- Visuais vs baseados em texto
- Geração de código-fonte
- Combinadores de Parsing
- Meta-programação
- Programação automática
- Especificações de alto nível
- Síntese e Derivação de Programas
- Verificação automática de programas
Bibliografia Obrigatória
Marco Brambilla;
Model-driven software engineering in practice. ISBN: 978-3-031-02549-5
Bibliografia Complementar
Martin Fowler; Domain Specific Languages, Addison-Wesley Signature Series, 2010
Markus Volter;
Model-Driven Software Development: Technology, Engineering, Management, Wiley Software Patterns Series, 2006
Dave Steinberg, Frank Budinsky, Marcelo Paternostro, Ed Merks; EMF - Eclipse Modeling Framework (2nd Edition), 2008
Métodos de ensino e atividades de aprendizagem
A unidade curricular irá decorrer em modo de aula invertida, onde os estudantes terão de estudar os tópicos de cada aula de forma autónoma, seguindo as indicações do docente.
As aulas teórico-práticas terão uma primeira parte de discussão de cada matéria pré-estudada pelos alunos, onde serão discutidos pontos relevantes e potenciais dúvidas. Numa segunda parte, os alunos dedicar-se-ão a um projeto prático. Esse projeto crescerá incrementalmente e resultará num sistema baseado em metamodelos com uma linguagem específica de domínio executável, primeiro por técnicas simples de interpretação e finalmente geração de código.
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Participação presencial |
10,00 |
Teste |
20,00 |
Trabalho prático ou de projeto |
70,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Elaboração de projeto |
162,00 |
Frequência das aulas |
39,00 |
Total: |
201,00 |
Obtenção de frequência
Todas as componentes têm uma classificação mínima de 40%.
Fórmula de cálculo da classificação final
N = 0.1 * P + 0.2 * T + 0.7 * E
Avaliação especial (TE, DA, ...)
N = 0.3 * T + 0.7 * E