Planeamento
Aulas do tipo Teórico
Apresentação
Apresentação da disciplina
- Conteúdos
- Bibliografia
- Avaliação
Sistemas de Controlo de Versões
- Sistemas de Controlo de Versões
- Centralizado vs Distribuído
- Gestão de Concorrência Optimista vs Pessimista
- Branching
- O caso do Git
Aula Convidada: Desenvolvimento de Software em Equipa com Git
Leonor Loureiro tem um Mestrado em Engenharia Informática e de Computadores pelo Instituto Superior Técnico, e conta com cerca de 5 anos de experiência enquanto Software Engineer. Ao longo da sua carreira, contribuiu para vários projetos, de pequena e grande escala, enquanto Full Stack e Backend Developer, colaborando com equipas diversas e internacionais. Atualmente, faz parte da equipa Git Systems na GitHub, onde é responsável pelo desenvolvimento e manutenção dos serviços que armazenam e servem Git repositórios.
Sumário:
No mundo do desenvolvimento de software, acompanhar mudanças, colaborar em equipa, e gerir projectos complexos pode ser um desafio. É aí que entra o Git. Git é um sistema de controlo de versões distribuído que fornece aos programadores ferramentas poderosas para gerir o source code, trabalhar colaborativamente e assegurar a qualidade do código desenvolvido. Nesta apresentação, iremos discutir a história dos sistemas de controlo de versões e as principais características do Git que nos permitem otimizar os fluxos de trabalho de colaboração em equipa. Vamos também explorar boas práticas de Git e algumas das ferramentas ao nosso dispor para colaborar em projetos complexos, incluindo técnicas para melhorar a performance de monorepos e GitLFS, e como nós a aplicamos na GitHub. No final desta apresentação, terão uma melhor compreensão de como Git pode ajudar programadores e equipas a trabalhar com mais eficácia e eficiência, por mais complexo que seja o projeto.
Enterprise Applications
Enterprise Applications, exemplos, tipos e características
Padrões da Camada de Negócio
- Domain Model
- Transaction Script
- Table Module
- Service Layer
Padrões da Camada de Dados I
- Row Data Gateway (incluindo métodos estáticos vs classes Finder)
- Table Data Gateway
Padrões da Camada de Dados II
- Active Record
- Data Mapper
- Object-Relational Impedance Mismatch.
- Object-Relational Mapping (ORMs)
Padrões da Camada de Dados III
- Java Persistence API (JPA)
- Anotações em Java
- Mapeamento de Entidades
- Padrão Identity Field
- Mapeamento de atributos simples, compostos e enumerados
Padrões da Camada de Dados IV
- Mapeamento de relações
- @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
- Relações uni e bidirecionais
Padrões da Camada de Dados V
- Herança em ORM
- Single Table
- Table per Class (Join Table)
- Table per Concrete Class
Padrões da Camada de Dados VI
- Operações que manipulam entidades.
- Padrão Unit of Work
- Entity Manager
- persist/merge/remove
Padrões da Camada de Dados VII
- Transações de Base de Dados
- Transações de Negócio
- Níveis de Isolamento
- Anomalias
- Granularidade de locks
- Tipos de locks (optimistas vs pessimistas)
- Locks optimistas com versioning
Migrações
- Migrações do Esquema
- Como funcionam
- Problemas que resolvem
- Integração com o ORM
- Migrações reversíveis
Padrão MVC
- Padrão MVC clássico
- Versões de MVC para a web
- Como funciona o padrão MVC
- Padrão MVVM e MVP
Aulas do tipo Teórico-Prático
Primeira semana
Não há aulas TP na primeira semana.
TP1. Git
- Resolução da Ficha 1
TP2. Enterprise Applications + Setup
- Folha de Exercícios 1
- Instalação da Aplicação Demo
TP3. Transaction Script + Row Data Gateway
Exercício 2 da Folha 2.
TP4. Table Module + Table Data Gateway
Exercício 3 da Folha 2.
TP5. Active Record, Data Mapper e JPA
Exercícios da Folha 4 (2, 3 e 4)
TP6. Definição de Entidades em JPA
Ficha 5. Exercícios 1-8.
Esclarecimento de Dúvidas de Projecto
Esclarecimento de Dúvidas de Projecto
TP7. Estado e Concorrência em JPA
- Slides TP7 - JPA2
- Slides TP8 - JPA3
TP8 - Arquitecturas Web e Server-side Rendering
Slides de Padrão MVC na Web.
TP11 - APIs REST
- Desenho de APIs RESTful
- Métodos: GET, POST, PUT, DELETE, PATCH
- Implementação de APIs REST em SpringBoot
- Exercícios da Folha 7
TP12 - JavaFX
- Exercícios Folha 8
- Scene Graph
- Vistas estáticas (FXML)
- Vistas dinâmicas
- Controllers
- Properties
- Bindings